Our Linux cheat sheet includes some of the most commonly used commands along with brief explanations and examples of what the commands can do. Credit: PeopleImages.com - Yuri A / Shutterstock One of the things you need when building your “chops” on Linux is a command vocabulary that will allow you to do all of the things that you need to do on the command line. One of the best ways to do this is to start with a “cheat sheet” – a list of the commonly used commands with brief explanations and examples of what the commands can do. A cheat sheet can help you to become familiar with commands you might not even have known were available. This post provides an intro Linux cheat sheet. It includes a series of commands with descriptions and examples and categorizes them in groups by their primary focus. Keep in mind that, while most commands on Linux will work the same from one distribution to the next, some commands – like those used to install manage packages (tools, programming languages, etc.) – will differ from one distro to another. A brief cheat sheet The tables below provides information on some of the most basic Linux commands. Getting familiar with your account CommandFunctionExamplepwddisplay current file system locationpwdwhoamidisplay usernamewhoamiwholist logged in userswholslist files in current locationls; ls -l; ls -aenvdisplay settings (search path, command history …)envechorepeat the argument providedecho hello; echo $PATHhistorylist recently used commandshistory; history | tail -5passwdreset your passwordpasswd Looking at text file content CommandFunctionExamplecatdisplay file contentcat myfilemoreview file content a page at a timemore myfilelessdisplay file content a page at a time, allows backing upless myfileheadshow top of filehead myfile; head -5 myfiletailshow bottom of filetail myfile; tail -3 myfile Managing your files CommandFunctionExamplechmodchange file permissionschmod a+x myscript; chmod 700 myscriptcpmake a copy of a filecp myfile savefilemvrename a file or move to another locationmv file oldfile; mv script binrmdelete a filerm oldfile View running processes CommandFunctionExamplepsshow processes associated with your current loginpsps -efshow processes running on the systemps -ef; ps -ef | more Command output The examples in this section provide sample output for many of the commands described in the tables above. env The env command provides a lot of information on your command environment. This includes the shell assigned to your account, how many of the commands you run will be maintained in your command history (HISTSIZE), your default text editor, your current file system location, terminal type and most recent former file system location as well as other data. $ env SHELL=/bin/bash HISTCONTROL=ignoredups HISTSIZE=1000 HOSTNAME=fedora EDITOR=/usr/bin/nano PWD=/home/justme LOGNAME=justme HOME=/home/justme LANG=en_US.UTF-8 LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;37;41:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.m4a=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.oga=01;36:*.opus=01;36:*.spx=01;36:*.xspf=01;36:*~=00;90:*#=00;90:*.bak=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.swp=00;90:*.tmp=00;90:*.dpkg-dist=00;90:*.dpkg-old=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90: TERM=xterm LESSOPEN=||/usr/bin/lesspipe.sh %s USER=justme SHLVL=1 DEBUGINFOD_URLS=https://debuginfod.fedoraproject.org/ XDG_DATA_DIRS=/home/justme/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share PATH=/home/justme/.local/bin:/home/justme/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin MAIL=/var/spool/mail/justme _=/usr/bin/env OLDPWD=/tmp echo The echo command will display content you provide and variables you include, but it can also be used to add lines to existing files. $ echo date: `date` date: Tue Nov 20 02:53:43 PM EST 2023 Note that including command output in an echo command requires using backticks to run the command rather than just display its name. To add the generated output to a file, you would use a command like this: $ echo date: `date` > myreport $ cat myreport date: Tue Nov 20 03:06:33 PM EST 2023 Keep in mind that > overwrites and former file content. Use >> to append to an existing file. history The history command shows recent commands you have run – as many as your $HISTSIZE setting allows. You can narrow this down to the most recent four with a command like this: $ history | tail -3 84 echo date: `date` > myreport 85 cat myreport 86 history | tail -3 The passwd command allows you to change your password but requires that you enter your current password first. It also enforces some length and complexity requirements. $ passwd Changing password for user justme. Current password: New password: Retype new password: passwd: all authentication tokens updated successfully. more The more command displays file content a screen at a time. To save space below, I’ve used the -n option to display only five lines at a time from a very long list of time zones. You would press the enter key to see the next five. $ more -n 5 TZs Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers Africa/Asmara head and tail The head and tail commands will display the top and bottom lines in text files. As with the more command, you can add the -n option to limit the number of lines displayed. $ head -n 5 TZs Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers Africa/Asmara $ tail -n 5 TZs UTC Universal W-SU WET Zulu chmod The chmod command is used to change file permissions. If you set up a script that you want others to be able to run, you can give them execute permission with command like this: $ chmod 755 myscript The first 5 in the chmod command above sets the script’s permissions to allow others in the same group to read and execute the script. The second allows anyone else to run the script (provided they have access to the file’s location). Normally, Linux accounts are set up with the account owner being the only member of a same-named group. $ chmod 755 mkTable $ ls -l mkTable -rwxr-xr-x. 1 justme justme 701 Nov 17 14:05 mkTable cp The cp command makes a copy of a file. For example, it’s often a good idea to make a backup copy of a file before making significant changes so that you can easily “roll back” if something goes wrong. $ cp myfile myfile.backup mv and rm The mv (remove) command allows you to rename a file, move it to another location, or do both in a single command. Here are some examples: $ mv myreport oldreport $ mv myscript ~/bin $ mv myreport /shared/reports The rm (remove) command deletes a file. $ rm oldfile $ ls oldfile ls: cannot access 'oldfile': No such file or directory The final ls command above shows that the file is no longer available after the rm command is run. ps The ps command shows running processes. Without arguments, it only shows processes related to your current login. $ ps PID TTY TIME CMD 6688 pts/1 00:00:00 bash 7201 pts/1 00:00:00 ps Use ps -ef (ps -aux on some systems) to see all running processes. You can send the command output to a more or a grep command to restrict the output to just what you’re looking for. $ ps -ef | grep sshd root 782 1 0 Nov20 ? 00:00:00 sshd: /usr/sbin/sshd -D root 6632 782 0 14:38 ? 00:00:00 sshd: shs [priv] justme 6678 6632 0 14:38 ? 00:00:00 sshd: shs@pts/1 justme 7228 6688 0 16:14 pts/1 00:00:00 grep --color=auto sshd The command output above is showing processes associated with the sshd (secure login) processes. who The who command provides a list of everyone currently logged into the system, whether at the system console or logged on remotely. $ who fedora seat0 2023-11-16 09:06 (login screen) fedora tty2 2023-11-16 09:06 (tty2) justme pts/1 2023-11-17 14:38 (192.168.0.8) Wrap-up There’s a lot to learn about Linux before you will likely feel “at home” on the command line, but it’s well worth the effort. SUBSCRIBE TO OUR NEWSLETTER From our editors straight to your inbox Get started by entering your email address below. Please enter a valid email address Subscribe