[marcat] Bash per a principiants: 21 ordres útils

El material, la traducció del qual publiquem avui, està pensat per a aquells que volen dominar la línia d'ordres de Linux. La capacitat d'utilitzar aquesta eina de manera eficaç pot estalviar molt de temps. En particular, aquí parlarem de l'intèrpret d'ordres Bash i de 21 ordres útils. També parlarem de com utilitzar els indicadors d'ordres i els àlies de Bash per accelerar l'escriptura d'instruccions llargues.

[marcat] Bash per a principiants: 21 ordres útils

També llegiu al nostre bloc una sèrie de publicacions sobre scripts bash

Termes

A mesura que apreneu a treballar amb la línia d'ordres de Linux, trobareu molts conceptes útils per navegar. Alguns d'ells, com "Linux" i "Unix", o "shell" i "terminal", de vegades es confonen. Parlem d'aquests i d'altres termes importants.

Unix és un sistema operatiu popular que va ser desenvolupat per Bell Labs a la dècada de 1970. El seu codi estava tancat.

Linux és el sistema operatiu semblant a Unix més popular. Ara s'utilitza en molts dispositius, inclosos els ordinadors.

Terminal (terminal), o emulador de terminal és un programa que dóna accés al sistema operatiu. Podeu tenir obertes diverses finestres de terminal alhora.

Shell (shell) és un programa que permet enviar ordres escrites en un llenguatge especial al sistema operatiu.

xoc significa Bourne Again Shell. És el llenguatge de shell més comú utilitzat per interactuar amb el sistema operatiu. A més, l'intèrpret d'ordres Bash és el predeterminat a macOS.

Interfície de línia d'ordres (Command Line Interface, CLI) és un mètode d'interacció entre una persona i un ordinador, mitjançant el qual l'usuari introdueix ordres des del teclat i l'ordinador, executant aquestes ordres, mostra missatges en forma de text per a l'usuari. L'ús principal de la CLI és obtenir informació actualitzada sobre determinades entitats, com ara fitxers, i treballar amb fitxers. La interfície de línia d'ordres s'ha de distingir de la interfície gràfica d'usuari (GUI), que utilitza principalment el ratolí. La interfície de la línia d'ordres es coneix sovint com a línia d'ordres.

Guió (script) és un petit programa que conté una seqüència d'ordres de shell. Els scripts s'escriuen als fitxers, es poden utilitzar repetidament. Quan escriviu scripts, podeu utilitzar variables, condicionals, bucles, funcions i altres característiques.

Ara que hem cobert els termes importants, vull assenyalar que aquí faré servir els termes "Bash", "shell" i "línia d'ordres" de manera intercanviable, així com els termes "directori" i "carpeta".

Estàndard corrents, que farem servir aquí és l'entrada estàndard (entrada estàndard, stdin), sortida estàndard (sortida estàndard, stdout) i sortida d'error estàndard (error estàndard, stderr).

Si a les ordres d'exemple que es donaran a continuació, trobareu alguna cosa així my_whatever - això vol dir que aquest fragment s'ha de substituir per alguna cosa teva. Per exemple, el nom d'un fitxer.

Ara, abans de procedir a l'anàlisi de les ordres a les quals es dedica aquest material, fem una ullada a la seva llista i a les seves breus descripcions.

21 ordres Bash

▍Obtenció d'informació

  • man: Mostra la guia d'usuari (ajuda) per a l'ordre.
  • pwd: mostra informació sobre el directori de treball.
  • ls: mostra el contingut d'un directori.
  • ps: us permet veure informació sobre processos en execució.

▍Manipulació del sistema de fitxers

  • cd: canviar el directori de treball.
  • touch: crea un fitxer.
  • mkdir: crear un directori.
  • cp: Copia un fitxer.
  • mv: mou o elimina un fitxer.
  • ln: crea un enllaç.

▍Redirecció d'E/S i canalitzacions

  • <: redirecció stdin.
  • >: redirecció stdout.
  • |: va canalitzar la sortida d'una ordre a l'entrada d'una altra ordre.

▍Lectura de fitxers

  • head: llegiu l'inici del fitxer.
  • tail: llegir el final del fitxer.
  • cat: llegiu un fitxer i imprimiu-ne el contingut a la pantalla o concatenar fitxers.

▍Suprimir fitxers, aturar processos

  • rm: Eliminar un fitxer.
  • kill: aturar el procés.

