DEV Community

Cover image for 50 GNU Commands X 50 PowerShell Commands
Marcos Oliveira
Marcos Oliveira

Posted on

50 GNU Commands X 50 PowerShell Commands

🐂 🆚 ✴️ Everyday terminal commands used in GNU and their PowerShell equivalents.


In the world of task automation, mastering the command line is an essential skill. Whether using traditional GNU commands or navigating the Windows ecosystem with the powerful PowerShell, knowing the right tools can transform your productivity.

In this post, we’ll compare 50 GNU commands with their PowerShell equivalents.


💻 01. Delete a Directory Recursively

🐂 GNU

rm -rf /home/$USER/folder  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Remove-Item -Path "C:\folder" -Recurse -Force  
Enter fullscreen mode Exit fullscreen mode

💻 02. Get the Name of a Running Process

🐂 GNU

ps aux | grep apache2 # httpd  
Enter fullscreen mode Exit fullscreen mode

systemd: systemctl status apache2

✴️ PowerShell

Get-Service | Where-Object { $_.DisplayName -like "*Apache*" }  
Enter fullscreen mode Exit fullscreen mode

💻 03. Stop a Service

sudo kill -9 $(pidof apache2) # httpd  
Enter fullscreen mode Exit fullscreen mode

systemd: sudo systemctl stop apache2

✴️ PowerShell

Stop-Service -Name "Apache2.4"  
Enter fullscreen mode Exit fullscreen mode

💻 04. Remove an Environment Variable

🐂 GNU

unset VARIABLE_NAME  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell C:\App\bin

# Get the current value of the system Path environment variable  
$envPath = [Environment]::GetEnvironmentVariable("Path", [EnvironmentVariableTarget]::Machine)  

# Split paths into an array  
$paths = $envPath -split ';'  

# Filter to remove the unwanted path  
$newPaths = $paths | Where-Object { $_ -ne "C:\App\bin" }  

# Rebuild the Path environment variable (without the unwanted path)  
$newPathString = ($newPaths -join ';').TrimEnd(';')  

# Update the system environment variable  
[Environment]::SetEnvironmentVariable("Path", $newPathString, [EnvironmentVariableTarget]::Machine)  
Enter fullscreen mode Exit fullscreen mode

💻 05. Check if a Command Exists

🐂 GNU

which mycommand  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-Command mycommand  
Enter fullscreen mode Exit fullscreen mode

💻 06. Create a Folder/Directory

🐂 GNU

mkdir my-project  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

New-Item -ItemType Directory "MyProject"  
Enter fullscreen mode Exit fullscreen mode

💻 07. Create a Folder/Directory Recursively

🐂 GNU

mkdir -p my-project/folder/new  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

New-Item -Path "C:/MyProject/folder/new" -ItemType Directory  
Enter fullscreen mode Exit fullscreen mode

💻 08. Move a Folder/Directory

🐂 GNU

mv folder new/path/  
Enter fullscreen mode Exit fullscreen mode

💻 PowerShell

Move-Item -Path "folder" -Destination "C:\new\path\"  
Enter fullscreen mode Exit fullscreen mode

💻 09. Enter a Folder/Directory

🐂 GNU

cd folder/  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Set-Location folder  
Enter fullscreen mode Exit fullscreen mode

💻 10. Copy Files and Directories

🐂 GNU

cp file path/to/dest  
cp -r folder/ path/to/dest  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Copy-Item file path\to\dest  
Copy-Item folder\ -Recurse -Destination path\to\dest  
Enter fullscreen mode Exit fullscreen mode

💻 11. Get the Home Directory and/or Username

🐂 GNU

$HOME  
# echo $HOME  

$USER  
# echo $USER  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

$env:USERPROFILE  
# Write-Host $env:USERPROFILE  

$env:USERNAME  
# Write-Host $env:USERNAME  
Enter fullscreen mode Exit fullscreen mode

💻 12. List Files and Directories

🐂 GNU

ls -la  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-ChildItem -Force  
Enter fullscreen mode Exit fullscreen mode

💻 13. Display Text File Content

🐂 GNU

