[immarkat] Bash għall-jibdew: 21 kmandi utli

Il-materjal, li t-traduzzjoni tiegħu nippubblikaw illum, huwa maħsub għal dawk li jixtiequ jegħlbu l-linja tal-kmand tal-Linux. Il-ħila li tuża din l-għodda b'mod effettiv tista 'tiffranka ħafna ħin. B'mod partikolari, se nitkellmu dwar il-qoxra Bash u 21 kmandi utli hawn. Aħna ser nitkellmu wkoll dwar kif tuża bnadar tal-kmand u psewdonimi Bash biex tħaffef l-ittajpjar ta 'struzzjonijiet twal.

[immarkat] Bash għall-jibdew: 21 kmandi utli

Aqra wkoll fil-blog tagħna sensiela ta' pubblikazzjonijiet dwar skripts bash

Termini

Hekk kif titgħallem taħdem mal-linja tal-kmand tal-Linux, se tiltaqa 'ma' ħafna kunċetti li huma ta' għajnuna biex tinnaviga. Xi wħud minnhom, bħal "Linux" u "Unix", jew "qoxra" u "terminal", xi drabi huma konfużi. Ejja nitkellmu dwar dawn u termini importanti oħra.

Unix hija sistema operattiva popolari li ġiet żviluppata minn Bell Labs fis-snin sebgħin. Il-kodiċi tagħha kien magħluq.

Linux hija l-aktar sistema operattiva popolari bħal Unix. Issa jintuża fuq ħafna apparati, inklużi kompjuters.

Terminal (terminal), jew terminal emulator huwa programm li jagħti aċċess għas-sistema operattiva. Jista 'jkollok twieqi terminali multipli miftuħa fl-istess ħin.

Qoxra (shell) huwa programm li jippermettilek li tibgħat kmandi miktuba f'lingwa speċjali lis-sistema operattiva.

Bash stands għal Bourne Again Shell. Hija l-aktar lingwa tal-qoxra komuni użata biex jinteraġixxu mas-sistema operattiva. Ukoll, il-qoxra ta 'Bash hija d-default fuq macOS.

Interface tal-linja tal-kmand (Command Line Interface, CLI) huwa metodu ta 'interazzjoni bejn persuna u kompjuter, li permezz tiegħu l-utent idaħħal kmandi mit-tastiera, u l-kompjuter, billi tesegwixxi dawn il-kmandi, juri messaġġi f'forma ta' test għall-utent. L-użu ewlieni tas-CLI huwa li tikseb informazzjoni aġġornata dwar ċerti entitajiet, bħal fajls, u biex taħdem ma 'fajls. L-interface tal-linja tal-kmand għandha tkun distinta mill-interface tal-utent grafika (GUI), li primarjament juża l-maws. L-interface tal-linja tal-kmand spiss tissejjaħ sempliċement bħala l-linja tal-kmand.

Iskript (kitba) huwa programm żgħir li fih sekwenza ta 'kmandi tal-qoxra. L-iskripts huma miktuba fil-fajls, jistgħu jintużaw ripetutament. Meta tikteb skripts, tista 'tuża varjabbli, kondizzjonali, loops, funzjonijiet, u karatteristiċi oħra.

Issa li koprejna t-termini importanti, irrid nirrimarka li jien ser nuża t-termini "Bash", "qoxra" u "linja tal-kmand" b'mod interkambjabbli hawn, kif ukoll it-termini "direttorju" u "folder".

Standard flussi, li se nużaw hawnhekk huwa l-input standard (input standard, stdin), output standard (output standard, stdout) u output ta’ żball standard (żball standard, stderr).

Jekk fl-eżempju kmandi li se jingħataw hawn taħt, issib xi ħaġa simili my_whatever - dan ifisser li dan il-framment jeħtieġ li jiġi sostitwit b'xi ħaġa tiegħek. Per eżempju, l-isem ta 'fajl.

Issa, qabel ma tipproċedi bl-analiżi tal-kmandi li dan il-materjal huwa ddedikat għalihom, ejja nagħtu ħarsa lejn il-lista tagħhom u d-deskrizzjonijiet qosra tagħhom.

21 Kmandi Bash

▍Ksib ta' informazzjoni

  • man: Juri l-gwida għall-utent (għajnuna) għall-kmand.
  • pwd: juri informazzjoni dwar id-direttorju tax-xogħol.
  • ls: juri l-kontenut ta' direttorju.
  • ps: Jippermettilek tara informazzjoni dwar proċessi li qed jaħdmu.