▍Cerca

  • grep: cerca d'informació.
  • ag: comanda avançada per a la cerca.

▍Arxiu

  • tar: crear arxius i treballar-hi.

Parlem d'aquestes ordres amb més detall.

Detalls de l'equip

Per començar, tractem les ordres, els resultats de les quals s'emeten en el formulari stdout. Normalment, aquests resultats apareixen en una finestra de terminal.

▍Obtenció d'informació

man command_name: mostra la guia d'ordres, és a dir, informació d'ajuda.

pwd: mostra la ruta al directori de treball actual. En el curs de treballar amb la línia d'ordres, l'usuari sovint necessita esbrinar exactament on es troba del sistema.

ls: mostra el contingut d'un directori. Aquesta comanda també s'utilitza amb força freqüència.

ls -a: mostra els fitxers ocults. bandera aplicada aquí -a ordres ls. L'ús de banderes ajuda a personalitzar el comportament de les ordres.

ls -l: Mostra informació detallada sobre fitxers.

Tingueu en compte que les banderes es poden combinar. Per exemple, així: ls -al.

ps: Veure processos en execució.

ps -e: Mostra informació sobre tots els processos en execució, no només els associats amb l'intèrpret d'ordres de l'usuari actual. Aquesta ordre s'utilitza sovint en aquesta forma.

▍Manipulació del sistema de fitxers

cd my_directory: canvieu el directori de treball a my_directory. Per pujar un nivell a l'arbre de directoris, utilitzeu my_directory camí relatiu ../.

[marcat] Bash per a principiants: 21 ordres útils
comandament de cd

touch my_file: creació de fitxers my_file pel camí donat.

mkdir my_directory: crea una carpeta my_directory pel camí donat.

mv my_file target_directory: mou el fitxer my_file a la carpeta target_directory. Quan especifiqueu el directori de destinació, heu d'utilitzar-hi el camí absolut (i no una construcció com ../).

equip mvtambé es pot utilitzar per canviar el nom de fitxers o carpetes. Per exemple, podria semblar així:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: crea una còpia d'un fitxer my_source_file i posar-lo en una carpeta target_directory.

ln -s my_source_file my_target_file: crear un enllaç simbòlic my_target_file per fitxer my_source_file. Si canvieu l'enllaç, el fitxer original també canviarà.

Si el fitxer my_source_file s'eliminarà, doncs my_target_file romandrà. Bandera -s ordres ln permet crear enllaços per a directoris.

Ara parlem de la redirecció d'E/S i les canalitzacions.

▍Redirecció d'E/S i canalitzacions

my_command < my_file: substitueix el descriptor de fitxer d'entrada estàndard (stdin) per fitxer my_file. Això pot ser útil si l'ordre està esperant una entrada del teclat i aquestes dades ja estan desades en un fitxer.

my_command > my_file: redirigeix ​​els resultats de l'ordre, és a dir, el que normalment entraria stdout i la sortida a la pantalla, a un fitxer my_file. Si el fitxer my_file no existeix - es crea. Si el fitxer existeix, es sobreescriu.

Per exemple, després d'executar l'ordre ls > my_folder_contents.txt es crearà un fitxer de text que conté una llista del que hi ha al directori de treball actual.

Si en comptes del símbol > utilitzar la construcció >>, aleshores, sempre que existeixi el fitxer al qual es redirigeix ​​la sortida de l'ordre, aquest fitxer no se sobreescriurà. Les dades s'afegiran al final d'aquest fitxer.

Ara fem una ullada al processament de la canalització de dades.

[marcat] Bash per a principiants: 21 ordres útils
La sortida d'una ordre s'introdueix a l'entrada d'una altra ordre. És com connectar una canonada a una altra

first_command | second_command: símbol del transportador, |, s'utilitza per enviar la sortida d'una ordre a una altra ordre. A què envia l'ordre del costat esquerre de l'estructura descrita stdout, Caure en stdin comanda a la dreta del símbol de la canalització.

A Linux, les dades es poden canalitzar utilitzant gairebé qualsevol ordre ben formada. Sovint es diu que tot a Linux és un pipeline.

Podeu encadenar diverses ordres mitjançant el símbol de canalització. Es veu així:

first_command | second_command | third_command

[marcat] Bash per a principiants: 21 ordres útils
Un pipeline de diverses ordres es pot comparar amb un pipeline

