While I'm still new to Linux I've found the following commands and applications really useful to further my understanding.
Here's a list of commands I use day to day, mostly in Ubuntu. Please be aware that some of them may be different based on the distribution you use. If you're completely new to Linux I'd recommend getting Ubuntu up and running which will allow you to test these commands. Once you're familiar you'll begin to understand the alternatives to them in different distributions.
How to use this guide
Please note that the text between
> in the examples below (i.e.
<COMMAND>) should not be interpreted literally and should be replaced with a value relevant to what you're trying to do. e.g. If it says
<DIRECTORY> replace it with the directory you are trying to perform an action on.
You can usually type after any command and you'll get some information about how to use it, what arguments it accepts and what order they need to be in. If you're ever stuck on a command this will help to shed some light on the situation.
Important: Don't forget to remove any arguments you've added to the command before adding the help flag. For instance if I want help on the
cd command I wouldn't type
cd /home --help because
/home is an argument for
I only want to call up help on the command
cd alone. Therefore I would need to type just
cd --help and I'll get the help page up for that command.
View the man page (short for manual page) of a given command or application. This is the Linux equivalent of requesting the instruction booklet and can help give you detailed information about the command you are trying to run.
You'll use these all the time to navigate around the file system, execute commands and generally get used to Linux.
Placing the term sudo before a command ensures that it gets executed as an elevated user. You will find that a lot of commands require you to put sudo before them because they need to write to the file system or perform special operations that only an elevated user should be able to perform. Once you ask to execute a command as an elevated user you'll usually need to provide the password.
This is shorthand for the current user's home directory, which is usually /home/
Changes the current working directory to the new directory. e.g.
cd /etc/ navigates to the /etc/ directory.
Shows your current directory location on the file system. It stands for 'path of working directory'.
This can be used to chain multiple commands together in a single line. They will then get executed in order.
Piping is important in Linux. It allows you to take the output from one command and use it as the input for another command. This is especially useful when dealing with files. You can output the file using
cat <FILENAME> then pipe it to another program, such as
grep for searching it. For instance
cat phone-numbers.txt | grep Dave. This will then search each line of the file
phone-numbers.txt searching for the word
Every line it finds that matches is output to the terminal and can even be piped again to search the results even further.
Clears the terminal screen.
Allows you to update the terminal in realtime with the output of a command. Useful for combining with memory usage commands to view changes.
A simple text editor.
Outputs the current date and time.
Outputs the contents of the file to the terminal. Used for viewing the contents of a file quickly.
more <FILENAME> or
<COMMAND> | more
Can be used to view the contents of a large file or stream, allows piping. Only allows you to go down through the file.
less <FILENAME> or
<COMMAND> | less
Can be used to view the contents of a large file or stream, allows piping. Allows you to use page up and page down keys to move up and down.
Shows you the first 10 lines of a file.
head -n <NUMBEROFLINES> <FILENAME>
Shows you the first X number of lines of a file.
Shows you the last 10 lines of a file.
tail -n <NUMBEROFLINES> <FILENAME>
Shows you the last X number of lines of a file.
tail -f <FILENAME>
Shows you the last lines of a file and follows the file, showing any updates that are made to it. Useful for watching the realtime output of a log file.
grep <SEARCHTERM> <FILENAME> or
<COMMAND> | grep <SEARCHTERM>
Used to search a file or piped stream for the given search term. Extremely important and powerful. This is the case-sensitive version. For case-insensitive search add the
-i flag like so:
grep -i <SEARCHTERM> <FILENAME> or
<COMMAND> | grep -i <SEARCHTERM>.
Updating and Upgrading
Ensuring your server is up to date with the latest software and patches is essential. Ubuntu uses Aptitude as it's package manager so all of these commands are centered around that. If you use another Linux distribution it's worth checking the package manager that comes with it for commands.
Updates your repositories. Run this before performing any of the other commands.
Installs the latest versions of all packages.
Upgrades the current
Will remove orphan dependencies that are no longer referenced by applications on the system. These are basically just taking up space on the disk, it's good to clean up.
Contains a listing of the repositories configured for apt, sometimes you might need to manually add repositories to this file in order to install some additional software.
Shows the memory utilisation in an easy to read format.
Shows the memory utilisation in an easy to read format.
Shows CPU and memory utilisation of processes running on the system.
Displays disk and partition usage in an easy to read format.
Shows the last successful login attempts.
Shows the last successful login attempts with timestamp information.
Show the last successful login attempts older than a month.
Shows the last unsuccessful login attempts.
Show currently logged in users.
This file contains all the users registered on the system.
Shows who you are currently logged in as.
Shows you current users for the system and whether passwords are assigned. An unassigned password means the user cannot log in.
Firewall and Ports
Ubuntu comes with UFW as the standard firewall, it's relatively easy to use and configure, hence the name it stands for which is 'uncomplicated firewall'.
Show the current status of the firewall, whether it's enabled or disabled and what rules you have in place.
ufw deny <PORTNUMBER>/<PROTOCOL>
Blocks traffic for a given port number and protocol (tcp or udp).
ufw allow <PORTNUMBER>/<PROTOCOL>
Allows traffic for a given port number and protocol (tcp or udp).
ufw limit <PORTNUMBER>/<PROTOCOL>
Limits traffic for a given port number and protocol (tcp or udp).
Location for blocking IP addresses from accessing the system.
nc -zv <IPADDRESS> <PORTNUMBER>
Checks whether a port is open at a given IP address. Useful for debugging firewall configurations.
Discover what ports applications are listening on.
Opens a secure shell (terminal) to a remote machine via the SSH protocol. You can also specify the port with the
-p flag, like so:
ssh <USERNAME>@<IPADDRESS> -p 1000.
service sshd restart
Restarts the SSH Daemon which reloads any configuration changes made to the /etc/ssh/sshdconfig file.
Performs a whois lookup for the given IP address, giving geographical information.
File contains the user's command history.
File contains commands that are run at the start of new login shells.
File contains commands that are run at the start of each new bash session.
Location for the server's SSH configuration.
File contains logs from the firewall application ufw.
Shows the port/protocol mapping for services that can be used on the system.
Shows memory allocation.