[marke] Bash pou débutan: 21 kòmandman itil

Materyèl la, tradiksyon an ke nou pibliye jodi a, se fèt pou moun ki vle metrize liy lan lòd Linux. Kapasite nan sèvi ak zouti sa a efektivman ka ekonomize anpil tan. An patikilye, nou pral pale sou koki a Bash ak 21 kòmandman itil isit la. Nou pral pale tou sou fason pou itilize drapo kòmand ak alyas Bash pou akselere sezisman enstriksyon long yo.

[marke] Bash pou débutan: 21 kòmandman itil

Li tou nan blog nou an yon seri piblikasyon sou scripts bash

Tèm yo

Pandan w ap aprann travay ak liy kòmand Linux la, w ap rankontre anpil konsèp ki itil pou navige. Kèk nan yo, tankou "Linux" ak "Unix", oswa "koki" ak "tèminal", yo pafwa konfonn. Ann pale sou sa yo ak lòt tèm enpòtan.

UNIX se yon sistèm opere popilè ki te devlope pa Bell Labs nan ane 1970 yo. Kòd li te fèmen.

Linux se sistèm operasyon ki pi popilè tankou Unix. Li se kounye a itilize sou anpil aparèy, ki gen ladan òdinatè.

Tèminal (tèminal), oswa tèminal Emulator se yon pwogram ki bay aksè nan sistèm operasyon an. Ou ka gen plizyè fenèt tèminal louvri an menm tan.

Shell (koki) se yon pwogram ki pèmèt ou voye kòmandman ekri nan yon lang espesyal nan sistèm operasyon an.

Bach kanpe pou Bourne Again Shell. Li se lang koki ki pi komen yo itilize pou kominike avèk sistèm operasyon an. Epitou, koki Bash la se default sou macOS.

Koòdone liy kòmand (Command Line Interface, CLI) se yon metòd entèraksyon ant yon moun ak yon òdinatè, lè w ap itilize ki itilizatè a antre kòmandman nan klavye a, ak òdinatè a, egzekite kòmandman sa yo, montre mesaj nan fòm tèks pou itilizatè a. CLI a sitou itilize pou jwenn enfòmasyon ajou sou sèten antite, pou egzanp, sou dosye, ak travay avèk dosye. Koòdone nan liy lòd yo ta dwe distenge ak koòdone itilizatè grafik (GUI), ki prensipalman itilize sourit la. Se koòdone nan liy lòd souvan refere yo tou senpleman kòm liy lan lòd.

Script (script) se yon ti pwogram ki gen yon sekans kòmandman kokiy. Scripts yo ekri nan dosye, yo ka itilize repete. Lè w ap ekri scripts, ou ka itilize varyab, kondisyonèl, bouk, fonksyon, ak lòt karakteristik.

Kounye a ke nou te kouvri tèm enpòtan yo, mwen vle fè remake ke mwen pral itilize tèm yo "Bash", "koki" ak "liy kòmand" interchangeablement isit la, osi byen ke tèm yo "anyè" ak "dosye".

Creole kouran, ke nou pral itilize isit la se opinyon estanda a (entrée estanda, stdin), pwodiksyon estanda (pwodiksyon estanda, stdout) ak pwodiksyon erè estanda (erè estanda, stderr).

Si nan egzanp kòmandman ki pral bay anba a, w ap jwenn yon bagay tankou my_whatever - sa vle di ke fragman sa a bezwen ranplase ak yon bagay nan ou. Pou egzanp, non an nan yon dosye.

Koulye a, anvan ou kontinye ak analiz la nan kòmandman yo ke materyèl sa a dedye a, an n pran yon gade nan lis yo ak deskripsyon kout yo.

21 Bash kòmandman

▍Jwenn enfòmasyon

  • man: Montre gid itilizatè a (èd) pou kòmandman an.
  • pwd: montre enfòmasyon sou anyè k ap travay la.
  • ls: montre sa ki nan yon anyè.
  • ps: Pèmèt ou wè enfòmasyon sou pwosesis kouri yo.

