This is an old revision of the document!
Funcția de auto-complete este extrem de utilă și îmbunătățește în mod dramatic viteza cu care realizăm acțiuni în terminal.
Funcția de auto-complete nu ne face doar mai rapizi, dar putem folosi tasta Tab
și pt a confirma că comanda este validă.
Consultăm istoricul comenzilor folosind comanda history
.
Navigăm prin istoricul comenzilor folosind Arrow Keys
, Ctrl+r
, expandarea comenzilor anterioare sau chiar expandarea argumentelor comenzii anterioare.
Navigăm în interiorul unei comenzi (Ctrl+a
, Ctrl+e
, Alt+f
, Alt+b
), putem efectua modificări (Ctrl+k
, Ctrl+u
, Alt+d
) și putem insera textul șters (Ctrl+y
).
Ctrl+n
/Ctrl+p
sau j
/k
pentru a naviga, cu câte o linie, în jos, respectiv în sus; recomandăm utlizarea tastelor j
/k
pentru a fi mai eficienți/
, ?
, n
, N
)g
), go down (G
)h
) pentru a afla mai multe despre cum putem folosi mai bine sesiunea interactivăq
) pentru a ieși din sesiunea interactivăman printf
vs man 3 printf
.tldr
- poate fi util pentru cazurile uzuale, dar nu trebuie să ne fie frică să căutăm în man
pentru detaliiFolosim globbing pentru a selecta mai multe fișiere al căror nume corespunde unui tipar:
*
poate fi înlocuit cu orice caracter de oricâte ori, sau poate lipsi cu totul.?
înlocuiește exact un caracter, oricare ar fi acela.[]
pentru a defini o listă de caractere care pot fi folosite în înlocuire.{}
pentru a defini o listă de cuvinte (grupuri de caractere) care pot fi folosite în înlocuire."
(ghilimele).
Folosim utilitarul locate
pentru a căuta un fișier în întreg sistemul de fișiere.
Are avantajul că este foarte rapid, deoarece folosește o bază de date pentru a indexa fișierele.
Are două dezavantaje:
Baza de date trebuie reconstruită periodic. Dacă vrem să reconstruim manual baza de date, avem nevoie de drepturi privilegiate pentru a rula comanda updatedb
.
Utilitarul caută în tot sistemul de fișiere: nu putem să specificăm un punct de start pentru căutare. Este necesar să filtrăm rezultatul căutării cu punctul de start dorit, așa cum am făcut în exemplul de mai sus: | grep workspace/C
.
Folosim find
pentru a căuta după criterii mai complexe decât numele fișierului, cum ar fi tipul fișierului, data ultimei modificări, etc.
De cele mai multe ori vom folosi find
în conjuncție cu opțiunea -exec
pentru a rula o comandă asupra fișierelor găsite.
Utilitarul find
este mai lent decât locate
, dar nu necesită o bază de date care trebuie actualizată periodic. locate
este probabil suficient pentru majoritatea cazurilor când suntem interesați de căutarea unui fișier. j
Pentru a vedea rapid conținutul unui fișier folosim utlitarul less
. În cadrul unei sesiuni less
putem folosi aceeleași taste ca în cadrul sesiunii interactive man
pentru navigarea în pagină:
Ctrl+n
/Ctrl+p
sau j
/k
pentru a naviga, cu câte o linie, în jos, respectiv în sus; recomandăm utlizarea tastelor j
/k
pentru a fi mai eficiențiCtrl+f
/Ctrl+b
pentru a naviga, cu câte o pagină de terminal, în jos, respectiv în sus/
, ?
, n
, N
)g
), go down (G
)h
) pentru a afla mai multe despre cum putem folosi mai bine sesiunea interactivăq
) pentru a ieși din sesiunea interactivă
Pentru a afișa pe ecran conținutul unui fișier folosim utlitarul cat
.
Pentru a afișa parțial conținutul unui fișier sau a extrage rezultatul unei comenzi folosim utilitarele head
și tail
.
Folosim comanda grep
pentru a căuta un pattern într-un fișier sau în rezultatul unei comenzi (cum ar fi cat
). Modul de folosire este grep PATTERN cale/către/fișier
sau cmd | grep PATTERN
.
Folosim opțiunea -n
pentru a afișa și numărul liniei care conține patternul căutat.
Implicit, grep caută în mod case-sensitive patternul. Folosim opțiunea -i
pentru a căuta patternul în mod case-insensitive.
Pentru a afișa toate liniile, mai puțin pe cele care conțin pattern, folosim opțiunea -v
.
Pentru a efectua o căutare recursivă folosim opțiunea -r
.
De cele mai multe ori vom folosi opțiunile -n
, -i
și -r
în aceelași timp. Astfel avem o căutare cât mai cuprinzătoare și putem folosi funcția de căutare în sesiunea interactivă less
pentru a găsi linia și fișierul care ne interesează.
Extra: Dacă dorim să căutăm cuvântul search folosim opțiunea -w
(word) pentru a trata patternul ca un cuvânt, ca în exemplul următor: grep -nri -w "search" workspace/C/ | less
.
Comparăm două fișiere, octet cu octet, folosind utilitarul cmp
.
Comparăm textual două fișiere folosind utilitarul diff
.
Fișierul de configurare al shellului BASH este ~/.bashrc
. Atunci când un utilizator pornește un shell bash, conținutul fișierului ~/.bashrc
este citit și sunt aplicate configurările specifice utilizatorului.
Valorile variabilelor HISTSIZE
și HISTFILESIZE
limitează numărul maxim de comenzi, respectiv linii, din fișierul ~/.bash_history
.
Un alias este un nume (placeholder) care înlocuiește un șir de caractere. Pentru o organizare mai bună, este recomandat ca utilizatorul să-și definească aliasurile în fișierul ~/.bash_aliases
.
Atunci când își încheie execuția, orice proces întoarce un cod de eroare, care este un număr: valoarea 0
semnifică că acesta și-a încheiat execuția cu succes, iar orice ală valoare indică o eroare.
Pentru a înlănțui comenzi în terminalul bash avem trei operatori disponibili:
;
- este folosit pentru separarea comenzilor, indiferent de cum s-au executat acestea.&&
(și logic) - execută a doua comandă doar dacă precedenta s-a executat cu succes.||
(sau logic) - execută a doua comandă doar dacă prima s-a terminat cu eșec.
Atunci când folosim operatorul |
preluăm rezultatul comenzii din stânga operatorului și îl oferim ca intrare comenzii aflate în dreapta operatorului. Operatorul |
ne permite să prelucrăm datele de interes, trecându-le prin mai multe utilitare, fiecare cu un scop bine definit.
Folosim operatorul >
pentru a redirecta STDOUT sau STDERR într-un fișier. Pentru a redirecta ieșirea standard folosim sintaxa cmd > nume-fișier
. Pentru a redirecta ieșirea standard a erorilor folosim sintaxa cmd 2> nume-fișier
.
Implicit, operatoru >
șterge (trunchează) conținutul fișierului destinație. Dacă vrem să păstrăm conținutul fișierului și să adăugăm rezultatul redirectării în continuarea acestuia, folosim operatorul >>
.
Folosim sintaxa &> cale/către/nume-fișier
pentru a redirecta atât STDERR, cât și STDOUT, în fișierul primit ca argument.
Comandă | Descriere scurtă |
---|---|
head | comandă folosită să afișăm primele linii dintr-un output |
tail | comandă folosită să afișăm ultimele linii dintr-un output |
find | comandă cu care putem găsi un fișier într-o ierarhie de directoare |
tr | filtru de text, mai multe detalii aici |
cut | comandă utilă pentru a separa secțiuni ale unui output, pentru detalii aici |
sort | sortează un output |
grep | caută apariția unui cuvânt/expresii regulate într-un text |
uniq | elimină duplicatele unui output |
wc | utilitar care numără liniile, caracterele, cuvintele |
touch | creează un fișier |
file | inspectează tipul unui fișier |
/dev/null
este un fișier care ignoră orice este scris în el./dev/zero
este un generator de octeți. Acesta generează atâția octeți cu valoarea zero (0) cât îi sunt ceruți./dev/urandom
este un alt generator de octeți. Acesta generează atâția octeți cu valoare random cât îi sunt ceruți.