[na-bookmark] Bash para sa mga nagsisimula: 21 kapaki-pakinabang na utos

Ang materyal, ang pagsasalin kung saan nai-publish namin ngayon, ay inilaan para sa mga nais na makabisado ang Linux command line. Ang kakayahang gamitin ang tool na ito nang epektibo ay maaaring makatipid ng maraming oras. Sa partikular, pag-uusapan natin ang tungkol sa Bash shell at 21 kapaki-pakinabang na utos dito. Pag-uusapan din natin kung paano gumamit ng mga command flag at Bash alias para mapabilis ang pag-type ng mahabang tagubilin.

[na-bookmark] Bash para sa mga nagsisimula: 21 kapaki-pakinabang na utos

Basahin din sa aming blog ang isang serye ng mga publikasyon tungkol sa mga script ng bash

mga tuntunin

Habang natututo kang gumamit ng command line ng Linux, makakatagpo ka ng maraming konsepto na makakatulong sa pag-navigate. Ang ilan sa mga ito, tulad ng "Linux" at "Unix", o "shell" at "terminal", ay minsan nalilito. Pag-usapan natin ang mga ito at iba pang mahahalagang termino.

Unix ay isang sikat na operating system na binuo ng Bell Labs noong 1970s. Ang kanyang code ay sarado.

Linux ay ang pinakasikat na operating system na katulad ng Unix. Ginagamit na ito ngayon sa maraming device, kabilang ang mga computer.

Pandulo (terminal), o terminal emulator ay isang program na nagbibigay ng access sa operating system. Maaari kang magkaroon ng maraming terminal window na bukas nang sabay-sabay.

Shell (shell) ay isang program na nagbibigay-daan sa iyong magpadala ng mga command na nakasulat sa isang espesyal na wika sa operating system.

Malakas na palo ay nangangahulugang Bourne Again Shell. Ito ang pinakakaraniwang wika ng shell na ginagamit upang makipag-ugnayan sa operating system. Gayundin, ang Bash shell ay ang default sa macOS.

Interface ng linya ng utos (Command Line Interface, CLI) ay isang paraan ng pakikipag-ugnayan sa pagitan ng isang tao at isang computer, kung saan ang gumagamit ay nagpasok ng mga utos mula sa keyboard, at ang computer, na isinasagawa ang mga utos na ito, ay nagpapakita ng mga mensahe sa text form para sa gumagamit. Ang pangunahing paggamit ng CLI ay upang makakuha ng up-to-date na impormasyon tungkol sa ilang partikular na entity, tulad ng mga file, at upang gumana sa mga file. Ang interface ng command line ay dapat na nakikilala mula sa graphical user interface (GUI), na pangunahing gumagamit ng mouse. Ang interface ng command line ay madalas na tinutukoy bilang command line.

Script (script) ay isang maliit na programa na naglalaman ng isang sequence ng shell command. Ang mga script ay isinulat sa mga file, maaari silang gamitin nang paulit-ulit. Kapag nagsusulat ng mga script, maaari kang gumamit ng mga variable, conditional, loop, function, at iba pang feature.

Ngayong nasaklaw na natin ang mahahalagang termino, gusto kong ipahiwatig na gagamitin ko ang mga terminong "Bash", "shell" at "command line" na magkapalit dito, pati na rin ang mga terminong "directory" at "folder".

Standard batis, na gagamitin namin dito ay ang karaniwang input (standard input, stdin), karaniwang output (karaniwang output, stdout) at karaniwang error na output (karaniwang error, stderr).

Kung sa mga halimbawang utos na ibibigay sa ibaba, makikita mo ang isang bagay tulad ng my_whatever - nangangahulugan ito na ang fragment na ito ay kailangang palitan ng isang bagay sa iyo. Halimbawa, ang pangalan ng isang file.

Ngayon, bago magpatuloy sa pagsusuri ng mga utos kung saan nakatuon ang materyal na ito, tingnan natin ang kanilang listahan at ang kanilang maikling paglalarawan.

21 Mga utos ng Bash

▍Pagkuha ng impormasyon

  • man: Ipinapakita ang gabay sa gumagamit (tulong) para sa utos.
  • pwd: nagpapakita ng impormasyon tungkol sa gumaganang direktoryo.
  • ls: ipinapakita ang mga nilalaman ng isang direktoryo.
  • ps: Binibigyang-daan kang tingnan ang impormasyon tungkol sa mga prosesong tumatakbo.