▍Fichye sistèm manipilasyon

  • cd: chanje anyè k ap travay.
  • touch: kreye yon fichye.
  • mkdir: kreye yon anyè.
  • cp: Kopi yon fichye.
  • mv: Deplase oswa efase yon fichye.
  • ln: kreye yon lyen.

▍I/O redireksyon ak tiyo

  • <: redireksyon stdin.
  • >: redireksyon stdout.
  • |: kanalize pwodiksyon an nan yon kòmand nan opinyon an nan yon lòt kòmand.

▍Li dosye

  • head: li kòmansman fichye a.
  • tail: li fen fichye a.
  • cat: Li yon fichye epi enprime sa li sou ekran an, oswa konkatene fichye yo.

▍Efase fichye yo, sispann pwosesis yo

  • rm: Efase yon fichye.
  • kill: sispann pwosesis la.

▍Rechèch

  • grep: chèche enfòmasyon.
  • ag: kòmandman avanse pou rechèch.

▍Achiv

  • tar: kreye achiv ak travay avèk yo.

Ann pale sou kòmandman sa yo an plis detay.

Detay Ekip la

Pou kòmanse, se pou nou fè fas ak kòmandman yo, rezilta yo ki bay nan fòm lan stdout. Anjeneral rezilta sa yo parèt nan yon fenèt tèminal.

▍Jwenn enfòmasyon

man command_name: montre gid lòd la, sa vle di enfòmasyon èd.

pwd: montre chemen an nan anyè k ap travay aktyèl la. Nan kou a nan travay ak liy lan lòd, itilizatè a souvan bezwen chèche konnen egzakteman ki kote nan sistèm nan li ye.

ls: montre sa ki nan yon anyè. Kòmand sa a tou itilize byen souvan.

ls -a: montre dosye kache yo. drapo aplike isit la -a kòmandman ls. Itilizasyon drapo ede pèsonalize konpòtman kòmandman yo.

ls -l: Montre enfòmasyon detaye sou dosye yo.

Remake byen ke drapo yo ka konbine. Pou egzanp - tankou sa a: ls -al.

ps: Gade pwosesis k ap kouri yo.

ps -e: Montre enfòmasyon sou tout pwosesis k ap kouri, pa sèlman sa ki asosye ak koki itilizatè aktyèl la. Kòmand sa a souvan itilize nan fòm sa a.

▍Fichye sistèm manipilasyon

cd my_directory: chanje anyè k ap travay nan my_directory. Pou monte yon nivo nan pyebwa anyè a, sèvi ak my_directory chemen relatif ../.

[marke] Bash pou débutan: 21 kòmandman itil
lòd cd

touch my_file: kreyasyon fichye my_file sou chemen yo bay la.

mkdir my_directory: kreye yon katab my_directory sou chemen yo bay la.

mv my_file target_directory: deplase dosye my_file nan katab target_directory. Lè w presize anyè sib la, ou bezwen sèvi ak chemen absoli pou li (epi pa yon konstriksyon tankou ../).

ekip mvka itilize tou pou chanje non dosye oswa dosye. Pou egzanp, li ta ka sanble tankou sa a:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: kreye yon kopi yon dosye my_source_file epi mete l nan yon katab target_directory.

ln -s my_source_file my_target_file: kreye yon lyen senbolik my_target_file pou chak dosye my_source_file. Si ou chanje lyen an, dosye orijinal la ap chanje tou.

Si fichye a my_source_file pral efase, lè sa a my_target_file ap rete. Drapo -s kòmandman ln pèmèt ou kreye lyen pou anyè.

Koulye a, ann pale sou I/O redireksyon ak tuyaux.

▍I/O redireksyon ak tiyo