▍Manipulazzjoni tas-sistema tal-fajls

  • cd: tibdel id-direttorju tax-xogħol.
  • touch: toħloq fajl.
  • mkdir: toħloq direttorju.
  • cp: Ikkopja fajl.
  • mv: Ċaqlaq jew ħassar fajl.
  • ln: oħloq link.

▍I/O ridirezzjoni u pipelines

  • <: direzzjoni mill-ġdid stdin.
  • >: direzzjoni mill-ġdid stdout.
  • |: wassal l-output ta 'kmand wieħed għall-input ta' kmand ieħor.

▍Qari tal-fajls

  • head: aqra l-bidu tal-fajl.
  • tail: aqra t-tmiem tal-fajl.
  • cat: Aqra fajl u tipprintja l-kontenut tiegħu fuq l-iskrin, jew ikkonkatena fajls.

▍Tħassir ta 'fajls, twaqqaf il-proċessi

  • rm: Ħassar fajl.
  • kill: waqqaf il-proċess.

▍Fittex

  • grep: fittex informazzjoni.
  • ag: kmand avvanzat għat-tiftix.

▍Arkivjar

  • tar: toħloq arkivji u taħdem magħhom.

Ejja nitkellmu dwar dawn il-kmandi f'aktar dettall.

Dettalji tat-Tim

Biex tibda, ejja nittrattaw il-kmandi, li r-riżultati tagħhom jinħarġu fil-forma stdout. Normalment dawn ir-riżultati jidhru f'tieqa terminali.

▍Ksib ta' informazzjoni

man command_name: uri l-gwida tal-kmand, jiġifieri informazzjoni ta’ għajnuna.

pwd: turi l-mogħdija għad-direttorju tax-xogħol kurrenti. Fil-kors tal-ħidma mal-linja tal-kmand, l-utent ħafna drabi jeħtieġ li jiskopri eżattament fejn fis-sistema hu.

ls: turi l-kontenut ta' direttorju. Dan il-kmand jintuża wkoll spiss.

ls -a: uri fajls moħbija. bandiera applikata hawn -a timijiet ls. L-użu tal-bnadar jgħin biex tippersonalizza l-imġiba tal-kmandi.

ls -l: Uri informazzjoni dettaljata dwar il-fajls.

Innota li l-bnadar jistgħu jingħaqdu. Per eżempju - bħal dan: ls -al.

ps: Ara l-proċessi li qed jaħdmu.

ps -e: Uri informazzjoni dwar il-proċessi kollha li qed jaħdmu, mhux biss dawk assoċjati mal-qoxra tal-utent attwali. Dan il-kmand huwa spiss użat f'din il-forma.

▍Manipulazzjoni tas-sistema tal-fajls

cd my_directory: ibdel id-direttorju tax-xogħol għal my_directory. Biex titla 'livell wieħed fis-siġra tad-direttorju, uża my_directory mogħdija relattiva ../.

[immarkat] Bash għall-jibdew: 21 kmandi utli
kmand cd

touch my_file: ħolqien ta' fajls my_file tul it-triq mogħtija.

mkdir my_directory: toħloq folder my_directory tul it-triq mogħtija.

mv my_file target_directory: ċaqlaq il-fajl my_file għal folder target_directory. Meta tispeċifika d-direttorju fil-mira, trid tuża t-triq assoluta lejha (u mhux kostruzzjoni bħal ../).

tim mvjista 'jintuża wkoll biex tibdel l-isem ta' fajls jew folders. Per eżempju, jista 'jidher bħal dan:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: toħloq kopja ta' fajl my_source_file u poġġih f'folder target_directory.

ln -s my_source_file my_target_file: toħloq rabta simbolika my_target_file għal kull fajl my_source_file. Jekk tibdel il-link, il-fajl oriġinali jinbidel ukoll.

Jekk il-fajl my_source_file se titħassar, imbagħad my_target_file se jibqa’. Bandiera -s timijiet ln jippermettilek toħloq links għal direttorji.

Issa ejja nitkellmu dwar I/O redirection u pipelines.

▍I/O ridirezzjoni u pipelines