▍Pagmamanipula ng system ng file

  • cd: baguhin ang gumaganang direktoryo.
  • touch: gumawa ng file.
  • mkdir: lumikha ng isang direktoryo.
  • cp: Kumopya ng file.
  • mv: Maglipat o magtanggal ng file.
  • ln: gumawa ng link.

▍I/O redirection at pipelines

  • <: pag-redirect stdin.
  • >: pag-redirect stdout.
  • |: piped ang output ng isang command sa input ng isa pang command.

▍Pagbabasa ng mga file

  • head: basahin ang simula ng file.
  • tail: basahin ang dulo ng file.
  • cat: Basahin ang isang file at i-print ang mga nilalaman nito sa screen, o pagsamahin ang mga file.

▍Pagtanggal ng mga file, paghinto ng mga proseso

  • rm: Magtanggal ng file.
  • kill: itigil ang proseso.

▍Maghanap

  • grep: maghanap ng impormasyon.
  • ag: advanced na utos para sa paghahanap.

▍Pag-archive

  • tar: paglikha ng mga archive at pakikipagtulungan sa kanila.

Pag-usapan natin ang mga utos na ito nang mas detalyado.

Mga Detalye ng Koponan

Upang magsimula, harapin natin ang mga utos, ang mga resulta nito ay ibinibigay sa form stdout. Karaniwang lumilitaw ang mga resultang ito sa isang terminal window.

▍Pagkuha ng impormasyon

man command_name: ipakita ang command guide, ibig sabihin, impormasyon ng tulong.

pwd: ipakita ang landas sa kasalukuyang gumaganang direktoryo. Sa kurso ng pagtatrabaho sa command line, madalas na kailangang malaman ng user kung nasaan siya sa system.

ls: ipakita ang mga nilalaman ng isang direktoryo. Ang utos na ito ay madalas ding ginagamit.

ls -a: Ipakita ang nakatagong dokumento. watawat na inilapat dito -a mga koponan ls. Ang paggamit ng mga flag ay nakakatulong upang i-customize ang pag-uugali ng mga utos.

ls -l: Ipakita ang detalyadong impormasyon tungkol sa mga file.

Tandaan na ang mga flag ay maaaring pagsamahin. Halimbawa - tulad nito: ls -al.

ps: Tingnan ang mga tumatakbong proseso.

ps -e: Ipakita ang impormasyon tungkol sa lahat ng tumatakbong proseso, hindi lamang ang mga nauugnay sa kasalukuyang shell ng gumagamit. Ang utos na ito ay kadalasang ginagamit sa form na ito.

▍Pagmamanipula ng system ng file

cd my_directory: baguhin ang gumaganang direktoryo sa my_directory. Upang umakyat sa isang antas sa puno ng direktoryo, gamitin my_directory kamag-anak na landas ../.

[na-bookmark] Bash para sa mga nagsisimula: 21 kapaki-pakinabang na utos
cd na utos

touch my_file: paglikha ng file my_file kasama ang ibinigay na landas.

mkdir my_directory: gumawa ng folder my_directory kasama ang ibinigay na landas.

mv my_file target_directory: ilipat ang file my_file sa folder target_directory. Kapag tinukoy ang target na direktoryo, kailangan mong gamitin ang ganap na landas dito (at hindi tulad ng isang konstruksyon ../).

pangkat mvmaaari ding gamitin upang palitan ang pangalan ng mga file o folder. Halimbawa, maaaring ganito ang hitsura nito:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: gumawa ng kopya ng isang file my_source_file at ilagay ito sa isang folder target_directory.

ln -s my_source_file my_target_file: lumikha ng simbolikong link my_target_file bawat file my_source_file. Kung babaguhin mo ang link, magbabago rin ang orihinal na file.

Kung ang file my_source_file ay tatanggalin, pagkatapos my_target_file mananatili. Bandila -s mga koponan ln nagpapahintulot sa iyo na lumikha ng mga link para sa mga direktoryo.

Ngayon pag-usapan natin ang tungkol sa pag-redirect ng I/O at mga pipeline.

▍I/O redirection at pipelines