my_command < my_file: ranplase deskriptè fichye antre estanda (stdin) pou chak dosye my_file. Sa a ka itil si kòmandman an ap tann kèk opinyon soti nan klavye a, epi done sa yo deja sove nan yon dosye.

my_command > my_file: redireksyon rezilta yo nan lòd la, sa vle di sa ki ta nòmalman antre nan stdout ak pwodiksyon nan ekran an, nan yon dosye my_file. Si fichye a my_file pa egziste - li se kreye. Si fichye a egziste, li ranplase.

Pou egzanp, apre yo fin egzekite lòd la ls > my_folder_contents.txt yo pral kreye yon dosye tèks ki gen yon lis sa ki nan anyè k ap travay aktyèl la.

Si olye de senbòl la > sèvi ak konstriksyon an >>, Lè sa a, depi ke fichye a kote pwodiksyon an nan lòd la redireksyon egziste, dosye sa a pa pral ranplase. Done yo pral ajoute nan fen dosye sa a.

Koulye a, kite a pran yon gade nan pwosesis tiyo done.

[marke] Bash pou débutan: 21 kòmandman itil
Pwodiksyon yon kòmandman antre nan opinyon yon lòt kòmandman. Se tankou konekte yon tiyo ak yon lòt

first_command | second_command: senbòl transporteur, |, yo itilize pou voye pwodiksyon yon kòmand bay yon lòt lòd. Ki sa kòmandman ki sou bò gòch estrikti ki dekri a voye bay stdout, Tonbe nan stdin kòmand adwat senbòl tiyo a.

Sou Linux, done yo ka pipeline itilize jis sou nenpòt kòmand byen fòme. Li souvan di ke tout bagay nan Linux se yon tiyo.

Ou ka chenn plizyè kòmandman lè l sèvi avèk senbòl tiyo a. Li sanble sa a:

first_command | second_command | third_command

[marke] Bash pou débutan: 21 kòmandman itil
Yon tiyo nan plizyè kòmandman ka konpare ak yon tiyo

Remake byen ke lè kòmandman an sou bò gòch senbòl la |, sorties yon bagay pou stdout, sa li sorties imedyatman disponib kòm stdin dezyèm ekip. Sa vle di, li sanble ke, lè l sèvi avèk tiyo a, nou ap fè fas ak ekzekisyon paralèl nan kòmandman. Pafwa sa ka mennen nan rezilta inatandi. Detay sou sa a ka li isit la.

Koulye a, kite a pale sou lekti done ki soti nan dosye ak montre yo sou ekran an.

▍Li dosye

head my_file: li liy depi nan konmansman an nan yon dosye epi enprime yo sou ekran an. Ou ka li pa sèlman sa ki nan dosye yo, men tou, sa ki kòmandman yo pwodiksyon an stdinlè l sèvi avèk kòmandman sa a kòm yon pati nan tiyo a.

tail my_file: li liy ki soti nan fen dosye a. Kòmand sa a kapab tou itilize nan yon tiyo.

[marke] Bash pou débutan: 21 kòmandman itil
Tèt (tèt) se devan, ak ke (ke) dèyè

Si w ap travay ak done lè l sèvi avèk bibliyotèk la panda, Lè sa a, kòmandman yo head и tail ta dwe abitye pou ou. Si sa a se pa ka a, pran yon gade nan figi ki anwo a, epi ou pral fasil sonje yo.

Konsidere lòt fason pou li fichye yo, ann pale sou kòmandman an cat.

Ekip cat swa enprime sa ki nan yon fichye sou ekran an, oswa konkatene plizyè fichye. Sa depann de konbyen dosye yo pase nan lòd sa a lè yo rele.

[marke] Bash pou débutan: 21 kòmandman itil
lòd chat

cat my_one_file.txt: lè yo pase yon sèl fichye bay lòd sa a, li bay li stdout.

Si ou ba li de dosye oswa plis dosye, Lè sa a, li konpòte li yon fason diferan.

