Materialul pe care îl publicăm astăzi este destinat celor care doresc să stăpânească terminalul Linux. Capacitatea de a utiliza eficient acest instrument permite economisirea unei cantități semnificative de timp. În special, ne vom concentra pe shell-ul Bash și pe cele 21 de comenzi utile. De asemenea, vom discuta despre cum să folosiți flotele de comenzi și aliasurile Bash, care facilitează introducerea instrucțiunilor lungi.
→
Termeni
În procesul de învățare a lucrului în terminalul Linux, este posibil să întâlniți numeroase concepte cu care va fi util să fiți familiarizați. Unele dintre ele, precum „Linux” și „Unix” sau „shell” și „terminal”, sunt uneori confundate. Vom discuta despre acești termeni și despre altele importante.
— este un sistem operativ popular, dezvoltat de Bell Labs în anii 1970. Codul său a fost închis.
— este cel mai popular sistem de operare similar cu Unix. În prezent, este folosit pe o mulțime de dispozitive, inclusiv pe computere.
(terminal), sau emulator de terminal — este un program care oferă acces la sistemul de operare. Se pot deschide simultan mai multe feronăle de terminal.
(shell) — este un program care permite trimiterea de comenzi sistemului de operare, scrise într-un limbaj special.
se deschide ca Bourne Again SHell. Acesta este cel mai răspândit limbaj de shell folosit pentru interacțiunea cu sistemul de operare. În plus, shell-ul Bash este utilizat în mod implicit în macOS.
(Command Line Interface, CLI) — este o modalitate de interacțiune a omului cu computerul, în cadrul căreia utilizatorul introduce comenzi de la tastatură, iar computerul, executând aceste comenzi, returnează, în format text, mesaje pentru utilizator. Principalul scop al CLI este de a obține informații actualizate despre anumite entități, cum ar fi fișierele, și de a lucra cu fișiere. Interfața liniei de comandă trebuie distinsă de interfața grafică a utilizatorului (Graphical User Interface, GUI), în care, de obicei, se folosește mouse-ul. Interfața liniei de comandă este adesea numită simplu linia de comandă.
(script) — este un mic program care conține o secvență de comenzi pentru shell. Scripturile sunt scrise în fișiere și pot fi folosite repetat. La scrierea scripturilor, se pot utiliza variabile, construcții condiționale, bucle, funcții și alte posibilități.
Acum, când am discutat despre termenii importanți, vreau să subliniez că voi folosi termenii „Bash”, „shell” și „linia de comandă” ca fiind interschimbabili, la fel ca și conceptele „director” (directory) și „dosar” (folder).
Standardele , pe care le vom utiliza aici — sunt standard input (intrare standard, stdin), standard output (ieșire standard, stdout) și standard error (eroare standard, stderr).
Dacă în exemplele de comenzi, care vor fi prezentate mai jos, întâlniți ceva de genul my_whatever — înseamnă că acest fragment trebuie înlocuit cu ceva de-al vostru. De exemplu — numele fișierului.
Acum, înainte de a începe analiza comenzilor dedicate acestui material, să aruncăm o privire asupra listei lor și asupra descrierilor scurte.
21 de comenzi Bash
▍Obținerea informațiilor
man: afișează ghidul utilizatorului (ajutorul) pentru comandă.pwd: oferă informații despre directorul de lucru.ls: afișează conținutul directorului.ps: permite vizualizarea informațiilor despre procesele active.
▍Manipulări cu sistemul de fișiere
cd: schimbarea directorului de lucru.touch: crearea unui fișier.mkdir: crearea unui director.cp: copierea unui fișier.mv: mutarea sau ștergerea unui fișier.ln: crearea unui link.
▍Redirecționarea input-output și pipe-uri
<: redirecționarestdin.>: redirecționarestdout.|: redirecționare utilizând un pipe pentru ieșirea unei comenzi la intrarea alteia.
▍Citirea fișierelor
head: citirea începutului fișierului.tail: citirea sfârșitului fișierului.cat: citirea fișierului și afișarea conținutului său pe ecran sau concatenarea fișierelor.
▍Ștergerea fișierelor, oprirea proceselor
rm: ștergerea unui fișier.kill: oprirea unui proces.
▍Căutare
grep: căutarea informației.ag: o comandă avansată pentru căutare.
▍Arhivare
tar: crearea și gestionarea arhivelor.
Să discutăm despre aceste comenzi în detaliu.
Detalii despre comenzi
Pentru început, să ne ocupăm de comenzile ale căror rezultate sunt prezentate sub formă de stdout. De obicei, aceste rezultate apar în fereastra terminalului.
▍Obținerea informațiilor
man command_name: afișează manualul pentru comandă, adică — informațiile de referință.
pwd: afișează calea către directorul de lucru curent. În timpul utilizării liniei de comandă, utilizatorul are adesea nevoie să afle exact unde se află în sistem.
ls: afișează conținutul directorului. Această comandă este de asemenea utilizată foarte frecvent.
ls -a: afișează fișiere ascunse. Aici se utilizează un flag -a instrucțiuni ls. Utilizarea flag-urilor ajută la configurarea comportamentului comenzilor.
ls -l: afișează informații detaliate despre fișiere.
Rețineți că flag-urile pot fi combinate. De exemplu — așa: ls -al.
ps: vizualizarea proceselor în execuție.
ps -e: afișează informații despre toate procesele în execuție, nu doar despre cele care sunt legate de shell-ul curent al utilizatorului. Această comandă este adesea utilizată exact în această formă.
▍Manipulări cu sistemul de fișiere
cd my_directory: schimbarea directorului de lucru în my_directory. Pentru a urca cu un nivel în arborele directorului, folosiți ca my_directory cale relativă ../.
![[în favorites] Bash pentru începători: 21 de comenzi utile](/wp-content/uploads/2019/03/91815e5212c9dfec88a76bc2ab37955f.png)
Comanda cd
touch my_file: crearea fișierului my_file la calea specificată.
mkdir my_directory: crearea unui folder my_directory la calea specificată.
mv my_file target_directory: mutarea fișierului my_file în folderul target_directory. Când specificați directorul țintă, trebuie să utilizați calea sa absolută (și nu o construcție precum ../).
Comanda mv, de asemenea, se poate utiliza pentru a redenumi fișiere sau foldere. De exemplu, poate arăta așa:
mv my_old_file_name.jpg my_new_file_name.jpg: crearea unei copii a fișierului
cp my_source_file target_directorymy_source_file și plasarea acestuia în folderul target_directory.
ln -s my_source_file my_target_file: crearea unui link simbolic my_target_file pentru fișierul my_source_file. Dacă schimbați linkul, atunci se va schimba și fișierul original.
Dacă fișierul my_source_file este șters, atunci my_target_file va rămâne. Flag-ul -s instrucțiuni ln permite, de asemenea, crearea de linkuri și pentru directoare.
Acum să discutăm despre redirecționarea intrării-iese și despre pipe-uri.
▍Redirecționarea input-output și pipe-uri
my_command < my_file: înlocuiește descriptorul fișierului standard de intrare (stdin) cu fișierul my_file. Acest lucru poate fi util în cazul în care comanda așteaptă introducerea unor date de la tastatură, iar aceste date sunt deja salvate într-un fișier.
my_command > my_file: redirecționează rezultatele comenzii, adică ceea ce de obicei ajunge în stdout și este afișat pe ecran, într-un fișier my_file. Dacă fișierul my_file nu există — acesta este creat. Dacă fișierul există — acesta este suprascris.
De exemplu, după executarea comenzii ls > my_folder_contents.txt va fi creat un fișier text care conține lista conținutului directorului de lucru curent.
Dacă în loc de simbolul > utilizați construcția >>, așadar, cu condiția ca fișierul în care este redirecționat output-ul comenzii să existe, acesta nu va fi suprascris. Datele vor fi adăugate la finalul acestui fișier.
Acum să ne uităm la procesarea în pipelining a datelor.
![[în favorites] Bash pentru începători: 21 de comenzi utile](/wp-content/uploads/2019/03/dcc4e500b247cb13adb4d64c36c24f88.png)
Ceea ce produce o comandă este trimis ca input pentru o altă comandă. Este asemănător cu conectarea unei țevi la alta.
first_command | second_command: simbolul pipe, |, este folosit pentru a trimite rezultatele muncii unei comenzi unei alte comenzi. Ceea ce comanda aflată în partea stângă a construcției descrise trimite în stdout, ajunge în stdin comanda care se află în partea dreaptă a simbolului pipe.
În Linux, procesarea în pipelining a datelor poate fi organizată folosind practic orice comandă corect formulată. Se spune adesea că totul în Linux este un pipe.
Cu ajutorul simbolului pipe, se pot conecta în lanț mai multe comenzi. Arată astfel:
first_command | second_command | third_command ![[în favorites] Bash pentru începători: 21 de comenzi utile](/wp-content/uploads/2019/03/1d94b3f04846ef40c072299877c55b1f.png)
Un lanț de mai multe comenzi poate fi comparat cu un conducte.
Observați că atunci când comanda aflată la stânga simbolului |, produce ceva în stdout, ceea ce a generat devine imediat disponibil ca stdin input pentru a doua comandă. Asta înseamnă că, utilizând pipelining-ul, ne ocupăm de execuția paralelelă a comenzilor. Uneori, acest lucru poate duce la rezultate neașteptate. Detalii despre asta se pot găsi .
Acum să discutăm despre citirea datelor din fișiere și despre modul de a le afișa pe ecran.
▍Citirea fișierelor
head my_file: citește liniile de la începutul fișierului și le afișează pe ecran. Poți citi nu doar conținutul fișierelor, ci și ceea ce comenzile produc în stdin, folosind această comandă ca element al pipe-ului.
tail my_file: citește liniile de la sfârșitul fișierului. Această comandă poate fi de asemenea folosită în pipelining.
![[în favorites] Bash pentru începători: 21 de comenzi utile](/wp-content/uploads/2019/03/0dd6e0353a1b5995d4a1228ae2550ad9.png)
Head (cap) se află în față, iar tail (coadă) se află în spate.
Dacă lucrezi cu date utilizând biblioteca pandas, atunci comenzile head și tail ar trebui să îți fie familiare. Dacă nu este așa, uită-te la ilustrația de mai sus și le vei reține cu ușurință.
Să analizăm alte metode de citire a fișierelor, vom discuta despre comanda cat.
Comanda cat fie afișează conținutul fișierului pe ecran, fie concatenează mai multe fișiere. Aceasta depinde de câte fișiere sunt transmise acestei comenzi la apelare.
![[în favorites] Bash pentru începători: 21 de comenzi utile](/wp-content/uploads/2019/03/708bea2f5d31e1623e9fd80ff5b576af.png)
Comanda cat
cat my_one_file.txt: când acestei comenzi i se transmite un singur fișier, aceasta îl afișează în stdout.
Dacă se transmit două fișiere sau un număr mai mare de fișiere, se va comporta diferit.
cat my_file1.txt my_file2.txt: primind mai multe fișiere ca argumente, această comandă concatenează conținutul lor și va afișa rezultatul în stdout.
Dacă rezultatul concatenării fișierelor trebuie salvat sub forma unui fișier nou, se poate folosi operatorul >:
cat my_file1.txt my_file2.txt > my_new_file.txtAcum să discutăm despre cum să ștergem fișiere și să oprim procese.
▍Ștergerea fișierelor, oprirea proceselor
rm my_file: șterge fișierul my_file.
rm -r my_folder: șterge folderul my_folder și toate fișierele și folderele conținute în el. Flag-ul -r indică faptul că comanda va funcționa în mod recursiv.
Pentru ca sistemul să nu ceară confirmarea la fiecare operațiune de ștergere a unui fișier sau folder, folosiți flag-ul -f.
kill 012345: oprește procesul specificat, oferindu-i timp pentru a-și finaliza execuția corect.
kill -9 012345: termină forțat procesul început specificat. Flag-ul de tip -s SIGKILL înseamnă același lucru ca și flag-ul -9.
▍Căutare
Pentru căutarea datelor se pot folosi diferite comenzi. În special — grep, ag și ack. Vom începe familiarizarea noastră cu aceste comenzi cu grep. Este o comandă de încredere, testată în timp, care, totuși, este mai lentă decât altele și nu este la fel de convenabilă ca acestea.
![[în favorites] Bash pentru începători: 21 de comenzi utile](/wp-content/uploads/2019/03/bc02403dbbd0109f0dfd595eccf239c7.png)
Comanda grep
grep my_regex my_file: realizează căutarea my_regex în my_file. La găsirea unor potriviri, va returna, pentru fiecare, întreaga linie. Prin implicit my_regex este tratat ca o expresie regulată.
grep -i my_regex my_file: căutarea se realizează fără a ține cont de literele mari sau mici.
grep -v my_regex my_file: returnează toate liniile care nu conțin my_regex. Flag-ul -v indică inversarea, amintind de operatorul EXISTS, existent în multe limbaje de programare.
grep -c my_regex my_file: returnează informații despre numărul de potriviri cu șablonul căutat, găsite în fișier.
grep -R my_regex my_folder: efectuează o căutare recursivă în toate fișierele din folderul specificat și în folderele în care este inclus.
Acum să discutăm despre comanda ag. A apărut ulterior grep, este mai rapidă, și este mai ușor de utilizat.
![[în favorites] Bash pentru începători: 21 de comenzi utile](/wp-content/uploads/2019/03/f0eeb1d38a1e9c22a8463858753dedb5.png)
Comanda ag
ag my_regex my_file: returnează informații despre numerele liniilor și liniile însăși în care au fost găsite potriviri cu my_regex.
ag -i my_regex my_file: căutarea se realizează fără a ține cont de literele mari sau mici.
Comanda ag procesează automat fișierul .gitignore și exclude din rezultatele afișate ceea ce a fost găsit în folderele sau fișierele enumerate în acest fișier. Este foarte convenabil.
ag my_regex my_file -- skip-vcs-ignores: conținutul fișierelor sistemelor automate de control al versiunilor (similar cu .gitignore) nu este luat în considerare la căutare.
În plus, pentru a indica echipei ag ce căi către fișiere trebuie excluse din căutare, se poate crea un fișier .agignore.
La începutul acestei secțiuni, am menționat comanda ack. Comenzile ack și ag sunt foarte asemănătoare, se poate spune că sunt interschimbabile în 99%. Totuși, comanda ag funcționează mai repede, de aceea am descris-o pe ea.
Acum să discutăm despre lucrul cu arhivele.
▍Arhivare
tar my_source_directory: combină fișierele din folderul my_source_directory într-un singur fișier tarball. Astfel de fișiere sunt convenabile pentru a transmite unor persoane seturi mari de fișiere.
![[în favorites] Bash pentru începători: 21 de comenzi utile](/wp-content/uploads/2019/03/4531ef1d4084af608fcbe91964a6710b.png)
Comanda tar
Fișierele tarball create de această comandă sunt fișiere cu extensia .tar (Tape ARchive). Faptul că în denumirea comenzii și în extensia numelui fișierelor create de ea se ascunde cuvântul „tape” (bandă) subliniază cât de mult timp a existat această comandă.
tar -cf my_file.tar my_source_directory: creează un fișier tarball cu numele my_file.tar cu conținutul folderului my_source_directory. Flag-ul -c se decodifică ca „create” (creare), iar flagul -f ca „file” (fișier).
Pentru a extrage fișierele din .tar-fișier, se folosește comanda tar cu flagurile -x («extract», extragere) și -f („file”, fișier).
tar -xf my_file.tar: extrage fișierele din my_file.tar în directorul de lucru curent.
Acum să discutăm despre cum să comprimăm și să despachetăm .tar-fișiere.
tar -cfz my_file.tar.gz my_source_directory: aici, folosind flagul -z („zip”, algoritm de compresie) se indică faptul că pentru comprimarea fișierelor trebuie utilizat algoritmul gzip (GNU zip). Comprimarea fișierelor permite economisirea spațiului pe disc la stocarea acestor fișiere. Dacă fișierele urmează să fie, de exemplu, transmise altor utilizatori, aceasta contribuie la o descărcare mai rapidă a acestor fișiere.
Fișierul poate fi dezarhivat .tar.gz adăugând flagul -z la comanda de extragere a conținutului .tar-fișierelor, pe care le-am discutat anterior. Arată astfel:
tar -xfz my_file.tar.gz
Trebuie menționat că comanda tar are și multe alte flaguri utile.
Aliasuri Bash
Aliasurile Bash (cunoscute și sub denumirea de aliasuri sau abreviere) sunt menite să creeze denumiri scurtate pentru comenzi sau secvențe de comenzi, utilizarea cărora în locul comenzilor obișnuite accelerează munca. Dacă aveți, să spunem, un alias bu, care ascunde comanda python setup.py sdist bdist_wheel, atunci pentru a apela această comandă este suficient să folosiți acest alias.
Pentru a crea un astfel de alias, este suficient să adăugați următoarea comandă în fișier ~/.bash_profile:
alias bu="python setup.py sdist bdist_wheel" Dacă în sistemul dvs. nu există fișierul ~/.bash_profile, atunci îl puteți crea singur, utilizând comanda touch. După ce ați creat aliasul, reporniți terminalul, după care veți putea folosi acest alias. În acest caz, introducerea a două caractere înlocuiește introducerea a mai mult de trei zeci de caractere ale comenzii, care este destinată pachetelor Python.
În ~/.bash_profile puteți adăuga aliasuri pentru orice comenzi frecvent utilizate.
▍Rezumat
În acest material am analizat 21 de comenzi populare Bash și am discutat despre crearea aliasurilor pentru comenzi. Dacă sunteți interesat de acest subiect — un ciclu de articole dedicate Bash. puteți găsi o versiune pdf a acestor articole. În plus, dacă doriți să învățați Bash, amintiți-vă că, la fel ca în cazul învățării oricărei alte sisteme de programare, practica este importantă.
Stimați cititori! Ce comenzi utile pentru începători ați adăuga la cele discutate în acest articol?
→
Sursa: habr.com
