A crash course on Linux
Many authors and books will teach you the concepts of the Linux operating system, so I will just quickly introduce Linux here. You can refer to Beginning Linux Programming 4th Edition, Wrox Publishing, written by Neil Matthew and Richard Stones. For shell scripting, you can refer to Linux Shell Scripting Cookbook Second Edition, Packt Publishing, written by Shantanu Tushar and Sarath Lakshman. This operating system is mostly known for its non-user-friendliness to beginners! When users start using Linux, they often wonder, "Why is this operating system widely used and famous?" Linux is the biggest open source platform for hobbyists like us, and it allows us to modify the kernel of the operating system the way we want. Some advantages of using Linux include (and are certainly not restricted to) being free, stable, quick, and dependable under the General Public License (GPL).
You can build your own personalized operating system using Linux kernel distributions, for example, a Raspbian developed on the Debian flavor of Linux. We need our customized operating systems because if we develop our personalized hardware, we know how it should be programmed and we develop the drivers according to our needs on top of the Linux kernel. We will now go through the most powerful tool in any Linux operating system—the terminal.
The terminal and shell
The most important tool of the Linux operating system is the terminal—the CLI of Linux. Windows users may have already come across Command Prompt (as we used in the previous section) and Mac OS X users may be familiar with the terminal. Once you learn the commands of the terminal, the Linux world opens up to you. Using the terminal, you can easily interact with the operating system and its kernel, which indirectly connects you and enables you to access the hardware resources. Shell is a command language translator (or interpreter) that executes command input from user. Shell uses the Linux kernel to execute commands.
In the terminal, you can use many shells. One of the most common shells is called Bourne-Again Shell (Bash). Unless you get into the complicated programming of shell, which is also known as shell scripting, you may not feel the strengths and weaknesses of a particular shell. Most of the simple commands remain the same for different shells. Shell scripting is useful when you want to do postprocessing on your files in the same or different directories, modify the usual commands of Linux by your own way, or just print or execute a program. Shell scripts allow several commands that would otherwise be entered manually in a command-line interface to be executed automatically, without waiting for a user to trigger each stage of the sequence. This allows us to create the preconfigured file to execute the C programs for our sensors in the upcoming projects, which can really save our time while creating the projects.
Note
In the RasPi, LXTerminal is the tool that is ultimately the terminal for RasPi. If you are using PuTTY instead of the desktop, PuTTY CLI is the terminal, ultimately!
Useful and frequently used Linux commands
Well, this can be a very long list if we introduce and explain all the commands of Linux. Even a separate book twice this size is not enough to completely illustrate all the functionalities of the commands. We will see the commands that are essential and will be used throughout this book. This list can be used as a reference, and it's necessary to understand these commands:
pi@raspberrypi~$
: It's now time to introduce the most commonly seen command. It welcomes you on the first login and every subsequent login to your RasPi. This shows your username and the hostname of the RasPi. Here, the username ispi
and the hostname israspberrypi
.sudo
: This is an abbreviation of Superuser DO. This command gives you all privileges of the superuser (root, the most powerful user) of Linux. It is used in concatenation with other commands such asnano
,su
,chmod
, and so on. By writing thesudo su
command, you can enter superuser mode, in which you can execute, delete, and create any kind of files in any folders. This really gives you superpowers in Linux!Tip
The
sudo
command can be dangerous if not used properly. It can be used to hack into the Linux systems, or this superpower can allow you to delete the entire kernel of Linux; keep in mind that next time, the PC won't boot!man
: This is the command that shows the manual of the Linux commands and different other function definitions. Typeman sudo
and you will get all the details related to thesudo
command.pwd
: This is an abbreviation of the present working directory. This shows you the current directory you are working in. Typepwd
and press the Enter key. This should display something like/home/pi
.ls
: This is a command used to list the files or search for some files contained in a particular directory. Just typingls
and pressing the Enter key will give you a list of all files contained in the system. The options withls
are-a
,-l
, and so on. Just typeman ls
followed by the Enter key to see the different options available with it.cd
: This command stands for change directory. Just give a path followed by thecd
command and you will be taken to that directory. For example,cd /home/pi/python_games
moves you directly to thepython_games
folder, whilecd ..
takes one step out of a particular directory.apt-get
: This is the package manager for any Debian-based Linux distribution. It allows you to install and manage new software packages on your RasPi. Once you have an Internet connection on the RasPi, typesudo apt-get install <package-name>
. It will first download the package and then install the same package. To remove a package, just usesudo apt-get remove <package-name>
. To update and upgrade the operating system, you can usesudo apt-get update
andsudo apt-get upgrade
respectively.cp
: This is used to copy the file from one directory to another, for example,cp /home/pi/python_games/gem1.png /home/pi/gem1.png
will copy thegem1.png
file to the/home/pi
folder from/home/pi/python_games
. You can use themv
command instead ofcp
to move the file from one folder to another.rm
: This removes the specified file (or directory whenrmdir
is used). For example,rm gem1.png
.Note
Here's an important warning: files deleted in this way are generally not restorable.
cat
: This lists the content of the file; for example,cat example.sh
will display the content of theexample.sh
file.mkdir
: This creates the new directory in the present working directory; for example,mkdir packt
will create a directory namedpackt
in the present working directory. Just use thels
command to check whether it has been created or not by checking the list.startx
: This command provides RasPi users with the user interface for running a window session.sudo shutdown -h
: This leads to terminate all the processes on the RasPi, whereassudo halt
stops the CPU from running mode and halts the OS. Thesudo poweroff
command safely turns off the RasPi module.
These are the most frequently used commands for the RasPi. If more are needed in your projects, you will be introduced to them where relevant.
Let's create our first shell file:
- Type
sudo nano example.sh
in the CLI of your RasPi (you can use PuTTY or the terminal on your PC and connect the RasPi through Ethernet connection with your PC). Just type the following code in the nano text editor:echo hello world echo this is my first shell program
- Press Ctrl + X to exit and press Y to confirm the exit while also saving the file. The
echo
command simply displays the text on the screen of the terminal when executed; this is similar to theprintf
command in C, but is really simple compared to it, right? - Now enter the
sudo chmod +x example.sh
command in the terminal to provide execution permissions on theexample.sh
file. - Execute the shell program by just typing
./example.sh
(./
means a dot followed by a forward slash, which makes the shell execute the filename that is after the forward slash).
Notice that this is very short introduction to shell, and now you will learn the useful commands that will be used throughout the book to create the projects.