Commands
As Linux is a command-line-based operating system, the use of commands is crucial for interacting with the system, performing tasks, and managing files and applications.
Here is a list of essential and useful commands:
Create a bash instance
bash
Exit from a bash instance
exit
See the manual/documentation or find a command
man $command
man -k $keyword #Make a search of command by a keyword
apropos $keyword #Find a command by description
Clean up the console content
clear
Get information about users logged in
whoami #Shows the currently logged-in user
who #Shows all logged-in users
Get the name of the computer
hostname
Get information about the machine and system
uname
uname -a #Print all information
uname -r #Print kernel version
uname -m #Print machine hardware name
Executes a command with superuser permissions
sudo $command
sudo -l #See what commands can use the user with sudo
See user and group information
id
id $username #Can be used with any user
List files, directories, devices, and more
ls #In the actual directory
ls $path #In path directory
ls -a #Include hidden files
ls -1 #List each file in a single line
ls -l #File permissions, associated user and groups, creation date and hour
ls -l -lr #List and order in z-a order
ls -l -lt #List and order by last modified
ls -i #List with index/inode number
lsof #List open files
lsusb #List USB devices
lsblk #List disk partitions
Change permissions of a file
sudo chmod +$permision $filename #Add permission
sudo chmod -$permision $filename #Remove permission
sudo chmod -R 777 $filename #Give all permission to everyone
sudo chown $owner:$group $filename #Change owner and group of a file
Shows Actual Working directory
pwd
Change the directory to the specified path
cd #Redirect to the home directory
cd ~ #Redirect to the home directory
cd $path #Redirect to the specified file
cd ../ #Redirect to the upper directory
cd - #Redirect to the last directory
Get the path of the file by searching in directories defined at the
$PATH
environment variable
which $filename
Get the path of a file by searching in locate.db
locate $filename
sudo updatedb #Update locate.db
Update locate.db manually
sudo updatedb
List sockets/services statistics
ss
Use enviroment variables
env #List current variables
$variablename=$value #Created only in the current shell
export $variablename=$value #Created globally
List command history
history
export HISTCONTROL=$value #Set output format for history
export HISTIGNORE='$regex' #Set ignore values for history
export HISTTIMEFORMAT='$options' #Set time format for history
Repeat a command based on the history
!$number #Repeat the command with that number
!! #Repeat the last command used
Open a file, usually graphic files such as images and PDFs
open $filename
display $imagefile
Assign a name for simplified a command or redefine a command
alias $name=$command
alias #See all defined aliases
unalias $name #Delete alias
Output any text that we provide
echo $text
Create a new directory
mkdir $dirname
mkdir ${dirname1,dirname2} #Create various folders
mkdir -p $dirname/{$subdir1,$subdir2} #Create a folder with subfolders
Shows file content in command-line
cat $file
cat $path #File in the specified file path
head $filename #Shows 10 initial lines
head -n$number $filename #Shows the first $number lines
tail $filename #Shows 10 final lines
tail -n$number $filename #Shows the last $number lines
tail -f $filename #Shows appended lines as data grows
more $file #Charge one page of content at the time
less $file #Same as more but have more features
Find a file or directory
find . #All files and directories from the actual directory
find / #All files and directories from root directory
find $path #All files and directories from specific directory
find . -name $filename #Find by exact name
find . -name "*.$extension" #All files with the specified extension
find . -d $dir #Only search directories
find . -f $dir #Only search files
find . -perm $permissions #Find by specified permissions
find . -group $groupname #Find by group
find . -user $username #Find by owner
find . -size $size$unit #Find by exact size, c for bytes, M for MB
find . -size +$size$unit #Find by larger size than specified
find . -size -$size$unit #Find by smaller size than specified
find . -mtime $n #Files modified in the last n days
find . -atime $n #Files accessed in the last n days
find . -cmin $n #Files changed in the last n minutes
find . -amin $n #Files accessed in the last n minutes
find . -newermt $date #Files newer than the specified date
find . 2>/dev/null #Exclude files with standard errors
Count the number of entries in a file or output
wc $filename #Count the number of lines, words, and bytes
wc -l $filename #Count number of lines
wc -m $filename #Count number of characters
wc -c $filename #Count number of bytes
wc -w $filename #Count number of words
wc $filename $filename #Count various files and show the total for each one
Search through a file and show any entries with the specified value
grep "$text" $filename
grep -i "$text" $filename #Ignore the value given
grep -v "$text" $filename #Returns non-matching results
grep -e "$ReGex" $filename #Use regular expressions
egrep "$ReGex" $filename #Alternative for use of regular expressions
Edit text and streams on output
sed 's/$objetive/$replacement/g' $filename
Extract a section of text from the file
cut -f $fieldnumber -d "$delimiter" $filename
awk '{print $field, $field}' #By default space as separator, fields are columns
awk '{print $1, $NF}' #With $1 get first line result, with $NF last line result
awk -F "$delimiter" '{print $field, $field}' #Spicify delimiter
Sort lines of a file
sort $filename #Order by alphabet using the first character
sort -f $filename #Ignore Case sensitive
sort -u $filename #Count and not repeat if the same
sort -r $filename #Reverse the result
sort -n $filename #Compare as numerical value
sort -k $field$delimitertor$position $filename #Order by field and position
Find unique occurrences in a file
sort $filename | uniq
sort $filename | uniq -c #Count number of occurrences
sort $filename | uniq -b #Get repeated lines
Compare the content of files
comm $file1 $file2
comm -$number $file1 $file2 #Supress specified lines
diff $file1 $file2
diff -c $file1 $file2 #Ouput in context format
diff -u $file1 $file2 #Ouput in unified format
Shows the content of a file with replacements on the output
tr $filename $expression $replacement
tr $filename -c $expression $replacement #What not match is replaced
tr $filename -d $expression #Delete what coincides with expression
Format the output in columns
column $file -t #By default use space as a separator
column $file -t -s $sep #Use set of characters as separator
Encode or decode base64
base64 $filename -e #Encode
base64 $filename -d #Decode
Transform hex dump
xdd $filename #Show hex dump of the file
xdd -r $filename #Reverse hex dump to a file
Compress or extract files
gzip $filename #Compress
gzip -d $filename #Extract
bzip2 $filename #Compress
bzip2 -d $filename #Extract
tar -f $filename #Compress
tar -cvz $filename #Compress
tar -xf $filename #Extract
7z a $namecompressed $filename #Compress
7z e $filename #Extract
Use data encryption
gpg -e $filename #Encrypt data
gpg -d $filename #Decrypt data
Create a file with the specified name
touch $filename
Delete a file or directory
rm $filename #To remove a file
rm -R $dirname #To remove a directory
Copy the content of a file into a new one
cp $filename $newfilename
Move or rename a file
mv $filename $dirname
mv $filename $newname #Rename file
Shows the type of file
file $filename
Execute a command at regular intervals
watch
watch -n$number $command #Execute command every $number seconds
Change to the specified user
su $username #Change user and stay in the same place
su -l $username #Redirects to the home directory of the other user
Create or edit a file through the command line
nano $filename
nano -B $filename #Make a backup when opening a file with nano
vi $filename #More powerful Text Editor
vim $filename #Improved version of vi
vimtutor #Enter tutor mode for practicing
Shows estimated disk usage of a file
du $filename
du -h $filename #Shows output in human-readable mode
du -b $filename #Shows output in bytes mode
Make petitions to websites
curl $URL #Make a get petition
curl -L $URL #Follow redirections
curl -O $URL/$file #Save a file with the same name
curl -o $name $URL/$file #Save a file with a different name
curl -o $URL/$file1 -o $URL/$file2 #Get various files
curl $URL -d "$param=$value" #Specificate values of body
curl -X $PETITION $URL #Make an specific type of petition
curl $firstpetition --next $secondpetition #Make various petition
curl $URL -H "$header:$value" #Specific header in a petition
curl $URL -v #Get verbose output
curl -IL $URL #Catch header, useful for banner grabbing
wget $URL
wget -O $URL/file #Save a file with the same name
wget -o $name $URL/file #Save a file with a different name
axel $URL #Dowload through various connections
axel -n$number $URL #Specify the number of connections to use
axel -O $name $URL #Save with a different name
Verify MD5 encryption for a file
md5sum $filename
Get and Send files via SCP
scp $filename $user@$remoteIP:$remotepath #For sending a file
scp $user@$remoteIP:$remotepath $filename #For getting a file
scp -r $dirname $user@$remoteIP:$remotepath #For copying a directory
Execute python utilities
python3 $filename #Execute a python file
python3 -m $modulename #Start a python module
Get information about the system running processes
ps #Show process run in the user session
ps aux #Shows other user and complete system processes
ps -A #Shows all processes
ps -f #Display full format listing
ps -C $commandname #Shows process with a specified command
ps axjf #Show as a tree
top #Real-time information about the system running processes
Kill a system process, we can send some signals to specify the type of killing
kill -9 $PID
kill -s SIGTERM $PID #Kill the process, but allow to do some cleanup
kill -s SIGKILL $PID #Kill the process but doesn't do any cleanup
kill -s SIGSTOP $PID #Stop/suspend a process
kill -s SIGINT $PID #Interrupt a process (same as CTRL+C)
kill -s SIGQUIT $PID #Quit process (same as CTRL+D)
kill -s SIGTSTP $PID #Suspend process but can still be handled (same as CTRL+Z)
kill -l #See all possible signals that can be sent
Manage system processes and services
systemctl $option $process
systemctl start $process #For starting a process
systemctl stop $process #For killing a process
systemctl enable $process #Set process to start at startup
systemctl disable $process #Set process to not start at startup
systemctl status $Process #View the status of a process
systemctl list-unit-files #List the status of all processes
systemctl list-units --type=service #List status of all services
journalctl -u $service --no-pager #See logs of a service
Handle background processes
jobs #List all actual background processes
bg #Resume stopped background processes
bg $PID #Send specified process to background
fg $PID #Foreground a background process
fg %$jobID #Foreground specified list ID process
fg %$String #Refers to the beginning of the suspended process
fg %+ #Refers to the current job
fg %- #Refers to the previous job
Schedule to repeat a process as a crontab
crontab -e #Edit actual crontab
crontab -l #Show actual crontab
crontab -r #Delete actual crontab
crontab -i #Prompt actual crontab and delete it
Manage packages, repositories, and digital signatures from APT
apt install $packagename #Install a package
apt reinstall $packagename #Reinstall a package from scratch
apt remove $packagename #Remove a package
apt remove --purge $packagename #Delete package and its configuration
apt update $packagename #Update a package
apt update #Update all packages
apt upgrade #Update Linux system and applications
apt-get #Use the first version for actions
apt-cache search $toolname #Search for a tool in apt repositories
apt show $packagename #Show information about a package
add-apt-repository #Add repositories from developers to your apt lists
apt-key add $filename #Add key file to trusted keys list
apt-key del $keyID #Remove key trusted keys list
apt-key list #List all trusted keys
apt list --installed | grep "installed" | wc -l #Check number of installed packages
Manage packages via Debian
dpkg -i $packagename #Install a package
dpkg -r $packagename #Remove a package
dpkg -P $packagename #Delete package and its configuration
Test if the connection to a remote resource is possible
ping $IPaddress
ping $URLdomain #Use domain name
ping $IPaddress -4 #Limit to only IPv4 requests
ping $IPaddress -6 #Limit to only IPv6 requests
ping $IPaddress -i $seconds #Set time interval to send each packet
ping $IPaddress -v #Show a verbose output
ping $IPaddress -c $number #Send an exact number of packet
ping $IPaddress -s $size #Specify the number of bytes of the data
Show the path a request takes as it heads to the target machine
traceroute $IPaddress
traceroute $URLdomain
traceroute $IPaddress -i $interface #Specify interface for send packets
traceroute $IPaddress -T #Use TCP SYN for connection probes
Gather information about with DNS lookups
whois $URLdomain #Get domain register information
host 72.163.10.1 #Do reserve lookup to get a host names
Obtain IP and record information from a domain
nslookup $URLdomain
nslookup $URLdomain $serverIP #Change server used to perform lookups
nslookup -type=$record $URLdomain #Specify record type
nslookup #Enter interactive mode
> Exit #Quit interactive mode
Query recursive DNS servers for domain's information
dig $URLdomain $record
dig $URLdomain $serverIP #Change server used to perform lookups
dig @$DNSIPaddress $URLdomain #Look up DNS records
dig @$DNSIPaddress $URLdomain $record #Specify record type on DNS records
dig -x $IP #Perform reverse DNS lookups
dig CH TXT $URLdomain @$DNSIPaddress #Check DNS version
dig axfr $URLdomain @$DNSIPaddress #Check zone transfer
Manage disk partition table
fdisk $device
fdisk -l #List all current disk partitions
Network Utilities
ifconfig #Check network interfaces
ifconfig $interface up #Activate a network interface
ifconfig $interface $IP #Assign IP Address to an Interface
ifconfig $interface netmask $mask #Assign a Netmask to an Interface
route add default gw $IP $interface
iwconfig #Check only wireless Interfaces
ip route #Check existing network routes
ip link set $interface up #Activate a network interface
netstat #Check ports and active connections
netstat -a #List all ports and connection
netstat -l #List listening ports
netstat -t #List only TCP ports
netstat -u #List only UDP ports
netstat -s #List network usage statistics by protocol
netstat -p #List with PID and program name
netstat -ano #Most common use, n to no resolve names, o to display timers
netstat -tunap #Nice version
List capabilities of all binary files
getcap -r / 2>/dev/null #Is good practice to redirect errors if not run with sudo
Modify users, groups and passwords
useradd #Creates a new user or update default new user information
userdel #Deletes a user account and related files
usermod #Modifies a user account
addgroup #Adds a group to the system
delgroup #Deletes a group of the system
passwd #Changes user password
Last updated