[legosignita] Bash por komencantoj: 21 utilaj komandoj

La materialo, kies tradukon ni publikigas hodiaŭ, estas destinita al tiuj, kiuj volas regi la Linuksan komandlinion. La kapablo uzi ĉi tiun ilon efike povas ŝpari multan tempon. Aparte, ni parolos pri la Bash-ŝelo kaj 21 utilaj komandoj ĉi tie. Ni ankaŭ parolos pri kiel uzi komandflagojn kaj Bash-alisojn por akceli la tajpadon de longaj instrukcioj.

[legosignita] Bash por komencantoj: 21 utilaj komandoj

Legu ankaŭ en nia blogo serion da publikaĵoj pri bash-skriptoj

Kondiĉoj

Dum vi lernas labori kun la Linukso komandlinio, vi renkontos multajn konceptojn, kiuj estas helpemaj por navigi. Kelkaj el ili, kiel "Linukso" kaj "Unikso", aŭ "ŝelo" kaj "terminalo", estas foje konfuzitaj. Ni parolu pri ĉi tiuj kaj aliaj gravaj terminoj.

Unikso estas populara operaciumo kiu estis evoluigita fare de Bell Labs en la 1970-aj jaroj. Ŝia kodo estis fermita.

linux estas la plej populara Unikso-simila operaciumo. Ĝi nun estas uzata en multaj aparatoj, inkluzive de komputiloj.

Fina stacio (terminalo), aŭ terminala emulilo estas programo kiu donas aliron al la operaciumo. Vi povas havi plurajn finajn fenestrojn malfermitaj samtempe.

Ŝelo (ŝelo) estas programo, kiu ebligas sendi ordonojn skribitajn en speciala lingvo al la operaciumo.

Bash signifas Bourne Again Shell. Ĝi estas la plej ofta ŝellingvo uzata por interagi kun la operaciumo. Ankaŭ la Bash-ŝelo estas la defaŭlta ĉe macOS.

Interfaco de komandlinio (Command Line Interface, CLI) estas metodo de interagado inter persono kaj komputilo, uzante kiun la uzanto enigas komandojn de la klavaro, kaj la komputilo, plenumante tiujn komandojn, montras mesaĝojn en tekstformo por la uzanto. La ĉefa uzo de la CLI estas akiri ĝisdatigitajn informojn pri certaj estaĵoj, kiel dosieroj, kaj labori kun dosieroj. La komandlinia interfaco devus esti distingita de la grafika uzantinterfaco (GUI), kiu ĉefe uzas la muson. La komandlinia interfaco ofte estas referita simple kiel la komandlinio.

Skripto (skripto) estas malgranda programo kiu enhavas sekvencon de ŝelkomandoj. Skriptoj estas skribitaj al dosieroj, ili povas esti uzataj plurfoje. Dum skribado de skriptoj, vi povas uzi variablojn, kondicionalojn, buklojn, funkciojn kaj aliajn funkciojn.

Nun kiam ni kovris la gravajn terminojn, mi volas atentigi, ke mi uzos ĉi tie la terminojn "Bash", "ŝelo" kaj "komandlinio" interŝanĝeble, same kiel la terminojn "dosierujo" kaj "dosierujo".

Norma riveretoj, kiun ni uzos ĉi tie estas la norma enigo (norma enigo, stdin), norma eligo (norma eligo, stdout) kaj norma erara eligo (norma eraro, stderr).

Se en la ekzemplokomandoj kiuj estos donitaj sube, vi trovos ion similan my_whatever - tio signifas, ke ĉi tiu fragmento devas esti anstataŭigita per io via. Ekzemple, la nomo de dosiero.

Nun, antaŭ ol daŭrigi kun la analizo de la ordonoj, al kiuj ĉi tiu materialo estas dediĉita, ni rigardu ilian liston kaj iliajn mallongajn priskribojn.

21 Baŝ-komandoj

