A close friend and mentor once told me that you only need to know around 10 commands to use Linux properly. After 10 years of Linux server use, I can confidently say that the number is pretty accurate.
However, if you are only looking for basic operations for a small project, you can do with much less. In this article, I’ll go through 7 Linux commands that you’ll use 99.99% of the times.
Quick note: I’m only covering the most frequent uses here. If you want to learn more, type
man <command>in your terminal to see the manual (you can quit using q)
ls is a simple command to list all the files in current directory. If you go ahead and just type
ls in your (macOS or Linux) terminal, you’ll see the list of files in your home folder.
ls doesn’t give much information. I mostly use it with 3 arguments, like this:
ls -lah. Here’s what the arguments do:
l: This is lowercase ‘ell’, not ‘ei’. It will display the list in long format with file permissions (don’t bother with these for now) and lot of other details
h: By default, Linux will display file sizes in
ls -llist in bytes, without any units. Using
hargument will make these file sizes human readable.
a: This shows all hidden files (files started with
.[dot] in linux).
You most probably know
cd from Windows. It lets you navigate to a new folder (directory).
Quick 3 step usage:
cd folder-nameswitches to folder with name
cdgoes to your home folder (the one where you are by default when you log in, usually
cd ..goes to the parent folder
A quick detour about paths: cd can take both relative and absolute paths. Absolute paths have either
~ in the beginning, for example
Relative paths are, well, relative to the current folder. If you’re in
songs folder and it has another folder
maroon_5 inside it,
cd maroon_5 will switch currently active folder to
maroon_5, but only in
These commands are useful for copying, moving and removing files. As a general rule, remember that these commands follow this format:
command <source> <destination>
cp & mv
cp <source> <destination> copies the source file to destination.
Quick example: You have a file called
notes.txt inside your home directory and want to move it to the folder
all_notes. Then you’ll use
cp notes.txt all_notes/
This will fail if you try to copy a folder (directory in Linux). For copying folders, you have to use
r parameter. To copy a folder
notes_2018 to the folder
all_notes, you’ll use
cp -r notes_2018 all_notes
mv moves the files instead of copying, think cut and paste in windows. It follows same format as
rm removes a file or directory. Just like
cp, you’ll need to specify
-r argument if you are trying to remove folder.
P.S. I’m not covering editing files here. But if you ever need to do that, you can use
vi <filename> or (much preferred)
nano <filename> on Ubuntu like distros. Beware of
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it.
— I Am Devloper (@iamdevloper) February 17, 2014
Interacting with servers
ssh lets you login to remote servers. If you need to login to a Linux server, you’ll need:
- It’s IP address or hostname
- A valid username & password for the server
ssh <username>@<server> to start authentication. In most cases, server will prompt you for password and if it’s valid, you’ll be logged in.
Quick tip: Once you’re done, you can use
exitto log out of the remote server.
scp is handy when you want to transfer files between different servers or machines.
You’ll use it when you have some files on your laptop and want to move them to a remote server. Just use
scp <local-file> <username>@<server>:<path>. For example, if you have a file on your Mac at
/Users/sam/secret.txt, and you want to copy it to a secure server at
192.168.0.1 in the folder
/tmp, you will use scp like this:
scp secret.txt <server-username>@192.168.0.1:/tmp
Done? These were the 7 commands that’ll work on any Linux (or Mac) server and desktop.
Liked the post? Do share it on Twitter or Reddit.
Have questions? Leave a comment and I’ll answer in an hour or two.