This is an old revision of the document!
Ne interesează internele shell-ului și modul în care acesta execută comenzi. Urmărim să știm ce facilități ne oferă shell-ului pentru a ne face mai rapid și mai productiv activitățile cu sistemul de operare.
/etc/passwd
bash
, lsof
echo
env
, set
Pornirea unui shell folosind programul login
și apoi /etc/passwd
. Variabila SHELL
Terminalul unui shell și descriptorii standard de fișier pentru un shell
Ce acțiuni realizează shell-ul la rularea unei comenzi, rularea unei comenzi în background
Determinarea comenzilor builtin și a comenzilor externe (type
și which
).
Diferența între:
ps ; echo ; echo ; echo ; echo ; echo ; echo ; echo ; echo ; ps
și
ps ; /bin/echo ; /bin/echo ; /bin/echo ; /bin/echo ; /bin/echo ; /bin/echo ; /bin/echo ; /bin/echo ; ps
Crearea de subshell-uri, problema cu
echo | read v
Actualizarea variabilei de mediu PATH
. Definirea de noi variabile de mediu. Prefixarea unei comenzi cu inițializarea unei variabile de mediu
Expandarea comenzilor:
stat -c "%s" $(find /etc/ -type f -name '*.conf' -size +5k) lsof -p $(pgrep bash | tr '\n' ',')
Operații pe șiruri în shell
Dorim să afișăm toate fișierele cu extensia .conf
din /etc
, care încep cu a, b, c, d
sau e
:
ls -l /etc/[a-e]*.conf
Dorim să afișăm fișierele (sau directoarele) cu extensiile .conf
sau .d
din /etc
:
ls -ld /etc/*{.conf,.d}
De ce am folosit parametrul -d
la ls
?
Dorim să afișăm fișierele (sau directoarele) cu extensiile .conf
sau .d
din /etc
care nu încep cu a, b, c
:
student@midgard:~$ ls -ld /etc/[^abc]*{.conf,.d}
Dorim să afișăm un mesaj de întâmpinare custom pentru momentul în care un utilizator deschide un shell. Mesajul vrem să fie
Welcome, <nume-utilizator>, to Pearson-Hardman-Specter. <nume-utilizator> just got Litt-up!
unde <nume-utilizator>
este username-ul.
Pentru aceasta va trebui să editați, ca root
(adică folosind sudo
), fișierul /etc/bash.bashrc
și să scrieți la sfârșitul fișierului comanda dorită. Comanda va fi rulată la orice deschidere de shell nou. Folosiți comanda sudo vim /etc/bash.bashrc
pentru a edita ca root fișierul /etc/bash.bashrc
.
/etc/bash.bashrc
este un fișier global de configurare a shell-ului. Fișierul este parcurs la fiecare deschidere de shell.
Pentru început afișați șirul Welcome
la fiecare deschidere de shell. Adică scrieți la sfârșitul fișierului /etc/bash.bashrc
comanda pentru afișarea șirului. Apoi deschideți un shell nou (sau un tab nou de shell pentru verificare).
echo
urmată de șirul de afișat. Este recomandat ca șirul de afișat, transmis ca argument comenzii echo
să fie pus între ghilimele ("
, quotes).
Pentru afișarea șirului dorit, care conține username-ul, folosiți variabila USER
, variabilă deja definită în shell. Variabila USER
conține username-ul. Pentru a afișa valoarea unei variabile folosim construcția de forma $USER
. De exemplu, pentru a afișa numele de utilizator și un mesaj de salut folosim comanda
echo "Salut, $USER"
Descărcați și despachetați arhiva de aici.
Listați, folosind globbing, toate imaginile cu extensiile bmp, jpg, png, gif
din directorul rezultat în urma dezarhivării.
bmp
, jpg
, png
și gif
folosiți operatorii de globbing *
(star) si {opt1,opt2,opt3}
(acolade). Un exemplu simplu de utilizare (porniți de la acesta) este
ls practic/*/*.png