my_command < my_file: jissostitwixxi d-deskrittur standard tal-fajl tal-input (stdin) għal kull fajl my_file. Dan jista 'jkun utli jekk il-kmand ikun qed jistenna xi input mit-tastiera, u din id-data hija diġà ssejvjata f'fajl.

my_command > my_file: jidderieġi mill-ġdid ir-riżultati tal-kmand, jiġifieri dak li normalment jidħol fih stdout u output għall-iskrin, għal fajl my_file. Jekk il-fajl my_file ma teżistix - hija maħluqa. Jekk il-fajl jeżisti, jinkiteb fuqu.

Per eżempju, wara li tesegwixxi l-kmand ls > my_folder_contents.txt se jinħoloq fajl ta' test li jkun fih lista ta' dak li hemm fid-direttorju tax-xogħol kurrenti.

Jekk minflok is-simbolu > uża l-kostruzzjoni >>, imbagħad, sakemm il-fajl li lejh jiġi ridirett l-output tal-kmand jeżisti, dan il-fajl mhux se jinkiteb fuqu. Id-data se tiżdied fl-aħħar ta 'dan il-fajl.

Issa ejja nagħtu ħarsa lejn l-ipproċessar tal-pipeline tad-dejta.

[immarkat] Bash għall-jibdew: 21 kmandi utli
L-output ta 'kmand wieħed jiddaħħal fid-dħul ta' kmand ieħor. Huwa bħall-konnessjoni ta 'pajp ma' ieħor

first_command | second_command: simbolu tal-conveyor, |, jintuża biex jibgħat l-output ta 'kmand wieħed għal kmand ieħor. Dak li jibgħat il-kmand fuq in-naħa tax-xellug tal-istruttura deskritta stdout, Waqgħa fi stdin kmand fuq il-lemin tas-simbolu tal-pipeline.

Fuq Linux, id-data tista 'tiġi pipelined bl-użu ta' kważi kull kmand iffurmat tajjeb. Ħafna drabi jingħad li kollox fil-Linux huwa pipeline.

Tista' tikkatina diversi kmandi billi tuża s-simbolu tal-pipeline. Jidher bħal dan:

first_command | second_command | third_command

[immarkat] Bash għall-jibdew: 21 kmandi utli
Pipeline ta 'diversi kmandi jistgħu jitqabblu ma' pipeline

Innota li meta l-kmand fuq ix-xellug tas-simbolu |, joħroġ xi ħaġa għal stdout, dak li hi outputs huwa immedjatament disponibbli bħala stdin it-tieni tim. Jiġifieri, jirriżulta li, bl-użu tal-pipeline, qed nittrattaw eżekuzzjoni parallela ta 'kmandi. Xi drabi dan jista 'jwassal għal riżultati mhux mistennija. Dettalji dwar dan jistgħu jinqraw hawn.

Issa ejja nitkellmu dwar il-qari tad-dejta mill-fajls u l-wiri tagħhom fuq l-iskrin.

▍Qari tal-fajls

head my_file: jaqra linji mill-bidu ta' fajl u jistampahom fuq l-iskrin. Tista 'taqra mhux biss il-kontenut tal-fajls, iżda wkoll dak li jikkmanda joħroġ fih stdintuża dan il-kmand bħala parti mill-pipeline.

tail my_file: jaqra linji mill-aħħar tal-fajl. Dan il-kmand jista 'jintuża wkoll f'pipeline.

[immarkat] Bash għall-jibdew: 21 kmandi utli
Ir-ras (ras) hija quddiem, u d-denb (denb) hija wara

Jekk qed taħdem mad-dejta billi tuża l-librerija tal-pandas, allura l-kmandi head и tail għandu jkun familjari għalik. Jekk dan mhux il-każ, agħti ħarsa lejn il-figura ta 'hawn fuq, u faċilment tiftakarhom.

Ikkunsidra modi oħra biex taqra l-fajls, ejja nitkellmu dwar il-kmand cat.

Team cat jew jistampa l-kontenut ta' fajl fuq l-iskrin, jew jikkonkatena fajls multipli. Jiddependi minn kemm fajls jiġu mgħoddija lil dan il-kmand meta tissejjaħ.

[immarkat] Bash għall-jibdew: 21 kmandi utli
kmand tal-qtates

cat my_one_file.txt: meta fajl wieħed jiġi mgħoddi lil dan il-kmand, joħroġha lil stdout.