cat my_file1.txt my_file2.txt: li te resevwa plizyè fichye kòm opinyon, kòmandman sa a konkate sa yo epi montre sa ki te pase nan stdout.

Si rezilta a nan konkatènasyon dosye bezwen yo dwe sove kòm yon nouvo dosye, ou ka itilize operatè a >:

cat my_file1.txt my_file2.txt > my_new_file.txt

Koulye a, kite a pale sou ki jan yo efase dosye ak sispann pwosesis.

▍Efase fichye yo, sispann pwosesis yo

rm my_file: efase fichye a my_file.

rm -r my_folder: efase yon katab my_folder ak tout dosye yo ak dosye li genyen. Drapo -r endike ke lòd la pral kouri nan mòd rekursif.

Pou anpeche sistèm nan mande konfimasyon chak fwa yo efase yon dosye oswa yon katab, sèvi ak drapo a -f.

kill 012345: Sispann pwosesis kouri espesifye a, bay li tan pou fèmen avèk gras.

kill -9 012345: Fòse mete fen nan pwosesis la espesifye kouri. Gade drapo -s SIGKILL vle di menm jan ak drapo a -9.

▍Rechèch

Ou ka itilize kòmandman diferan pou chèche done. An patikilye - grep, ag и ack. Ann kòmanse konesans nou ak kòmandman sa yo ak grep. Sa a se yon tan-teste, kòmand serye, ki, sepandan, se pi dousman pase lòt moun epi yo pa kòm pratik yo itilize jan yo ye.

[marke] Bash pou débutan: 21 kòmandman itil
grep kòmand

grep my_regex my_file: rechèch my_regex в my_file. Si yo jwenn yon match, tout fisèl la retounen, pou chak match. Default my_regex trete kòm yon ekspresyon regilye.

grep -i my_regex my_file: Rechèch la fèt nan yon fason ki pa sansib.

grep -v my_regex my_file: retounen tout ranje ki pa genyen my_regex. Drapo -v vle di envèrsyon, li sanble ak operatè a NOT, yo jwenn nan anpil lang pwogramasyon.

grep -c my_regex my_file: Li retounen enfòmasyon sou kantite alimèt yo jwenn nan fichye a pou modèl rechèch la.

grep -R my_regex my_folder: fè yon rechèch recursive nan tout dosye ki sitiye nan katab la espesifye ak nan dosye yo enbrike ladan l.

Koulye a, ann pale sou ekip la ag. Li te vini pita grep, li pi vit, li pi pratik pou travay avèk li.

[marke] Bash pou débutan: 21 kòmandman itil
ag kòmandman

ag my_regex my_file: retounen enfòmasyon sou nimewo liy yo, ak liy yo tèt yo, kote yo te jwenn alimèt my_regex.

ag -i my_regex my_file: Rechèch la fèt nan yon fason ki pa sansib.

Ekip ag otomatikman trete dosye a .gitignore ak ekskli nan pwodiksyon an sa yo jwenn nan dosye yo oswa dosye ki nan lis nan dosye sa a. Li trè konfòtab.

ag my_regex my_file -- skip-vcs-ignores: sa ki nan dosye kontwòl vèsyon otomatik yo (tankou .gitignore) pa pran an konsiderasyon nan rechèch la.

Anplis de sa, yo nan lòd yo di ekip la ag sou ki chemen dosye ou vle eskli nan rechèch la, ou ka kreye yon dosye .agignore.

Nan kòmansman seksyon sa a, nou te mansyone kòmandman an ack. Ekip yo ack и ag trè menm jan an, nou ka di ke yo se 99% ka ranplase. Sepandan, ekip la ag travay pi vit, se poutèt sa mwen te dekri li.

Koulye a, ann pale sou travay ak achiv yo.

▍Achiv

