Friday, 12 February 2016

100 ways to master the command line – Part 1

Get to grips with terminal basics before taking on advanced tools

>_001 ls

You can use ls to list the files and folders that are inside the directory you are in.

>_002 cd

The cd command enables you to move between directories on your system. Like the following, for example:

$ cd /home/user/

>_003 cp

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

>_004 mv

Similar to copy, mv instead moves the file to the new location, deleting the original file:

$ mv file /home/user/Desktop/file

>_005 rm

The rm command is for removing or deleting files and directories. You can use it like:

$ rm file

>_006 mkdir

You can create directories with the mkdir command using something like:

$ mkdir folder

>_007 nano

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

>_008 Tab

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

>_009 Up

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.

>_013 sudo

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

100 ways to master the command line - Part 1

>_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 –

100 ways to master the command line - Part 1

>_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

100 ways to master the command line - Part 1

>_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

package2 package3

>_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

–downloaddir=[directory] package

$ 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

manual installation

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

from Linux User & Developer – the Linux and FOSS mag for a GNU generation

No comments:

Post a Comment



Donate Towards More Raspberry PI's for Projects