Lab 03 - Eng - CLI 1 V2.0

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

Faculty of Electronics Telecommunication and EAOS

Information Technology

Department of Applied Electronics and Embedded Architectures &


Intelligent Systems Operating Systems

3. Laboratory
Basic CLI commands

3.1. Terminal use

Today's Linux OS users can do most of the things they want to do on Linux without using
the Linux terminal, but there are still many good reasons to learn how to use the terminal. For
example, the Linux terminal provides access to all native Linux commands and command‐line
applications that often offer more functionalities than desktop applications.
The easiest way to open a new terminal window is to use the key combination Ctrl + Alt +
T. Hold all three keys at the same time and a new terminal window will open. By default, new
Terminal windows open directly in each user's Home directory.
You can use the following shortcuts in the terminal:

Shortcut Description
Ctrl+Sift+t to open a new tab
Ctrl +PageDown to go to the next tab
Ctrl +PageUp to go to the previous tab
Ctrl+d to close a tab (or exit command)

To scroll through a terminal, mainly when a command displays a lot of text, use the
following shortcuts (to check, previous use $ dmesg):

1|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

Shortcut Description
Shift+PgDown to scroll down
Shift+PgUp to scroll up

3.2. Files and directories

To find out in which directory you are, you can use the command pwd (print working
directory). You always have to be careful about in which directory you are. Many of the exercises
that follow are about creating or modifying files and directories in specific places.
To enter into a directory, the cd (change directory) command must be used. For example,
to enter into the LabBasicComm directory associated with the lab (if it does not exist, you must
first create it with: mkdir LabBasicComm), you can use the command:
user@ubuntu:~$ cd LabBasicComm
user@ubuntu:~/LabBasicComm$
Notice that the prompt changes. The new director is ~/LabBasicComm. That is, we are in
the LabBasicComm subdirectory in your home folder.
To list the contents of the current directory, you can use the ls (list) command. The names
in blue color are directories. The ones with white are files. But, you don't have to rely solely on
colors. These can be modified using special configurations.

3.3. Manual pages

To find out more about a command, you can visit its man page. For example, to access the
ls command’s documentation:

user@ubuntu:~$ man ls
In the electronic textbook, to search for a specific word, use the / (slash) key followed by
the searched word; then press the Enter key.
You can use the following keys:
Keys Short description
n (next) to go to the next occurrence of the searched word
N (Shift + n) to go to the previous occurrence of the word
q (quit) to close the manual page

Use the following keys to navigate a man page:

2|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

Keys Short description


Enter to scroll down a line
b (backward) or Space to scroll down a screen
f (forward) to scroll up a screen
d (down) to scroll down half the screen
u (up) to scroll up half the screen

3.4. Directory listing

Long format listing


To find out more about a file, use the ‐l parameter of the ls command. For example:
user@ubuntu:~$ ls
configNTFS Downloads LabBasicComm Pictures USB
Desktop DragonBoard Laboratoare Public Videos
Documents examples.desktop Music Templates workspace
user@ubuntu:~$ ls ‐l
total 64
‐rwxrwxr‐x 1 user user 183 May 29 2019 configNTFS
drwxr‐xr‐x 2 user user 4096 May 27 2019 Desktop
drwxr‐xr‐x 2 user user 4096 May 25 2019 Documents
drwxr‐xr‐x 2 user user 4096 May 27 2019 Downloads
drwxrwxr‐x 4 user user 4096 May 27 2019 DragonBoard
‐rw‐r‐‐r‐‐ 1 user user 8980 May 25 2019 examples.desktop
drwxrwxr‐x 2 user user 4096 Apr 5 13:35 LabBasicComm
drwxrwxr‐x 2 user user 4096 Apr 3 23:37 Laboratoare
drwxr‐xr‐x 2 user user 4096 May 25 2019 Music
drwxr‐xr‐x 2 user user 4096 May 25 2019 Pictures
drwxr‐xr‐x 2 user user 4096 May 25 2019 Public
drwxr‐xr‐x 2 user user 4096 May 25 2019 Templates
lrwxrwxrwx 1 user user 21 May 29 2019 USB ‐> /media/user/0674‐F6C2
drwxr‐xr‐x 2 user user 4096 May 25 2019 Videos
drwxrwxrwx 7 user user 4096 May 27 2019 workspace

Listing the content of a different directory


By default, ls lists the contents of the current directory. We can specify another directory
to be listed by giving its name as a parameter. Example:

3|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

user@ubuntu:~$ ls ‐la LabBasicComm