tar my_source_directory: konkaten fichye ki soti nan yon katab my_source_directory nan yon sèl dosye tarball. Fichye sa yo itil pou transfere gwo seri dosye bay yon moun.

[marke] Bash pou débutan: 21 kòmandman itil
kòmand goudwon

Fichye tarball yo ki te pwodwi pa lòd sa a se dosye ki gen ekstansyon an .tar (Kasèt Achiv). Lefèt ke mo "tape" (adezif) kache nan non kòmandman an ak nan ekstansyon non dosye li kreye yo endike konbyen tan kòmandman sa a egziste.

tar -cf my_file.tar my_source_directory: kreye yon dosye tarball yo te rele my_file.tar ak sa ki katab my_source_directory. Drapo -c vle di "kreyasyon" (kreyasyon), ak drapo a -f kòm "fichye" (fichye).

Pou ekstrè fichye soti nan .tar-file, sèvi ak lòd la tar ak drapo -x ("extrait", ekstraksyon) ak -f ("dosye", dosye).

tar -xf my_file.tar: ekstrè fichye soti nan my_file.tar nan anyè travay aktyèl la.

Koulye a, kite a pale sou ki jan yo konpresyon ak dekonpresyon .tar-fichye.

tar -cfz my_file.tar.gz my_source_directory: isit la lè l sèvi avèk drapo a -z ("zip", algorithm konpresyon) endike ke yo ta dwe itilize algorithm pou konpresyon fichye yo gzip (GNuzip). Konpresyon dosye sove espas ki gen kapasite lè yo estoke dosye sa yo. Si yo planifye dosye yo, pou egzanp, yo dwe transfere nan lòt itilizatè, sa a kontribye nan pi vit telechaje dosye sa yo.

Dekonprime fichye a .tar.gz ou ka ajoute yon drapo -z nan lòd la kontni ekstrè .tar-fichye, ke nou te diskite pi wo a. Li sanble sa a:

tar -xfz my_file.tar.gz
Li ta dwe remake ke ekip la tar Gen anpil plis drapo itil.

Bash alyas

Bash alyas (yo rele tou alyas oswa abrevyasyon) yo fèt pou kreye non abreje kòmandman oswa sekans yo, itilizasyon ki olye pou yo kòmandman regilye akselere travay. Si ou gen yon alyas bu, ki kache kòmandman an python setup.py sdist bdist_wheel, Lè sa a, yo rele lòd sa a, li se ase yo sèvi ak sa a alyas.

Pou kreye yon alyas konsa, jis ajoute lòd sa a nan dosye a ~/.bash_profile:

alias bu="python setup.py sdist bdist_wheel"

Si sistèm ou a pa gen fichye a ~/.bash_profile, Lè sa a, ou ka kreye li tèt ou lè l sèvi avèk lòd la touch. Apre ou fin kreye alyas la, rekòmanse tèminal la, apre sa ou ka itilize alyas sa a. Nan ka sa a, opinyon de karaktè ranplase opinyon plis pase twa douzèn karaktè nan lòd la, ki gen entansyon pou asanble yo Pakè Python.

В ~/.bash_profile ou ka ajoute alyas pou nenpòt kòmandman itilize souvan.

▍Rezilta yo

Nan pòs sa a, nou te kouvri 21 kòmandman Bash popilè ak te pale sou kreye alyas kòmand. Si w enterese nan sijè sa a - isit la yon seri piblikasyon dedye a Bash. Isit la Ou ka jwenn yon vèsyon pdf piblikasyon sa yo. Epitou, si ou vle aprann Bash, sonje ke, menm jan ak nenpòt lòt sistèm pwogramasyon, pratik se kle.

Chè lektè! Ki kòmandman ki itil pou débutan ou ta ajoute nan sa yo te diskite nan atik sa a?

Li tou nan blog nou an yon seri piblikasyon sou scripts bash

[marke] Bash pou débutan: 21 kòmandman itil

Sous: www.habr.com

Add nouvo kòmantè