跳转至

BashPowerShell 命令对照表

| ash | PowerShell | Description |
| ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| Scripting Basics | | |
| Put a “shebang” at the beginning of the file:#!/bin/bash Change permissions on script file to allow execution. | Give the file a ps1 extension. For downloaded scripts, unblock the file under file properties in Windows Explorer. | Steps for making scripting files run. In PowerShell, the first time you do scripting, you will need to set the appropriate security settings: run PowerShell as administrator and type set-executionpolicy remotesigned. |
| source (or) . | . | shell built-in: execute the commands in a file |
| echo *String* | echo *String* (or) Write-Host *String* | Prints String to the screen. In PowerShell, Write-Host forces the output to the screen instead of being a return value. |
| *var*=0 (No spaces around =) | $*var* = 0 | Creates a variable $var. In BASH, do not put whitespace around the equals sign, and do not use a $ in the variable assignment. |
| let *var*=$*var*+5 (or)*var*=$(( $*var* + 5 )) | $*var* += 5 | Add 5 to $var |
| # *comment* | # *comment* | A comment |
| Strings | | |
| = != | -eq -ne -ceq -cne | String comparisons. In BASH, be sure the strings litereals are in quotes. |
| "" | gm | | Get a list of non-static string members |
| [string] | gm -static | | Get a list of static string members |
| ${*string*#*text_to_remove*} | *string*.TrimStart("*characters*") | Removes the specified characters/text from the beginning of the string. |
| ${*string*%*text_to_remove*} | *string*.TrimEnd("*characters*") | Removes the specified characters/text from the end of the string. Suppose $fnm == helloThere.txt; then ${fnm%.???} is helloThere |
| Pattern Matching | | |
| grep | select-string | print lines matching a pattern |
| sed | -replace | performs string transformations |
| Booleans and Conditions | | |
| true false | $true $false | Boolean literals |
| -lt -gt -le -ge -eq -ne | -lt -gt -le -ge -eq -ne | Arithmetic relational operators |
| | -like | True if a string matches a wildcard pattern |
| | -match | True if a string matches a regular expressions |
| | Where-Object { *condition* } | Used to filter input by a condition. Remember that $_ refers to the current object being tested. |
| -z $*var* | $*var* -eq $null | True if $var is null |
| -n $*var* | $*var* -ne $null | True if $var is not null (contains one or more characters) |
| -o -a | -or -and | Logical or and and |
| -e *file* | Test-Path *file* | True if file exists. |
| ! -e *file* | ! (Test-Path *file*) | True if file does not exist. |
| -d *file* | *file*.PSISContainer | True if file is a directory. In PowerShell, if file is not a file variable, be sure to get the file object first with gi. |
| -s *file* | | True if file exists and has a size greater than zero. |
| *file1* -nt *file2* | | True if file1 is newer (according to modification date) than file2 |
| *file1* -ot *file2* | | True if file1 is older (according to modification date) than file2 |
| Control Structures | | |
| if [ *condition* ]then*codeblock*fi | if (*condition*) {*codeblock*} | If statement. In BASH, be sure to leave a space between the condition and the bracket. |
| if [ *condition* ]then*codeblock*elif [ *condition* ]then*codeblock*else*codeblock*fi | if (*condition*) {*codeblock*}elseif (*condition*) {*codeblock*}else {*codeblock*} | If – else if – else statement |
| var=0while [ $var -lt 10 ]doecho $varvar=$(( $var + 1 ))done | $var = 0while ($var -lt 10) {echo $var$var++} | Prints numbers 0 through 9. |
| for ((i=0; i < 10; i++)) doecho $idone | for ($i=0;$i -lt 10; $i++){echo $i} | Prints numbers 0 through 9. |
| for *var* in $*array*do*codeblock*done | foreach ($*var* in $*array*){*codeblock*} | For each loop |
| continue break | continue break | Loop controls: continue stops current loop iteration and begins the next; break exits the loop currently being executed. |
| basename *file* | *file*.name | The name of file without the path. In PowerShell, remember to first get the file object. |
| dirname *file* | *file*.directoryname | The name directory file is in. In PowerShell, remember to first get the file object. |
| stat -c%s $*file* (or) $(stat -c%s $*file*) | *file*.length | The number of bytes in file. In PowerShell, remember to first get the file object. |
| | *file*.LastWriteTime | The last modified time for file. Remember to first get the file object. |
| *files*=ls(or)`_files_=$(ls)`(or)`_files_=\*` | `$*files* = Get-Item *` | Store a list of the files in the current working directory in _$files_. In PowerShell, check out the -exclude flag as well as the Get-ChildItem cmdlet. | | ` | > >> 2> 2>>` | ` | > >> 2> 2>>` | Piping, output and error redirection. In BASH, output redirected to `/dev/null` is gone. In PowerShell, output redirected to `$null` is gone. | | `*printArg*(){*echo* $1}` | `function *printArg*{param ($*p1*)*echo $p1*}` | function to print the first argument to the screen. | | ` *return_five*(){return *5*}return_fiveecho $? |function return_five{echo 5(or) return 5}`$*value* = *return_five*echo $*value* | Function returns 5, which is printed after the function call. In PowerShell, any output in a function that is not caught is returned. The return statement merely ends the function. The return value of a BASH function is stored in the variable $?. |
| File Information/Operations | | |
| ls | | Listing of files. For bash, learn the options of -lisa, -r, -R. |
| | ls | Listing of files. For PowerShell, learn -f, -r, -filter,and -exclude |
| tree | tree | Graphically displays the directory structure of a drive or path. |
| cat | cat | List the contents of a file on the stdout |
| more | more | List the contents of a file on the stdout, pausing after each page |
| mkdir | mkdir | Creates a directory. |
| rmdir | rmdir | Deletes a folder if it is empty |
| pwd | pwd | print working directory |
| cd | cd | Change the current directory to the one given as argument. |
| pushd | pushd | Saves the current directory name on the stack, and then cd’s the one given as argument. |
| popd | popd | Pop off the top-most name on the stack, and then cd to it |
| mv | mv | Moves or renames files. In PowerShell, check out the -force and -WhatIf flags. In BASH, check out the -f flag. |
| cp -r | cp -r | Copies files and directory trees recursively. |
| cp | cp | Copies files. In PowerShell, check out the -force and -WhatIf flags. In BASH, check out the -f flag. |
| rm | rm | Deletes a file. Check out the -r flag. In PowerShell, check out the -force and -WhatIf flags. In BASH, check out the -f flag. |
| cat | cat | show the contents of each file in sequence |
| more | more | pagination |
| rm | rm | Remove files |
| ln | | Link (hard or soft) to an existing file. |
| | mklink | Link (hard or soft) to an existing file. Type cmd /c mklink to use it in PowerShell |
| chmod | attrib | Change file permissions/attributes |
| | icacls | Displays or modifies access control lists (ACLs) of files |
| chown | icacls | Change ownership of a file. In PowerShell, multiple steps are necessary |
| umask | | get/set the file mode creation mask; packed vector of bits controlling the initial permissions on a newly created file |
| du | measure | Disk space Used. In PowerShell, try gci . -r | measure -property length -sum |
| wc | Measure-Object | word count, etc. |
| od | | Octal dump of file content. Almost always used with -x for hexadecimal dump |
| tr | | Translate/substitute characters; useful in improving interoperability |
| | assoc | List associations of commands with extensions. Type cmd /c assoc to use it in PowerShell |
| file | | Heuristically determine the type of file content |
| grep | select-string | Search for a string in a file’s content. For now, learn it without regexp. |
| find | gci | Locate a file. By name, etc. For now, learn it without regexp. |
| which | | Gives the full path name of a command |
| | where | Gives the full path name of a command. Type cmd /c where to use it in PowerShell |
| diff | diff | List the differences between two text files |
| cmp, diff | compare, diff | show the differences between two files |
| | gci . -r | sort length -descending | select -first 10 | get a list of the 10 largest files in the current directory (recursive) |
| vi | vim | A powerful text editor. For now, learn to edit simple text files with it. |
| kate, leafpad | notepad | Simple text editors. |
| emacs | emacs | A very powerful multi-purpose text editor. For now, learn to edit simple text files with it. |
| Processes | | |
| time | Measure-Command | times commands, etc. |
| ps | ps | shows current processes |
| | gps | sort ws | select -last 5 | Get a list of the 5 processes using the most memory |
| | gsv | where {$\_.Status -eq "Stopped"} | Get a list of stopped services |
| top | | like ps, but with continuous updates |
| bg | | place a STOPped process in the background |
| fg | | bring a backgrounded process to foreground |
| kill | kill | kills a running program |
| ltrace | | show lib calls made |
| strace | | show sys calls made |
| System | | |
| man | man | show reference pages |
| set | set | set the values of shell variables |
| set | gv | get and show the values of shell variables |
| env | ls env:\ | lists the current environment variables |
| $PATH | $env:path | the search path |
| links | | WWW/News/Mail browser |
| sftp, filezilla | filezilla | transfer files securely to/from a remote machine |
| ssh, putty | sshclient, putty | remote login securely |
| w | | who is on the system, and what they are doing |
| df | gdr | show mounted volumes, etc. |


最后更新: 2023-01-31