# Ultimate list of Linux bash commands
_Bash is the [Unix](https://www.google.com/search?q=What+is+UNIX+explain%3F&client=firefox-b-d&sxsrf=ALiCzsZmYtgn9ctD5vHAqgVFkM5tZ514pw%3A1667926333803&ei=PYlqY6XIMNmNwbkPqeK3qAo&ved=0ahUKEwjl2ozlhZ_7AhXZRjABHSnxDaUQ4dUDCA4&uact=5&oq=What+is+UNIX+explain%3F&gs_lcp=Cgxnd3Mtd2l6LXNlcnAQAzIFCAAQgAQyBQgAEIAEMgUIABCABDIGCAAQFhAeMgYIABAWEB4yBggAEBYQHjIFCAAQhgMyBQgAEIYDMgUIABCGAzIFCAAQhgM6CggAEEcQ1gQQsAM6BwgAELADEENKBAhNGAFKBAhBGABKBAhGGABQnAFYnAFgvwNoAXABeACAAa0BiAGtAZIBAzAuMZgBAKABAqABAcgBCsABAQ&sclient=gws-wiz-serp) 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**
> Use `Ctrl+f` to search in browsers🔎
Table
#### │ [A](#-a) │ [B](#-b) │ [C](#-c) │ [D](#-d) │ [E](#-e) │ [F](#-f) │ [G](#-g) │ [H](#-h) │ [I](#-i) │ [J](#-j) │ [K](#-k) │ [L](#-l) │ [M](#-m) │ [N](#-n) │ [O](#-o) │ [P](#-p) │ [Q](#-q) │ [R](#-r) │ [S](#-s) │ [T](#-t) │ [U](#-u) │ [V](#-v) │ [W](#-w) │ [X](#-x) │ [Y](#-y) │ [Z](#-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). |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
M
Command |
Description |
m4 |
Macro processor. |
mail |
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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). |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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 |
|
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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. |
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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.com
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
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-information)
- [Command History](#command-history)
- [Navigating Directories](#navigating-directories)
- [Creating Directories](#creating-directories)
- [Moving Directories](#moving-directories)
- [Deleting Directories](#deleting-directories)
- [Creating Files](#creating-files)
- [Standard Output, Error and Input](#standard-output-standard-error-and-standard-input)
- [Moving Files](#moving-files)
- [Deleting Files](#deleting-files)
- [Reading Files](#reading-files)
- [File Permissions](#file-permissions)
- [Finding Files](#finding-files)
- [Find in Files](#find-in-files)
- [Replace in Files](#replace-in-files)
- [Symbolic Links](#symbolic-links)
- [Compressing Files](#compressing-files)
- [Decompressing Files](#decompressing-files)
- [Packages](#packages)
- [Disk Usage](#disk-usage)
- [Memory Usage](#memory-usage)
- [Shutdown and Reboot](#shutdown-and-reboot)
- [Identifying Processes](#identifying-processes)
- [Process Priority](#process-priority)
- [Killing Processes](#killing-processes)
- [Date & Time](#date--time)
- [Scheduled Tasks](#scheduled-tasks)
- [User Mangement](#user-management)
- [HTTP Requests](#http-requests)
- [Network Troubleshooting](#network-troubleshooting)
- [DNS](#dns)
- [Hardware](#hardware)
- [System Information](#system-information)
- [Terminal Multiplexers](#terminal-multiplexers)
- [Secure Shell Protocol (SSH)](#secure-shell-protocol-ssh)
- [Secure Copy](#secure-copy)
- [Bash Profile](#bash-profile)
- [Bash Script](#bash-script)
#
## Command Information
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Command History
```bash
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 <<<<┘
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Navigating Directories
```bash
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`
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Creating Directories
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Moving Directories
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Deleting Directories
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Creating Files
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Standard Output, Standard Error and Standard Input
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Moving Files
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Deleting Files
```bash
rm foo.txt # Delete file
rm -f|--force foo.txt # Delete file, ignore nonexistent files and never prompt
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Reading Files
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## 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
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Finding Files
Find binary files for a command.
```bash
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.
```bash
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.
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Find in Files
```bash
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
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Symbolic Links
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Compressing Files
### zip
Compresses one or more files into *.zip files.
```bash
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.
```bash
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.
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Decompressing Files
### unzip
```bash
unzip foo.zip # Unzip foo.zip into current directory
```
### gunzip
```bash
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
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Packages
```bash
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
```bash
tar zxvf sourcecode.tar.gz
cd sourcecode
./configure
make
make install
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Disk Usage
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Memory Usage
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Shutdown and Reboot
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Identifying Processes
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Process Priority
Process priorities go from -20 (highest) to 19 (lowest).
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Killing Processes
```bash
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.
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Date & Time
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Scheduled Tasks
```pre
* * * * *
Minute, Hour, Day of month, Month, Day of the week
```
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## User Management
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## HTTP Requests
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Network Troubleshooting
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## DNS
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Hardware
```bash
lsusb # List USB devices
lspci # List PCI hardware
lshw # List all hardware
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## System Information
```
uname -s # Print kernel name
uname -r # Print kernel release
uname -m # Print Architecture
uname -o # Print Operating System
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Terminal Multiplexers
Start multiple terminal sessions. Active sessions persist reboots. `tmux` is more modern than `screen`.
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Secure Shell Protocol (SSH)
```bash
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:
```bash
$ cat ~/.ssh/config
Host name
User foo
Hostname 127.0.0.1
Port 8765
$ ssh name
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Secure Copy
```bash
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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Bash Profile
- bash - `.bashrc`
- zsh - `.zshrc`
```bash
# 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'
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
## Bash Script
### Variables
```bash
#!/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
```bash
#!/bin/bash
set # List all environment variables
echo $PATH # Print PATH environment variable
export FOO=Bar # Set an environment variable
```
### Functions
```bash
#!/bin/bash
greet() {
local world="World"
echo "$1 $world"
return "$1 $world"
}
greet "Hello"
greeting=$(greet "Hello")
```
### Exit Codes
```bash
#!/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
```bash
#!/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
```bash
#!/bin/bash
[[ $USER = 'rehan' ]] && echo 'yes' || echo 'no'
```
#### While Loops
```bash
#!/bin/bash
[
declare -i counter
counter=10
while [$counter -gt 2]; do
echo The counter is $counter
counter=counter-1
done
]
```
#### For Loops
```bash
#!/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
```bash
#!/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
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
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. 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 stops if the 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 [ ]. It is part of the shell builtin test. |
[[ ]] |
Test expression between [[ ]]. It is 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 list |
| Ctrl+n | Fetch next command from history list |
| Ctrl+d | Erase characters from cursor left to right |
| 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 | Erase backwards to first non-alphanumeric character or empty 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+r | Reverse search commands from history list |
| 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 contents (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](https://github.com/chubin/cheat.sh)
![image](https://user-images.githubusercontent.com/18756975/200065767-13a6249f-2188-4206-8073-1714be57c408.png)
_Terminal_:
```bash
curl cht.sh/keyword
# or
curl cheat.sh/keyword
```
_Browser_:
> [https://cht.sh/](https://cht.sh/)keyword
> or
> [https://cheat.sh/](https://cheat.sh/)keyword
#
#### Offline usage [Install](https://github.com/chubin/cheat.sh#installation) cheat script manually
_Install globally(all users)_:
```bash
curl -s https://cht.sh/:cht.sh | sudo tee /usr/local/bin/cht.sh && sudo chmod +x /usr/local/bin/cht.sh
```
_Run_:
```bash
cht.sh keyword
```
---