MateriÄls, ko mÄs Å”odien publicÄjam, ir paredzÄts tiem, kas vÄlas apgÅ«t komandrindas lietoÅ”anu. LinuxZinot, kÄ efektÄ«vi izmantot Å”o rÄ«ku, var ietaupÄ«t daudz laika. KonkrÄti, Å”ajÄ rakstÄ tiks apskatÄ«ta Bash komandu Äaula un 21 noderÄ«ga komanda. MÄs arÄ« apspriedÄ«sim, kÄ izmantot komandu karodziÅus un Bash aizstÄjvÄrdus, kas var paÄtrinÄt garu instrukciju ievadīŔanu.
ā
Noteikumi
MÄcoties strÄdÄt komandrindÄ Linux JÅ«s varat sastapties ar daudziem jÄdzieniem, kas bÅ«s noderÄ«gi, lai tos pÄrskatÄ«tu. Daži no tiem, piemÄram, āLinux" un "Unix" vai "komandshÄma" un "terminÄlis" dažreiz tiek jaukti. ApspriedÄ«sim Å”os un citus svarÄ«gus terminus.
ir populÄra operÄtÄjsistÄma, ko 1970. gados izstrÄdÄja Bell Labs. ViÅas kods tika aizvÄrts.
ir vispopulÄrÄkÄ Unix lÄ«dzÄ«ga operÄtÄjsistÄma. Tagad to izmanto daudzÄs ierÄ«cÄs, tostarp datoros.
(terminÄlis) vai terminÄļa emulators ir programma, kas nodroÅ”ina piekļuvi operÄtÄjsistÄmai. Vienlaikus var atvÄrt vairÄkus terminÄļa logus.
(shell) ir programma, kas ļauj nosÅ«tÄ«t operÄtÄjsistÄmai komandas, kas rakstÄ«tas Ä«paÅ”Ä valodÄ.
apzÄ«mÄ Bourne Again SHell. TÄ ir visizplatÄ«tÄkÄ komandu apvalka valoda, ko izmanto mijiedarbÄ«bai ar operÄtÄjsistÄmu. TurklÄt Bash apvalks ir noklusÄjuma apvalks, ko izmanto macOS.
(Command Line Interface, CLI) ir mijiedarbÄ«bas metode starp personu un datoru, ar kuras palÄ«dzÄ«bu lietotÄjs ievada komandas no tastatÅ«ras, un dators, izpildot Ŕīs komandas, lietotÄjam parÄda ziÅojumus teksta formÄ. Galvenais CLI lietojums ir iegÅ«t jaunÄko informÄciju par noteiktÄm entÄ«tijÄm, piemÄram, failiem, un strÄdÄt ar failiem. Komandrindas saskarne ir jÄnoŔķir no grafiskÄ lietotÄja interfeisa (GUI), kurÄ galvenokÄrt tiek izmantota pele. Komandrindas saskarni bieži sauc vienkÄrÅ”i par komandrindu.
(skripts) ir neliela programma, kas satur Äaulas komandu secÄ«bu. Skripti tiek ierakstÄ«ti failos, tos var izmantot atkÄrtoti. Rakstot skriptus, varat izmantot mainÄ«gos, nosacÄ«jumus, cilpas, funkcijas un citus lÄ«dzekļus.
Tagad, kad esam apskatÄ«juÅ”i svarÄ«gos terminus, es vÄlos norÄdÄ«t, ka terminus "Bash", "shell" un "komandrinda" Å”eit izmantoÅ”u aizvietojami, kÄ arÄ« terminus "direktorijs" un "mape".
Standarta , ko mÄs Å”eit izmantosim, ir standarta ievade (standarta ievade, stdin), standarta izvade (standarta izvade, stdout) un standarta kļūdu izvade (standarta kļūda, stderr).
Ja piemÄrÄ komandas, kas tiks sniegtas zemÄk, jÅ«s atradÄ«sit kaut ko lÄ«dzÄ«gu my_whatever - tas nozÄ«mÄ, ka Å”is fragments ir jÄaizstÄj ar kaut ko no jÅ«su. PiemÄram, faila nosaukums.
Tagad, pirms turpinÄt to komandu analÄ«zi, kurÄm Å”is materiÄls ir veltÄ«ts, apskatÄ«sim to sarakstu un Ä«sus aprakstus.
21 Bash komandas
āInformÄcijas iegūŔana
man: parÄda komandas lietotÄja rokasgrÄmatu (palÄ«dzÄ«bu).pwd: parÄda informÄciju par darba direktoriju.ls: parÄda direktorijas saturu.ps: ļauj skatÄ«t informÄciju par notiekoÅ”ajiem procesiem.
āFailu sistÄmas manipulÄcijas
cd: mainÄ«t darba direktoriju.touch: izveidot failu.mkdir: izveidot direktoriju.cp: kopÄt failu.mv: pÄrvietojiet vai dzÄsiet failu.ln: izveidot saiti.
āI/O novirzīŔana un cauruļvadi
<: novirzītstdin.>: novirzītstdout.|: novadīja vienas komandas izvadi uz citas komandas ievadi.
āFailu lasīŔana
head: izlasiet faila sÄkumu.tail: lasÄ«t faila beigas.cat: lasiet failu un izdrukÄjiet tÄ saturu ekrÄnÄ vai savienojiet failus.
āDzÄÅ” failus, aptur procesus
rm: dzÄst failu.kill: pÄrtrauciet procesu.
ā MeklÄt
grep: meklÄt informÄciju.ag: uzlabota meklÄÅ”anas komanda.
āArhivÄÅ”ana
tar: arhīvu izveide un darbs ar tiem.
ParunÄsim par Ŕīm komandÄm sÄ«kÄk.
Komandas informÄcija
SÄkumÄ tiksim galÄ ar komandÄm, kuru rezultÄti tiek izdoti formÄ stdout. Parasti Å”ie rezultÄti tiek parÄdÄ«ti terminÄļa logÄ.
āInformÄcijas iegūŔana
man command_name: parÄdÄ«t komandu rokasgrÄmatu, t.i., palÄ«dzÄ«bas informÄciju.
pwd: parÄda ceļu uz paÅ”reizÄjo darba direktoriju. StrÄdÄjot ar komandrindu, lietotÄjam bieži ir jÄnoskaidro, kur tieÅ”i viÅÅ” atrodas.
ls: parÄda direktorija saturu. ArÄ« Ŕī komanda tiek izmantota diezgan bieži.
ls -a: parÄdÄ«t slÄptos failus. Å”eit lietots karogs -a komandÄm ls. Karogu izmantoÅ”ana palÄ«dz pielÄgot komandu darbÄ«bu.
ls -l: parÄda detalizÄtu informÄciju par failiem.
Å
emiet vÄrÄ, ka karogus var apvienot. PiemÄram - Å”Ädi: ls -al.
ps: skatiet darbojoŔos procesus.
ps -e: parÄda informÄciju par visiem darbojoÅ”ajiem procesiem, ne tikai tiem, kas saistÄ«ti ar paÅ”reizÄjo lietotÄja Äaulu. Å Ä« komanda bieži tiek izmantota Å”ajÄ formÄ.
āFailu sistÄmas manipulÄcijas
cd my_directory: mainÄ«t darba direktoriju uz my_directory. Lai direktoriju kokÄ pÄrvietotos vienu lÄ«meni uz augÅ”u, izmantojiet my_directory relatÄ«vais ceļŔ ../.
![[atzÄ«mÄts] Bash iesÄcÄjiem: 21 noderÄ«ga komanda](/wp-content/uploads/2019/03/91815e5212c9dfec88a76bc2ab37955f.png)
cd komanda
touch my_file: failu izveide my_file pa norÄdÄ«to ceļu.
mkdir my_directory: izveidojiet mapi my_directory pa norÄdÄ«to ceļu.
mv my_file target_directory: pÄrvietot failu my_file uz mapi target_directory. NorÄdot mÄrÄ·a direktoriju, jums ir jÄizmanto absolÅ«tais ceļŔ uz to (nevis konstrukcija, piemÄram, ../).
komanda mvvar izmantot arÄ« failu vai mapju pÄrdÄvÄÅ”anai. PiemÄram, tas varÄtu izskatÄ«ties Å”Ädi:
mv my_old_file_name.jpg my_new_file_name.jpg: izveido faila kopiju
cp my_source_file target_directorymy_source_file un ievietojiet to mapÄ target_directory.
ln -s my_source_file my_target_file: izveidojiet simbolisku saiti my_target_file par failu my_source_file. Ja mainÄ«sit saiti, mainÄ«sies arÄ« sÄkotnÄjais fails.
Ja fails my_source_file tiks dzÄsts my_target_file paliks. Karogs -s komandÄm ln ļauj izveidot saites uz direktorijiem.
Tagad parunÄsim par I/O novirzīŔanu un cauruļvadiem.
āI/O novirzīŔana un cauruļvadi
my_command < my_file: aizstÄj standarta ievades faila deskriptoru (stdin) katram failam my_file. Tas var bÅ«t noderÄ«gi, ja komanda gaida kÄdu ievadi no tastatÅ«ras un Å”ie dati jau ir saglabÄti failÄ.
my_command > my_file: novirza komandas rezultÄtus, t.i., uz to, kas parasti nonÄktu stdout un izvadÄ«t uz ekrÄnu, failÄ my_file. Ja fails my_file neeksistÄ - tas ir radÄ«ts. Ja fails pastÄv, tas tiek pÄrrakstÄ«ts.
PiemÄram, pÄc komandas izpildīŔanas ls > my_folder_contents.txt tiks izveidots teksta fails, kurÄ bÅ«s saraksts ar to, kas atrodas paÅ”reizÄjÄ darba direktorijÄ.
Ja simbola vietÄ > izmantot konstrukciju >>, tad, ja fails, uz kuru tiek novirzÄ«ta komandas izvade, pastÄv, Å”is fails netiks pÄrrakstÄ«ts. Dati tiks pievienoti Ŕī faila beigÄs.
Tagad apskatÄ«sim datu konveijera apstrÄdi.
![[atzÄ«mÄts] Bash iesÄcÄjiem: 21 noderÄ«ga komanda](/wp-content/uploads/2019/03/dcc4e500b247cb13adb4d64c36c24f88.png)
Vienas komandas izvade tiek ievadÄ«ta citas komandas ievadÄ. Tas ir tÄpat kÄ vienas caurules savienoÅ”ana ar otru
first_command | second_command: konveijera simbols, |, tiek izmantots, lai nosÅ«tÄ«tu vienas komandas izvadi citai komandai. Uz ko sÅ«ta aprakstÄ«tÄs struktÅ«ras kreisajÄ pusÄ esoÅ”Ä komanda stdout, Iekrist stdin komanda pa labi no cauruļvada simbola.
Š Linux Cauruļvada datu apstrÄdi var organizÄt, izmantojot gandrÄ«z jebkuru pareizi uzrakstÄ«tu komandu. Bieži tiek teikts, ka viss, kas atrodas Linux - Å”is ir konveijers.
Varat Ä·ÄdÄ«t vairÄkas komandas, izmantojot konveijera simbolu. Tas izskatÄs Å”Ädi:
first_command | second_command | third_command ![[atzÄ«mÄts] Bash iesÄcÄjiem: 21 noderÄ«ga komanda](/wp-content/uploads/2019/03/1d94b3f04846ef40c072299877c55b1f.png)
VairÄku komandu konveijeru var salÄ«dzinÄt ar konveijeru
Å
emiet vÄrÄ, ka komanda pa kreisi no simbola |, izvada kaut ko stdout, tas, ko viÅa izdod, ir uzreiz pieejams kÄ stdin otrÄ komanda. Tas ir, izrÄdÄs, ka, izmantojot konveijeru, mums ir darīŔana ar komandu paralÄlu izpildi. Dažreiz tas var novest pie negaidÄ«tiem rezultÄtiem. SÄ«kÄku informÄciju par to var lasÄ«t .
Tagad parunÄsim par datu nolasīŔanu no failiem un to parÄdīŔanu ekrÄnÄ.
āFailu lasīŔana
head my_file: nolasa rindiÅas no faila sÄkuma un izdrukÄ tÄs uz ekrÄna. JÅ«s varat lasÄ«t ne tikai failu saturu, bet arÄ« to, ko komandas izvada stdinizmantojot Å”o komandu kÄ cauruļvada daļu.
tail my_file: nolasa rindas no faila beigÄm. Å o komandu var izmantot arÄ« konveijerÄ.
![[atzÄ«mÄts] Bash iesÄcÄjiem: 21 noderÄ«ga komanda](/wp-content/uploads/2019/03/0dd6e0353a1b5995d4a1228ae2550ad9.png)
Galva (galva) ir priekÅ”Ä, un aste (aste) ir aizmugurÄ
Ja strÄdÄjat ar datiem, izmantojot pandas bibliotÄku, tad komandas head Šø tail jums vajadzÄtu bÅ«t pazÄ«stamam. Ja tas tÄ nav, apskatiet iepriekÅ” minÄto attÄlu, un jÅ«s tos viegli atcerÄsities.
Apsveriet citus veidus, kÄ lasÄ«t failus, parunÄsim par komandu cat.
Komanda cat vai nu izdrukÄ faila saturu ekrÄnÄ, vai saliek vairÄkus failus. Tas ir atkarÄ«gs no tÄ, cik failu tiek nosÅ«tÄ«ts Å”ai komandai, kad tÄ tiek izsaukta.
![[atzÄ«mÄts] Bash iesÄcÄjiem: 21 noderÄ«ga komanda](/wp-content/uploads/2019/03/708bea2f5d31e1623e9fd80ff5b576af.png)
kaÄ·a komanda
cat my_one_file.txt: kad Å”ai komandai tiek nodots viens fails, tÄ to izvada uz stdout.
Ja pieŔķirat divus vai vairÄk failus, tas darbojas citÄdi.
cat my_file1.txt my_file2.txt: saÅemot vairÄkus failus kÄ ievadi, Ŕī komanda savieno to saturu un parÄda to, kas notika stdout.
Ja failu savienoÅ”anas rezultÄts ir jÄsaglabÄ kÄ jauns fails, varat izmantot operatoru >:
cat my_file1.txt my_file2.txt > my_new_file.txtTagad parunÄsim par to, kÄ izdzÄst failus un apturÄt procesus.
āDzÄÅ” failus, aptur procesus
rm my_file: izdzÄst failu my_file.
rm -r my_folder: izdzÄÅ” mapi my_folder un visus tajÄ esoÅ”os failus un mapes. Karogs -r norÄda, ka komanda darbosies rekursÄ«vÄ režīmÄ.
Lai sistÄma neprasÄ«tu apstiprinÄjumu katru reizi, kad fails vai mape tiek dzÄsta, izmantojiet karodziÅu -f.
kill 012345: aptur norÄdÄ«to darbÄ«bas procesu, dodot tam laiku graciozi izslÄgties.
kill -9 012345: piespiedu kÄrtÄ pÄrtrauc norÄdÄ«to darbÄ«bas procesu. SkatÄ«t karogu -s SIGKILL nozÄ«mÄ to paÅ”u, ko karogs -9.
ā MeklÄt
Datu meklÄÅ”anai varat izmantot dažÄdas komandas. It Ä«paÅ”i - grep, ag Šø ack. SÄksim savu iepazīŔanos ar Ŕīm komandÄm ar grep. Å Ä« ir laika pÄrbaudÄ«ta, uzticama komanda, kas tomÄr ir lÄnÄka nekÄ citas un nav tik Ärti lietojama kÄ tÄs.
![[atzÄ«mÄts] Bash iesÄcÄjiem: 21 noderÄ«ga komanda](/wp-content/uploads/2019/03/bc02403dbbd0109f0dfd595eccf239c7.png)
grep komanda
grep my_regex my_file: meklÄ my_regex в my_file. Ja tiek atrasta atbilstÄ«ba, katrai atbilstÄ«bai tiek atgriezta visa virkne. NoklusÄjums my_regex tiek uzskatÄ«ta par regulÄru izteiksmi.
grep -i my_regex my_file: meklÄÅ”ana tiek veikta, neÅemot vÄrÄ reÄ£istrjutÄ«gumu.
grep -v my_regex my_file: atgriež visas rindas, kas nesatur my_regex. Karogs -v nozÄ«mÄ inversiju, tas atgÄdina operatoru NOT, kas atrodams daudzÄs programmÄÅ”anas valodÄs.
grep -c my_regex my_file: atgriež informÄciju par failÄ atrastÄ meklÄtÄ raksta atbilstÄ«bu skaitu.
grep -R my_regex my_folder: veic rekursÄ«vu meklÄÅ”anu visos failos, kas atrodas norÄdÄ«tajÄ mapÄ un tajÄ ligzdotajÄs mapÄs.
Tagad parunÄsim par komandu ag. ViÅa ieradÄs vÄlÄk grep, tas ir ÄtrÄk, ar to ir ÄrtÄk strÄdÄt.
![[atzÄ«mÄts] Bash iesÄcÄjiem: 21 noderÄ«ga komanda](/wp-content/uploads/2019/03/f0eeb1d38a1e9c22a8463858753dedb5.png)
ag komanda
ag my_regex my_file: atgriež informÄciju par rindu numuriem un paÅ”Äm rindÄm, kurÄs tika atrastas atbilstÄ«bas ar my_regex.
ag -i my_regex my_file: meklÄÅ”ana tiek veikta, neÅemot vÄrÄ reÄ£istrjutÄ«gumu.
Komanda ag automÄtiski apstrÄdÄ failu .gitignore un no izvades izslÄdz to, kas ir atrodams Å”ajÄ failÄ norÄdÄ«tajÄs mapÄs vai failos. Tas ir ļoti Ärti.
ag my_regex my_file -- skip-vcs-ignores: automÄtisko versiju kontroles failu saturs (piemÄram .gitignore) meklÄÅ”anÄ netiek Åemts vÄrÄ.
TurklÄt, lai pateiktu komandai ag uz kuriem faila ceļiem vÄlaties izslÄgt no meklÄÅ”anas, varat izveidot failu .agignore.
Å Ä«s sadaļas sÄkumÄ mÄs minÄjÄm komandu ack. Komandas ack Šø ag ļoti lÄ«dzÄ«gi, mÄs varam teikt, ka tie ir 99% savstarpÄji aizstÄjami. TomÄr komanda ag darbojas ÄtrÄk, tÄpÄc es to aprakstÄ«ju.
Tagad parunÄsim par darbu ar arhÄ«viem.
āArhivÄÅ”ana
tar my_source_directory: savieno failus no mapes my_source_directory vienÄ tarball failÄ. Å Ädi faili ir noderÄ«gi, lai kÄdam pÄrsÅ«tÄ«tu lielas failu kopas.
![[atzÄ«mÄts] Bash iesÄcÄjiem: 21 noderÄ«ga komanda](/wp-content/uploads/2019/03/4531ef1d4084af608fcbe91964a6710b.png)
darvas komanda
Å Ä«s komandas Ä£enerÄtie tarbola faili ir faili ar paplaÅ”inÄjumu .tar (lenÅ”u arhÄ«vs). Tas, ka komandas nosaukumÄ un tÄs izveidoto failu nosaukumu paplaÅ”inÄjumos ir paslÄpts vÄrds "lente" (lente), norÄda, cik ilgi Ŕī komanda pastÄv.
tar -cf my_file.tar my_source_directory: izveido tarball failu ar nosaukumu my_file.tar ar mapes saturu my_source_directory. Karogs -c apzÄ«mÄ "radÄ«t" (radÄ«t) un karogu -f kÄ "fails" (fails).
Lai izvilktu failus no .tar-failu, izmantojiet komandu tar ar karogiem -x ("ekstrakts", ekstrakcija) un -f ("fails", fails).
tar -xf my_file.tar: izvelk failus no my_file.tar uz paÅ”reizÄjo darba direktoriju.
Tagad parunÄsim par to, kÄ saspiest un atspiest .tar- faili.
tar -cfz my_file.tar.gz my_source_directory: Å”eit, izmantojot karogu -z ("zip", saspieÅ”anas algoritms) norÄda, ka algoritms jÄizmanto failu saspieÅ”anai gzip (GNUzip). Failu saspieÅ”ana ietaupa vietu diskÄ, saglabÄjot Å”Ädus failus. Ja failus plÄno, piemÄram, pÄrsÅ«tÄ«t citiem lietotÄjiem, tas veicina Å”Ädu failu ÄtrÄku lejupielÄdi.
Izpakojiet failu .tar.gz jÅ«s varat pievienot karogu -z uz satura ekstrakta komandu .tar- faili, par kuriem mÄs runÄjÄm iepriekÅ”. Tas izskatÄs Å”Ädi:
tar -xfz my_file.tar.gz
JÄpiebilst, ka komanda tar Ir daudz vairÄk noderÄ«gu karogu.
Bash aizstÄjvÄrdi
Bash aizstÄjvÄrdi (saukti arÄ« par aizstÄjvÄrdiem vai saÄ«sinÄjumiem) ir paredzÄti, lai izveidotu saÄ«sinÄtus komandu nosaukumus vai to secÄ«bas, kuru lietoÅ”ana parasto komandu vietÄ paÄtrina darbu. Ja jums ir pseidonÄ«ms bu, kas slÄpj komandu python setup.py sdist bdist_wheel, tad, lai izsauktu Å”o komandu, pietiek ar Å”o aizstÄjvÄrdu.
Lai izveidotu Å”Ädu aizstÄjvÄrdu, vienkÄrÅ”i pievienojiet failam Å”Ädu komandu ~/.bash_profile:
alias bu="python setup.py sdist bdist_wheel" Ja jÅ«su sistÄmai nav faila ~/.bash_profile, tad varat to izveidot pats, izmantojot komandu touch. PÄc aizstÄjvÄrda izveides restartÄjiet terminÄli, pÄc tam varat izmantot Å”o aizstÄjvÄrdu. Å ajÄ gadÄ«jumÄ divu rakstzÄ«mju ievade aizstÄj vairÄk nekÄ trÄ«s desmitu komandas rakstzÄ«mju ievadi, kas paredzÄta Python pakotnes.
Š ~/.bash_profile varat pievienot aizstÄjvÄrdus visÄm bieži lietotajÄm komandÄm.
āRezultÄti
Å ajÄ ziÅÄ mÄs esam apskatÄ«juÅ”i 21 populÄru Bash komandu un runÄjuÅ”i par komandu aizstÄjvÄrdu izveidi. Ja jÅ«s interesÄ Å”Ä« tÄma - publikÄciju sÄrija, kas veltÄ«ta BaÅ”am. JÅ«s varat atrast Å”o publikÄciju pdf versiju. TurklÄt, ja vÄlaties apgÅ«t BaÅ”u, atcerieties, ka, tÄpat kÄ jebkurai citai programmÄÅ”anas sistÄmai, prakse ir svarÄ«ga.
CienÄ«jamie lasÄ«tÄji! KÄdas komandas, kas ir noderÄ«gas iesÄcÄjiem, jÅ«s pievienotu tÄm, kas tika apspriestas Å”ajÄ rakstÄ?
ā
Avots: www.habr.com
