100 ways to master the command line – Part 1
Conquer the command line with these essential terminal tips for controlling Linux
Get to grips with terminal basics before taking on advanced tools
You can use ls to list the files and folders that are inside the directory you are in.
The cd command enables you to move between directories on your system. Like the following, for example:
$ cd /home/user/
The copy command, or cp, can be used to copy files from one location to another. To do this use the command below:
$ cp file /home/user/Desktop/file
Similar to copy, mv instead moves the file to the new location, deleting the original file:
$ mv file /home/user/Desktop/file
The rm command is for removing or deleting files and directories. You can use it like:
$ rm file
You can create directories with the mkdir command using something like:
$ mkdir folder
Nano is one of the programs that enables you to edit text in files – it’s vital for working and editing in the command line. You use it like so:
$ nano file
The Tab key enables you to auto-complete commands and file names, and double-tapping lets you list all of the objects that have a similar name. This auto-completion works with unambiguous file and command names. For example, ‘fir’ gives you ‘firefox’ because no other commands begin with ‘fir’. If you get multiple hits, continue typing to narrow the selection and then hit Tab again
Up on the keyboard has the very simple task of enabling you to pull up the last command that was entered, to run it again or edit it.
>_010 Copy text
If you’re in the terminal, you may want to copy text output to use somewhere. To do this, you can use: Ctrl+Alt+C.
>_011 Paste text
If you’ve found a command online or need to paste some text into nano, you can enter any text on the clipboard with: Ctrl+Alt+V.
>_012 Open terminal
This trick works in a lot of desktop environments: a shortcut for opening the terminal can be done with: Ctrl+Alt+T.
This lets you do commands as the super user. The super user in this case is root and you just need to add sudo to the start of any command.
>_014 Access root
The super user, or root, can also be accessed by logging in as it from the terminal by typing su. You can enter the root user password and then run every command as root without having to use sudo at all.
>_015 Stop processes
If you have run a command and either it’s paused, taking too long to load, or it’s done its job and you don’t need to see the rest of it, you can stop it forcefully by using either Ctrl+C or Ctrl+Z. Remember, only do this if the process is not writing any data, as it is not safe in this instance and you could find yourself in trouble.
>_016 Access root without password
If your regular user is in the sudoers list (ie so that they can use sudo in general to run things as root), you can access the su account by using sudo su. This uses your normal user password to access root terminal functions.
To add a regular user to the sudoers list, you would need to first log in as the super user by using su. Then, you would simply run adduser username sudo (replacing ‘username’). Be careful who you add to the sudoers list, though!
>_017 Search for hidden files and directories
The ls command can be used in more than just the basic way of listing all the files in a folder. To begin with, you can use it to list all the hidden items along with the normal items by using:
$ ls -a
>_018 Home directory shortcut
The home directory is located at /home/user/ in the absolute filesystem, but you can use the tilde (~) to signify the home directory when moving between directories or copying, or doing mostly anything else – like with the following, for example:
$ cd ~
>_019 Link commands together
If you want to do a series of commands one after the other, like updating and then upgrading software in Debian, for example, you can use && to have a command run right after the one before. For example:
$ sudo apt-get update && sudo
apt-get install libreoffice
>_020 Long terminal input
Sometimes when using a list or anything else with a long terminal output, you might not be able to read it well. To make it easier to understand, you can send the output to another command, less, through the | pipe. It works like so:
$ ls | less
System essential tips to control the terminal that bit better
>_021 Readable storage size
One of the details that ls -l displays is the size of the files that are located on the hard drive. This is done in bytes though, which is not always that useful. You can have it parse this file to become more legible simply by changing the -l to -lh, where the long-listing format option (-l) is tweaked with the human-readable option (-h).
>_022 Move to previous directory
If you want to move back to the directory that you were working on before, there is a cd command to do that easily. This one does not move up the filesystem, but rather back to the last folder that you were in:
$ cd –
>_023 Move up directory
The cd command can also be used to move up in the filesystem. Do this with two full stops, like so:
$ cd ..
>_024 General wildcards
The asterisk (*) can be used as a wildcard in the terminal to stand for anything. A typical use case is copying or removing specific types of files. For example, if you want to remove all PNG files from a directory, you cd to it and type:
$ rm *.png
>_025 More with the pipe
The pipe (|) can be used to feed all outputs into the next command, enabling you to call a piece of data or string from one command and put it straight into the next command. This works with grep and other core Linux tools.
>_026 Delete directories
Using rm on a directory with objects within it won’t work, as it needs to also delete the files inside. You can modify the rm command to delete everything within a directory recursively using:
$ rm -r directory
>_027 Shutdown command
You can shut down the system from the terminal using the shutdown command, the halt option (-h), which stops all running programs at the same time, and specifying a time of now so it turns off immediately rather than in 60 seconds:
$ sudo shutdown -h now
>_028 Display all information
As well as merely listing the files, we can use ls to list all of the information relating to each file, such as last date modified, permissions and more. Do this by using:
$ ls -l
>_029 Reboot from command line
Back in the day, rebooting required a slightly more complex shutdown command: shutdown -r. In recent years it’s been replaced with a very simple:
$ sudo reboot
>_030 Timed shutdown
The timing function of the shutdown command can be very useful if you need to wait for a program or cron job to finish before the shutdown occurs. You can use the time to do a normal halt/shutdown, or even with -r for a reboot after ten minutes, with something like:
$ sudo shutdown -h +10
>_031 Log out
Logging out from the x session is generally advisable from the desktop environment, but if you need to log back out to the login manager, you can do this by restarting the display manager. In the case of many Linux distros, you use the command below:
$ sudo service lightdm restart
Managing your packages and updating your system is a key part of the command line
>_032 Debian: update repositories
Debian-based (and Ubuntu-based) distros use apt-get as the command line package manager. One of the quirks of apt-get as a package manager is that before upgrading or installing software, it does not check to see if there’s a newer version in the repositories. Before doing any installation in Debian, use:
$ sudo apt-get update
>_033 Debian: install software
Unlike a graphical package manager or software centre, you can’t quite search for the kind of packages you want to install, so you need to know the package name before installing. Once you do though, try:
$ sudo apt-get install package
>_034 Debian: update software
You can upgrade the software in Debian from the terminal by first performing the repository update command in Tip 32, followed by the upgrade command below:
$ sudo apt-get upgrade
>_035 Debian: uninstall software
As part of package management, apt-get enables you to uninstall software as well. This is simply done by replacing install with remove in the same command that you would use to install said package (Tip 33). You can also use purge instead of remove if you want to delete any config files along with it.
>_036 Debian: upgrade distro
Debian systems can often update to a ‘newer version’, especially when it’s rolling or if there’s a new Ubuntu. Sometimes the prompt won’t show up, so you can do it in the terminal with:
$ sudo apt-get dist-upgrade
>_037 Debian: multiple packages
A very simple thing you can do while installing on all platforms is list multiple packages to install at once with the normal installation command. So in Debian it would be:
$ sudo apt-get install package1
>_038 Debian: dependencies
Compiling differs between software and they’ll each have a guide on how to go about it. One problem you might face is that it will stop until you can find and install the right dependency. You can get around this by installing auto-apt and then using it during configuration with:
$ sudo auto-apt run ./configure
>_039 Debian: force install
Sometimes when installing software, apt-get will refuse to install if specific requirements aren’t met (usually in terms of other packages needing to be installed for the software to work properly). You can force the package to install even without the dependencies using:
$ sudo apt-get download package
$ sudo dpkg -i package
>_040 Debian: install binary
In Tip 39, we used dpkg -i to install the binary installer package that we downloaded from the repositories. This same command can be used to install any downloaded binary, either from the repos or from a website.
>_041 Debian: manual
force install package
If the advice in Tip 39 is still not working, you can force install with dpkg. To do this you just need to add the option –force-all to the installation command to ignore any problems, like so:
$ sudo dpkg –force-all -i package
>_042 Red Hat: update software
Unlike apt-get, the yum package manager for Red Hat/Fedora-based distros does not need you to specifically update the repositories. You can merely update all the software using:
$ sudo yum update
>_043 Red Hat: install software
Installing with yum is very simple, as long as you know the package name. Yum does have some search facilities though, if you really need to look it up, but once you know what package you want, use the following command:
$ sudo yum install package
>_044 Red Hat: uninstall software
Yum can also be used to uninstall any package you have on your system, whether you installed it directly from yum or not. As long as you know the package name you can uninstall with:
$ sudo yum remove package
>_045 Red Hat: force install
The force install function on Red Hat and Fedora-based Linux distros requires that you have a package downloaded and ready to install. You can download things with yum and then force the install with:
$ sudo yum install –downloadonly
$ sudo rpm -ivh –force package
>_046 Red Hat: manual install
RPM is one of the package installers on Red Hat distros and can be used to install downloaded packages. You can either do something like in Tip 45 and download the package from the repos, or download it from the Internet and install with:
$ sudo rpm -i package
>_047 Red Hat: force
As in Tip 45, you can use RPM to force install packages if there’s a dependency issue or something else wrong with any other packages that you have downloaded. The same command should be used as in Tip 45, with the -ivh and –force options present.
>_048 Fedora: distro upgrade
Yum has its own distribution upgrade command, but only in Fedora and they prefer you not to use it unless you have to. Nonetheless, you can use the fedora-upgrade package in yum with:
$ sudo yum install fedora-upgrade