Medžiaga, kurios vertimą skelbiame šiandien, skirta tiems, kurie nori įvaldyti Linux komandų eilutę. Galimybė efektyviai naudoti šį įrankį gali sutaupyti daug laiko. Visų pirma, čia kalbėsime apie „Bash“ apvalkalą ir 21 naudingą komandą. Taip pat kalbėsime apie tai, kaip naudoti komandų vėliavėles ir Bash slapyvardžius, kad pagreitintume ilgų instrukcijų įvedimą.
→
Sąlygos
Kai išmoksite dirbti su Linux komandų eilute, susidursite su daugybe sąvokų, kurios padės naršyti. Kai kurie iš jų, pavyzdžiui, „Linux“ ir „Unix“ arba „shell“ ir „terminalas“, kartais painiojami. Pakalbėkime apie šiuos ir kitus svarbius terminus.
Dabar, kai aptarėme svarbius terminus, noriu atkreipti dėmesį, kad terminus „Bash“, „shell“ ir „komandų eilutė“ čia vartosiu pakaitomis, taip pat terminus „katalogas“ ir „aplankas“.
Standartinis stdin
), standartinė išvestis (standartinė išvestis, stdout
) ir standartinės klaidos išvestis (standartinė klaida, stderr
).
Jei pavyzdyje komandos, kurios bus pateiktos žemiau, rasite kažką panašaus my_whatever
- tai reiškia, kad šį fragmentą reikia pakeisti kažkuo jūsų. Pavyzdžiui, failo pavadinimas.
Dabar, prieš pradėdami analizuoti komandas, kurioms skirta ši medžiaga, pažvelkime į jų sąrašą ir trumpus aprašymus.
21 Bash komandos
▍Informacijos gavimas
man
: rodo komandos vartotojo vadovą (pagalbą).pwd
: rodoma informacija apie darbinį katalogą.ls
: rodo katalogo turinį.ps
: leidžia peržiūrėti informaciją apie vykdomus procesus.
▍Failų sistemos manipuliavimas
cd
: pakeisti darbo katalogą.touch
: sukurti failą.mkdir
: sukurti katalogą.cp
: nukopijuokite failą.mv
: perkelti arba ištrinti failą.ln
: sukurti nuorodą.
▍I/O peradresavimas ir vamzdynai
<
: peradresuotistdin
.>
: peradresuotistdout
.|
: pervedė vienos komandos išvestį į kitos komandos įvestį.
▍Skaityti failus
head
: perskaitykite failo pradžią.tail
: skaitykite failo pabaigą.cat
: skaitykite failą ir atspausdinkite jo turinį ekrane arba sujunkite failus.
▍Failų trynimas, procesų stabdymas
rm
: ištrinti failą.kill
: sustabdyti procesą.
▍Ieškokite
grep
: ieškoti informacijos.ag
: išplėstinė paieškos komanda.
▍Archyvavimas
tar
: archyvų kūrimas ir darbas su jais.
Pakalbėkime apie šias komandas išsamiau.
Komandos informacija
Pirmiausia nagrinėkime komandas, kurių rezultatai pateikiami formoje stdout
. Paprastai šie rezultatai rodomi terminalo lange.
▍Informacijos gavimas
man command_name
: rodyti komandų vadovą, t. y. pagalbos informaciją.
pwd
: rodo kelią į dabartinį darbo katalogą. Dirbdamas su komandine eilute, vartotojas dažnai turi tiksliai išsiaiškinti, kurioje sistemos vietoje jis yra.
ls
: rodomas katalogo turinys. Ši komanda taip pat naudojama gana dažnai.
ls -a
: rodyti paslėptus failus. čia pritaikyta vėliava -a
komandos ls
. Vėliavėlių naudojimas padeda pritaikyti komandų veikimą.
ls -l
: Rodyti išsamią informaciją apie failus.
Atminkite, kad vėliavėles galima derinti. Pavyzdžiui - taip: ls -al
.
ps
: peržiūrėti vykdomus procesus.
ps -e
: Rodyti informaciją apie visus vykdomus procesus, o ne tik tuos, kurie yra susiję su dabartiniu vartotojo apvalkalu. Ši komanda dažnai naudojama šioje formoje.
▍Failų sistemos manipuliavimas
cd my_directory
: pakeisti darbo katalogą į my_directory
. Norėdami pereiti vienu lygiu aukštyn katalogų medyje, naudokite my_directory
santykinis kelias ../
.
cd komanda
touch my_file
: failo kūrimas my_file
nurodytu keliu.
mkdir my_directory
: sukurti aplanką my_directory
nurodytu keliu.
mv my_file target_directory
: perkelti failą my_file
į aplanką target_directory
. Nurodydami tikslinį katalogą, turite naudoti absoliutų kelią į jį (o ne tokią konstrukciją kaip ../
).
komanda mv
taip pat gali būti naudojamas failams ar aplankams pervardyti. Pavyzdžiui, tai gali atrodyti taip:
mv my_old_file_name.jpg my_new_file_name.jpg
: sukurti failo kopiją
cp my_source_file target_directorymy_source_file
ir įdėkite į aplanką target_directory
.
ln -s my_source_file my_target_file
: sukurkite simbolinę nuorodą my_target_file
vienam failui my_source_file
. Jei pakeisite nuorodą, pradinis failas taip pat pasikeis.
Jei failas my_source_file
tada bus ištrintas my_target_file
išliks. Vėliava -s
komandos ln
leidžia kurti nuorodas į katalogus.
Dabar pakalbėkime apie I/O peradresavimą ir vamzdynus.
▍I/O peradresavimas ir vamzdynai
my_command < my_file
: pakeičia standartinį įvesties failo aprašą (stdin
) vienam failui my_file
. Tai gali būti naudinga, jei komanda laukia tam tikro įvesties iš klaviatūros, o šie duomenys jau išsaugoti faile.
my_command > my_file
: peradresuoja komandos rezultatus, t. y. į tai, kas paprastai būtų įtraukta stdout
ir išvesti į ekraną, į failą my_file
. Jei failas my_file
neegzistuoja – yra sukurta. Jei failas egzistuoja, jis perrašomas.
Pavyzdžiui, įvykdžius komandą ls > my_folder_contents.txt
bus sukurtas tekstinis failas su sąrašu, kas yra dabartiniame darbiniame kataloge.
Jei vietoj simbolio >
naudoti konstrukciją >>
, tada, jei failas, į kurį nukreipiamas komandos išvestis, egzistuoja, šis failas nebus perrašytas. Duomenys bus įtraukti į šio failo pabaigą.
Dabar pažvelkime į duomenų srauto apdorojimą.
Vienos komandos išvestis įvedama į kitos komandos įvestį. Tai tarsi vieno vamzdžio sujungimas su kitu
first_command | second_command
: konvejerio simbolis, |
, naudojamas siųsti vienos komandos išvestį kitai komandai. Kam siunčia komanda kairėje aprašytos struktūros pusėje stdout
, Įkristi į stdin
komandą dujotiekio simbolio dešinėje.
Linux sistemoje duomenys gali būti perduodami naudojant beveik bet kurią gerai suformuotą komandą. Dažnai sakoma, kad Linux sistemoje viskas yra vamzdynas.
Galite sujungti kelias komandas naudodami konvejerio simbolį. Tai atrodo taip:
first_command | second_command | third_command
Kelių komandų konvejerį galima palyginti su konvejeriu
Atkreipkite dėmesį, kad kai komanda simbolio kairėje |
, išveda kažką į stdout
, ką ji išveda, iš karto pasiekiama kaip stdin
antra komanda. Tai yra, paaiškėja, kad naudojant dujotiekį, mes susiduriame su lygiagrečiu komandų vykdymu. Kartais tai gali sukelti netikėtų rezultatų. Išsamią informaciją apie tai galima perskaityti
Dabar pakalbėkime apie duomenų nuskaitymą iš failų ir jų rodymą ekrane.
▍Skaityti failus
head my_file
: skaito eilutes nuo failo pradžios ir spausdina jas ekrane. Galite perskaityti ne tik failų turinį, bet ir tai, ką išveda komandos stdin
naudojant šią komandą kaip dujotiekio dalį.
tail my_file
: skaito eilutes nuo failo pabaigos. Ši komanda taip pat gali būti naudojama konvejeryje.
Galva (galva) yra priekyje, o uodega (uodega) yra už nugaros
Jei dirbate su duomenimis naudodami pandų biblioteką, tada komandos head
и tail
turėtų būti jums pažįstami. Jei taip nėra, pažvelkite į aukščiau pateiktą paveikslėlį ir lengvai juos prisiminsite.
Apsvarstykite kitus failų skaitymo būdus, pakalbėkime apie komandą cat
.
Komanda cat
spausdina failo turinį ekrane arba sujungia kelis failus. Tai priklauso nuo to, kiek failų perduodama šiai komandai, kai ji iškviečiama.
katės komanda
cat my_one_file.txt
: kai šiai komandai perduodamas vienas failas, ji išveda į stdout
.
Jei duosite du ar daugiau failų, jis elgsis kitaip.
cat my_file1.txt my_file2.txt
: gavusi kelis failus kaip įvestį, ši komanda sujungia jų turinį ir parodo, kas atsitiko stdout
.
Jei failų sujungimo rezultatą reikia įrašyti kaip naują failą, galite naudoti operatorių >
:
cat my_file1.txt my_file2.txt > my_new_file.txt
Dabar pakalbėkime apie tai, kaip ištrinti failus ir sustabdyti procesus.
▍Failų trynimas, procesų stabdymas
rm my_file
: Ištrinti failą my_file
.
rm -r my_folder
: ištrina aplanką my_folder
ir visus jame esančius failus bei aplankus. Vėliava -r
rodo, kad komanda veiks rekursiniu režimu.
Kad sistema neprašytų patvirtinimo kiekvieną kartą, kai ištrinamas failas arba aplankas, naudokite vėliavėlę -f
.
kill 012345
: Sustabdo nurodytą vykdomą procesą, suteikdamas laiko grakščiai išsijungti.
kill -9 012345
: priverstinai nutraukia nurodytą vykdomą procesą. Žiūrėti vėliavą -s SIGKILL
reiškia tą patį, ką vėliava -9
.
▍Ieškokite
Duomenų paieškai galite naudoti skirtingas komandas. Visų pirma - grep
, ag
и ack
. Pažintį su šiomis komandomis pradėkime nuo grep
. Tai laiko patikrinta, patikima komanda, tačiau ji yra lėtesnė nei kitos ir nėra tokia patogi naudoti.
grep komanda
grep my_regex my_file
: ieško my_regex
в my_file
. Jei randama atitiktis, grąžinama visa eilutė už kiekvieną atitiktį. Numatytas my_regex
traktuojamas kaip reguliarioji išraiška.
grep -i my_regex my_file
: Paieška atliekama neskiriant didžiųjų ir mažųjų raidžių.
grep -v my_regex my_file
: grąžina visas eilutes, kuriose nėra my_regex
. Vėliava -v
reiškia inversiją, ji primena operatorių NOT
, randamas daugelyje programavimo kalbų.
grep -c my_regex my_file
: pateikia informaciją apie faile rasto ieškomo šablono atitikčių skaičių.
grep -R my_regex my_folder
: atlieka rekursinę paiešką visuose failuose, esančiuose nurodytame aplanke ir jame įdėtuose aplankuose.
Dabar pakalbėkime apie komandą ag
. Ji atėjo vėliau grep
, jis greitesnis, su juo patogiau dirbti.
ag komanda
ag my_regex my_file
: pateikia informaciją apie eilučių numerius ir pačias eilutes, kuriose buvo rasti atitikmenys my_regex
.
ag -i my_regex my_file
: Paieška atliekama neskiriant didžiųjų ir mažųjų raidžių.
Komanda ag
automatiškai apdoroja failą .gitignore
ir neįtraukia į išvestį tai, kas yra tame faile išvardytuose aplankuose arba failuose. Tai labai patogu.
ag my_regex my_file -- skip-vcs-ignores
: automatinio versijos valdymo failų turinys (pvz .gitignore
) paieškoje neatsižvelgiama.
Be to, norint pasakyti komandai ag
kuriuose failų keliuose norite neįtraukti į paiešką, galite sukurti failą .agignore
.
Šio skyriaus pradžioje paminėjome komandą ack
. Komandos ack
и ag
labai panašūs, galime sakyti, kad jie yra 99% pakeičiami. Tačiau komanda ag
veikia greičiau, todėl ir aprašiau.
Dabar pakalbėkime apie darbą su archyvais.
▍Archyvavimas
tar my_source_directory
: sujungia failus iš aplanko my_source_directory
į vieną tarball failą. Tokie failai yra naudingi perduodant kam nors didelius failų rinkinius.
tar komanda
Šios komandos sugeneruoti tarball failai yra failai su plėtiniu .tar
(Juostos archyvas). Tai, kad komandos pavadinime ir jos sukurtų failų pavadinimų plėtinyje yra paslėptas žodis „tape“ (tape) rodo, kiek laiko ši komanda egzistuoja.
tar -cf my_file.tar my_source_directory
: sukuria tarball failą pavadinimu my_file.tar
su aplanko turiniu my_source_directory
. Vėliava -c
reiškia „sukurti“ (kūrimas) ir vėliavą -f
kaip „failas“ (failas).
Norėdami išgauti failus iš .tar
-failą, naudokite komandą tar
su vėliavėlėmis -x
("ekstraktas", ekstrahavimas) ir -f
(„failas“, failas).
tar -xf my_file.tar
: ištraukia failus iš my_file.tar
į dabartinį darbo katalogą.
Dabar pakalbėkime apie tai, kaip suspausti ir išspausti .tar
- failai.
tar -cfz my_file.tar.gz my_source_directory
: čia naudojant vėliavą -z
(„zip“, glaudinimo algoritmas) nurodo, kad algoritmas turėtų būti naudojamas failams suspausti gzip
(GNUzip). Failų glaudinimas taupo vietą diske, kai saugomi tokie failai. Jei failus planuojama, pavyzdžiui, perduoti kitiems vartotojams, tai prisideda prie greitesnio tokių failų atsisiuntimo.
Išpakuokite failą .tar.gz
galite pridėti vėliavėlę -z
į komandą išskleisti turinį .tar
-failai, kuriuos aptarėme aukščiau. Tai atrodo taip:
tar -xfz my_file.tar.gz
Reikia pažymėti, kad komanda tar
Yra daug daugiau naudingų vėliavėlių.
Bash slapyvardžiai
Bash slapyvardžiai (dar vadinami slapyvardžiais arba sutrumpinimais) skirti sukurti sutrumpintus komandų pavadinimus ar jų sekas, kurių naudojimas vietoj įprastų komandų pagreitina darbą. Jei turite slapyvardį bu
, kuris slepia komandą python setup.py sdist bdist_wheel
, tada norint iškviesti šią komandą, pakanka naudoti šį slapyvardį.
Norėdami sukurti tokį slapyvardį, tiesiog pridėkite šią komandą prie failo ~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
Jei jūsų sistemoje failo nėra ~/.bash_profile
, tada galite patys sukurti naudodami komandą touch
. Sukūrę slapyvardį, iš naujo paleiskite terminalą, po kurio galėsite naudoti šį slapyvardį. Šiuo atveju dviejų simbolių įvedimas pakeičia daugiau nei trijų dešimčių komandos simbolių įvestį, skirtą
В ~/.bash_profile
galite pridėti bet kokių dažnai naudojamų komandų slapyvardžius.
▍Rezultatai
Šiame įraše apžvelgėme 21 populiarią „Bash“ komandą ir kalbėjome apie komandų slapyvardžių kūrimą. Jei jus domina ši tema -
Mieli skaitytojai! Kokias komandas, kurios yra naudingos pradedantiesiems, pridėtumėte prie tų, kurios buvo aptartos šiame straipsnyje?
→
Šaltinis: www.habr.com