Getting started on the Linux (or Unix) command line, Part 3
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
Command | Function | Example |
---|---|---|
pwd | display current file system location | pwd |
whoami | display username | whoami |
who | list logged in users | who |
ls | list files in current location | ls; ls -l; ls -a |
env | display settings (search path, command history …) | env |
echo | repeat the argument provided | echo hello; echo $PATH |
history | list recently used commands | history; history | tail -5 |
passwd | reset your password | passwd |
Looking at text file content
Command | Function | Example |
---|---|---|
cat | display file content | cat myfile |
more | view file content a page at a time | more myfile |
less | display file content a page at a time, allows backing up | less myfile |
head | show top of file | head myfile; head -5 myfile |
tail | show bottom of file | tail myfile; tail -3 myfile |
Managing your files
Command | Function | Example |
---|---|---|
chmod | change file permissions | chmod a+x myscript; chmod 700 myscript |
cp | make a copy of a file | cp myfile savefile |
mv | rename a file or move to another location | mv file oldfile; mv script bin |
rm | delete a file | rm oldfile |
View running processes
Command | Function | Example |
---|---|---|
ps | show processes associated with your current login | ps |
ps -ef | show processes running on the system | ps -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.