Essential SSH Commands

Here is my list of the most useful SSH commands

It is complete with their syntaxes and options.

SSH CommandExplanation
lsShow directory contents (list the names of files).
cdChange Directory.
mkdirCreate a new folder (directory).
touchCreate a new file.
rmRemove a file.
catShow contents of a file.
pwdShow current directory (full path to where you are right now).
cpCopy file/folder.
mvMove file/folder.
grepSearch for a specific phrase in file/lines.
findSearch files and directories.
vi/nanoText editors.
historyShow last 50 used commands.
clearClear the terminal screen.
tarCreate & Unpack compressed archives.
wgetDownload files from the internet.
duGet file size.

1. ls Command

This SSH command is used to list all files and directories. After entering ls, you will see an output that looks like this:

Node Ninja Says “I use cd every time I login”

There are also a few useful options that you can combine with it:

  • -l —  displays the details of the files, such as size, modified date and time, the owner, and the permissions.
  • -a —  shows hidden files and directories.

2. cd Command

cd (Change Directory) is the command that we use to jump between directories. It’s a pretty simple command — just type cd followed by the name of the directory:

cd [directory]

As such, if you want to enter the home directory of your server, you can type:

cd home

You may also write the full path of a certain directory if it is a few levels deep. For instance:

cd home/TestDirectory/AnotherDirectory

You are now in the AnotherDirectory.

To go back one level, you can simply enter “..” (two dots) after cd command. What’s cool, you can go back further by adding another two-dots and separating them with a forward slash (/):

cd ../..

By entering this line, you are in the home directory again.

3. mkdir Command

You can use mkdir (Make Directory) command to create a directory. This is the syntax:

mkdir [folder name]

Let’s assume you want to create a new folder named “myfolder”. You will need to type:

mkdir myfolder

4. touch Command

This SSH command is used to create a new file. Here is the syntax:

touch [file name]

If you want to create a .txt file named “myfile”, this is what you need to write:

touch myfile.txt.

The file extension could be anything you want. You can even create a file with no extension at all.

5. rm Command

rm command removes a chosen file or directory. To delete a file, enter:

rm [file name]

For instance, if you want to remove myfile.txt, simply execute:

rm myfile.txt

To delete a folder, you need to use the -r option to remove all the files and subfolders inside it:

rm -r home/brad/myfolder

6. cat Command

We use cat command to display the content of a file. Below is the syntax:

cat [file name]

It also allows you to create a new file by merging multiple files. For example:

cat info.txt info2.txt > mergedinfo.text

By executing this line, the content of info.txt and info2.txt will be saved into mergedinfo.txt.

7. pwd Command

pwd is a simple command that outputs the full path of your working directory. Once entered, you should see a result like this:


pwd command can come in really handy when you are accessing your shared hosting account through SSH. Oftentimes, shared servers don’t tell you the directory you are in.

8. cp Command

This SSH command will copy files and folders. The syntax is:

cp [options] [source] [destination]

[source] is the file or folder you want to copy and [destination] is the duplicate.

Let’s say you have myfile.txt in your working directory, and you want to make a copy of it. The syntax would be:

cp myfile.txt myfile2.txt

If you want to make a copy in a different folder, run the following command:

cp /home/brad/myfile.txt /home/etc/

Be careful when writing the name of the destination. If you provide two file names, the cp command will copy the content of the source file into the destination file. Thus, the destination file will be overwritten without any warning. However, if the destination file doesn’t exist, then the command will create a new file.

[options] is not mandatory. However, there are several options that you can use:

  • -f — if you don’t have writing permission to the destination file, it’ll be deleted and the command will create a new file
  • -u — copy the source file if it is newer than the destination file.
  • -n — will not overwrite an existing file.
  • -a — archive the files.

Unlike duplicating files, copying folders requires you to use the -R (recursive) option. The option allows all folders and files inside it to be copied.

cp -R /home/brad/myfolder /home/etc/

9. mv Command

This command works similarly to cp. However, mv command will move the file or folder instead of copying it. This is the syntax:

mv [source] [destination]

Let’s say we want to move myfile.txt from /home/brad/ftp to /home/brad/myfolder/. The command should be:

mv /home/brad/ftp/myfile.txt /home/brad/myfolder

Unlike cp command, you don’t need the -R option to move a folder. For instance:

mv /home/brad/ftp/ /home/brad/myfolder/

This will automatically move all files and subfolders inside ftp to myfolder.

10. grep Command

grep command looks for a given string in files. For example:

grep 'line' info.txt

The above command would search for ‘line’ in a file named “info.txt”. What’s great, the command will print the entire line that contains the matched text.

Note: This command is case sensitive. If you want to ignore letter cases, use -i option.

11. find Command

We enter this SSH command to search for a file or files that meet the given criteria (name, size, file type, etc). The following is the basic syntax:

find [starting directory] [options] [search term]

[starting directory] is where you would like to start your search process. There are three main choices:

  • / (slash) — search the whole system
  • . (dot) — search the working directory
  • ~ (tilde) — search the home directory

[options] is an additional argument that you can use to refine your search. Some of the most popular options are:

  • -name — look for files based on their names
  • -user — search for files that belong to a given user
  • -size — look for files based on their sizes

[search term] is the keyword or number that you use to search for files.

Take a look at this example:

find . -name “index”

This command will return any files that have the word “index” on their names. And since we use “.” (dot), the command will only search the working directory.

12. vi/nano Command

Vi and Nano are two popular text editors that you can use in the command line. To open a file using Vi or Nano, you just need to enter:

vi [file name]


nano [file name]

If the specified file doesn’t exist, both text editors will automatically create it for you.

13. history Command

This one is used to display the last used commands. You need to enter a number to limit the displayed results. For example:

history 20

As you probably guess, the example will show the 20 most recently entered commands.

14. clear Command

The function of clear command is simple — it clears all text from the terminal screen.

15. tar Command

tar is an SSH command that creates or extracts .tar.gz files. It is very popular because most third-party software binaries are in the .tar.gz format.

To archive a folder in .tar.gz format, use the following command:

tar cvzf ArchiveName.tar.gz /path/to/directory

To unpack a .tar.gz file, enter this command:

tar xvzf FileName.tar.gz

Notice that both commands use different four-character options — cvzf and xvzf.  Each letter represents a specific instruction:

  • x tells tar to extract files
  • c tells tar to create an archive
  • v stands for verbose. The option tells tar to display all file names that are processed by the command.
  • z instructs tar to uncompress the archive
  • f tells tar that you are supplying the name of the archive

16. wget Command

wget is used to download files from the internet. For example, to fetch a file from a website and store it in our current directory, we’ll use:

wget http://fileurl/filename.ext

If you want to download multiple files, put all URLs into a file and use the -i option.

Let’s say the file containing the links is called downloads.txt. The command will look like this:

wget -i downloads.txt

17. du Command

You can use du (Disk Usage) command to view the size of files and folders in a specified directory:

du [directory path]

Unfortunately, the summary will show disk block numbers instead of bytes, kilobytes, and megabytes. Therefore, to show it in a human-readable format, you need to insert the -h option after du command:

du -h /home