cat file.txt  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-Content file.txt  
Enter fullscreen mode Exit fullscreen mode

💻 14. Search for Text Inside Files

🐂 GNU

grep "term" file.txt  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Select-String -Pattern "term" -Path file.txt  
Enter fullscreen mode Exit fullscreen mode

💻 15. Show Disk Usage

🐂 GNU

df -h  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-PSDrive -PSProvider FileSystem  
Enter fullscreen mode Exit fullscreen mode

💻 16. Check Memory Usage

🐂 GNU

free -h  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-CimInstance Win32_OperatingSystem | Select-Object TotalVisibleMemorySize,FreePhysicalMemory  
Enter fullscreen mode Exit fullscreen mode

💻 17. Display Environment Variables

🐂 GNU

printenv  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-ChildItem Env:  
Enter fullscreen mode Exit fullscreen mode

💻 18. Rename File/Directory

🐂 GNU

mv oldname newname  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Rename-Item -Path oldname -NewName newname  
Enter fullscreen mode Exit fullscreen mode

💻 19. Run Command as Administrator/Root

🐂 GNU

sudo command  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell (run shell as admin)

Start-Process powershell -Verb runAs  
Enter fullscreen mode Exit fullscreen mode

💻 20. Check Network/Interfaces

🐂 GNU

ip addr show  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-NetIPAddress  
Enter fullscreen mode Exit fullscreen mode

💻 21. Create an Environment Variable

Example for Terlang: C:\Program Files\Terlang\bin (Windows) and ${HOME}/.local/terlang/bin/ (GNU)

🐂 GNU

export PATH="${PATH}:${HOME}/.local/terlang/bin/"  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

