Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/trinib/Linux-Bash-Commands
:godmode: Ultimate list of Linux bash commands, cheatsheets and resources
https://github.com/trinib/Linux-Bash-Commands
List: Linux-Bash-Commands
awesome awesome-list bash cheatsheet cli cmd cmdline command-line learning linux linux-commands list shell terminal tools ultimate unix
Last synced: about 2 months ago
JSON representation
:godmode: Ultimate list of Linux bash commands, cheatsheets and resources
- Host: GitHub
- URL: https://github.com/trinib/Linux-Bash-Commands
- Owner: trinib
- License: mit
- Created: 2022-11-05T03:07:48.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-02-22T06:10:33.000Z (10 months ago)
- Last Synced: 2024-05-19T18:51:09.344Z (7 months ago)
- Topics: awesome, awesome-list, bash, cheatsheet, cli, cmd, cmdline, command-line, learning, linux, linux-commands, list, shell, terminal, tools, ultimate, unix
- Homepage:
- Size: 450 KB
- Stars: 3,303
- Watchers: 21
- Forks: 204
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- ultimate-awesome - Linux-Bash-Commands - :godmode: Ultimate list of Linux bash commands, cheatsheets and resources. (Other Lists / Monkey C Lists)
README
# 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 keywords in desktop browsers, for mobile go to `menu > find in page`.
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
Descriptionaccept
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 accessalias
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).
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)B
Command
Descriptionbadblocks
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
Descriptioncal
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.
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)D
Command
Descriptiondate
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/ext4declare
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.dpkg
Install, build, remove and manage debian software packages.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.
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)E
Command
Descriptione2fsck
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 commandexec
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
Descriptionfactor
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 systemftp
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.
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)G
Command
Descriptiong++
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
Descriptionhalt
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.
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)I
Command
Descriptioniconv
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.
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)J
Command
Descriptionjobs
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.
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)K
Command
Descriptionkbd_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
Descriptionlast
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.
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)M
Command
Descriptionm4
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.
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)N
Command
Descriptionnamed
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
Descriptionobjcopy
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
Descriptionpasswd
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.
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)Q
Command
Descriptionquota
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
Descriptionraidstart
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
Descriptionsane-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.
service
This command is used to manage system services.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.
systemctl
This command can be used to start, stop, and check the status of system services.
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)T
Command
Descriptiontac
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.
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)U
Command
Descriptionul
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.
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)V
Command
Descriptionvdir
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 -vvim
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.
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)W
Command
Descriptionw
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 databasewrite
Display a message on other user’s terminal.
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)X
Command
Descriptionxargs
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
Descriptionyacc
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
Descriptionzcat
Used to compress/uncompress files. Similar to gzipzcmp
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[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#table)
---
Quick cheatsheet
>**Note** 💡> - A single hyphen `-` is used to represent a short option, such as `-a`.
> - A double hyphen `--` is used to denote a long option, such as `--all`.
> - Example command : `ls -a|--all` (List all directories). Can use either use the short or long options.
> - Both short and long options were incorporated for educational purposes, allowing users to choose the preferred format.
> - It's important to note that not all commands have both short and long options. Some commands may only have short options, while others may only have long options.### 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)
- [Sorting Files](#sorting-files)
- [File Permissions](#file-permissions)
- [Finding Files](#finding-files)
- [Find in Files](#find-in-files)
- [Replace in Files](#replace-in-files)
- [File Editor](#file-editor)
- [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 keywordchmod --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 executedtouch 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 treecd foo # Go to foo sub-directory
cd # Go to home directory
cd ~ # Go to home directory
cd - # Go to the previously chosen 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 directoriesmktemp -d|--directory # Create a temporary directory
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)## Moving Directories
```bash
cp -R|--recursive foo bar # Copy directory
mv foo bar # Move directoryrsync -z|--compress -v|--verbose /foo /bar # Copy directory, overwrites destination
rsync --ignore-existing -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 filesmktemp # 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 contentls 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 errorread 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 filersync -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|--follow 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)## Sorting Files
```bash
sort foo.txt # Sort file (ascending order)
sort -r|--reverse foo.txt # Sort file (descending order)
sort -n|--numeric-sort foo.txt # Sort numbers instead of strings
sort -t|--field-separator: -k 3n /foo/foo.txt # Sort by the third column of a 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 indexlocate 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 -i|--in-place 's/fox/bear/g' foo.txt # Replace fox with bear and overwrite foo.txt
sed -i|--in-place '/red fox/i\blue bear' foo.txt # Insert blue bear before red fox and overwrite foo.txt
sed -i|--in-place '/red fox/a\blue bear' foo.txt # Insert blue bear after red fox and overwrite foo.txt
sed -i|--in-place '10s/find/replace/' foo.txt # Replace the 10th line of the file
sed -i|--in-place '10,20s/find/replace/' foo.txt # Replace in the file 10-20 lines
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
### File Editor
```bash
nano # Open a new file in nano
nano foo.txt # Open a specific file
nano -m|--mouse foo.txt # Enable the use of the mouse
nano -l|--linenumbers foo.txt # Show line numbers in front of the text
nano +line,10 foo.txt # Open file positioning the cursor at the specified line and column
nano -B|--backup foo.txt # Create a backup file (`foo~`) when saving edits
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#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 filesdpkg -i|--install package_name.deb # Install deb file
dpkg -P package_name.deb # Remove a deb file installion (including configuration files)
rpm -i|--install package_name.rpm # Install a rpm file installion
rpm -e package_name.rpm # Remove rpm file installion (including dependencies)
```### 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 formatdu # 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 minutesshutdown -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 rebootreboot # 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 processesCTRL+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 foregroundsleep 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 PIDlsof # 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 timedate -s "02 DEC 2020 12:02:02" # Manually change date and time
dpkg-reconfigure tzdata # Change date/timezoneuptime # 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 a file editor
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 yearat -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 a file editor to execute in 2 minutes
at 12:34 PM next month # Create a task in a file editor to execute at 12:34 PM next month
at tomorrow # Create a task in a file editor to execute tomorrow
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)## User Management
```bash
sudo su # Switch to root user
sudo foo # Execute commands(has permission denied) as the root user
sudo nano /foo/foo.txt # Open directories and files(is not writable) as the root user
su username # Switch to a different userpasswd # To change the password of a user
adduser username # To add a new 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 grouplast # Display information of all the users logged in
last username # Display information of a particular user
w # Display who is online
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#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 Encodedwget 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
ifconfig # Display all network card and interface information
ifconfig -a # Display information of all network cards (including those that are not started at boot)
ifconfig eth0 # Display specific device information
ifconfig eth0 up # Turn on the network card
ifconfig eth0 down # Turn off the network card
ifconfig eth0 192.168.120.56 # Configure IP address for network cardcurl ifconfig.me # Obtain external IP address
ping example.com # Send multiple ping requests using the ICMP protocol
ping -c 10 -i 5 example.com # Make 10 attempts, 5 seconds apartip addr # List IP addresses on the system
ip route show # Show IP addresses to router
netstat -i|--interfaces # List all network interfaces and in/out usage
netstat -l|--listening # List all open portstraceroute 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 timesnmap 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 numbercat /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
```bash
uname -s # Print kernel name
uname -r # Print kernel release
uname -m # Print Architecture
uname -o # Print Operating System
uname -a # Print all Systen infolsb_release -a # Print distribution-specific information
dpkg --print-architecture # Print-architecture by name
cat /proc/cpuinfo # Show cpu info
cat /proc/meminfo # Show memory info```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#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 sessionscreen # Start a new session (CTRL-a + d to detach)
screen -S foo # Start a new named session
screen -ls # List all sessions
screen -R 31166 # Reattach to a sessionexit # Exit a session
reset # Reset the terminal(when binary and the terminal state is messed up)
```
[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#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/bashfoo=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 defaultexport foo # Make foo available to child processes
unset foo # Make foo unavailable to child processes and current session
```### Environment Variables
```bash
#!/bin/bashset # List all environment variables
echo $PATH # Print PATH environment variable
export FOO=Bar # Set an environment variable
```### Functions
```bash
#!/bin/bashgreet() {
local world="World"
echo "$1 $world"
return "$1 $world"
}
greet "Hello"
greeting=$(greet "Hello")
```### Exit Codes
```bash
#!/bin/bashexit 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/bashfor i in {0..10..2}
do
echo "Index: $i"
donefor filename in file1 file2 file3
do
echo "Content: " >> $filename
donefor filename in *;
do
echo "Content: " >> $filename
done
```#### Case Statements
```bash
#!/bin/bashecho "What's the weather like tomorrow?"
read weathercase $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[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴄᴏɴᴛᴇɴᴛꜱ](#contents)
---
Special characters## Linux Special Characters
> **Note** 💡
> This symbol "└─>" represents an alternative meaning of some characters.Char.
Description~
Home directory [tilde]. The path to a user's home directory location.-
Last directory [hyphen]. Go to the previously chosen directory.└─>
Option flag for a command or filter.└─>
Arithmetic operator. Minus of arithmetic operations./
Root directory [forward slash]. The path to root directory location.└─>
Filename path separator.\
Escape [backslash]. A quoting mechanism for single characters. It preserves the literal value of the next character that follows, with the exception of newline.└─>
Arithmetic operator. Divider of arithmetic operations.|
Pipe. This is a method of chaining commands together. Connects the output (stdout) of command1 to the input (stdin) of command2. Each command reads the previous command’s output.|&
This operator connects the output (stdout) and error (stderr) of command1 to the input (stdin) of command2.||
The OR operator is used to chain commands. It will execute the first command then stop if successful, if not, it will proceed pass failed commands until one is successful and stop.&&
The AND operator is used to chain commands. It will execute commands only if the first command is successful and proceed until one fails.;
Command separator [semicolon]. Used to separate multiple commands and output all successful and failed ones.&
Run job in background [and]. A command followed by an & will run in the background.>, >>, <
Redirect a command's standard output (stdout) or input (stdin) into a file.&>, >&
Redirects a command's both standard output (stdout) and error (stderr) into a file.<&-
Close standard input (stdin) to prevent showing from a file.>&-
Close standard output (stdout) to prevent showing from a file.>|
Force redirection (even if the noclobber option is set). This will forcibly overwrite an existing file."
Partial quoting [double quotes]. Protects the text inside them from being split into multiple words or arguments, yet allow substitutions to occur, meaning most other special characters is usually prevented..
Source command [period]. To evaluate commands in the current execution context. This is a bash builtin.└─>
"As a component of a filename. When working with filenames, a leading dot is the prefix of a "hidden" file, a file that an ls will not normally show.└─>
Character match. When matching characters, as part of a regular expression, a "dot" matches a single character.'
Full quoting [single quotes]. Protects the text inside them so that it has a literal meaning. This is a stronger form of quoting than double quotes.`
Command substitution [backquotes]. Assign the output of a shell command to a variable.#
Comment [number sign]. Lines in files beginning with a # (with the exception of #!) are comments and will not be executed.!
Reverse (or negate) [exclamation]. The ! operator inverts the exit status of the command to which it is applied. It also inverts the meaning of a test operator.*
Wild card [asterisk]. The * character serves as a "wild card" for filename expansion in globbing. By itself, it matches every filename in a given directory.└─>
Arithmetic operator. Multiplier of arithmetic operations.?
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.└─>
Test operator. Within certain expressions, the ? indicates a test for a condition.{ }
Inline group [curly brackets]. Commands inside the curly braces are treated as if they were one command.└─>
Placeholder for output text.( )
Subshell group [parentheses]. Commands within are executed in a subshell (a new process) Used much like a sandbox, if a command causes side effects (like changing variables), it will have no effect on the current shell.[ ]
Test expression [brackets]. It is part of the shell builtin test.└─>
Array element. Brackets set off the numbering of each element.└─>
Range of characters. As part of a regular expression, brackets delineate a range of characters to match.[[ ]]
Test/Evaluate [double brackets] a condition expression to determine whether true or false. It is more flexible than the single-bracket [ ] test.(( ))
Arithmetic expression [double parentheses]. Characters such as +, -, *, and / are mathematical operators used for calculations.~+
Current working directory.~-
Previous working directory.:
Null command [colon]. This is the shell equivalent of a "NOP" (no op, a do-nothing operation). It may be considered a synonym for the shell builtin true.;;
Terminator [double semicolon]. Only used in case constructs to indicate the end of an alternative." "
Whitespace. This is a tab, newline, vertical tab, form feed, carriage return, or space. Bash uses whitespace to determine where words begin and end.,, ,
Lowercase conversion in parameter substitution.^, ^^
Uppercase conversion in parameter substitution.$
Variable substitution. A $ prefixing a variable name indicates the value the variable holds└─>
End-of-line. In a regular expression, a "$" addresses the end of a line of text.$*
All the arguments are seen as a single word.!!
The previous command.!$
The last argument to the previous command.!*
All the arguments from the previous command.$?
The exit status of the last command executed.$#
The number of arguments supplied to a script.$$
The process number of the current shell. For shell scripts, this is the process ID under which they are executing.$!
The process number of the last background command.$_
Special variable set to final argument of previous command executed.$-
Expands to the current option flags as specified upon invocation, by the set builtin command, or those set by the shell itself (such as the -i option).$0
Used to reference the name of the current shell or current shell script.$n
These variables correspond to the arguments with which a script was invoked. Here n is a positive decimal number corresponding to the position of an argument (the first argument is $1, the second argument is $2, and so on).[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#linux-special-characters)
---
Keyboard controls
## Linux Keyboard Shortcuts
| **Key** | **Function** |
| :--: | :-- |
| **Cursor Movement** |
| Ctrl+B | Move cursor backward one character position |
| Ctrl+F | Move cursor forward one character position |
| Alt+F | Move cursor one word forward in line |
| Alt+B | Move cursor one word backward in line |
| Ctrl+A | Move cursor to beginning of text in line |
| Ctrl+E | Move cursor to end of text in line |
| **Text Editing** |
| Ctrl+D | Erase character forward from cursor left to right |
| Ctrl+H | Erase character backward from cursor right to left |
| Alt+D | Erase the next word from cursor left to right |
| Ctrl+W | Erase backwards to first non-alphanumeric character or empty space |
| Ctrl+U | Erase a line of input from cursor right to left |
| Ctrl+K | Erase a line of input from cursor left to right |
| Alt+R | Revert any changes to a previously executed command that's being edited |
| Alt+. | Fetch and paste the last word at end of a command from previous commands |
| Ctrl+T | Reverse the position of the character the cursor is on with the previous character |
| Alt+T | Reverse the position of the word the cursor is in with the previous word |
| Alt+U | Capitalize every character from cursor left to right to the end of one word |
| Alt+L | Uncapitalize every character from cursor left to right to the end of one word |
| Ctrl+Y | Paste (yank) text cut by Ctrl+U, Ctrl+K, or Ctrl+W |
| Ctrl+_ | Undo last change |
| **Command History** |
| Ctrl+P | Fetch previous command from history list |
| Ctrl+N | Fetch next command from history list |
| Ctrl+R | Reverse search commands from history list |
| **Process Control** |
| Ctrl+C | Break/Terminate a foreground job |
| Ctrl+Z | Suspend a foreground job |
| Ctrl+S | Suspend output to screen |
| Ctrl+Q | Resume output to screen |
| **Terminal Control** |
| Ctrl+L | Clear screen contents (command-line needs to be empty) |
| Ctrl+D | Log out from a shell (similar to exit) or send EOF |
| Ctrl+O | Accept the current line for execution and fetch the next command |
| Ctrl+X (twice) | Toggle cursor between current position and beginning of the line |
| **Text Editing (Terminal)** |
| Ctrl+Shift+C | Copy |
| Ctrl+Shift+V | Paste |
| Shift+Insert | Paste (alternative) |Some of these shortcuts may vary depending on your terminal and system.
## Nano (text editor)
| **Key** | **Function** |
| :--: | :-- |
| **Movement** | |
| `Ctrl+Y` | Scroll page **up** |
| `Ctrl+V` | Scroll page **down** |
| `Alt+\` | Go to the beginning of the file |
| `Alt+/` | Go to the end of the file |
| **Editing** | |
| `Ctrl+H` | Delete the character before the cursor |
| `Ctrl+D` | Delete the character under the cursor |
| `Alt+Backspace`| Delete the word to the left |
| `Ctrl+Del` | Delete the word to the right |
| `Alt+Del` | Delete the current line |
| `Alt+^` | Copy selected text to the cut buffer |
| `Ctrl+K` | Cut selected text to the cut buffer |
| `Ctrl+U` | Paste text from the cut buffer (clipboard) |
| `Alt+A` | Start text selection (can be used with Ctrl+K to cut specific text) |
| `Ctrl+J` | Justify (wrap) the current paragraph |
| **Undo and Redo** | |
| `Alt+U` | Undo the last action |
| `Alt+E` | Redo the last undone action |
| **Search and Replace** | |
| `Ctrl+Q` | Start backward search (press again to repeat) |
| `Ctrl+W` | Start forward search (press Alt+W to search for the same term again) |
| `Ctrl+\` | Replace a string or regular expression |
| **File Operations** | |
| `Ctrl+R` | Insert a file at the current cursor position |
| `Ctrl+O` | Write changes to the file ("Save as") |
| `Ctrl+S` | Save the current file |
| `Ctrl+X` | Exit Nano (prompts to save changes if needed) |
| **Miscellaneous** | |
| `Alt+3` | Comment/uncomment the line/region |
| `Ctrl+G` | Show help for all available commands |
| `Ctrl+T` | Open the spell checker |## Vim (text editor)
| **Key** | **Function** |
| :--: | :-- |
| **Movement** | |
| `h` | Move left |
| `j` | Move down |
| `k` | Move up |
| `l` | Move right |
| `w` | Move forward to the beginning of the next word |
| `b` | Move backward to the beginning of the previous word |
| `e` | Move to the end of the current word |
| `0` (zero) | Move to the beginning of the line |
| `$` | Move to the end of the line |
| `gg` | Go to the first line of the document |
| `G` | Go to the last line of the document |
| `:{number}` | Go to a specific line number |
| `Ctrl+f` | Page down |
| `Ctrl+b` | Page up |
| `%` | Move to matching parenthesis or bracket |
| `^` | Move to the first non-blank character of the line |
| `H` | Move to the top of the screen |
| `M` | Move to the middle of the screen |
| `L` | Move to the bottom of the screen |
| `*` | Search forward for the word under the cursor |
| `#` | Search backward for the word under the cursor |
| **Editing** | |
| `i` | Insert before the cursor |
| `I` | Insert at the beginning of the line |
| `a` | Append after the cursor |
| `A` | Append at the end of the line |
| `o` | Open a new line below the current line |
| `O` | Open a new line above the current line |
| `r` | Replace a single character |
| `R` | Enter replace mode |
| `x` | Delete the character under the cursor |
| `X` | Delete the character before the cursor |
| `dd` | Delete the current line |
| `D` | Delete from the cursor to the end of the line |
| `yy` | Yank (copy) the current line |
| `p` | Paste after the cursor |
| `P` | Paste before the cursor |
| `u` | Undo the last action |
| `Ctrl+r` | Redo the last undone action |
| **Visual Mode** | |
| `v` | Enter visual mode (character selection) |
| `V` | Enter visual line mode |
| `Ctrl+v` | Enter visual block mode |
| **Text Objects** | |
| `ciw` | Change the inner word |
| `diw` | Delete the inner word |
| `yaw` | Yank (copy) the entire word |
| `ci"` | Change text inside double quotes |
| `di(` | Delete text inside parentheses |
| **Search and Replace** | |
| `/pattern` | Search forward for 'pattern' |
| `?pattern` | Search backward for 'pattern' |
| `n` | Repeat the search in the same direction |
| `N` | Repeat the search in the opposite direction |
| `:%s/old/new/g` | Replace all occurrences of 'old' with 'new' in the file |
| `:%s/old/new/gc` | Replace all occurrences of 'old' with 'new' with confirmation |
| **File Operations** | |
| `:w` | Write (save) the file |
| `:w filename` | Write to a specific filename |
| `:q` | Quit Vim |
| `:q!` | Quit without saving changes |
| `:wq` | Write and quit |
| `:x` | Write and quit (same as `wq`) |
| **Multiple Files** | |
| `:e filename` | Edit a file in a new buffer |
| `:bnext` or `:bn` | Go to the next buffer |
| `:bprev` or `:bp` | Go to the previous buffer |
| `:bd` | Delete a buffer (close the file) |
| `:sp filename` | Open a file in a new buffer and split the window horizontally |
| `:vsp filename` | Open a file in a new buffer and split the window vertically |
| `Ctrl+ws` | Split the window horizontally |
| `Ctrl+wv` | Split the window vertically |
| `Ctrl+ww` | Switch between windows |
| `Ctrl+wq` | Quit the current window |
| **Macros** | |
| `qa` | Record macro in register 'a' |
| `q` | Stop recording macro |
| `@a` | Run macro from register 'a' |
| `@@` | Rerun the last executed macro |
| **Marking and Jumping** | |
| `m{a-z}` | Set a mark with a letter (a-z) in the current position |
| `'a` | Jump to the line with mark 'a' |
| `` `a `` | Jump to the exact position with mark 'a' |
| `:marks` | List all the marks |
| `Ctrl+o` | Jump to the previous location |
| `Ctrl+i` | Jump to the next location |
| **Tabs** | |
| `:tabnew` | Open a new tab |
| `gt` or `:tabnext` | Go to the next tab |
| `gT` or `:tabprev` | Go to the previous tab |
| `:tabclose` | Close the current tab |
| `:tabs` | List all open tabs |
| **Miscellaneous** | |
| `.` | Repeat the last command |
| `ZZ` | Write the current file (if modified) and quit |
| `ZQ` | Quit without checking for changes |
| `Ctrl+g` | Show the file name and status |
| `g Ctrl+g` | Show the cursor position (line, column, and character) |[⬆ ʀᴇᴛᴜʀɴ ᴛᴏ ᴛᴏᴩ](#linux-keyboard-shortcuts)
---
Cheat Sheet 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)
Cheat sheets sources
|Cheat sheets |Repository |C/U* |Stars |Creation Date|
|-----------------------|------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------|-------------|
|UNIX/Linux, programming|[cheat.sheets](https://github.com/chubin/cheat.sheets) |![](https://img.shields.io/github/contributors-anon/chubin/cheat.sheets?label=%F0%9F%91%A5&labelColor=white) |![](https://img.shields.io/github/stars/chubin/cheat.sheets?label=%E2%AD%90&labelColor=white) |May 1, 2017 |
|UNIX/Linux commands |[tldr-pages/tldr](https://github.com/tldr-pages/tldr) |![](https://img.shields.io/github/contributors-anon/tldr-pages/tldr?label=%F0%9F%91%A5&labelColor=white) |![](https://img.shields.io/github/stars/tldr-pages/tldr?label=%E2%AD%90&labelColor=white) |Dec 8, 2013 |
|UNIX/Linux commands |[chrisallenlane/cheat](https://github.com/chrisallenlane/cheat) |![](https://img.shields.io/github/contributors-anon/chrisallenlane/cheat?label=%F0%9F%91%A5&labelColor=white) |![](https://img.shields.io/github/stars/chrisallenlane/cheat?label=%E2%AD%90&labelColor=white) |Jul 28, 2013 |
|Programming languages |[adambard/learnxinyminutes-docs](https://github.com/adambard/learnxinyminutes-docs) |![](https://img.shields.io/github/contributors-anon/adambard/learnxinyminutes-docs?label=%F0%9F%91%A5&labelColor=white)|![](https://img.shields.io/github/stars/adambard/learnxinyminutes-docs?label=%E2%AD%90&labelColor=white)|Jun 23, 2013 |
|Go |[a8m/go-lang-cheat-sheet](https://github.com/a8m/go-lang-cheat-sheet) |![](https://img.shields.io/github/contributors-anon/a8m/go-lang-cheat-sheet?label=%F0%9F%91%A5&labelColor=white) |![](https://img.shields.io/github/stars/a8m/go-lang-cheat-sheet?label=%E2%AD%90&labelColor=white) |Feb 9, 2014 |
|Perl |[pkrumnis/perl1line.txt](https://github.com/pkrumins/perl1line.txt) |![](https://img.shields.io/github/contributors-anon/pkrumins/perl1line.txt?label=%F0%9F%91%A5&labelColor=white) |![](https://img.shields.io/github/stars/pkrumins/perl1line.txt?label=%E2%AD%90&labelColor=white) |Nov 4, 2011 |
|Programming languages |[StackOverflow](https://stackoverflow.com) |[14M](https://stackexchange.com/leagues/1/alltime/stackoverflow)|N/A
### Usage (Online)
_**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 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
```
>**Note** - More info on usage :> https://cht.sh/:help
---
More bash resources
| **Repository** | **Description** |
| :--: | :-- |
| **Bash/Shell Scripting Tutorials and Guides** |
| [introduction-to-bash-scripting](https://github.com/bobbyiliev/introduction-to-bash-scripting) | Free Introduction to Bash Scripting eBook. |
| [shell-scripting-tutorial](https://github.com/techarkit/shell-scripting-tutorial) | A complete beginner's guide to learning shell scripting from scratch, with videos, practice scenarios, and project ideas. |
| [100-shell-script-examples](https://github.com/epety/100-shell-script-examples) | A collection of shell scripts found on the internet. |
| [simple-bash-scripts](https://github.com/ruanyf/simple-bash-scripts) | A collection of simple Bash scripts. |
| [shell-examples](https://github.com/qjcg/shell-examples) | Little Bash shell scripting examples. |
| [Shell Cheat Sheet](https://github.com/LeCoupa/awesome-cheatsheets/blob/master/languages/shell.sh) | A detailed and organized shell scripting cheat sheet for quick reference. |
| [bash-utils](https://github.com/pirate/bash-utils) | A collection of hand-crafted bash scripts for various common tasks. |
| [Bash-Snippets](https://github.com/alexanderepstein/Bash-Snippets) | A collection of small bash scripts for heavy terminal users. |
| [DevOps Bash Tools](https://github.com/HariSekhon/DevOps-Bash-tools) | A comprehensive collection of 1000+ DevOps bash scripts for AWS, GCP, Kubernetes, Docker, CI/CD, databases, and more. |
| [Bash Booster](https://github.com/bahamas10/bash-booster) | A modular bash framework that simplifies the process of writing bash scripts. |
| [pure-bash-bible](https://github.com/dylanaraps/pure-bash-bible) | A collection of pure bash snippets for common tasks like string manipulation, file handling, etc., with no external dependencies. |
| **Curated Lists of Bash/Shell Resources** |
| [awesome-bash](https://github.com/awesome-lists/awesome-bash) | A curated list of delightful Bash scripts and resources. |
| [awesome-shell](https://github.com/uhub/awesome-shell) | A curated list of awesome Shell frameworks, libraries, and software. |
| [awesome-shell](https://github.com/alebcay/awesome-shell) | A list of awesome shell tools and resources, including libraries and scripts for enhancing the command-line experience. |
| [awesome-cli-apps](https://github.com/agarrharr/awesome-cli-apps) | A curated list of command line apps. |
| [cli-apps](https://github.com/toolleeo/cli-apps) | A curated list of (mainly) CLI/TUI applications with source data organized into CSV files. |
| [awesome-cli](https://github.com/Kikobeats/awesome-cli) | A curated list of awesome resources for building immersive CLI experiences. |
| [awesome-cli](https://github.com/umutphp/awesome-cli) | A simple command line tool to give you a fancy command line interface to dive into Awesome lists. |
| **AI-Enhanced Command Line Tools** |
| [shell_gpt](https://github.com/TheR1D/shell_gpt) | A command-line productivity tool powered by AI large language models like GPT-4. |
| [aider](https://github.com/paul-gauthier/aider) | AI pair programming in your terminal. |
| [warp](https://github.com/warpdotdev/Warp) | Warp is a modern, Rust-based terminal with AI built in so you and your team can build great software, faster. |
| [plandex](https://github.com/plandex-ai/plandex) | AI driven development in your terminal. Designed for large, real-world tasks. |
| **Other Fun and Useful Shell Tools** |
| [awesome-ttygames](https://github.com/ligurio/awesome-ttygames) | Unix ASCII games. |
| [terminals-are-sexy](https://github.com/k4m4/terminals-are-sexy) | A curated list of Terminal frameworks, plugins, and resources for CLI lovers. |
---