Tingueu en compte que quan l'ordre a l'esquerra del símbol |, produeix alguna cosa a stdout, el que ella emet està disponible immediatament stdin segon equip. És a dir, resulta que, utilitzant el pipeline, estem tractant amb l'execució paral·lela d'ordres. De vegades, això pot donar lloc a resultats inesperats. Es poden llegir detalls sobre això aquí.

Ara parlem de llegir dades dels fitxers i mostrar-los a la pantalla.

▍Lectura de fitxers

head my_file: llegeix les línies des del principi d'un fitxer i les imprimeix a la pantalla. Podeu llegir no només el contingut dels fitxers, sinó també el que produeixen les ordres stdinutilitzant aquesta comanda com a part del pipeline.

tail my_file: llegeix les línies des del final del fitxer. Aquesta ordre també es pot utilitzar en una canalització.

[marcat] Bash per a principiants: 21 ordres útils
El cap (cap) està al davant i la cua (cua) al darrere

Si esteu treballant amb dades utilitzant la biblioteca pandas, les ordres head и tail us hauria de ser familiar. Si no és així, mireu la figura anterior i les recordareu fàcilment.

Considereu altres maneres de llegir fitxers, parlem de l'ordre cat.

Equip cat imprimeix el contingut d'un fitxer a la pantalla o concatena diversos fitxers. Depèn de quants fitxers es passen a aquesta ordre quan es crida.

[marcat] Bash per a principiants: 21 ordres útils
comanda gat

cat my_one_file.txt: quan es passa un únic fitxer a aquesta ordre, l'envia a stdout.

Si li doneu dos fitxers o més, es comporta de manera diferent.

cat my_file1.txt my_file2.txt: havent rebut diversos fitxers com a entrada, aquesta comanda concatena el seu contingut i mostra el que va passar stdout.

Si el resultat de la concatenació de fitxers s'ha de desar com a fitxer nou, podeu utilitzar l'operador >:

cat my_file1.txt my_file2.txt > my_new_file.txt

Ara parlem de com esborrar fitxers i aturar processos.

▍Suprimir fitxers, aturar processos

rm my_file: esborrar Arxiu my_file.

rm -r my_folder: elimina una carpeta my_folder i tots els fitxers i carpetes que conté. Bandera -r indica que l'ordre s'executarà en mode recursiu.

Per evitar que el sistema demani confirmació cada vegada que s'elimina un fitxer o carpeta, utilitzeu el senyalador -f.

kill 012345: Atura el procés en execució especificat, donant-li temps per tancar-se amb gràcia.

kill -9 012345: Tanca per força el procés en execució especificat. Veure bandera -s SIGKILL significa el mateix que la bandera -9.

▍Cerca

Podeu utilitzar diferents ordres per cercar dades. En particular- grep, ag и ack. Comencem a conèixer aquestes ordres amb grep. Aquesta és una ordre fiable i provada en el temps, que, tanmateix, és més lenta que altres i no és tan còmoda d'utilitzar com ho són.

[marcat] Bash per a principiants: 21 ordres útils
comanda grep

grep my_regex my_file: cerques my_regex в my_file. Si es troba una coincidència, es retorna la cadena sencera, per a cada coincidència. Per defecte my_regex tractat com una expressió regular.

grep -i my_regex my_file: La cerca es realitza sense distingir entre majúscules i minúscules.

grep -v my_regex my_file: retorna totes les files que no contenen my_regex. Bandera -v significa inversió, s'assembla a l'operador NOT, que es troba en molts llenguatges de programació.

grep -c my_regex my_file: Retorna informació sobre el nombre de coincidències per al patró cercat que es troba al fitxer.

grep -R my_regex my_folder: realitza una cerca recursiva a tots els fitxers situats a la carpeta especificada i a les carpetes que hi estan imbricades.

Ara parlem de l'equip ag. Ella va venir més tard grep, és més ràpid, és més convenient treballar-hi.

[marcat] Bash per a principiants: 21 ordres útils
comandament ag

ag my_regex my_file: retorna informació sobre els números de línia i les pròpies línies amb les quals s'han trobat coincidències my_regex.

ag -i my_regex my_file: La cerca es realitza sense distingir entre majúscules i minúscules.