Jekk tagħtiha żewġ fajls jew aktar fajls, allura jġib ruħu b'mod differenti.

cat my_file1.txt my_file2.txt: wara li rċieva diversi fajls bħala input, dan il-kmand jgħaqqad il-kontenut tagħhom u juri dak li ġara fih stdout.

Jekk ir-riżultat tal-konkatenazzjoni tal-fajls jeħtieġ li jiġi ffrankat bħala fajl ġdid, tista 'tuża l-operatur >:

cat my_file1.txt my_file2.txt > my_new_file.txt

Issa ejja nitkellmu dwar kif tħassar fajls u twaqqaf il-proċessi.

▍Tħassir ta 'fajls, twaqqaf il-proċessi

rm my_file: ħassar il-fajl my_file.

rm -r my_folder: iħassar folder my_folder u l-fajls u l-folders kollha li fih. Bandiera -r jindika li l-kmand se jaħdem fil-mod rikorsiv.

Biex tevita li s-sistema titlob konferma kull darba li jitħassar fajl jew folder, uża l-bandiera -f.

kill 012345: Twaqqaf il-proċess tat-tħaddim speċifikat, u jagħtih iż-żmien biex jagħlaq bil-grazzja.

kill -9 012345: Ittemm bil-forza l-proċess tat-tħaddim speċifikat. Ara l-bandiera -s SIGKILL tfisser l-istess bħall-bandiera -9.

▍Fittex

Tista 'tuża kmandi differenti biex tfittex dejta. Partikolarment - grep, ag и ack. Ejja nibdew il-familjarità tagħna ma 'dawn il-kmandi ma' grep. Dan huwa kmand affidabbli u ttestjat fil-ħin, li, madankollu, huwa aktar bil-mod minn oħrajn u mhux konvenjenti biex jintuża daqs kemm huma.

[immarkat] Bash għall-jibdew: 21 kmandi utli
kmand grep

grep my_regex my_file: tfittxijiet my_regex в my_file. Jekk tinstab taqbila, is-sekwenza kollha tiġi rritornata, għal kull taqbila. Default my_regex trattat bħala espressjoni regolari.

grep -i my_regex my_file: It-tfittxija ssir b'mod insensittiv għall-każ.

grep -v my_regex my_file: jirritorna r-ringieli kollha li ma fihomx my_regex. Bandiera -v tfisser inverżjoni, tixbah lill-operatur NOT, misjuba f'ħafna lingwi ta' programmar.

grep -c my_regex my_file: Jirritorna informazzjoni dwar in-numru ta' logħbiet għall-mudell imfittex misjub fil-fajl.

grep -R my_regex my_folder: iwettaq tfittxija rikorsisiva fil-fajls kollha li jinsabu fil-folder speċifikat u fil-folders imniżżla fih.

Issa ejja nitkellmu dwar it-tim ag. Hija ġiet aktar tard grep, huwa aktar mgħaġġel, huwa aktar konvenjenti li taħdem magħha.

[immarkat] Bash għall-jibdew: 21 kmandi utli
kmand ag

ag my_regex my_file: jirritorna informazzjoni dwar in-numri tal-linji, u l-linji nfushom, li fihom instabu taqbiliet magħhom my_regex.

ag -i my_regex my_file: It-tfittxija ssir b'mod insensittiv għall-każ.

Team ag awtomatikament jipproċessa l-fajl .gitignore u teskludi mill-output dak li jinstab fil-folders jew fajls elenkati f'dak il-fajl. Huwa komdu ħafna.

ag my_regex my_file -- skip-vcs-ignores: kontenut ta' fajls ta' kontroll awtomatiku tal-verżjoni (bħal .gitignore) ma titqiesx fit-tfittxija.

Barra minn hekk, sabiex tgħid lit-tim ag fuq liema mogħdijiet tal-fajls trid teskludi mit-tfittxija, tista 'toħloq fajl .agignore.

Fil-bidu ta 'din it-taqsima, semmejna l-kmand ack. Timijiet ack и ag simili ħafna, nistgħu ngħidu li huma 99% interkambjabbli. Madankollu, it-tim ag jaħdem aktar malajr, hu għalhekk li ddeskrivejtha.

Issa ejja nitkellmu dwar il-ħidma mal-arkivji.

▍Arkivjar