▍ Akiri informojn

  • man: Montras la uzantgvidilon (helpon) por la komando.
  • pwd: montras informojn pri la labordosierujo.
  • ls: montras la enhavon de dosierujo.
  • ps: Permesas al vi vidi informojn pri funkciado de procezoj.

▍Dosiersistemmanipulado

  • cd: ŝanĝi labordosierujon.
  • touch: krei dosieron.
  • mkdir: krei dosierujon.
  • cp: Kopiu dosieron.
  • mv: Movu aŭ forigi dosieron.
  • ln: krei ligilon.

▍I/O-alidirektado kaj duktoj

  • <: alidirekti stdin.
  • >: alidirekti stdout.
  • |: fluigis la eligon de unu komando al la enigo de alia komando.

▍Legante dosierojn

  • head: legu la komencon de la dosiero.
  • tail: legu finon de dosiero.
  • cat: Legu dosieron kaj presi ĝian enhavon al la ekrano, aŭ kunligi dosierojn.

▍Forigi dosierojn, ĉesigi procezojn

  • rm: Forigi dosieron.
  • kill: ĉesigi la procezon.

▍Serĉu

  • grep: serĉi informojn.
  • ag: altnivela komando por serĉado.

▍Arkivado

  • tar: krei arkivojn kaj labori kun ili.

Ni parolu pri ĉi tiuj komandoj pli detale.

Teamaj Detaloj

Komence, ni traktu la komandojn, kies rezultoj estas eldonitaj en la formo stdout. Kutime ĉi tiuj rezultoj aperas en fina fenestro.

▍ Akiri informojn

man command_name: montri la komandan gvidilon, t.e. helpinformojn.

pwd: montri la vojon al la nuna labordosierujo. Dum laborado kun la komandlinio, la uzanto ofte bezonas ekscii precize kie en la sistemo li estas.

ls: montri la enhavon de dosierujo. Ĉi tiu komando ankaŭ estas uzata sufiĉe ofte.

ls -a: montri kaŝitajn dosierojn. flago aplikita ĉi tie -a ordonas ls. La uzo de flagoj helpas personecigi la konduton de la komandoj.

ls -l: Montru detalajn informojn pri dosieroj.

Notu, ke flagoj povas esti kombinitaj. Ekzemple - tiel: ls -al.

ps: Vidu kurantajn procezojn.

ps -e: Montru informojn pri ĉiuj kurantaj procezoj, ne nur tiuj asociitaj kun la nuna uzantŝelo. Ĉi tiu komando estas ofte uzata en ĉi tiu formo.

▍Dosiersistemmanipulado

cd my_directory: ŝanĝu labordosierujon al my_directory. Por supreniri unu nivelon en la dosierujo, uzu my_directory relativa vojo ../.

[legosignita] Bash por komencantoj: 21 utilaj komandoj
cd komando

touch my_file: kreado de dosiero my_file laŭ la donita vojo.

mkdir my_directory: krei dosierujon my_directory laŭ la donita vojo.

mv my_file target_directory: movi dosieron my_file al dosierujo target_directory. Kiam vi specifas la celan dosierujon, vi devas uzi la absolutan vojon al ĝi (kaj ne konstruo kiel ../).

teamo mvankaŭ povas esti uzata por renomi dosierojn aŭ dosierujojn. Ekzemple, ĝi povus aspekti jene:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: krei kopion de dosiero my_source_file kaj metu ĝin en dosierujon target_directory.

ln -s my_source_file my_target_file: kreu simbolan ligilon my_target_file po dosiero my_source_file. Se vi ŝanĝas la ligilon, la originala dosiero ankaŭ ŝanĝiĝos.

Se la dosiero my_source_file estos forigita, do my_target_file restos. Flago -s ordonas ln permesas krei ligilojn por dosierujoj.

Nun ni parolu pri I/O-alidirektado kaj duktoj.

▍I/O-alidirektado kaj duktoj

my_command < my_file: anstataŭigas la norman enigdosierpriskribilon (stdin) po dosiero my_file. Ĉi tio povas esti utila se la komando atendas iun enigon de la klavaro, kaj ĉi tiuj datumoj jam estas konservitaj en dosiero.

