Below you’ll find a list of some basic yet useful Linux commands for the command line interface (i.e., the shell), which is the interface provided by users to interact with services and programs provided by the operating system kernel.
1. man pages
When in doubt about a specific command or program, check is manual pages. Simply write “man command_name”. For instance, “man ls” or “man cp”.
Used to create new directories. For instance “mkdir images”.
Used to change directory. Notice that the current directory is specified by . (one dot) and the parent directory by .. (two dots). So use “cd ..” to return to the parent directory.
This will “print working directory”. That is, it will print the full path to your current directory.
Used to remove/delete a file or directory. Use the -r option if you want to remove sub directories and their content recursively.
Lists the contents of the current directory. It stands for “list segments”, though this name comes from older times when segments were still used. Useful options:
-a (list all files, including hidden ones starting with .)
-l (long form, which includes all the file details)
Lists the current processes. Usually used with the -ef option. The name stands for “process status”.
Another useful way to run ps is this:
ps -aux | less
a is for all users, u is for displaying more information about each process, and x is for displaying daemons as well. The | symbol pipes the output into another program, in this case the Less program.
Less is a pages program. It’s used to view stuff inside the terminal, one page at a time. It basically makes it easier to navigate through large files, or to find specific sections. Some basic less commands follow:
Down and Up arrows – Move up and down on the lines
B and F – Move back and forward around pages
/pattern – Searches for a pattern on the text
n – Moves to the next appearance of pattern, if one exists
g – Goes back to first line
q – Quit the program
9. ssh email@example.com
Command to connect to another host via secure shell.
Command to upload and download files from remote servers, called secure copy.
To get a file from a remote server:
scp firstname.lastname@example.org:/home/user/file.zip ~/Desktop
To send a file from your local machine:
scp file.zip email@example.com:/home/user/
Command line tool to search for text using regular expressions. For example, use this command to search for files containing the string “test”, starting at the current directory and recursively going to deeper ones.
grep -r "test" ./
Despite the name this command is not only used to terminate processes. It’s used to send signals. If you don’t specify a signal it will send the SIGTERM (terminate), which terminates a process but might be blocked by such program (i.e., you can’t be sure it will terminate).
kill 3458 (send SIGTERM to pid 3458)
If you want to kill it for sure use the -9 or -kill signal. Other useful signals are STOP, CONT and INT.
Very useful command for finding files. If you want to find files only in the current directory that contain a certain string on their names, use this:
find -name "*string*" -maxdepth 1
You can also use the ‘locate’ command, but it has fewer features (though it’s faster).
This command changes the mode bits (hence the name) of files. Basically it alters the file permissions. First of all if you want to change the Owner or Group of the file use:
Second, you may change the read, write and execute permissions for three levels: owner/user, group and others. You specify the level with u, g and o, and the permissions with + or – and r, w and x. So let’s say we want to:
-give read and write permission to user/owner
-give read permission to group
-give read permission to others
we use these commands:
chmod u+rd file1 chmod g+r file1 chmod o+r file1
We can also use binary values to alter all three levels at the same time. Basically read = 4, write = 2, execute = 1, so we can do the previous settings like this:
chmod 644 file1
If you wanted to give rwx permissions to all levels you would do:
chmod 777 file1
15. cat, head, tail
These commands are used to display the content of files in the standard output (i.e., the terminal). Cat will show all the content, head the first 10 lines, and tail the last 10 lines.
The cat (concatenate) command can be used for several other purposes. For instance, you can use it to read from standard input and output to a file:
cat > file1.txt
With this you can create and write to that file directly from the command line. Use Ctrl+D to send a “end of file” character and close it.
You can also copy the contents of one or more files to another:
cat file1.txt > file2.txt cat file1.txt file2.txt > file3.txt
Sorts contents of a file numerically or alphabetically. For instance:
ls | sort
If you can’t remember the command you are looking for use “apropos keywords”, and it will return a list of all comments that mention that keyword on the header of their man page. For instance:
19. <, >, |, ;, & and $
< is used to redirect the input of a command.
> is used to redirect its output.
>> to redirect the output at the end of an existing file
| is used to pipe the output of a command into the input of another command.
; used to run one command after the other
& if placed after the command it will make it run in the background
$ used to substitute the output of a command into the command line itself
echo "found $(ls | wc -w) files in this directory"
20. System information
who i am – displays information about your user
who – displays information about all logged in users you can see
date – displays the date and time
uname -a – displays information about the system
echo $PATH – displays the directories included in your path (i.e., checked when commands are executed)
alias – show current shell aliases
type command – shows where a command is coming from (e.g., alias, shell built-in, file system)
Shows the history of shell commands used, with an index number. You can any of them by typing !number.
Touch is used to alter the timestamp of a file. If the file doesn’t exit, an empty one is created.
Curly braces will expand into many file names. For instance:
Will create files file1, file2 and file3 if they don’t already exit.
You can also use ranges, as in:
24. tr, cut, sed
tr is used to translate and delete characters in a file.
cut is used to cut specific parts of each line on a file or command output.
sed is a scriptable editor, which you can use to accomplish many text editing tasks.
Please refer to the man page of each command to get details about them.