tar my_source_directory: jikkonkatena fajls minn folder my_source_directory f'fajl tarball wieħed. Fajls bħal dawn huma utli għat-trasferiment ta 'settijiet kbar ta' fajls lil xi ħadd.

[immarkat] Bash għall-jibdew: 21 kmandi utli
kmand tal-qatran

Il-fajls tarball iġġenerati minn dan il-kmand huma fajls bl-estensjoni .tar (Arkivju tat-tejp). Il-fatt li l-kelma "tape" (tejp) hija moħbija fl-isem tal-kmand u fl-estensjoni tal-ismijiet tal-fajls li toħloq jindika kemm ilu jeżisti dan il-kmand.

tar -cf my_file.tar my_source_directory: joħloq fajl tarball jismu my_file.tar bil-kontenut tal-folder my_source_directory. Bandiera -c stands għal "create" (ħolqien), u l-bandiera -f bħala "fajl" (fajl).

Biex estratti fajls minn .tar-file, uża l-kmand tar bil-bnadar -x ("estratt", estrazzjoni) u -f ("fajl", fajl).

tar -xf my_file.tar: estratti fajls minn my_file.tar għad-direttorju tax-xogħol attwali.

Issa ejja nitkellmu dwar kif tikkompressa u dekompressa .tar-fajls.

tar -cfz my_file.tar.gz my_source_directory: hawn bl-użu tal-bandiera -z ("zip", algoritmu ta 'kompressjoni) jindika li l-algoritmu għandu jintuża biex jikkompressa fajls gzip (GNuzip). Il-kompressjoni tal-fajls tiffranka l-ispazju tad-diska meta taħżen fajls bħal dawn. Jekk il-fajls huma ppjanati, pereżempju, li jiġu trasferiti lil utenti oħra, dan jikkontribwixxi għal tniżżil aktar mgħaġġel ta 'dawn il-fajls.

Unzip fajl .tar.gz tista 'żżid bandiera -z għall-kmand tal-kontenut tal-estratt .tar-fajls, li ddiskutejna hawn fuq. Jidher bħal dan:

tar -xfz my_file.tar.gz
Ta’ min jinnota li t-tim tar Hemm ħafna aktar bnadar utli.

Bash psewdonimi

Psewdonimi Bash (imsejħa wkoll psewdonimi jew abbrevjazzjonijiet) huma mfassla biex joħolqu ismijiet imqassra ta 'kmandi jew is-sekwenzi tagħhom, li l-użu tagħhom minflok kmandi regolari jħaffef ix-xogħol. Jekk għandek alias bu, li jaħbi l-kmand python setup.py sdist bdist_wheel, imbagħad biex isejjaħ dan il-kmand, huwa biżżejjed li tuża dan l-alias.

Biex toħloq tali alias, żid il-kmand li ġej mal-fajl ~/.bash_profile:

alias bu="python setup.py sdist bdist_wheel"

Jekk is-sistema tiegħek m'għandhiex il-fajl ~/.bash_profile, allura tista 'toħloq lilek innifsek billi tuża l-kmand touch. Wara li toħloq l-alias, terġa 'tibda t-terminal, u wara tista' tuża dan l-alias. F'dan il-każ, id-dħul ta 'żewġ karattri jissostitwixxi l-input ta' aktar minn tliet tużżana karattri tal-kmand, li huwa maħsub għal assemblaġġi Pakketti Python.

В ~/.bash_profile tista 'żżid psewdonimi għal kwalunkwe kmandi użati ta' spiss.

▍Riżultati

F'din il-kariga, koprejna 21 kmand popolari Bash u tkellimna dwar il-ħolqien ta' psewdonimi tal-kmand. Jekk inti interessat f'dan is-suġġett - hawn sensiela ta’ pubblikazzjonijiet iddedikati lil Bash. Hawnhekk Tista' ssib verżjoni pdf ta' dawn il-pubblikazzjonijiet. Ukoll, jekk trid titgħallem Bash, ftakar li, bħal kull sistema oħra ta 'programmazzjoni, il-prattika hija essenzjali.

Għeżież qarrejja! Liema kmandi li huma utli għal dawk li jibdew iżżid ma' dawk li ġew diskussi f'dan l-artikolu?

Aqra wkoll fil-blog tagħna sensiela ta' pubblikazzjonijiet dwar skripts bash

[immarkat] Bash għall-jibdew: 21 kmandi utli

Sors: www.habr.com

Żid kumment