Table of Contents

Interpretorul bash

Slide-uri de prezentare

Tutorial

Completare automată

Scurtături la tastatură

Este posibil să fie nevoie de următoarea modificare în terminal pentru ca exercițiile să meargă:

Comenzi interne

Operatori

Un proces se poate termina cu succes (status 0) sau cu eroare (status diferit de 0).

Statusul ultimului proces se poate vedea cu ajutorul comenzii:

echo $?

true și false sunt două programe care întotdeauna se termină cu succes, respectiv cu eroare.

true
echo $?
0
false
echo $?
1

Folosind operatorii && și ||, putem rula un al doilea proces doar dacă primul proces a avut succes, respectiv eroare.

Testați următoarele comenzi și observați dacă se execută sau nu procesul echo:

true && echo "Success"
false && echo "Success"
true || echo "Fail"
false || echo "Fail"

Variabile

a=Alice
b=Bob
echo "$a and $b" 

Aveți grijă la ghilimele!

alexj@hathor ~ $ echo "$a and $b"
alice and bob
alexj@hathor ~ $ echo '$a and $b'
$a and $b
alexj@hathor ~ $ echo `$a and $b`
The program 'alice' is currently not installed.  You can install it by typing:
sudo apt-get install alice

Variabile de mediu

Expandare aritmetică


A=42
B=28
echo "A=$A and B=$B"
echo "A+B=$(($A+$B))"
A=$(($A+1))
B=$(($B*10))
echo "A=$A and B=$B"

Expandarea comenzilor

OUTPUT=$(which ls)
ls -lah $OUTPUT

Recapitulare

  1. Afișați fișierele din directorul /bin sortat în ordinea dimensiunii fișierelor. Folosiți-vă de comanda stat și de opțiunea de formatare a acesteia (-c sau --format).
  2. Afișați linie sub linie directoarele conținute de variabila de mediu PATH.
  3. Afișați fișierele din ierarhia /usr/include în ordinea numărului de apariții ale cuvântului FILE. Folosiți grep cu opțiunile aferente și apoi sort. Indicație: Căutați în pagina de manual a lui grep după, respectiv, recursive, count și word.
  4. Afișați interfețele și adresele IP ale sistemului în formatul eth0,141.85.37.225, linie sub linie. Soluție și exemplu de rulare:
    razvan@einherjar:~$ /sbin/ifconfig | awk -F '[ :]+' '/Link encap/ {printf "%s,", $1;} /inet addr/ {printf "%s\n", $4;}' 
    docker0,172.17.42.1
    eth0,172.16.14.167
    lo,127.0.0.1
    vboxnet0,virbr0,192.168.122.1

Afișare caractere speciale

Inițializați variabila text la un șir de caractere.

Afișați la ieșirea standard mesajul “Variabila text are valoarea '”…'”. Valorea poate fi actualizata.”. În mesaj, toate caracterele ghilimele () și apostrof (') se vor afișa întocmai.

Afișare fișiere localizate

Folosiți comanda locate pentru a afișa fișierele din sistem care au extensia .conf.

Pentru fișierele de mai sus afișați directoarele din care fac parte. Eliminați duplicatele.

Folosiți comanda dirname pentru extragerea directoarelor.

Pentru directoarele de mai sus afișați numele directorului și inode-ul, separate prin virgulă (,).

Folosiți comanda stat.

Sortați directoarele de mai sus în ordinea inode-ului. Afișați numele directorului și inode-ul (separate prin virgulă (,)).

Afișare fișiere executabile pentru procese

Afișați procesele al căror proces părinte este init, procesul cu PID-ul 1.

Pentru procesele de mai sus afișați doar comanda completă.

Filtrați doar acele comenzi care încep cu / (adică este calea completă către executabil).

Selectați doar calea către executabil, fără argumente către acesta.

Pentru executabilele de mai sus afișați numele și timpul ultimei schimbării (change time), separate prin virgulă (,).

Folosiți comanda stat.

Sortați executabilele de mai sus în ordinea timpului ultimei schimbări.

Sortarea poate fi simplă, nu este nevoie de sortare numerică. Formatul datei afișat de stat permite sortare de orice fel.

Creare fișiere

Creați 100 de fișiere cu numele “myfile-XY.txt”, unde XY este indexul fișierului între 00 și 99.

Folosiți comenzile seq și touch.

Ca model folosiți-vă de comanda

seq -f "%02g" 1 100