my_command < my_file: pinapalitan ang karaniwang input file descriptor (stdin) bawat file my_file. Maaari itong maging kapaki-pakinabang kung ang command ay naghihintay ng ilang input mula sa keyboard, at ang data na ito ay nai-save na sa isang file.

my_command > my_file: nire-redirect ang mga resulta ng command, ibig sabihin, kung ano ang karaniwang papasok stdout at output sa screen, sa isang file my_file. Kung ang file my_file ay hindi umiiral - ito ay nilikha. Kung ang file ay umiiral, ito ay mapapatungan.

Halimbawa, pagkatapos isagawa ang utos ls > my_folder_contents.txt lilikha ng isang text file na naglalaman ng isang listahan ng kung ano ang nasa kasalukuyang gumaganang direktoryo.

Kung sa halip na simbolo > gamitin ang konstruksiyon >>, kung gayon, sa kondisyon na ang file kung saan ang output ng command ay na-redirect ay umiiral, ang file na ito ay hindi ma-overwrite. Ang data ay idaragdag sa dulo ng file na ito.

Ngayon tingnan natin ang pagproseso ng pipeline ng data.

[na-bookmark] Bash para sa mga nagsisimula: 21 kapaki-pakinabang na utos
Ang output ng isang command ay ipinapasok sa input ng isa pang command. Ito ay tulad ng pagkonekta ng isang tubo sa isa pa

first_command | second_command: simbolo ng conveyor, |, ay ginagamit upang ipadala ang output ng isang command sa isa pang command. Kung ano ang ipinapadala ng command sa kaliwang bahagi ng inilarawang istraktura stdout, Nahulog sa stdin utos sa kanan ng simbolo ng pipeline.

Sa Linux, maaaring i-pipeline ang data gamit ang halos anumang maayos na command. Madalas sinasabi na ang lahat ng bagay sa Linux ay pipeline.

Maaari mong i-chain ang maraming command gamit ang simbolo ng pipeline. Mukhang ganito:

first_command | second_command | third_command

[na-bookmark] Bash para sa mga nagsisimula: 21 kapaki-pakinabang na utos
Ang isang pipeline ng ilang mga command ay maihahambing sa isang pipeline

Tandaan na kapag ang utos sa kaliwa ng simbolo |, naglalabas ng isang bagay sa stdout, kung ano ang kanyang output ay magagamit kaagad bilang stdin pangalawang pangkat. Iyon ay, lumalabas na, gamit ang pipeline, nakikitungo tayo sa parallel na pagpapatupad ng mga utos. Minsan ito ay maaaring humantong sa hindi inaasahang resulta. Mababasa ang mga detalye tungkol dito dito.

Ngayon ay pag-usapan natin ang tungkol sa pagbabasa ng data mula sa mga file at pagpapakita ng mga ito sa screen.

▍Pagbabasa ng mga file

head my_file: nagbabasa ng mga linya mula sa simula ng isang file at ini-print ang mga ito sa screen. Mababasa mo hindi lamang ang mga nilalaman ng mga file, kundi pati na rin kung ano ang output ng mga utos stdingamit ang command na ito bilang bahagi ng pipeline.

tail my_file: nagbabasa ng mga linya mula sa dulo ng file. Ang command na ito ay maaari ding gamitin sa isang pipeline.

[na-bookmark] Bash para sa mga nagsisimula: 21 kapaki-pakinabang na utos
Ang ulo (ulo) ay nasa harap, at ang buntot (buntot) ay nasa likod

Kung nagtatrabaho ka sa data gamit ang pandas library, pagkatapos ay ang mga command head и tail dapat pamilyar sa iyo. Kung hindi ito ang kaso, tingnan ang figure sa itaas, at madali mong maaalala ang mga ito.

Isaalang-alang ang iba pang mga paraan upang basahin ang mga file, pag-usapan natin ang utos cat.

Koponan cat alinman sa pagpi-print ng mga nilalaman ng isang file sa screen, o pagsasama-sama ng maramihang mga file. Depende ito sa kung gaano karaming mga file ang ipinasa sa command na ito kapag tinawag.

[na-bookmark] Bash para sa mga nagsisimula: 21 kapaki-pakinabang na utos
utos ng pusa

cat my_one_file.txt: kapag ang isang file ay ipinasa sa command na ito, ito ay naglalabas nito sa stdout.

Kung bibigyan mo ito ng dalawang file o higit pang mga file, iba ang kilos nito.

