From: https://www.pstips.net/bash-and-powershell-quick-reference.html
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 ] |
if (condition) { |
If statement. In BASH, be sure to leave a space between the condition and the bracket. |
if [ condition ] |
if (condition) { |
If – else if – else statement |
var=0 |
$var = 0 |
Prints numbers 0 through 9. |
for ((i=0; i < 10; i++)) do |
for ($i=0;$i -lt 10; $i++) |
Prints numbers 0 through 9. |
for var in $array |
foreach ($var in $array) |
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() |
function printArg |
function to print the first argument to the screen. |
return_five()
|
function return_five (or) return 5
|
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. |