Equip ag processar automàticament el fitxer .gitignore i exclou de la sortida el que es troba a les carpetes o fitxers enumerats en aquest fitxer. És molt còmode.

ag my_regex my_file -- skip-vcs-ignores: contingut dels fitxers de control automàtic de versions (com ara .gitignore) no es té en compte en la cerca.

A més, per explicar-ho a l'equip ag en quins camins de fitxer voleu excloure de la cerca, podeu crear un fitxer .agignore.

Al principi d'aquesta secció, hem esmentat l'ordre ack. Equips ack и ag molt semblants, podem dir que són un 99% intercanviables. Tanmateix, l'equip ag funciona més ràpid, per això ho vaig descriure.

Ara parlem de treballar amb arxius.

▍Arxiu

tar my_source_directory: concatena fitxers d'una carpeta my_source_directory en un únic fitxer tarball. Aquests fitxers són útils per transferir grans conjunts de fitxers a algú.

[marcat] Bash per a principiants: 21 ordres útils
comanda tar

Els fitxers tarball generats per aquesta ordre són fitxers amb l'extensió .tar (Arxiu de cinta). El fet que la paraula "tape" (tape) estigui amagada al nom de l'ordre i a l'extensió dels noms dels fitxers que crea indica quant de temps ha existit aquesta ordre.

tar -cf my_file.tar my_source_directory: crea un fitxer tarball anomenat my_file.tar amb el contingut de la carpeta my_source_directory. Bandera -c significa "crear" (creació) i la bandera -f com a "fitxer" (fitxer).

Per extreure fitxers de .tar-fitxer, utilitzeu l'ordre tar amb banderes -x ("extracte", extracció) i -f ("fitxer", fitxer).

tar -xf my_file.tar: extreu fitxers de my_file.tar al directori de treball actual.

Ara parlem de com comprimir i descomprimir .tar-Fitxers.

tar -cfz my_file.tar.gz my_source_directory: aquí utilitzant la bandera -z ("zip", algorisme de compressió) indica que l'algorisme s'ha d'utilitzar per comprimir fitxers gzip (GNUzip). La compressió de fitxers estalvia espai al disc quan s'emmagatzemen aquests fitxers. Si es preveu, per exemple, que els fitxers es transfereixin a altres usuaris, això contribueix a una descàrrega més ràpida d'aquests fitxers.

Descomprimiu el fitxer .tar.gz podeu afegir una bandera -z a l'ordre d'extreure contingut .tar-fitxers, que hem comentat anteriorment. Es veu així:

tar -xfz my_file.tar.gz
Cal destacar que l'equip tar Hi ha moltes més banderes útils.

Àlies de Bash

Els àlies de Bash (també anomenats àlies o abreviatures) estan dissenyats per crear noms abreujats d'ordres o les seves seqüències, l'ús dels quals en lloc d'ordres normals accelera el treball. Si tens un àlies bu, que amaga l'ordre python setup.py sdist bdist_wheel, llavors per cridar aquesta ordre, n'hi ha prou amb utilitzar aquest àlies.

Per crear aquest àlies, només cal que afegiu l'ordre següent al fitxer ~/.bash_profile:

alias bu="python setup.py sdist bdist_wheel"

Si el vostre sistema no té el fitxer ~/.bash_profile, llavors podeu crear-lo vosaltres mateixos amb l'ordre touch. Després de crear l'àlies, reinicieu el terminal, després podeu utilitzar aquest àlies. En aquest cas, l'entrada de dos caràcters substitueix l'entrada de més de tres dotzenes de caràcters de l'ordre, que està destinada a assemblees Paquets Python.

В ~/.bash_profile podeu afegir àlies per a qualsevol ordre d'ús freqüent.

▍Resultats

En aquesta publicació, hem tractat 21 ordres populars de Bash i hem parlat de la creació d'àlies d'ordres. Si esteu interessats en aquest tema - aquí una sèrie de publicacions dedicades a Bash. Aquí Podeu trobar una versió en pdf d'aquestes publicacions. A més, si voleu aprendre Bash, recordeu que, com amb qualsevol altre sistema de programació, la pràctica és clau.

Benvolguts lectors! Quines ordres útils per als principiants afegiríeu a les que s'han comentat en aquest article?

També llegiu al nostre bloc una sèrie de publicacions sobre scripts bash

[marcat] Bash per a principiants: 21 ordres útils

Font: www.habr.com

Afegeix comentari