Materijal, čiji prijevod danas objavljujemo, namijenjen je onima koji žele savladati Linux komandnu liniju. Mogućnost efikasnog korištenja ovog alata može uštedjeti mnogo vremena. Konkretno, ovdje ćemo govoriti o Bash ljusci i 21 korisnoj komandi. Također ćemo razgovarati o tome kako koristiti komandne zastavice i Bash pseudonime da ubrzamo kucanje dugih instrukcija.
→
Uslovi
Dok budete naučili raditi s Linux komandnom linijom, naići ćete na mnoge koncepte koji su korisni za navigaciju. Neki od njih, kao što su "Linux" i "Unix", ili "ljuska" i "terminal", ponekad su zbunjeni. Hajde da razgovaramo o ovim i drugim važnim terminima.
Sada kada smo pokrili važne termine, želim da istaknem da ću ovde naizmenično koristiti termine "Bash", "ljuska" i "komandna linija", kao i termine "direktorij" i "folder".
Standardno stdin
), standardni izlaz (standardni izlaz, stdout
) i izlaz standardne greške (standardna greška, stderr
).
Ako u primjeru naredbi koje će biti navedene u nastavku, naći ćete nešto poput my_whatever
- to znači da ovaj fragment treba zamijeniti nečim vašim. Na primjer, naziv datoteke.
Sada, prije nego što nastavimo s analizom komandi kojima je posvećen ovaj materijal, pogledajmo njihovu listu i njihove kratke opise.
21 Bash komande
▍Dobijanje informacija
man
: Prikazuje korisnički vodič (pomoć) za naredbu.pwd
: prikazuje informacije o radnom direktoriju.ls
: prikazuje sadržaj direktorija.ps
: Omogućava vam da vidite informacije o pokrenutim procesima.
▍Manipulacija sistemom datoteka
cd
: promijeniti radni direktorij.touch
: kreirati datoteku.mkdir
: kreirajte direktorij.cp
: Kopiraj datoteku.mv
: Premjestite ili izbrišite datoteku.ln
: kreirajte vezu.
▍I/O preusmjeravanje i cjevovodi
<
: preusmjeravanjestdin
.>
: preusmjeravanjestdout
.|
: prebacuje izlaz jedne komande na ulaz druge komande.
▍Čitanje fajlova
head
: pročitajte početak datoteke.tail
: čitanje kraja datoteke.cat
: Pročitajte datoteku i odštampajte njen sadržaj na ekranu ili spojite datoteke.
▍Brisanje datoteka, zaustavljanje procesa
rm
: Izbrišite datoteku.kill
: zaustavi proces.
▍Traži
grep
: traženje informacija.ag
: napredna komanda za pretraživanje.
▍Arhiviranje
tar
: kreiranje arhiva i rad sa njima.
Razgovarajmo o ovim naredbama detaljnije.
Detalji tima
Za početak, pozabavimo se komandama čiji se rezultati izdaju u obrascu stdout
. Obično se ovi rezultati pojavljuju u prozoru terminala.
▍Dobijanje informacija
man command_name
: prikazuje vodič za komande, tj. informacije o pomoći.
pwd
: prikazuje putanju do trenutnog radnog direktorija. U toku rada sa komandnom linijom korisnik često treba da sazna gde se tačno u sistemu nalazi.
ls
: prikazuje sadržaj direktorija. Ova komanda se takođe često koristi.
ls -a
: prikaži skrivene fajlove. zastava primijenjena ovdje -a
naredbe ls
. Upotreba zastavica pomaže da se prilagodi ponašanje komandi.
ls -l
: Prikaz detaljnih informacija o datotekama.
Imajte na umu da se zastavice mogu kombinovati. Na primjer - ovako: ls -al
.
ps
: Pogledajte pokrenute procese.
ps -e
: Prikažite informacije o svim pokrenutim procesima, a ne samo onima povezanim sa trenutnom korisničkom ljuskom. Ova komanda se često koristi u ovom obliku.
▍Manipulacija sistemom datoteka
cd my_directory
: promijenite radni direktorij u my_directory
. Da biste se pomaknuli za jedan nivo u stablu direktorija, koristite my_directory
relativni put ../
.
cd komanda
touch my_file
: kreiranje fajla my_file
duž zadatog puta.
mkdir my_directory
: kreirajte folder my_directory
duž zadatog puta.
mv my_file target_directory
: premjestiti datoteku my_file
u folder target_directory
. Kada specificirate ciljni direktorij, trebate koristiti apsolutnu putanju do njega (a ne konstrukciju kao što je ../
).
tim mv
može se koristiti i za preimenovanje datoteka ili foldera. Na primjer, to može izgledati ovako:
mv my_old_file_name.jpg my_new_file_name.jpg
: kreirajte kopiju datoteke
cp my_source_file target_directorymy_source_file
i stavi u fasciklu target_directory
.
ln -s my_source_file my_target_file
: kreiranje simboličke veze my_target_file
po fajlu my_source_file
. Ako promijenite vezu, promijenit će se i originalni fajl.
Ako je fajl my_source_file
tada će biti obrisan my_target_file
ostaće. Zastava -s
naredbe ln
omogućava vam da kreirate veze za direktorijume.
Sada razgovarajmo o I/O preusmjeravanju i cjevovodima.
▍I/O preusmjeravanje i cjevovodi
my_command < my_file
: zamjenjuje standardni deskriptor ulazne datoteke (stdin
) po datoteci my_file
. Ovo može biti korisno ako naredba čeka neki unos s tastature, a ovi podaci su već sačuvani u datoteci.
my_command > my_file
: preusmjerava rezultate naredbe, tj. ono u šta bi inače ulazilo stdout
i izlaz na ekran, u datoteku my_file
. Ako je fajl my_file
ne postoji - stvoreno je. Ako datoteka postoji, ona se prepisuje.
Na primjer, nakon izvršenja naredbe ls > my_folder_contents.txt
biće kreiran tekstualni fajl koji sadrži listu onoga što se nalazi u trenutnom radnom direktorijumu.
Ako umjesto simbola >
koristiti konstrukciju >>
, onda, pod uslovom da datoteka na koju se preusmjerava izlaz naredbe postoji, ova datoteka neće biti prepisana. Podaci će biti dodati na kraj ove datoteke.
Hajde sada da pogledamo obradu cevovoda podataka.
Izlaz jedne komande se unosi u ulaz druge komande. To je kao spajanje jedne cijevi na drugu
first_command | second_command
: simbol transportera, |
, koristi se za slanje izlaza jedne naredbe drugoj naredbi. Na što šalje naredba s lijeve strane opisane strukture stdout
, Pasti u stdin
naredba desno od simbola cjevovoda.
Na Linuxu, podaci se mogu slati pomoću bilo koje dobro oblikovane naredbe. Često se kaže da je sve u Linuxu cevovod.
Možete ulančati više naredbi koristeći simbol cjevovoda. izgleda ovako:
first_command | second_command | third_command
Cjevovod od nekoliko naredbi može se uporediti sa cjevovodom
Imajte na umu da kada je naredba lijevo od simbola |
, ispisuje nešto na stdout
, ono što ona daje odmah je dostupno kao stdin
drugi tim. Odnosno, ispostavilo se da, koristeći cevovod, imamo posla sa paralelnim izvršavanjem naredbi. Ponekad to može dovesti do neočekivanih rezultata. Detalje o ovome možete pročitati
Hajde sada da pričamo o čitanju podataka iz datoteka i njihovom prikazivanju na ekranu.
▍Čitanje fajlova
head my_file
: čita redove s početka datoteke i ispisuje ih na ekran. Možete čitati ne samo sadržaj datoteka, već i ono što komande izlaze stdin
koristeći ovu naredbu kao dio cjevovoda.
tail my_file
: čita redove s kraja datoteke. Ova naredba se također može koristiti u cjevovodu.
Glava (glava) je ispred, a rep (rep) iza
Ako radite s podacima koristeći pandas biblioteku, onda naredbe head
и tail
trebalo bi da vam bude poznato. Ako to nije slučaj, pogledajte gornju sliku i lako ćete ih zapamtiti.
Razmotrimo druge načine čitanja datoteka, hajde da pričamo o naredbi cat
.
tim cat
ili ispisuje sadržaj datoteke na ekran, ili spaja više datoteka. Zavisi od toga koliko je datoteka proslijeđeno ovoj komandi kada se pozove.
cat command
cat my_one_file.txt
: kada je jedna datoteka proslijeđena ovoj naredbi, ona je šalje na izlaz stdout
.
Ako mu date dva ili više datoteka, onda se ponaša drugačije.
cat my_file1.txt my_file2.txt
: nakon što je primila nekoliko datoteka kao ulaz, ova komanda spaja njihov sadržaj i prikazuje šta se dogodilo stdout
.
Ako rezultat spajanja datoteka treba sačuvati kao novu datoteku, možete koristiti operator >
:
cat my_file1.txt my_file2.txt > my_new_file.txt
Sada razgovarajmo o tome kako izbrisati datoteke i zaustaviti procese.
▍Brisanje datoteka, zaustavljanje procesa
rm my_file
: izbrisati fajl my_file
.
rm -r my_folder
: briše folder my_folder
i sve datoteke i fascikle koje sadrži. Zastava -r
označava da će se naredba izvoditi u rekurzivnom načinu.
Da spriječite sistem da traži potvrdu svaki put kada se datoteka ili mapa izbriše, koristite oznaku -f
.
kill 012345
: Zaustavlja navedeni pokrenuti proces, dajući mu vremena da se elegantno isključi.
kill -9 012345
: Prisilno prekida navedeni pokrenuti proces. Pogledaj zastavu -s SIGKILL
znači isto što i zastava -9
.
▍Traži
Možete koristiti različite komande za traženje podataka. Posebno - grep
, ag
и ack
. Započnimo naše upoznavanje sa ovim komandama sa grep
. Ovo je vremenski testirana, pouzdana naredba, koja je, međutim, sporija od drugih i nije tako zgodna za korištenje kao što jesu.
grep naredba
grep my_regex my_file
: pretrage my_regex
в my_file
. Ako se pronađe podudaranje, vraća se cijeli niz za svako podudaranje. Default my_regex
tretira kao regularni izraz.
grep -i my_regex my_file
: Pretraga se vrši na način bez obzira na velika i mala slova.
grep -v my_regex my_file
: vraća sve redove koji ne sadrže my_regex
. Zastava -v
znači inverziju, liči na operator NOT
, koji se nalazi u mnogim programskim jezicima.
grep -c my_regex my_file
: Vraća informacije o broju podudaranja za traženi uzorak pronađen u datoteci.
grep -R my_regex my_folder
: vrši rekurzivno pretraživanje u svim datotekama koje se nalaze u navedenom folderu i u folderima koji su ugniježđeni u njemu.
Hajde sada da pričamo o timu ag
. Došla je kasnije grep
, brži je, praktičniji je raditi s njim.
ag command
ag my_regex my_file
: vraća informacije o brojevima redova i samim redovima u kojima su pronađena podudaranja my_regex
.
ag -i my_regex my_file
: Pretraga se vrši na način bez obzira na velika i mala slova.
tim ag
automatski obraditi fajl .gitignore
i isključuje iz izlaza ono što se nalazi u fasciklama ili datotekama navedenim u toj datoteci. Veoma je udoban.
ag my_regex my_file -- skip-vcs-ignores
: sadržaj datoteka za automatsku kontrolu verzija (npr .gitignore
) se ne uzima u obzir u pretraživanju.
Osim toga, kako bi rekao timu ag
na kojim putanjama fajlova želite da isključite iz pretrage, možete kreirati datoteku .agignore
.
Na početku ovog odeljka spomenuli smo komandu ack
. Timovi ack
и ag
vrlo slični, možemo reći da su 99% zamjenjivi. Međutim, tim ag
radi brže, zato sam ga i opisao.
Hajde sada da pričamo o radu sa arhivama.
▍Arhiviranje
tar my_source_directory
: spaja datoteke iz foldera my_source_directory
u jednu tarball datoteku. Takve datoteke su korisne za prijenos velikih skupova datoteka nekome.
tar komanda
Datoteke tarball-a koje generiše ova naredba su datoteke sa ekstenzijom .tar
(Arhiva trake). Činjenica da je riječ "traka" (traka) skrivena u nazivu naredbe i u ekstenzijama imena datoteka koje kreira pokazuje koliko dugo ova komanda postoji.
tar -cf my_file.tar my_source_directory
: kreira tarball datoteku pod nazivom my_file.tar
sa sadržajem foldera my_source_directory
. Zastava -c
označava "kreirati" (kreaciju) i zastavu -f
kao "fajl" (fajl).
Za izdvajanje datoteka iz .tar
-file, koristite naredbu tar
sa zastavama -x
("ekstrakt", ekstrakcija) i -f
(„datoteka“, datoteka).
tar -xf my_file.tar
: izdvaja datoteke iz my_file.tar
u trenutni radni direktorij.
Sada razgovarajmo o tome kako komprimirati i dekompresirati .tar
-fajlovi.
tar -cfz my_file.tar.gz my_source_directory
: ovdje koristeći zastavu -z
("zip", algoritam kompresije) označava da se algoritam treba koristiti za komprimiranje datoteka gzip
(GNUzip). Kompresija datoteka štedi prostor na disku prilikom pohranjivanja takvih datoteka. Ako se datoteke planiraju, na primjer, prenijeti drugim korisnicima, to doprinosi bržem preuzimanju takvih datoteka.
Raspakujte datoteku .tar.gz
možete dodati zastavu -z
na komandu izdvajanje sadržaja .tar
-fajlovi, o kojima smo govorili gore. izgleda ovako:
tar -xfz my_file.tar.gz
Treba napomenuti da je tim tar
Ima još mnogo korisnih zastava.
Bash aliasi
Bash aliasi (koji se nazivaju i pseudonimi ili skraćenice) dizajnirani su da kreiraju skraćena imena naredbi ili njihovih sekvenci, čija upotreba umjesto redovnih naredbi ubrzava rad. Ako imate pseudonim bu
, koji skriva komandu python setup.py sdist bdist_wheel
, tada je za pozivanje ove naredbe dovoljno koristiti ovaj alias.
Da biste kreirali takav alias, samo dodajte sljedeću naredbu u datoteku ~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
Ako vaš sistem nema datoteku ~/.bash_profile
, onda ga možete sami kreirati koristeći naredbu touch
. Nakon kreiranja alijasa, ponovo pokrenite terminal, nakon čega možete koristiti ovaj alias. U ovom slučaju, unos dva znaka zamjenjuje unos više od tri desetine znakova naredbe koja je namijenjena
В ~/.bash_profile
možete dodati pseudonime za sve često korištene komande.
▍Rezultati
U ovom postu smo pokrili 21 popularnu Bash komandu i razgovarali o kreiranju alijasa komandi. Ako ste zainteresovani za ovu temu -
Dragi čitaoci! Koje naredbe koje su korisne za početnike biste dodali onima o kojima se raspravljalo u ovom članku?
→
izvor: www.habr.com