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