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 permission for a file. |
aclocal | GNU autoconf tool. |
aconnect | ALSA sequencer connection manager. |
acpi | Show information about the Advanced Configuration and Power Interface. |
acpi_available | Check if ACPI 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. |
alias | Create an alias for Linux commands. |
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 | 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. |
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. |
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 | 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-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. |
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. |
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. |
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. |
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. |
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. |
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. |
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 | 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 |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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
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 # Shows information of all the users logged in
last username # Gives information of a particular user
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
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 -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
Special characters 🔣
Char. | Description |
---|---|
~ | Home directory [tilde]. The path to a user's home directory location. |
- | Previous directory [dash]. Go back to previous directories. |
/ | 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. It passes the output (stdout) of a previous command to the input (stdin) of the next one, or to the shell. This is a method of chaining commands together. |
|| | The OR operator is used to chain commands. It will execute succeeded commands which follows and only stops if a preceding command fails. |
&& | The AND operator is used to chain commands. It will execute commands only if the first command is successful |
; | Command separator [semicolon]. Used to separate multiple commands and execute all the ones that is successful. |
& | Run job in background[and]. A command followed by an & will run in the background. |
# | Comment [number sign]. Lines in files beginning with a # (with the exception of #!) are comments and will not be executed. |
>, >>, < | Redirect a command's output or input into a file. |
>| | Force redirection (even if the noclobber option is set). This will forcibly overwrite an existing file. |
"" | 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. |
' ' | Single quotes protects the text inside them so that it has a literal meaning. This is a stronger form of quoting than double quotes. |
" " | Whitespace. This is a tab, newline, vertical tab, form feed, carriage return, or space. Bash uses whitespace to determine where words begin and end. |
: | 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. |
! | 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. It is convenient to use these when Bash syntax requires only one command and a function doesn't feel warranted. |
( ) | Subshell group [bracket].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 between [ ]. Is part of the shell builtin test. |
Test expression between . More flexible than the single-bracket [ ] test. | |
(( )) | Integer expansion. Expand and evaluate integer expression. |
;; | Terminator in a case option [double semicolon]. |
,, , | Lowercase conversion in parameter substitution. |
^, ^^ | Uppercase conversion in parameter substitution. |
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+p | Fetch previous command from history buffer |
Ctrl+n | Fetch next command from history buffer |
Ctrl+r | Reverse search commands in history buffer |
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+w | Erases backwards to first non-alphanumeric character or space |
Ctrl+y | Fetch back command previously erased |
Ctrl+t | Reverses the position of the character the cursor is on with the previous character |
Ctrl+z | Pauses a foreground job |
Ctrl+c | Break/Terminate a foreground job |
Ctrl+o | Accept the current line for execution and fetch the next command |
Ctrl+l | Clear screen (command line needs to be empty) |
Ctrl+s | Suspend |
Ctrl+q | Resume |
Ctrl+d | Log out from a shell (similar to exit) |
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