MateriÄls, kura tulkojumu Å”odien publicÄjam, ir paredzÄts tiem, kas vÄlas apgÅ«t Linux komandrindu. SpÄja efektÄ«vi izmantot Å”o rÄ«ku var ietaupÄ«t daudz laika. Jo Ä«paÅ”i mÄs Å”eit runÄsim par Bash apvalku un 21 noderÄ«gu komandu. MÄs arÄ« runÄsim par to, kÄ izmantot komandu karogus un Bash aizstÄjvÄrdus, lai paÄtrinÄtu garu instrukciju rakstÄ«Å”anu.
ā
Noteikumi
MÄcoties strÄdÄt ar Linux komandrindu, jÅ«s saskarsities ar daudziem jÄdzieniem, kas ir noderÄ«gi, lai pÄrvietotos. Dažas no tÄm, piemÄram, "Linux" un "Unix" vai "shell" un "terminÄls", dažreiz tiek sajauktas. ParunÄsim par Å”iem un citiem svarÄ«giem terminiem.
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 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ļŔ ../
.
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 mv
var 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.
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.
OperÄtÄjsistÄmÄ Linux datus var pÄrsÅ«tÄ«t, izmantojot gandrÄ«z jebkuru labi noformÄtu komandu. MÄdz teikt, ka Linux sistÄmÄ viss ir konveijera.
Varat Ä·ÄdÄ«t vairÄkas komandas, izmantojot konveijera simbolu. Tas izskatÄs Å”Ädi:
first_command | second_command | third_command
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 stdin
izmantojot Å”o komandu kÄ cauruļvada daļu.
tail my_file
: nolasa rindas no faila beigÄm. Å o komandu var izmantot arÄ« konveijerÄ.
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.
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.txt
Tagad 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.
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.
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.
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
Š ~/.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 -
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