Materialul, a cărui traducere o publicăm astăzi, este destinat celor care doresc să stăpânească linia de comandă Linux. Capacitatea de a utiliza acest instrument eficient poate economisi mult timp. În special, vom vorbi aici despre shell-ul Bash și despre 21 de comenzi utile. Vom vorbi, de asemenea, despre cum să folosiți steaguri de comandă și aliasuri Bash pentru a accelera tastarea instrucțiunilor lungi.
→
Termeni
Pe măsură ce învățați să lucrați cu linia de comandă Linux, veți întâlni multe concepte care sunt utile pentru a naviga. Unele dintre ele, cum ar fi „Linux” și „Unix”, sau „shell” și „terminal”, sunt uneori confuze. Să vorbim despre acești termeni și despre alți termeni importanți.
Acum că am acoperit termenii importanți, vreau să subliniez că aici voi folosi termenii „Bash”, „shell” și „linie de comandă” interschimbabil, precum și termenii „director” și „folder”.
standard stdin
), ieșire standard (ieșire standard, stdout
) și ieșire de eroare standard (eroare standard, stderr
).
Dacă în exemplele de comenzi care vor fi date mai jos, veți găsi ceva de genul my_whatever
- asta înseamnă că acest fragment trebuie înlocuit cu ceva de-al tău. De exemplu, numele unui fișier.
Acum, înainte de a continua cu analiza comenzilor cărora le este dedicat acest material, să aruncăm o privire la lista lor și la scurtele lor descrieri.
21 de comenzi Bash
▍Obținerea de informații
man
: Afișează ghidul utilizatorului (ajutor) pentru comandă.pwd
: afișează informații despre directorul de lucru.ls
: afișează conținutul unui director.ps
: Vă permite să vizualizați informații despre procesele care rulează.
▍Manipularea sistemului de fișiere
cd
: schimba directorul de lucru.touch
: creați un fișier.mkdir
: creați un director.cp
: Copiați un fișier.mv
: Mutați sau ștergeți un fișier.ln
: creați un link.
▍Redirecționare I/O și conducte
<
: redirecționarestdin
.>
: redirecționarestdout
.|
: a transmis ieșirea unei comenzi la intrarea altei comenzi.
▍Citirea fișierelor
head
: citiți începutul fișierului.tail
: citește sfârșitul fișierului.cat
: Citiți un fișier și imprimați conținutul acestuia pe ecran sau concatenați fișiere.
▍Ștergerea fișierelor, oprirea proceselor
rm
: Ștergeți un fișier.kill
: opriți procesul.
▍Căutare
grep
: caută informații.ag
: comandă avansată pentru căutare.
▍Arhivarea
tar
: crearea de arhive și lucrul cu acestea.
Să vorbim mai detaliat despre aceste comenzi.
Detaliile echipei
Pentru început, să ne ocupăm de comenzile ale căror rezultate sunt emise sub formă stdout
. De obicei, aceste rezultate apar într-o fereastră de terminal.
▍Obținerea de informații
man command_name
: afișați ghidul de comandă, adică informații de ajutor.
pwd
: afișează calea către directorul de lucru curent. În timpul lucrului cu linia de comandă, utilizatorul trebuie adesea să afle unde se află exact în sistem.
ls
: afișează conținutul unui director. Această comandă este, de asemenea, folosită destul de des.
ls -a
: arată fișierele ascunse. steag aplicat aici -a
comenzi ls
. Utilizarea steagurilor ajută la personalizarea comportamentului comenzilor.
ls -l
: Afișează informații detaliate despre fișiere.
Rețineți că steaguri pot fi combinate. De exemplu, așa: ls -al
.
ps
: Vizualizați procesele care rulează.
ps -e
: Afișează informații despre toate procesele care rulează, nu doar despre cele asociate cu shell-ul utilizatorului curent. Această comandă este adesea folosită în această formă.
▍Manipularea sistemului de fișiere
cd my_directory
: schimbați directorul de lucru în my_directory
. Pentru a urca cu un nivel în arborele de directoare, utilizați my_directory
cale relativă ../
.
comanda cd
touch my_file
: crearea fișierului my_file
de-a lungul drumului dat.
mkdir my_directory
: creați un folder my_directory
de-a lungul drumului dat.
mv my_file target_directory
: mutați fișierul my_file
în dosar target_directory
. Când specificați directorul țintă, trebuie să utilizați calea absolută către acesta (și nu o construcție ca ../
).
echipă mv
poate fi folosit și pentru a redenumi fișiere sau foldere. De exemplu, ar putea arăta astfel:
mv my_old_file_name.jpg my_new_file_name.jpg
: creați o copie a unui fișier
cp my_source_file target_directorymy_source_file
și puneți-l într-un folder target_directory
.
ln -s my_source_file my_target_file
: creați o legătură simbolică my_target_file
pe fișier my_source_file
. Dacă modificați linkul, se va schimba și fișierul original.
Dacă dosarul my_source_file
atunci va fi ștearsă my_target_file
va rămâne. Steag -s
comenzi ln
vă permite să creați legături pentru directoare.
Acum să vorbim despre redirecționarea I/O și conducte.
▍Redirecționare I/O și conducte
my_command < my_file
: înlocuiește descriptorul standard al fișierului de intrare (stdin
) pe fișier my_file
. Acest lucru poate fi util dacă comanda așteaptă o intrare de la tastatură și aceste date sunt deja salvate într-un fișier.
my_command > my_file
: redirecționează rezultatele comenzii, adică ceea ce ar intra în mod normal stdout
și scoate pe ecran, într-un fișier my_file
. Dacă dosarul my_file
nu există - 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 o listă cu ceea ce se află în directorul de lucru curent.
Dacă în loc de simbol >
utilizați construcția >>
, atunci, cu condiția ca fișierul către care este redirecționată ieșirea comenzii să existe, acest fișier nu va fi suprascris. Datele vor fi adăugate la sfârșitul acestui fișier.
Acum să aruncăm o privire asupra procesării conductei de date.
Ieșirea unei comenzi este introdusă în intrarea altei comenzi. Este ca și cum ai conecta o țeavă la alta
first_command | second_command
: simbolul transportorului, |
, este folosit pentru a trimite rezultatul unei comenzi către o altă comandă. La ce trimite comanda din partea stângă a structurii descrise stdout
, A cădea în stdin
comanda din dreapta simbolului conductei.
Pe Linux, datele pot fi canalizate folosind aproape orice comandă bine formată. Se spune adesea că totul în Linux este o conductă.
Puteți înlănțui mai multe comenzi folosind simbolul conductei. Arata cam asa:
first_command | second_command | third_command
O conductă de mai multe comenzi poate fi comparată cu o conductă
Rețineți că atunci când comanda din stânga simbolului |
, scoate ceva la stdout
, ceea ce scoate ea este disponibil imediat ca stdin
echipa a doua. Adică, se dovedește că, folosind pipeline, avem de-a face cu execuția paralelă a comenzilor. Uneori, acest lucru poate duce la rezultate neașteptate. Detalii despre aceasta pot fi citite
Acum să vorbim despre citirea datelor din fișiere și afișarea lor pe ecran.
▍Citirea fișierelor
head my_file
: citește linii de la începutul unui fișier și le imprimă pe ecran. Puteți citi nu numai conținutul fișierelor, ci și ceea ce scot comenzile stdin
folosind această comandă ca parte a conductei.
tail my_file
: citește linii de la sfârșitul fișierului. Această comandă poate fi folosită și într-o conductă.
Capul (capul) este în față, iar coada (coada) este în spate
Dacă lucrați cu date folosind biblioteca Pandas, atunci comenzile head
и tail
ar trebui să vă fie familiar. Dacă nu este cazul, aruncați o privire la figura de mai sus și vă veți aminti cu ușurință de ele.
Luați în considerare alte modalități de a citi fișiere, să vorbim despre comandă cat
.
Echipă cat
fie tipărește conținutul unui fișier pe ecran, fie concatenează mai multe fișiere. Depinde de câte fișiere sunt transmise acestei comenzi atunci când este apelată.
comanda pisicii
cat my_one_file.txt
: când un singur fișier este transmis la această comandă, îl trimite la stdout
.
Dacă îi dați două fișiere sau mai multe fișiere, atunci se comportă diferit.
cat my_file1.txt my_file2.txt
: după ce a primit mai multe fișiere ca intrare, această comandă le concatenează conținutul și afișează ceea ce s-a întâmplat în stdout
.
Dacă rezultatul concatenării fișierelor trebuie să fie salvat ca fișier nou, puteți utiliza operatorul >
:
cat my_file1.txt my_file2.txt > my_new_file.txt
Acum haideți să vorbim despre cum să ștergeți fișiere și să opriți procesele.
▍Ștergerea fișierelor, oprirea proceselor
rm my_file
: sterge fisierul my_file
.
rm -r my_folder
: șterge un folder my_folder
și toate fișierele și folderele pe care le conține. Steag -r
indică faptul că comanda va rula în mod recursiv.
Pentru a împiedica sistemul să solicite confirmarea de fiecare dată când un fișier sau un folder este șters, utilizați marcajul -f
.
kill 012345
: Oprește procesul de rulare specificat, dându-i timp să se închidă grațios.
kill -9 012345
: termină forțat procesul de rulare specificat. Vedeți steagul -s SIGKILL
înseamnă la fel ca steagul -9
.
▍Căutare
Puteți folosi diferite comenzi pentru a căuta date. În special - grep
, ag
и ack
. Să începem cunoașterea acestor comenzi cu grep
. Aceasta este o comandă de încredere, testată în timp, care, totuși, este mai lentă decât altele și nu este la fel de convenabilă de utilizat ca acestea.
comanda grep
grep my_regex my_file
: căutări my_regex
в my_file
. Dacă se găsește o potrivire, se returnează întregul șir, pentru fiecare potrivire. Mod implicit my_regex
tratată ca o expresie regulată.
grep -i my_regex my_file
: Căutarea se efectuează fără a ține seama de majuscule și minuscule.
grep -v my_regex my_file
: returnează toate rândurile care nu conțin my_regex
. Steag -v
înseamnă inversare, seamănă cu operatorul NOT
, găsit în multe limbaje de programare.
grep -c my_regex my_file
: returnează informații despre numărul de potriviri găsite în fișier pentru modelul de căutare.
grep -R my_regex my_folder
: efectuează o căutare recursivă în toate fișierele aflate în folderul specificat și în folderele imbricate în acesta.
Acum să vorbim despre echipă ag
. Ea a venit mai târziu grep
, este mai rapid, este mai convenabil să lucrezi cu el.
comanda ag
ag my_regex my_file
: returnează informații despre numerele de linii și liniile în sine, în care au fost găsite potriviri my_regex
.
ag -i my_regex my_file
: Căutarea se efectuează fără a ține seama de majuscule și minuscule.
Echipă ag
procesează automat fișierul .gitignore
și exclude din ieșire ceea ce se găsește în folderele sau fișierele enumerate în acel fișier. Este foarte confortabil.
ag my_regex my_file -- skip-vcs-ignores
: conținutul fișierelor de control automat al versiunilor (cum ar fi .gitignore
) nu este luată în considerare la căutare.
În plus, pentru a spune echipei ag
pe ce căi de fișiere doriți să excludeți din căutare, puteți crea un fișier .agignore
.
La începutul acestei secțiuni, am menționat comanda ack
. Echipe ack
и ag
foarte asemanatoare, putem spune ca sunt 99% interschimbabile. Cu toate acestea, echipa ag
funcționează mai repede, de aceea am descris-o.
Acum să vorbim despre lucrul cu arhivele.
▍Arhivarea
tar my_source_directory
: concatenează fișierele dintr-un folder my_source_directory
într-un singur fișier tarball. Astfel de fișiere sunt utile pentru a transfera cuiva seturi mari de fișiere.
comanda tar
Fișierele tarball generate de această comandă sunt fișiere cu extensia .tar
(Arhiva bandă). Faptul că cuvântul „tape” (bandă) este ascuns în numele comenzii și în extensia numelor fișierelor pe care le creează indică de cât timp există această comandă.
tar -cf my_file.tar my_source_directory
: creează un fișier tarball numit my_file.tar
cu conținutul folderului my_source_directory
. Steag -c
reprezintă „creare” (creare) și steagul -f
ca „fișier” (fișier).
Pentru a extrage fișiere din .tar
-file, utilizați comanda tar
cu steaguri -x
(„extras”, extracție) și -f
(„dosar”, dosar).
tar -xf my_file.tar
: extrage fișiere din my_file.tar
în directorul de lucru curent.
Acum să vorbim despre cum să comprimați și să decomprimați .tar
-fisare.
tar -cfz my_file.tar.gz my_source_directory
: aici folosind steagul -z
("zip", algoritm de compresie) indică faptul că algoritmul ar trebui utilizat pentru a comprima fișierele gzip
(GNUzip). Comprimarea fișierelor economisește spațiu pe disc atunci când stochează astfel de fișiere. Dacă fișierele sunt planificate, de exemplu, să fie transferate către alți utilizatori, acest lucru contribuie la descărcarea mai rapidă a acestor fișiere.
Dezarhivați fișierul .tar.gz
puteți adăuga un steag -z
la comanda extragere conținut .tar
-fișiere, despre care am discutat mai sus. Arata cam asa:
tar -xfz my_file.tar.gz
Trebuie remarcat faptul că echipa tar
Există mai multe steaguri utile.
Aliasuri Bash
Aliasurile Bash (numite și aliasuri sau abrevieri) sunt concepute pentru a crea nume abreviate ale comenzilor sau secvențele acestora, a căror utilizare în loc de comenzi obișnuite accelerează munca. Dacă aveți un alias bu
, care ascunde comanda python setup.py sdist bdist_wheel
, apoi pentru a apela această comandă, este suficient să folosiți acest alias.
Pentru a crea un astfel de alias, trebuie doar să adăugați următoarea comandă în fișier ~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
Dacă sistemul dumneavoastră nu are fișierul ~/.bash_profile
, apoi îl puteți crea singur folosind comanda touch
. După crearea aliasului, reporniți terminalul, după care puteți utiliza acest alias. În acest caz, introducerea a două caractere înlocuiește introducerea a mai mult de trei duzini de caractere ale comenzii, care este destinată
В ~/.bash_profile
puteți adăuga alias-uri pentru orice comenzi utilizate frecvent.
▍Rezultate
În această postare, am acoperit 21 de comenzi Bash populare și am vorbit despre crearea alias-urilor de comandă. Dacă ești interesat de acest subiect -
Dragi cititori! Ce comenzi care sunt utile pentru începători ați adăuga la cele despre care au fost discutate în acest articol?
→
Sursa: www.habr.com