my_command > my_file: alidirektas la rezultojn de la komando, t.e. kio normale enirus stdout kaj eligo al la ekrano, al dosiero my_file. Se la dosiero my_file ne ekzistas - ĝi estas kreita. Se la dosiero ekzistas, ĝi estas anstataŭita.

Ekzemple, post plenumi la komandon ls > my_folder_contents.txt tekstodosiero estos kreita enhavanta liston de kio estas en la nuna labordosierujo.

Se anstataŭ la simbolo > uzu la konstruon >>, do, kondiĉe ke la dosiero al kiu la eligo de la komando estas alidirektita ekzistas, ĉi tiu dosiero ne estos anstataŭita. La datumoj estos aldonitaj al la fino de ĉi tiu dosiero.

Nun ni rigardu pri datumdukto prilaborado.

[legosignita] Bash por komencantoj: 21 utilaj komandoj
La eligo de unu komando estas enigita en la enigo de alia komando. Estas kiel konekti unu tubon al alia

first_command | second_command: transporta simbolo, |, estas uzata por sendi la eligon de unu komando al alia komando. Kion sendas la komando sur la maldekstra flanko de la priskribita strukturo stdout, Fali en stdin komando dekstre de la duktosimbolo.

En Linukso, datumoj povas esti kanaligitaj uzante preskaŭ ajnan bone formitan komandon. Ofte oni diras, ke ĉio en Linukso estas dukto.

Vi povas ĉeni plurajn komandojn per la duktosimbolo. Ĝi aspektas jene:

first_command | second_command | third_command

[legosignita] Bash por komencantoj: 21 utilaj komandoj
Dukto de pluraj komandoj povas esti komparita al dukto

Notu ke kiam la komando maldekstre de la simbolo |, eligas ion al stdout, kion ŝi eligas estas tuj havebla kiel stdin dua teamo. Tio estas, rezultas, ke, uzante la dukton, ni traktas paralelan ekzekuton de komandoj. Kelkfoje ĉi tio povas konduki al neatenditaj rezultoj. Detaloj pri tio legeblas tie.

Nun ni parolu pri legado de datumoj de dosieroj kaj montri ilin sur la ekrano.

▍Legante dosierojn

head my_file: legas liniojn de la komenco de dosiero kaj presas ilin al la ekrano. Vi povas legi ne nur la enhavon de la dosieroj, sed ankaŭ en kio eligas la komandoj stdinuzante ĉi tiun komandon kiel parto de la dukto.

tail my_file: legas liniojn de la fino de la dosiero. Ĉi tiu komando ankaŭ povas esti uzata en dukto.

[legosignita] Bash por komencantoj: 21 utilaj komandoj
Kapo (kapo) estas antaŭe, kaj vosto (vosto) estas malantaŭe

Se vi laboras kun datumoj uzante la pandas-bibliotekon, tiam la komandoj head и tail devus esti konata al vi. Se ĉi tio ne estas la kazo, rigardu la supran figuron, kaj vi facile memoros ilin.

Konsideru aliajn manierojn legi dosierojn, ni parolu pri la komando cat.

teamo cat aŭ presas la enhavon de dosiero al la ekrano, aŭ kunligas plurajn dosierojn. Ĝi dependas de kiom da dosieroj estas pasigitaj al ĉi tiu komando kiam vokita.

[legosignita] Bash por komencantoj: 21 utilaj komandoj
kat ordono

cat my_one_file.txt: kiam ununura dosiero estas transdonita al ĉi tiu komando, ĝi eligas ĝin al stdout.

Se vi donas al ĝi du dosierojn aŭ pli da dosieroj, tiam ĝi kondutas malsame.

cat my_file1.txt my_file2.txt: ricevinte plurajn dosierojn kiel enigaĵon, ĉi tiu komando kunligas ilian enhavon kaj montras kio okazis en stdout.

