security-cheatsheets/infosec/command-line-reference.md
2025-04-15 00:02:07 -06:00

8.3 KiB

Command Line Reference Across Different Shells

Operation Linux/macOS (Bash/Zsh) PowerShell Command Prompt (CMD) Git Bash (Windows)
File System Navigation
List directory contents ls Get-ChildItem or dir or ls dir ls
List with details ls -l Get-ChildItem | Format-Table or ls -l dir /p ls -l
List hidden files ls -a Get-ChildItem -Hidden or ls -Force dir /a ls -a
Change directory cd path/to/dir Set-Location path/to/dir or cd path/to/dir cd path\to\dir cd path/to/dir
Go to parent directory cd .. cd .. cd .. cd ..
Go to home directory cd or cd ~ cd ~ cd %USERPROFILE% cd ~
Print working directory pwd Get-Location or pwd cd pwd
File Operations
Create new file touch filename New-Item -Path filename -ItemType File type nul > filename touch filename
Create directory mkdir dirname New-Item -Path dirname -ItemType Directory or mkdir dirname mkdir dirname mkdir dirname
Copy file cp source dest Copy-Item source dest or cp source dest copy source dest cp source dest
Move/rename file mv source dest Move-Item source dest or mv source dest move source dest mv source dest
Delete file rm filename Remove-Item filename or rm filename del filename rm filename
Delete directory rm -r dirname Remove-Item dirname -Recurse rmdir /s /q dirname rm -r dirname
View file content cat filename Get-Content filename or cat filename type filename cat filename
Edit text file nano filename or vim filename notepad filename notepad filename nano filename or vi filename
System Information
Current user whoami $env:USERNAME echo %USERNAME% whoami
System information uname -a Get-ComputerInfo systeminfo uname -a
Show processes ps or ps aux Get-Process tasklist ps
Networking
Check connectivity ping host Test-Connection host or ping host ping host ping host
Show IP address ip addr or ifconfig Get-NetIPAddress ipconfig ipconfig or ip addr
Download file wget url or curl -O url Invoke-WebRequest -Uri url -OutFile file curl url -o file wget url or curl -O url
File Permissions
Change permissions chmod permissions file icacls file /grant user:permission icacls file /grant user:permission chmod permissions file
Change owner chown user:group file Set-Acl N/A chown user:group file
Process Management
Run in background command & Start-Process command start command command &
Kill process kill PID or pkill name Stop-Process -Id PID or Stop-Process -Name name taskkill /PID PID kill PID
Miscellaneous
Clear screen clear Clear-Host or cls cls clear
Environment variables echo $VARIABLE $env:VARIABLE echo %VARIABLE% echo $VARIABLE
Command history history Get-History doskey /history history
Piping command1 | command2 command1 | command2 command1 | command2 command1 | command2
Redirect output command > file command > file command > file command > file
Append output command >> file command >> file command >> file command >> file
File Searching
Find files by name find /path -name "pattern" Get-ChildItem -Path /path -Filter "pattern" -Recurse dir /s /b "pattern" find /path -name "pattern"
Find files containing text grep -r "text" /path Get-ChildItem -Path /path -Recurse | Select-String "text" findstr /s /i "text" *.* grep -r "text" /path
Find recent files find /path -mtime -7 Get-ChildItem -Path /path -Recurse | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-7)} N/A find /path -mtime -7
Find files by size find /path -size +10M Get-ChildItem -Path /path -Recurse | Where-Object {$_.Length -gt 10MB} N/A find /path -size +10M
Text Processing
Search text in file grep "pattern" file Select-String -Pattern "pattern" -Path file findstr "pattern" file grep "pattern" file
Count lines in file wc -l file (Get-Content file).Length find /c /v "" file wc -l file
Replace text in file sed 's/old/new/g' file (Get-Content file) -replace 'old','new' | Set-Content file N/A sed 's/old/new/g' file
Sort file content sort file Get-Content file | Sort-Object sort file sort file
First 10 lines of file head -n 10 file Get-Content file -TotalCount 10 type file | find /v /n "" | find " 1:" > " 10:" head -n 10 file
Last 10 lines of file tail -n 10 file Get-Content file -Tail 10 N/A tail -n 10 file
Disk Usage
File/dir size du -sh path Get-ChildItem path | Measure-Object -Property Length -Sum dir path du -sh path
Disk space usage df -h Get-PSDrive fsutil volume diskfree C: df -h
Compression
Create zip archive zip -r archive.zip dir/ Compress-Archive -Path dir -DestinationPath archive.zip N/A zip -r archive.zip dir/
Extract zip archive unzip archive.zip Expand-Archive -Path archive.zip -DestinationPath dir N/A unzip archive.zip
Create tar archive tar -cvf archive.tar dir/ N/A N/A tar -cvf archive.tar dir/
Extract tar archive tar -xvf archive.tar N/A N/A tar -xvf archive.tar
Create tar.gz archive tar -czvf archive.tar.gz dir/ N/A N/A tar -czvf archive.tar.gz dir/
User Management
Add user useradd username New-LocalUser -Name "username" net user username password /add N/A
Delete user userdel username Remove-LocalUser -Name "username" net user username /delete N/A
Change password passwd username Set-LocalUser -Name "username" -Password (ConvertTo-SecureString "password" -AsPlainText -Force) net user username newpassword N/A
Network Connections
Show listening ports netstat -tuln Get-NetTCPConnection -State Listen netstat -an | find "LISTENING" netstat -tuln
Trace route to host traceroute host Test-NetConnection -TraceRoute host tracert host traceroute host
Show DNS info dig domain Resolve-DnsName domain nslookup domain dig domain
Process Control
Process tree pstree or ps -ejH Get-Process | Format-Table -GroupBy Parent tasklist /svc ps -ejH
Top processes by resource top Get-Process | Sort-Object -Property CPU -Descending tasklist /v /fo list /fi "MEMUSAGE gt 1000" top
Background process status jobs Get-Job N/A jobs
Schedule a task crontab -e New-ScheduledTask schtasks /create crontab -e
Shell Scripting
Run shell script bash script.sh .\script.ps1 script.bat bash script.sh
Make script executable chmod +x script.sh Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass N/A chmod +x script.sh
Define variable var="value" $var = "value" set var=value var="value"
Export variable export var="value" $env:var = "value" set var=value export var="value"
If statement if [ condition ]; then commands; fi if ($condition) { commands } if condition commands if [ condition ]; then commands; fi
Loop through items for i in items; do commands; done foreach ($i in $items) { commands } for %%i in (items) do commands for i in items; do commands; done
Remote Access
SSH to server ssh user@host New-SSHSession -ComputerName host -Credential user N/A ssh user@host
Secure copy file scp file user@host:/path scp file user@host:/path (if installed) N/A scp file user@host:/path
Remote shell command ssh user@host command Invoke-Command -HostName host -ScriptBlock { command } N/A ssh user@host command