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.
→
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.
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 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 ../
.
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 mv
també 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
: crea una còpia d'un fitxer
cp my_source_file target_directorymy_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.
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
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ò
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 stdin
utilitzant 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ó.
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.
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.
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.
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ú.
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
В ~/.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 -
Benvolguts lectors! Quines ordres útils per als principiants afegiríeu a les que s'han comentat en aquest article?
→
Font: www.habr.com