Se la rezulto de dosierkunligado devas esti konservita kiel nova dosiero, vi povas uzi la funkciigiston >:

cat my_file1.txt my_file2.txt > my_new_file.txt

Nun ni parolu pri kiel forigi dosierojn kaj haltigi procezojn.

▍Forigi dosierojn, ĉesigi procezojn

rm my_file: forigi dosieron my_file.

rm -r my_folder: forigas dosierujon my_folder kaj ĉiuj dosieroj kaj dosierujoj kiujn ĝi enhavas. Flago -r indikas ke la komando ruliĝos en rekursiva reĝimo.

Por malhelpi la sistemon peti konfirmon ĉiufoje kiam dosiero aŭ dosierujo estas forigita, uzu la flagon -f.

kill 012345: Ĉesigas la specifitan rulprocezon, donante al ĝi tempon por gracie fermi.

kill -9 012345: Perforte finas la specifitan rulprocezon. Vidu Flagon -s SIGKILL signifas la samon kiel la flago -9.

▍Serĉu

Vi povas uzi malsamajn komandojn por serĉi datumojn. Precipe - grep, ag и ack. Ni komencu nian konatiĝon kun ĉi tiuj komandoj per grep. Ĉi tio estas tempelprovita, fidinda komando, kiu tamen estas pli malrapida ol aliaj kaj ne tiel oportuna uzi kiel ili.

[legosignita] Bash por komencantoj: 21 utilaj komandoj
grep komando

grep my_regex my_file: serĉoj my_regex в my_file. Se kongruo estas trovita, la tuta ĉeno estas resendita, por ĉiu matĉo. Defaŭlte my_regex traktita kiel regula esprimo.

grep -i my_regex my_file: La serĉo estas farata en usklec-malsentema maniero.

grep -v my_regex my_file: resendas ĉiujn vicojn kiuj ne enhavas my_regex. Flago -v signifas inversigon, ĝi similas la funkciigiston NOT, trovita en multaj programlingvoj.

grep -c my_regex my_file: Resendas informojn pri la nombro da kongruoj por la serĉita ŝablono trovita en la dosiero.

grep -R my_regex my_folder: faras rekursivan serĉon en ĉiuj dosieroj situantaj en la specifita dosierujo kaj en la dosierujoj nestitaj en ĝi.

Nun ni parolu pri la teamo ag. Ŝi venis poste grep, ĝi estas pli rapida, estas pli oportune labori kun ĝi.

[legosignita] Bash por komencantoj: 21 utilaj komandoj
ag komando

ag my_regex my_file: resendas informojn pri linionombroj, kaj la linioj mem, en kiuj kongruoj estis trovitaj my_regex.

ag -i my_regex my_file: La serĉo estas farata en usklec-malsentema maniero.

teamo ag aŭtomate prilabori la dosieron .gitignore kaj ekskludas el la eligo tion, kio troviĝas en la dosierujoj aŭ dosieroj listigitaj en tiu dosiero. Ĝi estas tre komforta.

ag my_regex my_file -- skip-vcs-ignores: enhavo de aŭtomataj versiokontrolaj dosieroj (kiel .gitignore) ne estas konsiderata en la serĉo.

Krome, por diri al la teamo ag sur kiuj dosiervojoj vi volas ekskludi de la serĉo, vi povas krei dosieron .agignore.

Komence de ĉi tiu sekcio, ni menciis la komandon ack. Teamoj ack и ag tre similaj, ni povas diri, ke ili estas 99% interŝanĝeblaj. Tamen, la teamo ag funkcias pli rapide, tial mi priskribis ĝin.

Nun ni parolu pri laboro kun arkivoj.

▍Arkivado

tar my_source_directory: kunligas dosierojn el dosierujo my_source_directory en ununuran tarball-dosieron. Tiaj dosieroj estas utilaj por transdoni grandajn arojn da dosieroj al iu.

[legosignita] Bash por komencantoj: 21 utilaj komandoj
tar komando