cat my_file1.txt my_file2.txt: na nakatanggap ng ilang mga file bilang input, ang utos na ito ay pinagsama ang kanilang mga nilalaman at ipinapakita kung ano ang nangyari sa stdout.

Kung ang resulta ng pagsasama-sama ng file ay kailangang i-save bilang isang bagong file, maaari mong gamitin ang operator >:

cat my_file1.txt my_file2.txt > my_new_file.txt

Ngayon ay pag-usapan natin kung paano magtanggal ng mga file at huminto sa mga proseso.

▍Pagtanggal ng mga file, paghinto ng mga proseso

rm my_file: burahin ang file my_file.

rm -r my_folder: nagtatanggal ng folder my_folder at lahat ng mga file at folder na nilalaman nito. Bandila -r ay nagpapahiwatig na ang command ay tatakbo sa recursive mode.

Upang pigilan ang system sa paghingi ng kumpirmasyon sa tuwing tatanggalin ang isang file o folder, gamitin ang bandila -f.

kill 012345: Pinipigilan ang tinukoy na proseso ng pagpapatakbo, na nagbibigay ng oras upang maayos na isara.

kill -9 012345: Sapilitang tinatapos ang tinukoy na proseso ng pagpapatakbo. Tingnan ang Bandila -s SIGKILL pareho ang ibig sabihin ng watawat -9.

▍Maghanap

Maaari kang gumamit ng iba't ibang mga command upang maghanap ng data. Sa partikular - grep, ag и ack. Simulan natin ang ating pagkilala sa mga utos na ito sa grep. Ito ay isang nasubok sa oras, maaasahang utos, na, gayunpaman, ay mas mabagal kaysa sa iba at hindi maginhawang gamitin gaya ng mga ito.

[na-bookmark] Bash para sa mga nagsisimula: 21 kapaki-pakinabang na utos
utos ng grep

grep my_regex my_file: paghahanap my_regex в my_file. Kung may nakitang tugma, ibabalik ang buong string, para sa bawat tugma. Default my_regex itinuturing bilang isang regular na expression.

grep -i my_regex my_file: Ang paghahanap ay isinasagawa sa isang case-insensitive na paraan.

grep -v my_regex my_file: ibinabalik ang lahat ng row na hindi naglalaman my_regex. Bandila -v ibig sabihin inversion, ito ay kahawig ng operator NOT, na matatagpuan sa maraming programming language.

grep -c my_regex my_file: Nagbabalik ng impormasyon tungkol sa bilang ng mga tugma na natagpuan sa file para sa pattern ng paghahanap.

grep -R my_regex my_folder: nagsasagawa ng recursive na paghahanap sa lahat ng mga file na matatagpuan sa tinukoy na folder at sa mga folder na naka-nest dito.

Ngayon pag-usapan natin ang koponan ag. Dumating siya mamaya grep, ito ay mas mabilis, ito ay mas maginhawa upang gumana dito.

[na-bookmark] Bash para sa mga nagsisimula: 21 kapaki-pakinabang na utos
ag utos

ag my_regex my_file: nagbabalik ng impormasyon tungkol sa mga numero ng linya, at ang mga linya mismo, kung saan natagpuan ang mga tugma my_regex.

ag -i my_regex my_file: Ang paghahanap ay isinasagawa sa isang case-insensitive na paraan.

Koponan ag awtomatikong iproseso ang file .gitignore at hindi kasama sa output ang makikita sa mga folder o file na nakalista sa file na iyon. Ito ay napaka komportable.

ag my_regex my_file -- skip-vcs-ignores: mga nilalaman ng awtomatikong bersyon ng control file (tulad ng .gitignore) ay hindi isinasaalang-alang sa paghahanap.

Bilang karagdagan, upang sabihin sa koponan ag sa kung aling mga path ng file ang gusto mong ibukod mula sa paghahanap, maaari kang lumikha ng isang file .agignore.

Sa simula ng seksyong ito, binanggit namin ang utos ack. Mga koponan ack и ag halos magkatulad, maaari nating sabihin na sila ay 99% mapagpapalit. Gayunpaman, ang koponan ag gumagana nang mas mabilis, kaya't inilarawan ko ito.

Ngayon ay pag-usapan natin ang tungkol sa pagtatrabaho sa mga archive.

▍Pag-archive

