LICENSE | ||
README.md |
Ultimate list of Linux bash commands
Bash is the Unix command-line interface (CLI). Also called the terminal, the command line, or the shell. It's a command language that allows us to work with files on our computers in a way that's far more efficient and powerful than using a GUI (graphical user interface).
A to Z command list 📚
Note
UseCtrl+f
to search in browsers🔎
Table
│ A │ B │ C │ D │ E │ F │ G │ H │ I │ J │ K │ L │ M │ N │ O │ P │ Q │ R │ S │ T │ U │ V │ W │ X │ Y │ Z │
A
Command | Description |
---|---|
accept | Accept or Reject jobs to a destination, such as a printer. |
access | Check a user’s RWX(read, write and execute) permission for a file. |
accton | Used to turn on or turn off the process for accounting or change info process accounting file. |
aclocal | Used to automatically generate aclocal.m4 files from configure.in file. |
aconnect | ALSA(Advanced Linux Sound Architecture) sequencer connection manager. |
acpi | Show information about the Advanced Configuration and Power Interface. |
acpi_available | Check if ACPI(Advanced Configuration and Power Interface) functionality exists on the system. |
acpid | Informs user-space programs about ACPI events. |
addr2line | Used to convert addresses into file names and line numbers. |
addresses | Formats for internet mail addresses. |
agetty | An alternative Linux Getty that manages physical or virtual terminals to allow multi-user access |
alias | Create an alias, a shortcut that references a command. |
alsactl | Access advanced controls for ALSA soundcard driver. |
amidi | Perform read/write operation for ALSA RawMIDI ports. |
amixer | Access CLI-based mixer for ALSA soundcard driver. |
anacron | Used to run commands periodically. |
aplay | Sound recorder and player for CLI. |
aplaymidi | CLI utility used to play MIDI files. |
apm | Show Advanced Power Management (APM) hardware info on older systems. |
apmd | Used to handle events reported by APM BIOS drivers. |
apropos | Shows the list of all man pages containing a specific keyword. |
apt | Advanced Package Tool, a package management system for Debian and derivatives. |
apt-get | Command-line utility to install/remove/update packages based on APT system. |
aptitude | Another utility to add/remove/upgrade packages based on the APT system. |
ar | A utility to create/modify/extract from archives. |
arch | Display print machine hardware name. |
arecord | Just like aplay, it’s a sound recorder and player for ALSA soundcard driver. |
arecordmidi | Record standard MIDI files. |
arp | Used to make changes to the system’s ARP cache. |
as | A portable GNU assembler. |
aspell | An interactive spell checker utility. |
at | Used to schedule command execution at specified date & time, reading commands from an input file. |
atd | Used to execute jobs queued by the at command. |
atq | List a user’s pending jobs for the at command. |
atrm | Delete jobs queued by the at command. |
audiosend | Used to send an audio recording as an email. |
aumix | An audio mixer utility. |
autoconf | Generate configuration scripts from a TEMPLATE-FILE and send the output to standard output. |
autoheader | Create a template header for configure. |
automake | Creates GNU standards-compliant Makefiles from template files. |
autoreconf | Update generated configuration files. |
autoscan | Generate a preliminary configure.in file. |
autoupdate | Update a configure.in file to newer autoconf. |
awk | A scripting language used for manipulating data and generating reports. Also used to find and replace text in a file(s). |
B
Command | Description |
---|---|
badblocks | Search a disk partition for bad sectors. |
banner | Used to print characters as a poster. |
basename | Used to display filenames with directory or suffix. |
bash | GNU Bourne-Again Shell. |
batch | Used to run commands entered on a standard input. |
bc | Access the GNU bc calculator utility. |
bg | Send processes to the background. |
biff | Notify about incoming mail and sender’s name on a system running comsat server. |
bind | Used to attach a name to a socket. |
bison | A GNU parser generator, compatible with yacc. |
break | Used to exit from a loop (eg: for, while, select). |
builtin | Used to run shell builtin commands, make custom functions for commands extending their functionality. |
bzcmp | Used to call the cmp program forbzip2 compressed files. |
bzdiff | Used to call the diff program for bzip2 compressed files. |
bzgrep | Used to call grep for bzip2 compressed files. |
bzip2 | A block-sorting file compressor used to shrink given files. |
bzless | Used to apply ‘less’ (show info one page at a time) to bzip2 compressed files. |
bzmore | Used to apply ‘more’ (an inferior version of less) to bzip2 compressed files. |
C
Command | Description |
---|---|
cal | Show calendar. |
cardctl | Used to control PCMCIA sockets and select configuration schemes. |
cardmgr | Keeps an eye on the added/removes sockets for PCMCIA devices. |
case | Execute a command conditionally by matching a pattern. |
cat | Used to concatenate files and print them on the screen. |
cc | GNU C and C++ compiler. |
ccrypt | Used for encryption and decryption of data. |
cd | Used to change directory. |
cdda2wav | Used to rip a CD-ROM and make WAV file. |
cdparanoia | Record audio from CD more reliably using data-verification algorithms. |
cdrdao | Used to write all the content specified to a file to a CD all at once. |
cdrecord | Used to record data or audio compact discs. |
cfdisk | Show or change the disk partition table. |
chage | Used to change user password information. |
chattr | Used to change file attributes. |
chdir | Used to change active working directory. |
chfn | Used to change real user name and information. |
chgrp | Used to change group ownership for file. |
chkconfig | Manage execution of runlevel services. |
chmod | Change access permission for a file(s). |
chown | Change the owner or group for a file. |
chpasswd | Update password in a batch. |
chroot | Run a command with root directory. |
chrt | Alter process attributed in real-time. |
chsh | Switch login shell. |
chvt | Change foreground virtual terminal. |
cksum | Perform a CRC checksum for files. |
clear | Used to clear the terminal window. |
cmp | Compare two files (byte by byte). |
col | Filter reverse (and half-reverse) line feeds from the input. |
colcrt | Filter nroff output for CRT previewing. |
colrm | Remove columns from the lines of a file. |
column | A utility that formats its input into columns. |
comm | Used to compare two sorted files line by line. |
command | Used to execute a command with arguments ignoring shell function named command. |
compress | Used to compress one or more file(s) and replacing the originals ones. |
continue | Resume the next iteration of a loop. |
cp | Copy contents of one file to another. |
cpio | Copy files from and to archives. |
cpp | GNU C language processor. |
cron | A daemon to execute scheduled commands. |
crond | Same work as cron. |
crontab | Manage crontab files (containing schedules commands) for users. |
csplit | Split a file into sections on the basis of context lines. |
ctags | Make a list of functions and macro names defined in a programming source file. |
cupsd | A scheduler for CUPS. |
curl | Used to transfer data from or to a server using supported protocols. |
cut | Used to remove sections from each line of a file(s). |
cvs | Concurrent Versions System. Used to track file versions, allow storage/retrieval of previous versions, and enables multiple users to work on the same file. |
D
Command | Description |
---|---|
date | Show system date and time. |
dc | Desk calculator utility. |
dd | Used to convert and copy a file, create disk clone, write disk headers, etc. |
ddrescue | Used to recover data from a crashed partition. |
deallocvt | Deallocates kernel memory for unused virtual consoles. |
debugfs | File system debugger for ext2/ext3/ext4 |
declare | Used to declare variables and assign attributes. |
depmod | Generate modules.dep and map files. |
devdump | Interactively displays the contents of device or file system ISO. |
df | Show disk usage. |
diff | Used to compare files line by line. |
diff3 | Compare three files line by line. |
dig | Domain Information Groper, a DNS lookup utility. |
dir | List the contents of a directory. |
dircolors | Set colors for ‘ls’ by altering the LS_COLORS environment variable. |
dirname | Display pathname after removing the last slash and characters thereafter. |
dirs | Show the list of remembered directories. |
disable | Restrict access to a printer. |
dlpsh | Interactive Desktop Link Protocol (DLP) shell for PalmOS. |
dmesg | Examine and control the kernel ring buffer. |
dmidecode | Used when the user wants to retrieve system’s hardware related information such as Processor, RAM(DIMMs), BIOS detail, etc. of Linux system in a readable format. |
dnsdomainname | Show the DNS domain name of the system. |
dnssec-keygen | Generate encrypted Secure DNS keys for a given domain name. |
dnssec-makekeyset | Produce domain key set from one or more DNS security keys generated by dnssec-keygen. |
dnssec-signkey | Sign a secure DNS keyset with key signatures specified in the list of key-identifiers. |
dnssec-signzone | Sign a secure DNS zonefile with the signatures in the specified list of key-identifiers. |
doexec | Used to run an executable with an arbitrary argv list provided. |
domainname | Show or set the name of current NIS (Network Information Services) domain. |
dosfsck | Used to retrieve information or statistics form components of the system such as network connections, IO devices, or CPU, etc. |
dstat | Check and repair MS-DOS file systems. |
du | Show disk usage summary for a file(s). |
dump | Backup utility for ext2/ext3 file systems. |
dumpe2fs | Dump ext2/ext3/ext4 file systems. |
dumpkeys | Show information about the keyboard driver’s current translation tables. |
E
Command | Description |
---|---|
e2fsck | Used to check ext2/ext3/ext4 file systems. |
e2image | Store important ext2/ext3/ext4 filesystem metadata to a file. |
e2label | Show or change the label on an ext2/ext3/ext4 filesystem. |
echo | Send input string(s) to standard output i.e. display text on the screen. |
ed | GNU Ed – a line-oriented text editor. |
edquota | Used to edit filesystem quotas using a text editor, such as vi. |
egrep | Search and display text matching a pattern. |
eject | Eject removable media. |
elvtune | Used to set latency in the elevator algorithm used to schedule I/O activities for specified block devices. |
emacs | Emacs text editor command line utility. |
enable | Used to enable/disable shell builtin commands. |
env | Run a command in a modified environment. Show/set/delete environment variables. |
envsubst | Substitute environment variable values in shell format strings. |
esd | Start the Enlightenment Sound Daemon (EsounD or esd). Enables multiple applications to access the same audio device simultaneously. |
esd-config | Manage EsounD configuration. |
esdcat | Use EsounD to send audio data from a specified file. |
esdctl | EsounD control program. |
esddsp | Used to reroute non-esd audio data to esd and control all the audio using esd. |
esdmon | Used to copy the sound being sent to a device. Also, send it to a secondary device. |
esdplay | Use EsounD system to play a file. |
esdrec | Use EsounD to record audio to a specified file. |
esdsample | Sample audio using esd. |
etags | Used to create a list of functions and macros from a programming source file. These etags are used by emacs. For vi, use ctags. |
ethtool | Used to query and control network driver and hardware settings. |
eval | Used to evaluate multiple commands or arguments are once. |
ex | Interactive command |
exec | An interactive line-based text editor. |
exit | Exit from the terminal. |
expand | Convert tabs into spaces in a given file and show the output. |
expect | An extension to the Tcl script, it’s used to automate interaction with other applications based on their expected output. |
export | Used to set an environment variable. |
expr | Evaluate expressions and display them on standard output. |
F
Command | Description |
---|---|
factor | Display prime factors of specified integer numbers. |
false | Do nothing, unsuccessfully. Exit with a status code indicating failure. |
fc | Used to list, edit or re-execute the commands previously entered into an interactive shell. |
fc-cache | Make font information cache after scanning the directories. |
fc-list | Show the list of available fonts. |
fdformat | Do a low-level format on a floppy disk. |
fdisk | Make changes to the disk partition table. |
fetchmail | Fetch mail from mail servers and forward it to the local mail delivery system. |
fg | Used to send a job to the foreground. |
fgconsole | Display the number of the current virtual console. |
fgrep | Display lines from a file(s) that match a specified string. A variant of grep. |
file | Determine file type for a file. |
find | Do a file search in a directory hierarchy. |
finger | Display user data including the information listed in .planand .projectin each user’s home directory. |
fingerd | Provides a network interface for the finger program. |
flex | Generate programs that perform pattern-matching on text. |
fmt | Used to convert text to a specified width by filling lines and removing new lines, displaying the output. |
fold | Wrap input line to fit in a specified width. |
for | Expand words and run commands for each one in the resultant list. |
formail | Used to filter standard input into mailbox format. |
format | Used to format disks. |
free | Show free and used system memory. |
fsck | Check and repair a Linux file system |
ftp | File transfer protocol user interface. |
ftpd | FTP server process. |
function | Used to define function macros. |
Fun | Used to draw various type of patterns on the terminal. |
fuser | Find and kill a process accessing a file. |
G
Command | Description |
---|---|
g++ | Run the g++ compiler. |
gawk | Used for pattern scanning and language processing. A GNU implementation of AWK language. |
gcc | A C and C++ compiler by GNU. |
gdb | A utility to debug programs and know about where it crashes. |
getent | Shows entries from Name Service Switch Libraries for specified keys. |
getkeycodes | Displays the kernel scancode-to-keycode mapping table. |
getopts | A utility to parse positional parameters. |
gpasswd | Allows an administrator to change group passwords. |
gpg | Enables encryption and signing services as per the OpenPGP standard. |
gpgsplit | Used to split an OpenPGP message into packets. |
gpgv | Used to verify OpenPGP signatures. |
gpm | It enables cut and paste functionality and a mouse server for the Linux console. |
gprof | Shows call graph profile data. |
grep | Searches input files for a given pattern and displays the relevant lines. |
groff | Serves as the front-end of the groff document formatting system. |
groffer | Displays groff files and man pages. |
groupadd | Used to add a new user group. |
groupdel | Used to remove a user group. |
groupmod | Used to modify a group definition. |
groups | Showthe group(s) to which a user belongs. |
grpck | Verifies the integrity of group files. |
grpconv | Creates agshadow file from a group or an already existing gshadow. |
gs | Invokes Ghostscript, and interpreter and previewer for Adobe’s PostScript and PDF languages. |
gunzip | A utility to compress/expand files. |
gzexe | Used compress executable files in place and have them automatically uncompress and run at a later stage. |
gzip | A utility to compress/expand files. |
H
Command | Description |
---|---|
halt | Command used to half the machine. |
hash | Shows the path for the commands executed in the shell. |
hdparm | Show/configure parameters for SATA/IDE devices. |
head | Shows first 10 lines from each specified file. |
help | Display’s help for a built-in command. |
hexdump | Shows specified file output in hexadecimal, octal, decimal, or ASCII format. |
history | Shows the command history. |
host | A utility to perform DNS lookups. |
hostid | Shows host’s numeric ID in hexadecimal format. |
hostname | Display/set the hostname of the system. |
hostnamectl | Provides a proper API used to control Linux system hostname and change its related settings. |
htdigest | Manage the user authentication file used by the Apache web server. |
htop | An interactive process viewer for the command line. |
hwclock | Show or configure the system’s hardware clock. |
I
Command | Description |
---|---|
iconv | Convert text file from one encoding to another. |
id | Show user and group information for a specified user. |
if | Execute a command conditionally. |
ifconfig | Used to configure network interfaces. |
ifdown | Stops a network interface. |
iftop | It is a network analyzing tool used by system administrators to view the bandwidth related stats. |
ifup | Starts a network interface. |
imapd | An IMAP (Interactive Mail Access Protocol) server daemon. |
import | Capture an X server screen and saves it as an image. |
inetd | Extended internet services daemon, it starts the programs that provide internet services. |
info | Used to read the documentation in Info format. |
init | Systemd system and service manager. |
insmod | A program that inserts a module into the Linux kernel. |
install | Used to copy files to specified locations and set attributions during the install process. |
iostat | Shows statistics for CPU, I/O devices, partitions, network filesystems. |
iotop | Used to display and monitor the disk IO usage details and even gets a table of existing IO utilization by the process. |
ip | Display/manipulate routing, devices, policy, routing and tunnels. |
ipcrm | Used to remove System V interprocess communication (IPC) objects and associated data structures. |
ipcs | Show information on IPC facilities for which calling process has read access. |
iptables | Administration tool for IPv4 packet filtering and NAT. |
iptables-restore | Used to restore IP tables from data specified in the input or a file. |
iptables-save | Used to dump IP table contents to standard output. |
iwconfig | Used to display the parameters, and the wireless statistics which are extracted from /proc/net/wireless. |
isodump | A utility that shows the content iso9660 images to verify the integrity of directory contents. |
isoinfo | A utility to perform directory like listings of iso9660 images. |
isosize | Show the length of an iso9660 filesystem contained in a specified file. |
isovfy | Verifies the integrity of an iso9660 image. |
ispell | A CLI-based spell-check utility. |
J
Command | Description |
---|---|
jobs | Show the list of active jobs and their status. |
join | For each pair of input lines, join them using a command field and display on standard output. |
journalctl | Used to view systemd, kernal and journal logs. |
K
Command | Description |
---|---|
kbd_mode | Set a keyboard mode. Without arguments, shows the current keyboard mode. |
kbdrate | Reset keyboard repeat rate and delay time. |
kill | Send a kill (termination) signal to one more processes. |
killall | Kills a process(es) running a specified command. |
killall5 | A SystemV killall command. Kills all the processes excluding the ones which it depends on. |
klogd | Control and prioritize the kernel messages to be displayed on the console, and log them through syslogd. |
kudzu | Used to detect new and enhanced hardware by comparing it with existing database. Only for RHEL and derivatives. |
L
Command | Description |
---|---|
last | Shows a list of recent logins on the system by fetching data from /var/log/wtmp file. |
lastb | Shows the list of bad login attempts by fetching data from /var/log/btmpfile. |
lastlog | Displays information about the most recent login of all users or a specified user. |
ld | The Unix linker, it combines archives and object files. It then puts them into one output file, resolving external references. |
ldconfig | Configure dynamic linker run-time bindings. |
ldd | Shows shared object dependencies. |
less | Displays contents of a fileone page at a time. It’s advanced than more command. |
lesskey | Used to specify key bindings for less command. |
let | Used to perform integer artithmetic on shell variables. |
lftp | An FTP utility with extra features. |
lftpget | Uses lftop to retrieve HTTP, FTP, and other protocol URLs supported by lftp. |
link | Create links between two files. Similar to ln command. |
ln | Create links between files. Links can be hard (two names for the same file) or soft (a shortcut of the first file). |
loadkeys | Load keyboard translation tables. |
local | Used to create function variables. |
locale | Shows information about current or all locales. |
locate | Used to find files by their name. |
lockfile | Create semaphore file(s) which can be used to limit access to a file. |
logger | Make entries in the system log. |
login | Create a new session on the system. |
logname | Shows the login name of the current user. |
logout | Performs the logout operation by making changes to the utmp and wtmp files. |
logrotate | Used for automatic rotation, compression, removal, and mailing of system log files. |
look | Shows any lines in a file containing a given string in the beginning. |
losetup | Set up and control loop devices. |
lpadmin | Used to configure printer and class queues provided by CUPS (Common UNIX Printing System). |
lpc | Line printer control program, it provides limited control over CUPS printer and class queues. |
lpinfo | Shows the list of available devices and drivers known to the CUPS server. |
lpmove | Move on or more printing jobs to a new destination. |
lpq | Shows current print queue status for a specified printer. |
lpr | Used to submit files for printing. |
lprint | Used to print a file. |
lprintd | Used to abort a print job. |
lprintq | List the print queue. |
lprm | Cancel print jobs. |
lpstat | Displays status information about current classes, jobs, and printers. |
ls | Shows the list of files in the current directory. |
lsattr | Shows file attributes on a Linux ext2 file system. |
lsblk | Lists information about all available or the specified block devices. |
lshw | Used to generate the detailed information of the system’s hardware configuration from various files in the /proc directory. |
lsmod | Show the status of modules in the Linux kernel. |
lsof | List open files. |
lspci | List all PCI devices. |
lsusb | List USB devices. |
M
Command | Description |
---|---|
m4 | Macro processor. |
Utility to compose, receive, send, forward, and reply to emails. | |
mailq | Shows to list all emails queued for delivery (sendmail queue). |
mailstats | Shows current mail statistics. |
mailto | Used to send mail with multimedia content in MIME format. |
make | Utility to maintain groups of programs, recompile them if needed. |
makedbm | Creates an NIS (Network Information Services) database map. |
makemap | Creates database maps used by the keyed map lookups in sendmail. |
man | Shows manual pages for Linux commands. |
manpath | Determine search path for manual pages. |
mattrib | Used to change MS-DOS file attribute flags. |
mbadblocks | Checks MD-DOS filesystems for bad blocks. |
mcat | Dump raw disk image. |
mcd | Used to change MS-DOS directory. |
mcopy | Used to copy MS-DOS files from or to Unix. |
md5sum | Used to check MD5 checksum for a file. |
mdel, mdeltree | Used to delete MS-DOS file. mdeltree recursively deletes MS-DOS directory and its contents. |
mdir | Used to display an MS-DOS directory. |
mdu | Used to display the amount of space occupied by an MS-DOS directory. |
merge | Three-way file merge. Includes all changes from file2 and file3 to file1. |
mesg | Allow/disallow osends to sedn write messages to your terminal. |
metamail | For sending and showing rich text or multimedia email using MIME typing metadata. |
metasend | An interface for sending non-text mail. |
mformat | Used to add an MS-DOS filesystem to a low-level formatted floppy disk. |
mimencode | Translate to/from MIME multimedia mail encoding formats. |
minfo | Display parameters of an MS-DOS filesystem. |
mkdir | Used to create directories. |
mkdosfs | Used to create an MS-DOS filesystem under Linux. |
mke2fs | Used create an ext2/ext3/ext4 filesystem. |
mkfifo | Used to create named pipes (FIFOs) with the given names. |
mkfs | Used to build a Linux filesystem on a hard disk partition. |
mkfs.ext3 | Same as mke2fs, create an ext3 Linux filesystem. |
mkisofs | Used to create an ISO9660/JOLIET/HFS hybrid filesystem. |
mklost+found | Create a lost+found directory on a mounted ext2 filesystem. |
mkmanifest | Makes alist of file names and their DOS 8.3 equivalent. |
mknod | Create a FIFO, block (buffered) special file, character (unbuffered) special file with the specified name. |
mkraid | Used to setup RAID device arrays. |
mkswap | Set up a Linux swap area. |
mktemp | Create a temporary file or directory. |
mlabel | Make an MD-DOS volume label. |
mmd | Make an MS-DOS subdirectory. |
mmount | Mount an MS-DOS disk. |
mmove | Move or rename an MS-DOS file or subdirectory. |
mmv | Mass move and rename files. |
modinfo | Show information about a Linux kernel module. |
modprobe | Add or remove modules from the Linux kernel. |
more | Display content of a file page-by-page. |
most | Browse or page through a text file. |
mount | Mount a filesystem. |
mountd | NFS mount daemon. |
mpartition | Used to report processor related statistics. |
mpstat | Partition an MS-DOS disk. |
mpg123 | Command-line mp3 player. |
mpg321 | Similar to mpg123. |
mrd | Remove an MS-DOS subdirectory. |
mren | Rename an existing MS-DOS file. |
mshowfat | Show FTA clusters allocated to a file. |
mt | Control magnetic tape drive operation. |
mtools | Utilities to access MS-DOS disks. |
mtoolstest | Tests and displays the mtools configuration files. |
mtr | A network diagnostic tool. |
mtype | Display contents of an MS-DOS file. |
mv | Move/rename files or directories. |
mzip | Change protection mode and eject disk on Zip/Jaz drive. |
N
Command | Description |
---|---|
named | Internet domain name server. |
namei | Follow a pathname until a terminal point is found. |
nameif | Name network interfaces based on MAC addresses. |
nc | Netcat utility. Arbitrary TCP and UDP connections and listens. |
netstat | Show network information. |
newaliases | Rebuilds mail alias database. |
newgrp | Log-in to a new group. |
newusers | Update/create new users in batch. |
nfsd | Special filesystem for controlling Linux NFS server. |
nfsstat | List NFS statistics. |
nice | Run a program with modified scheduling priority. |
nl | Show numbered line while displaying the contents of a file. |
nm | List symbols from object files. |
nohup | Run a command immune to hangups. |
notify-send | A program to send desktop notifications. |
nslookup | Used performs DNS queries. Read this article for more info. |
nsupdate | Dynamic DNS update utility. |
O
Command | Description |
---|---|
objcopy | Copy and translate object files. |
objdump | Display information from object files. |
od | Dump files in octal and other formats. |
op | Operator access, allows system administrators to grant users access to certain root operations that require superuser privileges. |
open | Open a file using its default application. |
openvt | Start a program on a new virtual terminal (VT). |
P
Command | Description |
---|---|
passwd | Change user password. |
paste | Merge lines of files. Write to standard output, TAB-separated lines consisting of sequentially corresponding lines from each file. |
patch | Apply a patchfile (containing differences listing by diff program) to an original file. |
pathchk | Check if file names are valid or portable. |
perl | Perl 5 language interpreter. |
pgrep | List process IDs matching the specified criteria among all the running processes. |
pidof | Find process ID of a running program. |
ping | Send ICMP ECHO_REQUEST to network hosts. |
pinky | Lightweight finger. |
pkill | Send kill signal to processes based on name and other attributes. |
pmap | Report memory map of a process. |
popd | Removes directory on the head of the directory stack and takes you to the new directory on the head. |
portmap | Converts RPC program numbers to IP port numbers. |
poweroff | Shuts down the machine. |
pppd | Point-to-point protocol daemon. |
pr | Convert (column or paginate) text files for printing. |
praliases | Prints the current system mail aliases. |
printcap | Printer capability database. |
printenv | Show values of all or specified environment variables. |
printf | Show arguments formatted according to a specified format. |
ps | Report a snapshot of the current processes. |
ptx | Produce a permuted index of file contents. |
pushd | Appends a given directory name to the head of the stack and then cd to the given directory. |
pv | Monitor progress of data through a pipe. |
pwck | Verify integrity of password files. |
pwconv | Creates shadow from passwd and an optionally existing shadow. |
pwd | Show current directory. |
python | Computer programming language often used to build websites and software, automate tasks, and conduct data analysis. |
Q
Command | Description |
---|---|
quota | Shows disk usage, and space limits for a user or group. Without arguments, only shows user quotas. |
quotacheck | Used to scan a file system for disk usage. |
quotactl | Make changes to disk quotas. |
quotaoff | Enable enforcement of filesystem quotas. |
quotaon | Disable enforcement of filesystem quotas. |
quotastats | Shows the report of quota system statistics gathered from the kernel. |
R
Command | Description |
---|---|
raidstart | Start/stop RAID devices. |
ram | RAM disk device used to access the RAM disk in raw mode. |
ramsize | Show usage information for the RAM disk. |
ranlib | Generate index to the contents of an archive and store it in the archive. |
rar | Create and manage RAR file in Linux. |
rarpd | Respond to Reverse Address Resolution Protocol (RARP) requests. |
rcp | Remote copy command to copy files between remote computers. |
rdate | Set system date and time by fetching information from a remote machine. |
rdev | Set or query RAM disk size, image root device, or video mode. |
rdist | Remote file distribution client, maintains identical file copies over multiple hosts. |
rdistd | Start the rdist server. |
read | Read from a file descriptor. |
readarray | Read lines from a file into an array variable. |
readcd | Read/write compact disks. |
readelf | Shows information about ELF (Executable and Linkable format) files. |
readlink | Display value of a symbolic link or canonical file name. |
readonly | Mark functions and variables as read-only. |
reboot | Restart the machine. |
reject | Accept/reject print jobs sent to a specified destination. |
remsync | Synchronize remote files over email. |
rename | Rename one or more files. |
renice | Change priority of active processes. |
repquota | Report disk usage and quotas for a specified filesystem. |
reset | Reinitialize the terminal. |
resize2fs | Used to resize ext2/ext3/ext4 file systems. |
restore | Restore files from a backup created using dump. |
return | Exit a shell function. |
rev | Show contents of a file, reversing the order of characters in every line. |
rexec | Remote execution client for exec server. |
rexecd | Remote execution server. |
richtext | View “richtext” on an ACSII terminal. |
rlogin | Used to connect a local host system with a remote host. |
rlogind | Acts as the server for rlogin.It facilitates remote login, and authentication based on privileged port numbers from trusted hosts. |
rm | Removes specified files and directories (not by default). |
rmail | Handle remote mail received via uucp. |
rmdir | Used to remove empty directories. |
rmmod | A program to remove modules from Linux kernel. |
rndc | Name server control utility. Send command to a BIND DNS server over a TCP connection. |
rootflags | Show/set flags for the kernel image. |
route | Show/change IP routing table. |
routed | A daemon, invoked at boot time, to manage internet routing tables. |
rpcgen | An RPC protocol compiler. Parse a file written in the RPC language. |
rpcinfo | Shows RPC information. Makes an RPC call to an RPC server and reports the findings. |
rpm | A package manager for Linux distributions. Originally developed for RedHat Linux. |
rsh | Remote shell. Connects to a specified host and executes commands. |
rshd | A daemon that acts as a server for rsh and rcp commands. |
rsync | A versitile to for copying files remotely and locally. |
runlevel | Shows previous and current SysV runlevel. |
rup | Remote status display. Shows current system status for all or specified hosts on the local network. |
ruptime | Shows uptime and login details of the machines on the local network. |
rusers | Shows the list of the users logged-in to the host or on all machines on the local network. |
rusersd | The rsuerd daemon acts as a server that responds to the queries from rsuers command. |
rwall | Sends messages to all users on the local network. |
rwho | Reports who is logged-in to the hosts on the local network. |
rwhod | Acts as a server for rwho and ruptime commands. |
S
Command | Description |
---|---|
sane-find-scanner | Find SCSI and USB scanner and determine their device files. |
sar | Used to monitor Linux system’s resources like CPU usage, Memory utilization, I/O devices consumption, etc.. |
scanadf | Retrieve multiple images from a scanner equipped with an automatic document feeder (ADF). |
scanimage | Read images from image acquisition devices (scanner or camera) and display on standard output in PNM (Portable aNyMap) format. |
scp | Copy files between hosts on a network securely using SSH. |
screen | A window manager that enables multiple pseudo-terminals with the help of ANSI/VT100 terminal emulation. |
script | Used to make a typescript of everything displayed on the screen during a terminal session. |
scriptreplay | Used to replay a typescript/terminal_activity stored in the log file that was recorded by the script command. |
sdiff | Shows two files side-by-side and highlights the differences. |
sed | Stream editor for filtering and transforming text (from a file or a pipe input). |
select | Synchronous I/O multiplexing. |
sendmail | It’s a mail router or an MTA (Mail Transfer Agent). sendmail support can send a mail to one or more recipients using necessary protocols. |
sensors | Shows the current readings of all sensor chips. |
seq | Displays an incremental sequence of numbers from first to last. |
set | Used to manipulate shell variables and functions. |
setfdprm | Sets floppy disk parameters as provided by the user. |
setkeycodes | Load kernel scancode-to-keycode mapping table entries. |
setleds | Show/change LED light settings of the keyboard. |
setmetamode | Define keyboard meta key handling. Without arguments, shows current meta key mode. |
setquota | Set disk quotas for users and groups. |
setsid | Run a program in a new session. |
setterm | Set terminal attributes. |
sftp | Secure File Transfer program. |
sh | Command interpreter (shell) utility. |
sha1sum | Compute and check 160-bit SHA1 checksum to verify file integrity. |
shift | Shift positional parameters. |
shopt | Shell options. |
showkey | Examines codes sent by the keyboard displays them in printable form. |
showmount | Shows information about NFS server mount on the host. |
shred | Overwrite a file to hide its content (optionally delete it), making it harder to recover it. |
shutdown | Power-off the machine. |
size | Lists section size and the total size of a specified file. |
skill | Send a signal to processes. |
slabtop | Show kernel slab cache information in real-time. |
slattach | Attack a network interface to a serial line. |
sleep | Suspend execution for a specified amount of time (in seconds). |
slocate | Display matches by searching filename databases. Takes ownership and file permission into consideration. |
snice | Reset priority for processes. |
sort | Sort lines of text files. |
source | Run commands from a specified file. |
split | Split a file into pieces of fixed size. |
ss | Display socket statistics, similar to netstat. |
ssh | An SSH client for logging in to a remote machine. It provides encrypted communication between the hosts. |
ssh-add | Adds private key identities to the authentication agent. |
ssh-agent | It holds private keys used for public key authentication. |
ssh-keygen | It generates, manages, converts authentication keys for ssh. |
ssh-keyscan | Gather ssh public keys. |
sshd | Server for the ssh program. |
stat | Display file or filesystem status. |
statd | A daemon that listens for reboot notifications from other hosts, and manages the list of hosts to be notified when the local system reboots. |
strace | Trace system calls and signals. |
strfile | Create a random access file for storing strings. |
strings | Search a specified file and prints any printable strings with at least four characters and followed by an unprintable character. |
strip | Discard symbols from object files. |
stty | Change and print terminal line settings. |
su | Change user ID or become superuser. |
sudo | Execute a command as superuser. |
sum | Checksum and count the block in a file. |
suspend | Suspend the execution of the current shell. |
swapoff | Disable devices for paging and swapping. |
swapon | Enable devices for paging and swapping. |
symlink | Create a symbolic link to a file. |
sync | Synchronize cached writes to persistent storage. |
sysctl | Configure kernel parameters at runtime. |
sysklogd | Linux system logging utilities. Provides syslogd and klogd functionalities. |
syslogd | Read and log system messages to the system console and log files. |
T
Command | Description |
---|---|
tac | Concatenate and print files in reverse order. Opposite of cat command. |
tail | Show the last 10 lines of each specified file(s). |
tailf | Follow the growth of a log file. (Deprecated command) |
talk | A two-way screen-oriented communication utility that allows two user to exchange messages simultaneously. |
talkd | A remote user communication server for talk. |
tar | GNU version of the tar archiving utility. Used to store and extract multiple files from a single archive. |
taskset | Set/retrieve a process’s CPU affinity. |
tcpd | Access control utility for internet services. |
tcpdump | Dump traffic on network. Displays a description of the contents of packets on a network interface that match the boolean expression. |
tcpslice | Extract pieces of tcpdump files or merge them. |
tee | Read from standard input and write to standard output and files. |
telinit | Change SysV runlevel. |
telnet | Telnet protocol user interface. Used to interact with another host using telnet. |
telnetd | A server for the telnet protocol. |
test | Check file type and compare values. |
tftp | User interface to the internet TFTP (Trivial File Transfer Protocol). |
tftpd | TFTP server. |
time | Run programs and summarize system resource usage. |
timeout | Execute a command with a time limit. |
times | Shows accumulated user and system times for the shell and it’s child processes. |
tload | Shows a graph of the current system load average to the specified tty. |
tmpwatch | Recursively remove files and directories which haven’t been accessed for the specified period of time. |
top | Displays real-time view of processes running on the system. |
touch | Change file access and modification times. |
tput | Modify terminal-dependent capabilities, color, etc. |
tr | Translate, squeeze, or delete characters from standard input and display on standard output. |
tracepath | Traces path to a network host discovering MTU (Maximum Transmission Unit) along this path. |
traceroute | Traces the route taken by the packets to reach the network host. |
trap | Trap function responds to hardware signals. It defines and creates handlers to run when the shell receives signals. |
tree | A recursive directory listing program that produces a depth-indented listing of files. |
troff | The troff processor of the groff text formatting system. |
TRUE | Exit with a status code indicating success. |
tset | Initialize terminal. |
tsort | Perform topological sort. |
tty | Display the filename of the terminal connected to standard input. |
tune2fs | Adjust tuneable filesystem parameters on ext2/ext3/ext4 filesystems. |
tunelp | Set various parameters for the line printer devices. |
type | Write a description for a command type. |
U
Command | Description |
---|---|
ul | Underline text. |
ulimit | Get and set user limits for the calling process. |
umask | Set file mode creation mask. |
umount | Unmount specified file systems. |
unalias | Remove alias definitions for specified alias names. |
uname | Show system information. |
uncompress | Uncompress the files compressed with the compress command. |
unexpand | Convert spaces to tabs for a specified file. |
unicode_start | Put keyboard and console in Unicode mode. |
unicode_stop | Revert keyboard and console from Unicode mode. |
uniq | Report or omit repeating lines. |
units | Convert units from one scalar to another. |
unix2dos | Converts a Unix text file to DOS format. |
unrar | Extract files from a RAR archive. |
unset | Remove variable or function names. |
unshar | Unpack shell archive scripts. |
until | Execute command until a given condition is true. |
uptime | Tell how long the system has been running. |
useradd | Create a new user or update default user information. |
userdel | Delete a user account and related files. |
usermod | Modify a user account. |
username | It provides a set of commands to fetch username and its configurations from the Linux host. |
users | Show the list of active users on the machine. |
usleep | Suspend execution for microsecond intervals. |
uudecode | Decode a binary file. |
uuencode | Encode a binary file. |
uuidgen | Created a new UUID (Universally Unique Identifier) table. |
V
Command | Description |
---|---|
vdir | Same as ls -l -b. Verbosely list directory contents. |
vi | A text editor utility. |
vidmode | Set the video mode for a kernel image. Displays current mode value without arguments. Alternative: rdev -v |
vim | Vi Improved, a text-based editor which is a successor to vi. |
vmstat | Shows information about processes, memory, paging, block IO, traps, disks, and CPU activity. |
vnstat | Used by system administrators in order to monitor network parameters such as bandwidth consumption or maybe some traffic flowing in or out. |
volname | Returns volume name for a device formatted with an ISO-9660 filesystem. For example, CD-ROM. |
W
Command | Description |
---|---|
w | Show who is logged-on and what they’re doing. |
wait | Waits for a specified process ID(s) to terminate and returns the termination status. |
wall | Display a message on the terminals all the users who are currently logged-in. |
warnquota | Send mail to the users who’ve exceeded their disk quota soft limit. |
watch | Runs commands repeatedly until interrupted and shows their output and errors. |
wc | Print newline, word, and byte count for each of the specified files. |
wget | A non-interactive file download utility. |
whatis | Display one line manual page descriptions. |
whereis | Locate the binary, source, and man page files for a command. |
which | For a given command, lists the pathnames for the files which would be executed when the command runs. |
while | Conditionally execute commands (while loop). |
who | Shows who is logged on. |
whoami | Displays the username tied to the current effective user ID. |
whois | Looks for an object in a WHOIS database |
write | Display a message on other user’s terminal. |
X
Command | Description |
---|---|
xargs | Runs a command using initial arguments and then reads remaining arguments from standard input. |
xdg-open | Used to open a file or URL in an application preferred by the user. |
xinetd | Extended internet services daemon. Works similar to inetd. |
xz | Compress/ Decompress .xz and .lzma files. |
Y
Command | Description |
---|---|
yacc | Yet Another Compiler Compiler, a GNU Project parser generator. |
yes | Repeatedly output a line with a specified string(s) until killed. |
ypbind | A daemon that helps client processes to connect to an NIS server. |
ypcat | Shows the NIS map (or database) for the specified MapName parameter. |
ypinit | Sets up NIS maps on an NIS server. |
ypmatch | Shows values for specified keys from an NIS map. |
yppasswd | Change NIS login password. |
yppasswdd | Acts as a server for the yppasswd command. Receives and executes requests. |
yppoll | Shows the ID number or version of NIS map currently used on the NIS server. |
yppush | Forces slave NIS servers to copy updated NIS maps. |
ypserv | A daemon activated at system startup. It looks for information in local NIS maps. |
ypset | Point a client (running ypbind) to a specific server (running ypserv). |
yptest | Calls various functions to check the configuration of NIS services. |
ypwhich | Shows the hostname for NIS server or master server for a given map. |
ypxfr | Transfers NIS server map from server to a local host. |
Z
Command | Description |
---|---|
zcat | Used to compress/uncompress files. Similar to gzip |
zcmp | Compare compressed files. |
zdiff | Compare compressed files line by line. |
zdump | Displays time for the timezone mentioned. |
zforce | Adds .gz extension to all gzipped files. |
zgrep | Performs grep on compressed files. |
zic | Creates time conversion information files using the specified input files. |
zip | A file compression and packaging utility. |
zless | Displays information of a compressed file (using less command) on the terminal one screen at a time. |
zmore | Displays output of a compressed file (using more command) on the terminal one page at a time. |
znew | Recompress .z files to .gz. files. |
Credits: fossbytes & geeksforgeeks
Quick cheat sheet 📝
Note
Examples like-a|--all
option flags means, single-
used for short option(-a) or| double--
used for long option(--all). Both was added for educational purpose.
Contents
- Command Information
- Command History
- Navigating Directories
- Creating Directories
- Moving Directories
- Deleting Directories
- Creating Files
- Standard Output, Error and Input
- Moving Files
- Deleting Files
- Reading Files
- File Permissions
- Finding Files
- Find in Files
- Replace in Files
- Symbolic Links
- Compressing Files
- Decompressing Files
- Packages
- Disk Usage
- Memory Usage
- Shutdown and Reboot
- Identifying Processes
- Process Priority
- Killing Processes
- Date & Time
- Scheduled Tasks
- User Mangement
- HTTP Requests
- Network Troubleshooting
- DNS
- Hardware
- System Information
- Terminal Multiplexers
- Secure Shell Protocol (SSH)
- Secure Copy
- Bash Profile
- Bash Script
Command Information
man chmod # Display page manual of a command
man -f|--whatis chmod # Display short description about a command
man -k|--apropos permission # Display all related commands from a specific keyword
chmod --help # Display usage options of a command
Command History
history # View all previous commands
history | grep foo # View the commands using a specific word
history | grep -E|--extended-regexp -i|--ignore-case 'foo1|foo2|foo3' # View the commands using more than 1 specific word(case sensitive)
history | head -n|--lines 3 # View the first 3 executed commands
history 3 # View the last 3 executed commands
history -d 99 # Clear a command from a specific line
history -c # Clears all history commands
!! # Run the last command executed
touch foo.sh # <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<┐
chmod +x !$ # !$ is the last argument of the last command i.e. foo.sh <<<<┘
Navigating Directories
pwd # Print current directory path
ls # List directories
ls -a|--all # List directories including hidden
ls -l # List directories in long form
ls -l -h|--human-readable # List directories in long form with human readable sizes
ls -t # List directories by modification time, newest first
stat foo.txt # List size, created and modified timestamps for a file
stat foo # List size, created and modified timestamps for a directory
tree # List directory and file tree
tree -a # List directory and file tree including hidden
tree -d # List directory tree
cd foo # Go to foo sub-directory
cd # Go to home directory
cd ~ # Go to home directory
cd - # Go to last directory
pushd foo # Go to foo sub-directory and add previous directory to stack
popd # Go back to directory in stack saved by `pushd`
Creating Directories
mkdir foo # Create a directory
mkdir foo bar # Create multiple directories
mkdir -p|--parents foo/bar # Create nested directory
mkdir -p|--parents {foo,bar}/baz # Create multiple nested directories
mktemp -d|--directory # Create a temporary directory
Moving Directories
cp -R|--recursive foo bar # Copy directory
mv foo bar # Move directory
rsync -z|--compress -v|--verbose /foo /bar # Copy directory, overwrites destination
rsync --ignore-existing -a|--archive-a|--archive -z|--compress -v|--verbose /foo /bar # Copy directory, without overwriting destination
rsync -avz /foo username@hostname:/bar # Copy local directory to remote directory
rsync -avz username@hostname:/foo /bar # Copy remote directory to local directory
Deleting Directories
rmdir foo # Delete non-empty directory
rm -r|--recursive foo # Delete directory including contents
rm -r|--recursive -f|--force foo # Delete directory including contents, ignore nonexistent files and never prompt
Creating Files
touch foo.txt # Create file or update existing files modified timestamp
touch foo.txt bar.txt # Create multiple files
touch {foo,bar}.txt # Create multiple files
touch test{1..3} # Create test1, test2 and test3 files
touch test{a..c} # Create testa, testb and testc files
mktemp # Create a temporary file
Standard Output, Standard Error and Standard Input
echo "foo" > bar.txt # Overwrite file with content
echo "foo" >> bar.txt # Append to file with content
ls exists 1> stdout.txt # Redirect the standard output to a file
ls noexist 2> stderror.txt # Redirect the standard error output to a file
ls > out.txt 2>&1 # Redirect standard output and error to a file
ls > /dev/null # Discard standard output and error
read foo # Read from standard input and write to the variable foo
Moving Files
cp foo.txt bar.txt # Copy file
mv foo.txt bar.txt # Move file
rsync -z|--compress -v|--verbose /foo.txt /bar # Copy file quickly if not changed
rsync -z|--compress -v|--verbose /foo.txt /bar.txt # Copy and rename file quickly if not changed
Deleting Files
rm foo.txt # Delete file
rm -f|--force foo.txt # Delete file, ignore nonexistent files and never prompt
Reading Files
cat foo.txt # Print all contents
less foo.txt # Print some contents at a time (g - go to top of file, SHIFT+g, go to bottom of file, /foo to search for 'foo')
head foo.txt # Print top 10 lines of file
tail foo.txt # Print bottom 10 lines of file
tail -f foo.txt # Print bottom 10 lines of file updating with new data
open foo.txt # Open file in the default editor
wc foo.txt # List number of lines words and characters in the file
File Permissions
# | Permission | rwx | Binary |
---|---|---|---|
7 | read, write and execute | rwx | 111 |
6 | read and write | rw- | 110 |
5 | read and execute | r-x | 101 |
4 | read only | r-- | 100 |
3 | write and execute | -wx | 011 |
2 | write only | -w- | 010 |
1 | execute only | --x | 001 |
0 | none | --- | 000 |
For a directory, execute means you can enter a directory.
User | Group | Others | Description |
---|---|---|---|
6 | 4 | 4 | User can read and write, everyone else can read (Default file permissions) |
7 | 5 | 5 | User can read, write and execute, everyone else can read and execute (Default directory permissions) |
- u - User
- g - Group
- o - Others
- a - All of the above
ls -l /foo.sh # List file permissions
chmod +100 foo.sh # Add 1 to the user permission
chmod -100 foo.sh # Subtract 1 from the user permission
chmod u+x foo.sh # Give the user execute permission
chmod g+x foo.sh # Give the group execute permission
chmod u-x,g-x foo.sh # Take away the user and group execute permission
chmod u+x,g+x,o+x foo.sh # Give everybody execute permission
chmod a+x foo.sh # Give everybody execute permission
chmod +x foo.sh # Give everybody execute permission
Finding Files
Find binary files for a command.
type -a wget # Display all locations of executable
which -a wget # Display all locations of executables
whereis wget # Find the binary, source, and manual page files
locate
uses an index and is fast.
updatedb # Update the index
locate foo.txt # Find a file
locate --ignore-case # Find a file and ignore case
locate f*.txt # Find a text file starting with 'f'
find
doesn't use an index and is slow.
find /path -name foo.txt # Find a file
find /path -iname foo.txt # Find a file with case insensitive search
find /path -name "*.txt" # Find all text files
find /path -name foo.txt -delete # Find a file and delete it
find /path -name "*.png" -exec pngquant {} # Find all .png files and execute pngquant on it
find /path -type f -name foo.txt # Find a file
find /path -type d -name foo # Find a directory
find /path -type l -name foo.txt # Find a symbolic link
find /path -type f -mtime +30 # Find files that haven't been modified in 30 days
find /path -type f -mtime +30 -delete # Delete files that haven't been modified in 30 days
Find in Files
grep 'foo' /bar.txt # Search for 'foo' in file 'bar.txt'
grep 'foo' /bar -r|--recursive # Search for 'foo' in directory 'bar'
grep 'foo' /bar -R|--dereference-recursive # Search for 'foo' in directory 'bar' and follow symbolic links
grep 'foo' /bar -l|--files-with-matches # Show only files that match
grep 'foo' /bar -L|--files-without-match # Show only files that don't match
grep 'Foo' /bar -i|--ignore-case # Case insensitive search
grep 'foo' /bar -x|--line-regexp # Match the entire line
grep 'foo' /bar -C|--context 1 # Add N line of context above and below each search result
grep 'foo' /bar -v|--invert-match # Show only lines that don't match
grep 'foo' /bar -c|--count # Count the number lines that match
grep 'foo' /bar -n|--line-number # Add line numbers
grep 'foo' /bar --colour # Add colour to output
grep 'foo\|bar' /baz -R # Search for 'foo' or 'bar' in directory 'baz'
grep --extended-regexp|-E 'foo|bar' /baz -R # Use regular expressions
grep -E 'foo|bar' /baz -R # Use regular expressions
Replace in Files
sed 's/fox/bear/g' foo.txt # Replace fox with bear in foo.txt and output to console
sed 's/fox/bear/gi' foo.txt # Replace fox (case insensitive) with bear in foo.txt and output to console
sed 's/red fox/blue bear/g' foo.txt # Replace red with blue and fox with bear in foo.txt and output to console
sed 's/fox/bear/g' foo.txt > bar.txt # Replace fox with bear in foo.txt and save in bar.txt
sed 's/fox/bear/g' foo.txt -i|--in-place # Replace fox with bear and overwrite foo.txt
Symbolic Links
ln -s|--symbolic foo bar # Create a link 'bar' to the 'foo' folder
ln -s|--symbolic -f|--force foo bar # Overwrite an existing symbolic link 'bar'
ls -l # Show where symbolic links are pointing
Compressing Files
zip
Compresses one or more files into *.zip files.
zip foo.zip /bar.txt # Compress bar.txt into foo.zip
zip foo.zip /bar.txt /baz.txt # Compress bar.txt and baz.txt into foo.zip
zip foo.zip /{bar,baz}.txt # Compress bar.txt and baz.txt into foo.zip
zip -r|--recurse-paths foo.zip /bar # Compress directory bar into foo.zip
gzip
Compresses a single file into *.gz files.
gzip /bar.txt foo.gz # Compress bar.txt into foo.gz and then delete bar.txt
gzip -k|--keep /bar.txt foo.gz # Compress bar.txt into foo.gz
tar -c
Compresses (optionally) and combines one or more files into a single *.tar, *.tar.gz, *.tpz or *.tgz file.
tar -c|--create -z|--gzip -f|--file=foo.tgz /bar.txt /baz.txt # Compress bar.txt and baz.txt into foo.tgz
tar -c|--create -z|--gzip -f|--file=foo.tgz /{bar,baz}.txt # Compress bar.txt and baz.txt into foo.tgz
tar -c|--create -z|--gzip -f|--file=foo.tgz /bar # Compress directory bar into foo.tgz
Decompressing Files
unzip
unzip foo.zip # Unzip foo.zip into current directory
gunzip
gunzip foo.gz # Unzip foo.gz into current directory and delete foo.gz
gunzip -k|--keep foo.gz # Unzip foo.gz into current directory
tar -x
tar -x|--extract -z|--gzip -f|--file=foo.tar.gz # Un-compress foo.tar.gz into current directory
tar -x|--extract -f|--file=foo.tar # Un-combine foo.tar into current directory
Packages
apt update # Refreshes repository index
apt search wget # Search for a package
apt show wget # List information about the wget package
apt list --all-versions wget # List all versions of the package
apt install wget # Install the latest version of the wget package
apt install wget=1.2.3 # Install a specific version of the wget package
apt remove wget # Removes the wget package
apt upgrade # Upgrades all upgradable packages
apt clean # Clears out the local repository of downloaded package files
dpkg -i|--install package_name.deb # Install deb file
rpm -i|--install package_name.rpm # Install rpm file
Install package source code
tar zxvf sourcecode.tar.gz
cd sourcecode
./configure
make
make install
Disk Usage
df # List disks, size, used and available space
df -h|--human-readable # List disks, size, used and available space in a human readable format
du # List current directory, subdirectories and file sizes
du /foo/bar # List specified directory, subdirectories and file sizes
du -h|--human-readable # List current directory, subdirectories and file sizes in a human readable format
du -d|--max-depth # List current directory, subdirectories and file sizes within the max depth
du -d 0 # List current directory size
Memory Usage
free # Show memory usage
free -h|--human # Show human readable memory usage
free -h|--human --si # Show human readable memory usage in power of 1000 instead of 1024
free -s|--seconds 5 # Show memory usage and update continuously every five seconds
Shutdown and Reboot
shutdown # Shutdown in 1 minute
shutdown now # Immediately shut down
shutdown +5 # Shutdown in 5 minutes
shutdown -r|--reboot # Reboot in 1 minute
shutdown -r|--reboot now # Immediately reboot
shutdown -r|--reboot +5 # Reboot in 5 minutes
shutdown -c # Cancel a shutdown or reboot
reboot # Reboot now
reboot -f # Force a reboot
Identifying Processes
top # List all processes interactively
htop # List all processes interactively
ps ax # List all processes
pidof foo # Return the PID of all foo processes
CTRL+Z # Suspend a process running in the foreground
bg # Resume a suspended process and run in the background
fg # Bring the last background process to the foreground
fg 1 # Bring the background process with the PID to the foreground
sleep 30 & # Sleep for 30 seconds and move the process into the background
jobs # List all background jobs
jobs -p # List all background jobs with their PID
lsof # List all open files and the process using them
lsof -itcp:4000 # Return the process listening on port 4000
Process Priority
Process priorities go from -20 (highest) to 19 (lowest).
nice -n -20 foo # Change process priority by name
renice 20 PID # Change process priority by PID
ps -o ni PID # Return the process priority of PID
Killing Processes
CTRL+C # Kill a process running in the foreground
kill PID # Shut down process by PID gracefully. Sends TERM signal.
kill -9 PID # Force shut down of process by PID. Sends SIGKILL signal.
pkill foo # Shut down process by name gracefully. Sends TERM signal.
pkill -9 foo # force shut down process by name. Sends SIGKILL signal.
killall foo # Kill all process with the specified name gracefully.
Date & Time
date # Print the date and time
date --iso-8601 # Print the ISO8601 date
date --iso-8601=ns # Print the ISO8601 date and time
date -s "02 DEC 2020 12:02:02" # Manually change date and time
dpkg-reconfigure tzdata # Change date/timezone
uptime # Print how long the system has been running
time tree # Print amount of time to tree takes to execute
Scheduled Tasks
* * * * *
Minute, Hour, Day of month, Month, Day of the week
crontab -l # List cron tab
crontab -e # Edit cron tab in Vim
crontab /path/crontab # Load cron tab from a file
crontab -l > /path/crontab # Save cron tab to a file
* * * * * foo # Run foo every minute
*/15 * * * * foo # Run foo every 15 minutes
0 * * * * foo # Run foo every hour
15 6 * * * foo # Run foo daily at 6:15 AM
44 4 * * 5 foo # Run foo every Friday at 4:44 AM
0 0 1 * * foo # Run foo at midnight on the first of the month
0 0 1 1 * foo # Run foo at midnight on the first of the year
at -l # List scheduled tasks
at -c 1 # Show task with ID 1
at -r 1 # Remove task with ID 1
at now + 2 minutes # Create a task in Vim to execute in 2 minutes
at 12:34 PM next month # Create a task in Vim to execute at 12:34 PM next month
at tomorrow # Create a task in Vim to execute tomorrow
User Management
sudo su # Switch to root user
sudo foo # Execute commands(has permission denied) as the root user
sudo /foo/foo.txt # Open directories and files(is not writable) as the root user
su username # Switch to a different user
adduser username # To add a new user
passwd -l|--lock username # To change the password of a user
userdel username # To remove user
userdel -r|--remove username # To remove user with home directory and mail spool
usermod -a|--append -G|--groups GROUPNAME USERNAME # To add a user to a group
deluser USER GROUPNAME # To remove a user from a group
last # Display information of all the users logged in
last username # Display information of a particular user
w # Display who is online
HTTP Requests
curl https://example.com # Return response body
curl -i|--include https://example.com # Include status code and HTTP headers
curl -L|--location https://example.com # Follow redirects
curl -O|--remote-name foo.txt https://example.com # Output to a text file
curl -H|--header "User-Agent: Foo" https://example.com # Add a HTTP header
curl -X|--request POST -H "Content-Type: application/json" -d|--data '{"foo":"bar"}' https://example.com # POST JSON
curl -X POST -H --data-urlencode foo="bar" http://example.com # POST URL Form Encoded
wget https://example.com/file.txt # Download a file to the current directory
wget -O|--output-document foo.txt https://example.com/file.txt # Output to a file with the specified name
Network Troubleshooting
ping example.com # Send multiple ping requests using the ICMP protocol
ping -c 10 -i 5 example.com # Make 10 attempts, 5 seconds apart
ip addr # List IP addresses on the system
ip route show # Show IP addresses to router
curl ifconfig.me # Obtain external IP address
netstat -i|--interfaces # List all network interfaces and in/out usage
netstat -l|--listening # List all open ports
traceroute example.com # List all servers the network traffic goes through
mtr -w|--report-wide example.com # Continually list all servers the network traffic goes through
mtr -r|--report -w|--report-wide -c|--report-cycles 100 example.com # Output a report that lists network traffic 100 times
nmap 0.0.0.0 # Scan for the 1000 most common open ports on localhost
nmap 0.0.0.0 -p1-65535 # Scan for open ports on localhost between 1 and 65535
nmap 192.168.4.3 # Scan for the 1000 most common open ports on a remote IP address
nmap -sP 192.168.1.1/24 # Discover all machines on the network by ping'ing them
DNS
dig example.com # Show query information of domain A records
dig -4 example.com # Show IPv4 A records
dig -6 example.com # Show IPv6 AAA records
dig example.com @nameserver # Show query of a specific nameserver
dig example.com -p 123 # Show query of a specific port number
cat /etc/resolv.conf # Nameservers file
cat /etc/systemd/resolved.conf # DNS resolver config file
Hardware
lsusb # List USB devices
lspci # List PCI hardware
lshw # List all hardware
System Information
uname -s # Print kernel name
uname -r # Print kernel release
uname -m # Print Architecture
uname -o # Print Operating System
cat /proc/cpuinfo # Show cpu info
cat /proc/meminfo # Show memory info
Terminal Multiplexers
Start multiple terminal sessions. Active sessions persist reboots. tmux
is more modern than screen
.
tmux # Start a new session (CTRL-b + d to detach)
tmux ls # List all sessions
tmux attach -t 0 # Reattach to a session
screen # Start a new session (CTRL-a + d to detach)
screen -S foo # Start a new named session
screen -ls # List all sessions
screen -R 31166 # Reattach to a session
exit # Exit a session
Secure Shell Protocol (SSH)
ssh hostname # Connect to hostname using your current user name over the default SSH port 22
ssh -i foo.pem hostname # Connect to hostname using the identity file
ssh user@hostname # Connect to hostname using the user over the default SSH port 22
ssh user@hostname -p 8765 # Connect to hostname using the user over a custom port
ssh ssh://user@hostname:8765 # Connect to hostname using the user over a custom port
Set default user and port in ~/.ssh/config
, so you can just enter the name next time:
$ cat ~/.ssh/config
Host name
User foo
Hostname 127.0.0.1
Port 8765
$ ssh name
Secure Copy
scp foo.txt ubuntu@hostname:/home/ubuntu # Copy foo.txt into the specified remote directory
scp ubuntu@hostname:/home/ubuntu/foo.txt /C:\Users\Admin # Copy foo.txt from the specified remote directory
Bash Profile
- bash -
.bashrc
- zsh -
.zshrc
# Always run ls after cd
function cd {
builtin cd "$@" && ls
}
# Prompt user before overwriting any files
alias cp='cp --interactive'
alias mv='mv --interactive'
alias rm='rm --interactive'
# Always show disk usage in a human readable format
alias df='df -h'
alias du='du -h'
Bash Script
Variables
#!/bin/bash
foo=123 # Initialize variable foo with 123
declare -i foo=123 # Initialize an integer foo with 123
declare -r foo=123 # Initialize readonly variable foo with 123
echo $foo # Print variable foo
echo ${foo}_'bar' # Print variable foo followed by _bar
echo ${foo:-'default'} # Print variable foo if it exists otherwise print default
export foo # Make foo available to child processes
unset foo # Make foo unavailable to child processes and current session
Environment Variables
#!/bin/bash
set # List all environment variables
echo $PATH # Print PATH environment variable
export FOO=Bar # Set an environment variable
Functions
#!/bin/bash
greet() {
local world="World"
echo "$1 $world"
return "$1 $world"
}
greet "Hello"
greeting=$(greet "Hello")
Exit Codes
#!/bin/bash
exit 0 # Exit the script successfully
exit 1 # Exit the script unsuccessfully
echo $? # Print the last exit code
Conditional Statements
Boolean Operators
$foo
- Is true!$foo
- Is false
Numeric Operators
-eq
- Equals-ne
- Not equals-gt
- Greater than-ge
- Greater than or equal to-lt
- Less than-le
- Less than or equal to-e
foo.txt - Check file exists-z
foo - Check if variable exists
String Operators
=
- Equals==
- Equals-z
- Is null-n
- Is not null<
- Is less than in ASCII alphabetical order>
- Is greater than in ASCII alphabetical order
If Statements
#!/bin/bash
[[
if [[$foo = 'bar']]; then
echo 'one'
elif [[$foo = 'bar']] || [[$foo = 'baz']]; then
echo 'two'
elif [[$foo = 'ban']] && [[$USER = 'bat']]; then
echo 'three'
else
echo 'four'
fi
]]
Inline If Statements
#!/bin/bash
[[ $USER = 'rehan' ]] && echo 'yes' || echo 'no'
While Loops
#!/bin/bash
[
declare -i counter
counter=10
while [$counter -gt 2]; do
echo The counter is $counter
counter=counter-1
done
]
For Loops
#!/bin/bash
for i in {0..10..2}
do
echo "Index: $i"
done
for filename in file1 file2 file3
do
echo "Content: " >> $filename
done
for filename in *;
do
echo "Content: " >> $filename
done
Case Statements
#!/bin/bash
echo "What's the weather like tomorrow?"
read weather
case $weather in
sunny | warm ) echo "Nice weather: " $weather
;;
cloudy | cool ) echo "Not bad weather: " $weather
;;
rainy | cold ) echo "Terrible weather: " $weather
;;
* ) echo "Don't understand"
;;
esac
Inspired by RehanSaeed/Bash-Cheat-Sheet
Special characters 🔣
Char. | Description |
---|---|
~ | Home directory [tilde]. The path to a user's home directory location. |
- | Previous directory [dash]. Go back to previous directory. |
/ | Filename path separator [forward slash]. Separates the components of a filename. It also represents the path to root directory. |
\ | Escape [backslash]. A quoting mechanism for single characters. It preserves the literal value of the next character that follows, with the exception of newline. |
│ | Pipe. This is a method of chaining commands together. Connects the output (stdout) of command1 to the input (stdin) of command2. Each command reads the previous command’s output. |
|& | This operator connects the output (stdout) and error (stderr) of command1 to the input (stdin) of command2. |
|| | The OR operator is used to chain commands. It will execute the first command then stop if successful, if not, it will proceed pass failed commands until one is successful and stop. |
&& | The AND operator is used to chain commands. It will execute commands only if the first command is successful and proceed until one fails. |
; | Command separator [semicolon]. Used to separate multiple commands and output all successful and failed ones. |
& | Run job in background [and]. A command followed by an & will run in the background. |
>, >>, < | Redirect a command's standard output (stdout) or input (stdin) into a file. |
&>, >& | Redirects a command's both standard output (stdout) and error (stderr) into a file. |
<&- | Close standard input (stdin) to prevent showing from a file. |
>&- | Close standard output (stdout) to prevent showing from a file. |
>| | Force redirection (even if the noclobber option is set). This will forcibly overwrite an existing file. |
" | Partial quoting [double quotes]. Protects the text inside them from being split into multiple words or arguments, yet allow substitutions to occur, meaning most other special characters is usually prevented. |
' | Full quoting [single quotes]. Protects the text inside them so that it has a literal meaning. This is a stronger form of quoting than double quotes. |
` | Command substitution [backquotes]. Assign the output of a shell command to a variable. |
# | Comment [number sign]. Lines in files beginning with a # (with the exception of #!) are comments and will not be executed. |
! | Reverse (or negate) [exclamation]. The ! operator inverts the exit status of the command to which it is applied. It also inverts the meaning of a test operator. |
* | Wild card [asterisk]. The * character serves as a "wild card" for filename expansion in globbing. By itself, it matches every filename in a given directory. |
? | Wild card [question mark]. The ? character serves as a single-character "wild card" for filename expansion in globbing, as well as representing one character in an extended regular expression. |
{ } | Inline group [curly brackets]. Commands inside the curly braces are treated as if they were one command. |
( ) | Subshell group [parentheses]. Commands within are executed in a subshell (a new process) Used much like a sandbox, if a command causes side effects (like changing variables), it will have no effect on the current shell. |
[ ] | Test expression [brackets]. It is part of the shell builtin test. |
Test/Evaluate [double brackets] a condition expression to determine whether true or false. It is more flexible than the single-bracket [ ] test. | |
(( )) | Arithmetic expression [double parentheses]. Characters such as +, -, *, and / are mathematical operators used for calculations. |
: | Null command [colon]. This is the shell equivalent of a "NOP" (no op, a do-nothing operation). It may be considered a synonym for the shell builtin true. |
;; | Terminator [double semicolon]. Only used in case constructs to indicate the end of an alternative. |
" " | Whitespace. This is a tab, newline, vertical tab, form feed, carriage return, or space. Bash uses whitespace to determine where words begin and end. |
,, , | Lowercase conversion in parameter substitution. |
^, ^^ | Uppercase conversion in parameter substitution. |
$* | All the arguments are seen as a single word. |
$* | All the arguments that are individually double quoted and seen as a single word. |
!$ | The last argument to the previous command. |
!* | All the arguments from the previous command. |
$? | The exit status of the last command executed. |
$# | The number of arguments supplied to a script. |
$$ | The process number of the current shell. For shell scripts, this is the process ID under which they are executing. |
$! | The process number of the last background command. |
$_ | Special variable set to final argument of previous command executed. |
$- | Expands to the current option flags as specified upon invocation, by the set builtin command, or those set by the shell itself (such as the -i option). |
$0 | Used to reference the name of the current shell or current shell script. |
$n | These variables correspond to the arguments with which a script was invoked. Here n is a positive decimal number corresponding to the position of an argument (the first argument is $1, the second argument is $2, and so on). |
Keyboard controls ⌨️
Key | Function |
---|---|
Ctrl+a | Moves cursor to beginning of text in line |
Ctrl+e | Moves cursor to end of text in line |
Ctrl+b | Moves cursor backward one character position |
Ctrl+f | Moves cursor forward one character position |
Ctrl+u | Erase a line of input from cursor right to left of line |
Ctrl+k | Erase a line of input from cursor left to right of line |
Ctrl+d | Erase character forward from cursor left to right |
Ctrl+h | Erase character backward from cursor right to left |
Ctrl+w | Erase backwards to first non-alphanumeric character or empty space |
Ctrl+p | Fetch previous command from history list |
Ctrl+n | Fetch next command from history list |
Ctrl+y | Fetch back command previously erased |
Ctrl+t | Reverses the position of the character the cursor is on with the previous character |
Ctrl+r | Reverse search commands from history list |
Ctrl+z | Pauses a foreground job |
Ctrl+c | Break/Terminate a foreground job |
Ctrl+m | Clear the current line |
Ctrl+o | Accept the current line for execution and fetch the next command |
Ctrl+l | Clear screen contents (command-line needs to be empty) |
Ctrl+s | Suspend |
Ctrl+q | Resume |
Ctrl+d | Log out from a shell (similar to exit) |
Alt+b | Moves cursor one word backwards |
Alt+f | Moves cursor one word forward |
Alt+d | Erase the next word from cursor left to right |
Alt+t | Reverses the position of the word the cursor is in with the previous word |
Alt+u | Capitalizes every character from cursor left to right to the end of one word |
Alt+l | UnCapitalizes every character from cursor left to right to the end of one word |
Alt+r | Reverts any changes to a previously executed command that is edited |
Alt+. | Fetch and paste the last word at end of a command from previous commands |
Online Cheat Sheet :feelsgood: for quick references of commands and codes
cheat.sh
Terminal:
curl cht.sh/keyword
# or
curl cheat.sh/keyword
Browser:
https://cht.sh/keyword
or
https://cheat.sh/keyword
Offline usage Install cheat script manually
Install globally(all users):
curl -s https://cht.sh/:cht.sh | sudo tee /usr/local/bin/cht.sh && sudo chmod +x /usr/local/bin/cht.sh
Run:
cht.sh keyword
Extra Resources
introduction-to-bash-scripting | Free Introduction to Bash Scripting eBook |
simple-bash-scripts | A collection of simple Bash scripts |
shell-examples | Little Bash shell scripting examples |
bash-utils | A collection of hand-crafted bash scripts for various common tasks |
Bash-Snippets | A collection of small bash scripts for heavy terminal users |
awesome-bash | A curated list of delightful Bash scripts and resources |
awesome-shell | A curated list of awesome command-line frameworks, toolkits, guides and gizmos |
awesome-shell | A curated list of awesome Shell frameworks, libraries and software |
awesome-cli-apps | A curated list of command line apps |
cli-apps | Awesome Curated list of (mainly) CLI/TUI applications with source data organized into CSV files |
awesome-cli | A curated list of awesome resources for building immersive CLI experiences |
awesome-cli | A simple command line tool to give you a fancy command line interface to dive into Awesome lists |
terminals-are-sexy | A curated list of Terminal frameworks, plugins & resources for CLI lovers |
funny-Linux-Commands | Funny Linux Commands in Ubuntu |
awesome-ttygames | Unix ASCII games |