Notice how the difference is made between: (a) parameters (a directory name), and (b)
flags (which control the behavior of the command):
1. a string placed at the end is interpreted as a file or directory;
2. a parameter starting with minus char (“‐“) has a special significance. In the above case ‐a
instruct the ls command not to hide files that begin with ".", and ‐l has the meaning of
long list format ‐ so, to present as much information about files and directories as
possible.

Filtered listing (globbing)


We can use ls together with special chars or strings to access certain files. For example, to
list all the files and directories in the /home directory we can use:
user@ubuntu:~$ ls /home/*

Recursive listing. Combining flags


Recursive listing provides an overview of a directory. To recursively list the content of a
directory use the ‐R parameter of the ls command.
user@ubuntu:~$ ls ‐R
Sometimes it is useful to list the directory’s content both recursively and in long format.
The following command can be used:
user@ubuntu:~$ ls ‐R ‐l
An equivalent short form that combines flags is:
user@ubuntu:~$ ls ‐Rl
Most flags also have a long form (for example ‐‐recursive). These forms are easily distinguished
by the prefix of two "minus" characters. The long form cannot be combined into a single short
"word".

4.5. Absolute and relative paths

In Linux an absolute path always starts with /. A relative path relates to the current
directory.

For example, let’s suppose we have the /home/user/LabBasicComm/ directory. We


assume that the current directory is /home/ (go to it via: cd ..). An absolute path can be used to
get to the specified directory:

4|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

user@ubuntu:~$ cd /home/user/LabBasicComm/
or a relative path:
user@ubuntu:~$ cd user/LabBasicComm

To return to the home directory, you can use cd, taking into account that “.” ‐ represents the
current director, while “..” ‐ represents the parent director.

4.6. Tab completion

File and directory names can be long, and sometimes writing them can be difficult. The
shell can help you by automatically filling in a file name.
Starting from the previous example, first create the LabBasicComm directory in your
home folder. Now, let's assume that the current directory is /home and that you want to change
the directory, using a relative path:
user@ubuntu:/home$ cd user/LabBasicComm

The above command could be written much easier using the features offered by the shell. If “cd
u” were typed, then TAB, the directory name would be filled in at user/. Without pressing Enter,
if you write the first letter (i.e. L) and then TAB, it would be filled in automatically in the Lab ‐ only
if there is a directory that starts with the same 3 characters. Another press of the TAB key would
list all possible additions. Pressing the B key would restrict the list to all files/directories starting
with LabB. Pressing the TAB key again will complete the full path.

4.7. Vizualizarea fișierelor

Pentru a vizualiza conținutul unui fișier se poate folosi comanda cat (concatenate).
Comanda concatenează conținutul fișierelor date ca parametru și îl afișează pe ecran. De
exemplu, pentru a vizualiza conținutul unui fișier numit environment (din directorul /etc), se
folosește comanda:
user@ubuntu:~$ cat /etc/environment
Atenție mare, Linux este case‐sensitive. Contează dacă scrieți environment,
ENVIRONMENT sau Environment.

În exemplul anterior am folosit o situație particulară a comenzii cat: dacă se dă un singur


fișier, conținutul său este concatenat cu … nimic. Rezultatul este afișarea conținutului fișierului.

5|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

4.8. Căutarea comenzilor

O metodă eficientă prin care puteți afla numele unei comenzi este cu ajutorul apropos. De
exemplu presupunem că vrem să aflăm numele unei comenzi care șterge fișiere.
Pentru aceasta se rulează comanda:
user@ubuntu:~$ apropos "remove files"
rm (1) ‐ remove files or directories
Comanda which poate fi folosită pentru a afla calea executabilului unei comenzi. Spre
exemplu comanda:
user@ubuntu:~$ which rm
/bin/rm
va afișa calea executabilului comenzii rm.
Lista comenzilor tastate (pastrata in fisierul $HOME/.bash_history) poate fi vizualizata
cu comanda history, care afiseaza aceasta lista a comenzilor tastate anterior, fiecare linie de
coamnda fiind prefixata de un numar (de la 1 pina la numarul total de linii de comenzi salvate in
fisierul de istoric). Puteți folosi –c cu history pentru a șterge toate comenzile din istoric sau –d
numar pentru a șterge linia cu numar‐ul indicat din istoric. Numerele afisate de comanda history
pot fi folosite pentru a executa din nou comenzile din istoric, fara a fi nevoie sa mai fie tastate
din nou. Si anume, pentru a invoca din nou o comanda, se tasteaza la prompter caracterul “!”
urmat imediat de numarul asociat comenzii respective.
Mai exista o facilitate a shell‐ului ce permite invocarea comenzilor tastate anterior si
editarea lor, si anume prin apasarea, la prompterul shell‐ului, a tastei UP (i.e., sageata‐sus) de un
anumit numar de ori, se vor afisa la prompter comenzile anterioare, in ordine inversa celei in care
au fost tastate, și anume câte o comandă anterioara la fiecare apasare a tastei UP.
Comanda astfel afisata poate fi editată (modificată), si apoi executată (prin apasarea tastei
ENTER).

4.9. Operații pe fișiere și directoare

Pentru a crea un fișer se poate folosi comanda touch.


user@ubuntu:~$ touch LabBasicComm/fisier1
Dupa cum vedeti numele fisierului poate include un director. În acest mod vom plasa noul fisier
creat in directorul specific. Deci, în urma comenzii de mai sus un fisier gol va fi creat, doar în
situația în care numele fisierului indicat nu este identic cu al unuia existent. Daca numele de fisier
exista, atunci marcajele de timp vor fi modificate și continutul fisierului va ramane așa cum a fost.

6|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

Comanda cat se poate folosi pentru a crea un fișier. Astfel utilizînd operatorii de redirecționare a
ieșirii pentru scrierea datelor în fișier ne putem atinge acest obiecv.
user@ubuntu:~$ cat > LabBasicComm/fisier2
Acesta este un fisier de test!
user@ubuntu:~$ cat LabBasicComm/fisier2
Acesta este un fisier de test!
user@ubuntu:~$ cat >> LabBasicComm/fisier2
Acesta este o nua linie in fisierul de test!
user@ubuntu:~$ cat LabBasicComm/fisier2
Acesta este un fisier de test!
Acesta este o nua linie in fisierul de test!
Atunci când creați un fișier cu ajutorul comenzii cat si vreti sa finlizați apăsați ENTER și
CTRL-D pentru salvarea fișierului și închiderea lui.

Comanda echo (care în mod normal afișează un text pe ecran) poate fi folosită pentru a
crea un fișier cu un anumit conținut. De exemplu:
user@ubuntu:~$ echo “Acesta este un fisier de test!” > LabBasicComm/fisier3
user@ubuntu:~$ cat LabBasicComm/fisier3
Acesta este un fisier de test!
user@ubuntu:~$ echo “Acesta este o nua linie in fisierul de test!” >> LabBasicComm/fisier3
user@ubuntu:~$ cat LabBasicComm/fisier3
Acesta este un fisier de test!
Acesta este o nua linie in fisierul de test!
Se observă și aici utilizarea “>> LabBasicComm/fisier3” pentru a nu suprascrie conținutul
vechiului fișier (modul de lucru fiind astfel append).
Comanda cu ajutorul căreia poate fi mutat un fișier sau un director este mv (move).
Redenumirea unui fișier sau a unui director este considerată un caz special de mutare.
Pentru a redenumi directorul LabBasicComm în LabBasicCommm se folosește comanda:
user@ubuntu:~$ mv Lab04 Lab004
Pentru a copia un fișier se folosește comanda cp (copy). De exemplu:
user@ubuntu:~$ cp LabBasicComm/fisier2 ~/fisier_nou
Pentru a șterge un fișier se folosește comanda rm (remove).
user@ubuntu:~$ rm ./fisier_nou
Evident toate aceste comenzi au diferite opțiuni. De exemplu dacă ne referim doar la ultima
comandă (rm) avem:

7|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

‐i‐ cere permisiunea de ștergere a fiecărui fișier sau director


‐r‐ șterge recursiv conținutul subdirectoarelor (fișierele și subdirectoarele acestora)
‐v‐ afișează un mesaj la ștergerea fiecărui fișier sau director
O altă problem este data de crearea de nume de fișiere și/sau directoare care conțin
spații. Creați directorul cu numele Mihai Viteazul – după cum vedeți acest director utilizeaza
caracterul spațiu în nume.
user@ubuntu:~/LabBasicComm$ mkdir Mihai Viteazul
Ce observați? Câte directoare și cu ce nume au fost create? Shell‐ul trimite comenzii
mkdir două argumente, Mihai și Viteazul. Dar, nu acesta este efectul urmărit. Puteti creați
directorul dorit, încadrând întreg numele prin ghilimele. Astfel, shell‐ul va ști că este vorba de un
singur argument. Un alt mod de a face acest lucru este escaparea spațiului, precedându‐l cu un
backslash (\).
user@ubuntu:~/Lab04$ mkdir “Mihai Viteazul”
sau
user@ubuntu:~/Lab04$ mkdir Mihai\ Viteazul
Pentru a afla cât spațiu pe disc ocupă întreg directorul LabBasicComm folosiți utilitarul du
(disk usage). Următoarea comandă va afișa doar totalul ocupat de director și nu cât ocupă fiecare
fișier în parte. În plus afișarea dimensiunii ocupate va fi în format human readable (-h):
user@ubuntu:~$ du –hs LabBasicComm

4.10. Filtrari de informații

Multe dintre utilitarele disponibile în linia de comandă oferă ca ieșire o cantitate foarte
mare de text, care determină derularea a multor ecrane. Pentru a putea filtra ieșirea unei
comenzi (output‐ul) se pot folosi două utilitare: grep (pentru a selecta numai anumite linii dintr‐
un fișier sau dintr‐un flux de date) și cut (pentru a selecta numai anumite secțiuni de pe fiecare
linie).
De ex. în primul pas ne propunem să afișam în terminal conținutul fișierului
/var/log/syslog. Logul (jurmnalul) de sistem conține de obicei o mare cantitate de informații
legate în mod implicit despre sistemul Ubuntu. Prin utilizarea comenzii:
user@ubuntu:~$ cat /var/log/syslog
se vor afișa, după cum observați, un număr mare de linii.

8|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

Dacă dorim să afișăm doar informațiile ce țin doar de BDADDR din syslog va trebui să
utilizăm grep. Precum în exemplul următor:
user@ubuntu:~$ grep BDADDR /var/log/syslog
În mod similar ca la alte comenzi și comanda grep are diferite opțiuni. De exemplu, implicit
grep este case sensitive. Dacă doriți să nu mai fie utilizați opțiunea -i în linia de comadă:
user@ubuntu:~$ grep ‐i BDADDR /var/log/syslog
Utilizați opțiunea -A în linia de comandă pentru a afișa 'N' linii după linia care satisfice
opțiunile de filtrare. În mod similar puteți utiliza opțiunea -B pentru a afișa 'N' linii anterioare liniei
care satisfice opțiunile de filtrare sau pentru a tipări un număr de linii din jurul liniei identificate
utilizați opțiunea –C.
user@ubuntu:~$ grep –C 2 BDADDR /var/log/syslog
Deci, utilitarul grep poate primi ca argumente: (a) un șablon pe baza căruia selectează liniile
afișate, și (b) fișierul ce conține liniile pe care le va filtra. Șablonul este reprezentat de o expresie
regulată. De exemplu, cateva expresii regulate pot fi:
^ Denotes the beginning of a line
$ Denotes the end of a line
. Matches any one characters
* Matches 0 or more of the previous characters
.* Matches any number or type of characters
Putem căuta utilizatorul pi in fisierul /etc/passswd in modul urmator:
user@ubuntu:~$ grep pi /etc/passwd
În conformitate cu expresiile anterioare, putem afișa doar liniile care încep cu user
utilizînd coanda:
user@ubuntu:~$ grep ^pi /etc/passwd
sau doar liniile care se termină în false prin:
user@ubuntu:~$ grep false$ /etc/passwd
Comanda grep poate primi liniile pe care le filtrează și prin STDIN. Aceasta este o metodă
de utilizare uzuală, care se folosește de pipe‐uri (|). Folosind cat și grep, afișați doar liniile care
conțin string‐ul dhclient din fișierul /var/log/syslog.
user@ubuntu:~$ cat /var/log/syslog | grep BDADDR

Utilitarul cut primește două argumente: (a) un șablon pe baza căruia selectează secțiunea
care va fi afișată din fiecare linie și (b) fișierul ce conține liniile pe care le va filtra. Șablonul este
compus din două elemente: un caracter de delimitare a câmpurilor (specificat prin -d) și id-ul
câmpurilor care se afișează (specificat prin -f).

9|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

cut -d DELIMITATOR -f LISTĂ_CÂMPURI FIȘIER

Dacă vrem ca pentru fiecare linie din fișierul /var/log/syslog să afișăm numai ora la
care a fost înregistrată acea linie, executăm următoarea comandă:
user@ubuntu:~$ cut ‐d “ “ ‐f 3 /var/log/syslog
La fel ca grep, cut poate primi liniile pe care le filtrează și pe STDIN. De exemplu, putem
grupa comenzile anterioare sub forma:
user@ubuntu:~$ cat /var/log/syslog | grep BDADDR | cut ‐d “ ” ‐f 3

Homework:
1. Use the cut command to present only the username and user ID (field 3) from the
passwd file.
2. Make a list of all filenames in /etc that contain the string conf in their filename.
3. Crete a list of all bash users in bash_users.txt.

10 | P a g e

You might also like