La tarball-dosieroj generitaj de ĉi tiu komando estas dosieroj kun la etendaĵo .tar (Bendo-Arkivo). La fakto, ke la vorto "bendo" (bendo) estas kaŝita en la nomo de la komando kaj en la etendo de la nomoj de la dosieroj, kiujn ĝi kreas, indikas kiom longe ĉi tiu komando ekzistas.

tar -cf my_file.tar my_source_directory: kreas tarball-dosieron nomitan my_file.tar kun dosierujo enhavo my_source_directory. Flago -c signifas "krei" (kreado), kaj la flago -f kiel "dosiero" (dosiero).

Por ĉerpi dosierojn el .tar-file, uzu la komandon tar kun flagoj -x ("eltiraĵo", eltiro) kaj -f ("dosiero", dosiero).

tar -xf my_file.tar: ĉerpas dosierojn el my_file.tar al la nuna labordosierujo.

Nun ni parolu pri kiel kunpremi kaj malkunpremi .tar- dosieroj.

tar -cfz my_file.tar.gz my_source_directory: ĉi tie uzante la flagon -z ("zip", kunprema algoritmo) indikas ke la algoritmo estu uzata por kunpremi dosierojn gzip (GNUzip). Dosiera kunpremo ŝparas diskospacon dum konservado de tiaj dosieroj. Se la dosieroj estas planitaj, ekzemple, por esti transdonitaj al aliaj uzantoj, tio kontribuas al pli rapida elŝuto de tiaj dosieroj.

Malfermu dosieron .tar.gz vi povas aldoni flagon -z al la komando eltira enhavo .tar-dosieroj, kiujn ni diskutis supre. Ĝi aspektas jene:

tar -xfz my_file.tar.gz
Oni devas rimarki, ke la teamo tar Estas multaj pli utilaj flagoj.

Bash-kaŝnomoj

Bash-kaŝnomoj (ankaŭ nomitaj kaŝnomoj aŭ mallongigoj) estas dizajnitaj por krei mallongigitajn nomojn de komandoj aŭ iliajn sekvencojn, kies uzo anstataŭ regulaj komandoj plirapidigas laboron. Se vi havas kaŝnomon bu, kiu kaŝas la komandon python setup.py sdist bdist_wheel, tiam por voki ĉi tiun komandon, sufiĉas uzi ĉi tiun kaŝnomon.

Por krei tian kaŝnomon, simple aldonu la jenan komandon al la dosiero ~/.bash_profile:

alias bu="python setup.py sdist bdist_wheel"

Se via sistemo ne havas la dosieron ~/.bash_profile, tiam vi povas krei ĝin mem uzante la komandon touch. Post kreado de la kaŝnomo, rekomencu la terminalon, post kio vi povas uzi ĉi tiun kaŝnomon. En ĉi tiu kazo, la enigo de du signoj anstataŭigas la enigon de pli ol tri dekduoj da signoj de la komando, kiu estas destinita por asembleoj Python-pakaĵoj.

В ~/.bash_profile vi povas aldoni kaŝnomojn por iuj ofte uzataj komandoj.

▍Rezultoj

En ĉi tiu afiŝo, ni kovris 21 popularajn Bash-komandojn kaj parolis pri kreado de komandaj kaŝnomoj. Se vi interesiĝas pri ĉi tiu temo - jen serio de publikaĵoj dediĉitaj al Bash. estas Vi povas trovi pdf-version de ĉi tiuj publikaĵoj. Ankaŭ, se vi volas lerni Bash, memoru ke, kiel kun iu ajn alia programa sistemo, praktiko estas ŝlosilo.

Karaj legantoj! Kiajn ordonojn utilas por komencantoj vi aldonus al tiuj, kiuj estis diskutitaj en ĉi tiu artikolo?

Legu ankaŭ en nia blogo serion da publikaĵoj pri bash-skriptoj

[legosignita] Bash por komencantoj: 21 utilaj komandoj

fonto: www.habr.com

Aldoni komenton