tar my_source_directory: pinagsasama-sama ang mga file mula sa isang folder my_source_directory sa isang solong tarball file. Ang ganitong mga file ay kapaki-pakinabang para sa paglilipat ng malalaking hanay ng mga file sa isang tao.

[na-bookmark] Bash para sa mga nagsisimula: 21 kapaki-pakinabang na utos
utos ng tar

Ang mga tarball file na nabuo ng command na ito ay mga file na may extension .tar (Tape ARchive). Ang katotohanan na ang salitang "tape" (tape) ay nakatago sa pangalan ng command at sa extension ng mga pangalan ng mga file na nilikha nito ay nagpapahiwatig kung gaano katagal umiral ang command na ito.

tar -cf my_file.tar my_source_directory: lumilikha ng tarball file na pinangalanan my_file.tar na may mga nilalaman ng folder my_source_directory. Bandila -c ay nangangahulugang "lumikha" (paglikha), at ang watawat -f bilang "file" (file).

Upang kunin ang mga file mula sa .tar-file, gamitin ang command tar may mga watawat -x ("extract", bunutan) at -f ("file", file).

tar -xf my_file.tar: kinukuha ang mga file mula sa my_file.tar sa kasalukuyang gumaganang direktoryo.

Ngayon ay pag-usapan natin kung paano mag-compress at mag-decompress .tar-mga file.

tar -cfz my_file.tar.gz my_source_directory: dito gamit ang watawat -z ("zip", compression algorithm) ay nagpapahiwatig na ang algorithm ay dapat gamitin upang i-compress ang mga file gzip (GNUzip). Ang file compression ay nakakatipid ng puwang sa disk kapag nag-iimbak ng mga naturang file. Kung ang mga file ay binalak, halimbawa, na ilipat sa ibang mga user, ito ay nag-aambag sa mas mabilis na pag-download ng mga naturang file.

I-unzip ang file .tar.gz maaari kang magdagdag ng bandila -z sa utos ng nilalaman ng extract .tar-files, na tinalakay namin sa itaas. Mukhang ganito:

tar -xfz my_file.tar.gz
Dapat tandaan na ang koponan tar Marami pang kapaki-pakinabang na mga flag.

Bash alias

Ang mga Bash alias (tinatawag ding mga alias o abbreviation) ay idinisenyo upang lumikha ng mga pinaikling pangalan ng mga utos o mga pagkakasunud-sunod ng mga ito, ang paggamit nito sa halip na mga regular na utos ay nagpapabilis sa trabaho. Kung may alyas ka bu, na nagtatago ng utos python setup.py sdist bdist_wheel, pagkatapos ay upang tawagan ang utos na ito, sapat na upang gamitin ang alyas na ito.

Upang lumikha ng naturang alias, idagdag lamang ang sumusunod na command sa file ~/.bash_profile:

alias bu="python setup.py sdist bdist_wheel"

Kung ang iyong system ay walang file ~/.bash_profile, pagkatapos ay maaari mo itong likhain gamit ang utos touch. Pagkatapos gumawa ng alias, i-restart ang terminal, pagkatapos nito ay magagamit mo ang alias na ito. Sa kasong ito, pinapalitan ng input ng dalawang character ang input ng higit sa tatlong dosenang character ng command, na nilayon para sa pagtitipon Mga pakete ng Python.

В ~/.bash_profile maaari kang magdagdag ng mga alias para sa anumang madalas na ginagamit na mga utos.

▍Mga resulta

Sa post na ito, sinaklaw namin ang 21 sikat na Bash command at pinag-usapan ang paggawa ng mga command alias. Kung interesado ka sa paksang ito - dito isang serye ng mga publikasyon na nakatuon sa Bash. Dito Makakahanap ka ng pdf na bersyon ng mga publikasyong ito. Gayundin, kung gusto mong matuto ng Bash, tandaan na, tulad ng anumang iba pang sistema ng programming, ang pagsasanay ay susi.

Minamahal na mambabasa! Anong mga utos na kapaki-pakinabang para sa mga nagsisimula ang idaragdag mo sa mga tinalakay sa artikulong ito?

Basahin din sa aming blog ang isang serye ng mga publikasyon tungkol sa mga script ng bash

[na-bookmark] Bash para sa mga nagsisimula: 21 kapaki-pakinabang na utos

Pinagmulan: www.habr.com

Magdagdag ng komento