Interfața în linia de comandă este forma cea mai “portabilă” de folosire a unui sistem Linux/Unix. Interfața în linia de comandă, deși mai greu de folosit decât interfața grafică, are avantajul că se prezintă în aceeași formă pe toate sistemele Unix/Linux. În plus este foarte ușor extensibilă (se pot adăuga comenzi noi sau opțiuni noi la parametri) și se pot automatiza acțiuni folosind (shell) scripting.
touch
, mkdir
, ls
, cd
sudo
, su
tar
, zip
, unzip
Ce înseamnă promptul unei comenzi?
Copy paste în terminal
Folosirea TAB pentru completion-ul unei comenzi. Folosirea <TAB><TAB>
pentru afișarea tuturor posibilităților.
Autentificarea ca root
.
Rularea comenzii chown
ca root
și prefixată de sudo
.
Anatomia comenzii
ps -e -o pid,ppid,cmd
Anatomia comenzii
tar -czvf a.tar.gz /etc/security/
Anatomia comenzii actualizate
tar -c -z -v -f a.tar.gz /etc/security tar --create --gzip --verbose --file a.tar.gz /etc/security
Folosirea --help
pentru documentare legată de o comandă.
Opțiuni, opțiuni parametrizate, parametri pentru o comandă.
Codul de eroare al unei comenzi
După ce ați deschis terminalul dați următoarea comandă (nu trebuie să înțelegeți acum ce face):
cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c 33 && echo -ne "\n"
Cum dăm Copy&Paste într-un terminal?
Ctrl+Insert
(valabil în orice terminal. În Ubuntu mai poate fi folosită și combinația Ctrl+Shift+c
)Shift+Insert
(valabil în orice terminal. În Ubuntu mai poate fi folosită și combinația Ctrl+Shift+v
Am dat o comandă lungă pe care vreau să o mai dau o dată. Cum fac?
uparrow
(săgeată sus)Vreau să copiez o comandă din terminal fără a folosi mouse-ul. Cum fac?
Ctrl+a
pentru a ne duce la începutul rândului. Apoi apăsăm Ctrl+k
pentru a copia toată linia. Observăm că a dispărut. Acum apăsăm Ctrl+y
(yank).
Rulați comanda whoami
. Ce v-a afișat? Care este utilizatorul curent și care este numele mașinii?
Rulați comanda hostname
și observați ce afișează.
Rulați comanda sudo su
. Verificați din nou utilizatorul curent cu comanda whoami
.
Părăsiți prompt-ul de root
folosind comanda exit
sau combinația de taste Ctrl+d
.
Rulați, ca utilizator obișnuit, comanda
ifconfig
Observați că nu afișează nimic.
Apoi, rulați sudo su
ca să obțineți un prompt de root
și rulați și acolo comanda
ifconfig
Observați că acum afișează informații despre rețea.
Pentru a identifica această cauză, rulați, în fiecare dintre cele două prompturi (de utilizator obișnuit și de root
) cele două comenzi de mai jos
echo $PATH which ifconfig
Aflați informații despre Linux-ul instalat folosind comanda uname
cu parametrul (flag-ul) -a
sau --all
. Ce alte flag-uri are comanda uname
?
Rulați comanda zip
. Merge fără a avea vreun argument?
Creați două fișiere cu comanda touch
. touch
primește ca argumente (număr variabil de argumente) numele fișierelor. Rulati comanda
touch file1 file2 file3
Arhivați fișierele file1 și file2 într-o arhivă files.zip. Comanda
zip files.zip file1 file2
Rulati comanda zip
fără parametri și observați flag-ul de “quiet operation”.
Rulați comanda zip
cu flag-ul -q
pentru a adăuga și fișierul file3 la arhivă. Adică rulați
zip -q files.zip file3
Aflați ce face comanda who
folosind utilitarul whatis
: whatis who
. Ce argumente poate primi comanda who
?
who --help
.
Similar, aflați ce face comanda last
.
Rulați comanda
id
Pentru a afișa informații despre utilizatorul curent. Folosiți opțiunea pentru a afișa doar UID-ul utilizatorului. La fel, folosiți opțiunea pentru a afișa doar GID-urile grupurilor din care face parte utilizatorul.
Rulați comanda vimtutor
pentru a vă acomoda cu editorul Vim.
Deschideți un terminal. Dorim să ne asigurăm că suntem în directorul /home/training
. Folosiți comanda
pwd
Folosiți comanda vim hello.c
pentru a edita un fișier C care afișează mesajul Hello, World!
. Puteți folosi programul de mai jos:
#include <stdio.h> int main(void) { puts("Hello, World!"); return 0; }
Compilați programul scris la mai sus, folosind comanda
gcc hello.c -o hello
gcc hel<TAB> -o hello
Spre deosebire de Windows, unde executabilele au, în general extensia .exe
, într-un sistem Linux fișierele executabile se numesc, în general, binare. hello
este un astfel de fișier binar.
Se poate rula folosind comanda
./hello
Pentru a afișa mesaje la consolă putem folosi comanda echo
:
echo Hello echo "I'm here" echo -e "\t1\t2"
O comandă își poate termina execuția cu succes (status 0) sau cu eroare (status diferit de 0). Într-un terminal statusul cu care s-a încheiat ultima comandă lansată se poate vedea cu ajutorul comenzii:
echo $?
true și false sunt două programe care întotdeauna se termină cu succes, respectiv cu eroare. Testați acest lucru:
true echo $? false echo $?
Folosind operatorii &&
și ||
, putem rula o a doua comandă doar dacă prima s-a încheiat cu succes, respectiv eroare. Operatorii se aseamănă cu funcțiile logice AND și OR.
true && echo "Success" false && echo "Success" true || echo "Fail" false || echo "Fail"
Căutați un fișier (folosind locate
) și afișați pe ecran “FOUND”, în cazul în care fișierul a fost găsit.
Am văzut în secțiunea de Demo că putem folosi anumite caractere ce țin locul unor bucăți de text, de exemplu caracterul *
. De exemplu, dacă dorim să listăm toate fișierele din /etc
care încep cu stringul ssh
putem folosi comanda:
student@uso:~$ ls /etc/ssh*
După cum observați, caracterul *
ține loc pentru "oricâte și orice caractere". Procedați asemănător și afișați fișierele sau directoarele din /etc
cu extensia .conf
.
Realizați o arhivă de tipul zip
în directorul home
al utilizatorului student
(/home/student
) care să conțină toate fișierele și directoarele din /etc/
care conțin stringul conf
în numele lor.
zip
. Căutați în output-ul comenzii
zip --help
după opțiunea care trece recursiv prin directoare (recurse into directories).
Comanda unzip
dezarhivează o arhivă .zip
dar are și o opțiunea de listare a conținutului acelei arhive fără a o dezarhiva însă. Identificați acea opțiune.
Creați trei fișiere, denumite unu
, doi
și trei
în directorul propriu (directorul de tip home) și afişați-le folosind comanda ls
. Adăugați apoi parametrul -l
comenzii ls
pentru a afișa mărimile acestor fișiere.
Așteptați un minut după crearea fișierelor de mai sus. Folosiți comanda touch
pe fișierul unu
. Folosiți, din nou, comanda ls -l
. Ce observați?
Creați în directorul propriu două directoare denumite dir1
și dir2
. Listați conținutul directoarelor.
Creați fisierul file.dat
care să conțină 10MB de date aleatoare, folosiți comanda
dd if=/dev/urandom of=file.dat bs=1M count=10
Comprimare fișierul file.dat
pe rând în format gzip
, bzip2
și zip
. Care sunt diferențele de mărime ale arhivelor?
gzip
și bzip2
așa că va trebui să-l regenerați.
Aflați cât durează fiecare comandă de comprimare folosind comanda time
înaintea oricărei alte comenzi.