[System.Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Terlang\bin", [System.EnvironmentVariableTarget]::Machine)  
Enter fullscreen mode Exit fullscreen mode

💻 22. Display Last Lines of a File (tail)

🐂 GNU

tail -n 20 file.log  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-Content file.log -Tail 20  
Enter fullscreen mode Exit fullscreen mode

💻 23. Monitor Processes in Real-Time (top)

🐂 GNU

top  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-Process | Sort-Object CPU -Descending | Select-Object -First 10  
Enter fullscreen mode Exit fullscreen mode

(not real-time, but shows a snapshot of top CPU-consuming processes)


💻 24. Find and Kill a Process by Name

🐂 GNU

pkill -f process  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-Process -Name process | Stop-Process -Force  
Enter fullscreen mode Exit fullscreen mode

💻 25. Monitor File Changes (tail -f)

🐂 GNU

tail -f file.log  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-Content file.log -Wait  
Enter fullscreen mode Exit fullscreen mode

💻 26. Compress Files (tar gzip)

🐂 GNU

tar -czvf archive.tar.gz folder/  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Compress-Archive -Path folder\* -DestinationPath archive.zip  
Enter fullscreen mode Exit fullscreen mode

💻 27. Extract Zip File

🐂 GNU

unzip archive.zip  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Expand-Archive -Path archive.zip -DestinationPath destination\  
Enter fullscreen mode Exit fullscreen mode

💻 28. View Specific Environment Variables

🐂 GNU

echo $VARIABLE  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

$env:VARIABLE  
Enter fullscreen mode Exit fullscreen mode

💻 29. Set Environment Variable for Current Session

🐂 GNU

export VARIABLE=value  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

$env:VARIABLE="value"  
Enter fullscreen mode Exit fullscreen mode

💻 30. Display System Information (kernel, OS)

🐂 GNU

uname -a  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-CimInstance Win32_OperatingSystem | Select-Object Caption, Version, OSArchitecture  
Enter fullscreen mode Exit fullscreen mode

💻 31. Check Current Date and Time

🐂 GNU

date  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-Date  
Enter fullscreen mode Exit fullscreen mode

💻 32. Show Logged-In Users

🐂 GNU

who  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

query user  
Enter fullscreen mode Exit fullscreen mode

💻 33. Check Open TCP Ports and Associated Processes

🐂 GNU

sudo netstat -tulpn  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-NetTCPConnection | Select-Object LocalAddress,LocalPort,OwningProcess  
Enter fullscreen mode Exit fullscreen mode

💻 34. Search for Files by Name

🐂 GNU

find /path -name "file.txt"  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-ChildItem -Path C:\path -Recurse -Filter "file.txt"  
Enter fullscreen mode Exit fullscreen mode

💻 35. Schedule a Task (cron / Task Scheduler)

🐂 GNU

crontab -e  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

# Simple example to create a scheduled task via PowerShell  
$action = New-ScheduledTaskAction -Execute "notepad.exe"  
$trigger = New-ScheduledTaskTrigger -At 9am -Daily  
Register-ScheduledTask -TaskName "OpenNotepad" -Action $action -Trigger $trigger  
Enter fullscreen mode Exit fullscreen mode

💻 36. Clear Screen

🐂 GNU

clear  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Clear-Host  
Enter fullscreen mode Exit fullscreen mode

💻 37. Show System Variables (with name and value)

🐂 GNU

env  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-ChildItem Env:  
Enter fullscreen mode Exit fullscreen mode

💻 38. Compare Files Line by Line

🐂 GNU

diff file1 file2  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Compare-Object (Get-Content file1) (Get-Content file2)  
Enter fullscreen mode Exit fullscreen mode

💻 39. Run Local Script (bash / PowerShell)

🐂 GNU

./script.sh  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

.\script.ps1  
Enter fullscreen mode Exit fullscreen mode

💻 40. Stop Command Execution (Ctrl + C)

🐂 GNU

Ctrl + C  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Ctrl + C  
Enter fullscreen mode Exit fullscreen mode

💻 41. Get Command History for Current Session

🐂 GNU

history  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-History  
Enter fullscreen mode Exit fullscreen mode

💻 42. Get File with Command History

🐂 GNU

cat ~/.bash_history  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-Content (Get-PSReadlineOption).HistorySavePath  
Enter fullscreen mode Exit fullscreen mode

💻 43. Search Text in Command History

🐂 GNU

history | grep term  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-History | Where-Object CommandLine -Match "term"  
Enter fullscreen mode Exit fullscreen mode

💻 44. Display Variables Defined in Current Session

🐂 GNU

set  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-Variable  
Enter fullscreen mode Exit fullscreen mode

💻 45. Define Local Variable (shell/session)

🐂 GNU

VARIABLE=value  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

$VARIABLE = "value"  
Enter fullscreen mode Exit fullscreen mode

💻 46. Limit Command Output (pager)

🐂 GNU

command | less  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

command | Out-Host -Paging  
Enter fullscreen mode Exit fullscreen mode

💻 47. Define Alias (command shortcut)

🐂 GNU

alias ll='ls -la'  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Set-Alias ll Get-ChildItem  
Enter fullscreen mode Exit fullscreen mode

💻 48. Remove Alias

🐂 GNU

unalias ll  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Remove-Item Alias:ll  
Enter fullscreen mode Exit fullscreen mode

💻 49. Show CPU Information

🐂 GNU

lscpu  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

Get-CimInstance Win32_Processor | Select-Object Name,NumberOfCores,NumberOfLogicalProcessors  
Enter fullscreen mode Exit fullscreen mode

💻 50. Open Text Editor in Terminal

🐂 GNU

vim file.txt  
Enter fullscreen mode Exit fullscreen mode

✴️ PowerShell

notepad file.txt  
Enter fullscreen mode Exit fullscreen mode

🍖 Bonus:

Download a File:

  • GNU:
wget https://url.com/file.zip  
# Or: wget https://url.com/file.zip -O newname.zip  
Enter fullscreen mode Exit fullscreen mode
  • PowerShell:
Invoke-WebRequest -Uri "https://url.com/file.zip" -OutFile "file.zip"  
Enter fullscreen mode Exit fullscreen mode

👓 See Also:

🔗 7 PowerShell Usage Examples

🔗 Discover 7 GNU Tools That Power the Command Line

🔗 10 Tips for GNU GCC Flags and Parameters

🔗 Customize Your PowerShell Like a Pro

Top comments (0)