[u oznake] Bash za početnike: 21 korisna naredba

Materijal koji danas objavljujemo namijenjen je onima koji žele savladati Linux komandnu liniju. Sposobnost efikasnog korištenja ovog alata može uštedjeti mnogo vremena. U ovom članku govorićemo o Bash ljusci i 21 korisnoj komandnoj. Također ćemo razgovarati o tome kako koristiti opcije komandi i Bash nadimke, koji omogućavaju brži unos dugih instrukcija.

[u oznake] Bash za početnike: 21 korisna naredba

→ Također pročitajte u našem blogu seriju objava o bash skriptama.

Pojmovi

Tokom učenja rada u Linux komandnoj liniji, naići ćete na mnoge pojmove koji će vam biti korisni. Neki od njih, kao što su 'Linux' i 'Unix', ili 'komandna ljuska' i 'terminal', ponekad se zbunjuju. Posvetit ćemo se ovim i drugim važnim terminima.

Unix — popularni operativni sustav koji je razvijen u Bell Labs-u 1970-ih. Njegov kod bio je zatvoren.

Linux — najpopularniji Unix-like operativni sustav. Danas se koristi na mnogim uređajima, uključujući i na računalima.

Terminal (terminal), ili emulator terminala — to je program koji omogućava pristup operativnom sustavu. Istovremeno se može otvoriti više terminalskih prozora.

Ljuska (shell) — program koji omogućava slanje komandi operativnom sustavu napisanim na posebnom jeziku.

Bash skraćeno od Bourne Again SHell. Ovo je najrasprostranjeniji jezik komandne ljuske koji se koristi za interakciju s operativnim sustavom. Osim toga, Bash ljuska se prema zadanim postavkama koristi u macOS-u.

Interfejs komandne linije (Command Line Interface, CLI) — to je način interakcije između čovjeka i računala, pri čemu korisnik unosi komande s tastature, a računalo, izvršavajući te komande, ispisuje poruke za korisnika u tekstualnom obliku. Uglavnom se CLI koristi za dobivanje svježih informacija o određenim entitetima, poput datoteka, i za rad s datotekama. Interfejs komandne linije razlikuje se od grafičkog korisničkog interfejsa (Graphical User Interface, GUI), gdje se uglavnom koristi miš. Interfejs komandne linije često se naziva jednostavno komandna linija.

Skripta (script) — mala je programa koja sadrži niz komandi ljuske. Skripte se zapisuju u datoteke i mogu se višekratno koristiti. Pri pisanju skripti možete koristiti varijable, uvjetne konstrukcije, petlje, funkcije i druge mogućnosti.

Sada, kada smo razmotrili važne termine, želim napomenuti da ću ovdje koristiti termine «Bash», «ljuska» i «komandna linija» kao međusobno zamjenjive, kao i pojmove «direktorij» (directory) i «mapa» (folder).

Standardni tokovi, kojima ćemo se ovdje koristiti — to su standardni ulaz (standard input, stdin), standardni izlaz (standard output, stdout) i standardni izlaz grešaka (standard error, stderr).

Ako u primjerima komandi koji će biti prikazani u nastavku naiđete na nešto poput my_whatever — to znači da taj fragment treba zamijeniti nečim vašim. Na primjer — imenom datoteke.

Sada, prije nego što krenemo u razradu komandi koje su predmet ovog materijala, pogledajmo njihov popis i kratke opise.

21 Bash-komanda

▍Dobivanje informacija

  • man: ispisuje korisnički priručnik (pomagala) za komandu.
  • pwd: ispisuje informacije o radnom direktoriju.
  • ls: ispisuje sadržaj direktorija.
  • ps: omogućuje pregled informacija o aktivnim procesima.

▍Manipulacije s datotečnim sustavom

  • cd: mijenjanje radnog direktorija.
  • touch: kreiranje datoteke.
  • mkdir: kreiranje direktorija.
  • cp: kopiranje datoteke.
  • mv: premještanje ili brisanje datoteke.
  • ln: kreiranje veze.

▍ preusmjeravanje ulaza-izlaza i cjevovodi

  • <: preusmjeravanje stdin.
  • >: preusmjeravanje stdout.
  • |: preusmjeravanje pomoću cjevovoda izlaza jedne komande na ulaz druge komande.

▍Čitanje datoteka

  • head: čitanje početka datoteke.
  • tail: čitanje kraja datoteke.
  • cat: čitanje datoteke i ispis njenog sadržaja na ekran ili povezivanje datoteka.

▍Brisanje datoteka, zaustavljanje procesa

  • rm: brisanje datoteke.
  • kill: zaustavljanje procesa.

▍Pretraživanje

  • grep: pretraživanje informacija.
  • ag: napredna komanda za pretraživanje.

▍Arhivacija

  • tar: kreiranje arhiva i rad s njima.

Razgovarajmo o tim komandama detaljnije.

Detalji o komandama

Za početak, razjasnimo se s komandama čiji se rezultati rada isporučuju u obliku stdout. Obično se ti rezultati pojavljuju u prozoru terminala.

▍Dobivanje informacija

man command_name: ispisuje priručnik za komandu, odnosno — informacije za pomoć.

pwd: ispis puta do trenutnog radnog direktorija. Tokom rada s komandnom linijom, korisniku često treba znati gde se tačno nalazi u sistemu.

ls: prikaz sadržaja direktorija. Ova komanda se takođe često koristi.

ls -a: prikaz skrivenih datoteka. Ovde je primenjena oznaka -a komandi ls. Korišćenje oznaka pomaže u podešavanju ponašanja komandi.

ls -l: prikaz detaljnih informacija o datotekama.

Obratite pažnju da se oznake mogu kombinovati. Na primer — ovako: ls -al.

ps: pregled trenutnih procesa.

ps -e: prikaz informacija o svim aktivnim procesima, a ne samo onim vezanim za trenutnu korisničku školjku. Ova komanda se često koristi upravo na ovaj način.

▍Manipulacije s datotečnim sustavom

cd my_directory: promena radnog direktorija na my_directory. Da biste prešli jedan nivo više u hijerarhiji direktorija, koristite kao my_directory relativni put ../.

[u oznake] Bash za početnike: 21 korisna naredba
Komanda cd

touch my_file: kreiranje datoteke my_file na zadanom putu.

mkdir my_directory: kreiranje fascikle my_directory na zadanom putu.

mv my_file target_directory: premestiti datoteku my_file u mapu target_directory. Pri navođenju ciljne fascikle potrebno je koristiti apsolutni put do nje (ne konstrukciju poput ../).

Komandu mv, takođe, može se koristiti za preimenovanje datoteka ili fascikala. Na primer, moglo bi izgledati ovako:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: kreiranje kopije datoteke my_source_file i smeštanje u fasciklu target_directory.

ln -s my_source_file my_target_file: kreiranje simboličke poveznice my_target_file na datoteku my_source_file. Ako se izmeni poveznica, takođe će se izmeniti i izvorna datoteka.

Ako se datoteka my_source_file izbriše, poveznica my_target_file ostaće. Oznaka -s komandi ln omogućava kreiranje poveznica i za fascikle.

Sada ćemo pričati o preusmeravanju ulaza i izlaza i cevovodima.

▍ preusmjeravanje ulaza-izlaza i cjevovodi

my_command < my_file: zamenjuje deskriptor datoteke standardnog ulaza (stdin) sa datotekom my_file. Ovo može biti korisno ako komanda očekuje unos podataka sa tastature, a ti podaci su unapred sačuvani u datoteci.

my_command > my_file: preusmerava rezultate rada komande, tj. ono što obično ide u stdout i ispisuje se na ekranu, u datoteku my_file. Ako datoteka my_file ne postoji — biće kreirana. Ako datoteka postoji — biće prepisana.

Na primer, nakon izvršenja komande ls > my_folder_contents.txt biće kreirana tekstualna datoteka koja sadrži spisak onoga što se nalazi u trenutnom radnom direktoriju.

Ako umesto simbola > upotrebite konstrukciju >>, pod uvjetom da datoteka u koju se preusmjerava izlaz naredbe postoji, ta datoteka neće biti prepisana. Podaci će biti dodani na kraj te datoteke.

Sada ćemo pogledati obradu podataka putem cjevovoda.

[u oznake] Bash za početnike: 21 korisna naredba
Ono što jedna naredba ispisuje, poslužit će kao ulaz za drugu naredbu. To je slično povezivanju jedne cijevi s drugom.

first_command | second_command: simbol cjevovoda, |, koristi se za slanje rezultata rada jedne naredbe drugoj naredbi. Ono što naredba s lijeve strane opisane konstrukcije šalje stdout, dolazi u stdin naredbu koja se nalazi s desne strane simbola cjevovoda.

U Linuxu se obrada podataka putem cjevovoda može organizirati pomoću gotovo svake ispravno sastavljene naredbe. Često se kaže da je sve u Linuxu cjevovod.

Pomoću simbola cjevovoda možete spojiti nekoliko naredbi u lanac. Izgleda to ovako:

first_command | second_command | third_command

[u oznake] Bash za početnike: 21 korisna naredba
Cjevovod od nekoliko naredbi može se usporediti s cjevovodom.

Obratite pozornost na to da kada naredba koja se nalazi lijevo od simbola |, ispisuje nešto u stdout, ono što je ispisala odmah postaje dostupno kao stdin druga naredba. Dakle, ispostavlja se da, koristeći cjevovod, imamo posla s paralelnim izvršavanjem naredbi. To ponekad može dovesti do neočekivanih rezultata. O tome možete pročitati više ovdje.

Sada ćemo razgovarati o čitanju podataka iz datoteka i njihovom ispisu na ekran.

▍Čitanje datoteka

head my_file: čita retke s početka datoteke i ispisuje ih na ekran. Možete čitati ne samo sadržaj datoteka, već i ono što naredbe ispisuju u stdin, koristeći ovu naredbu kao element cjevovoda.

tail my_file: čita retke s kraja datoteke. Ovu naredbu također možete koristiti u cjevovodu.

[u oznake] Bash za početnike: 21 korisna naredba
Head (glava) je sprijeda, a tail (rep) je straga.

Ako radite s podacima koristeći biblioteku pandas, tada bi vam naredbe head i tail trebale biti poznate. Ako nisu, pogledajte prethodni crtež i lako ćete ih zapamtiti.

Pogledajmo druge načine čitanja datoteka, razgovarat ćemo o naredbi cat.

Komanda cat ili ispisuje sadržaj datoteke na ekran ili spaja nekoliko datoteka. To ovisi o tome koliko su datoteka proslijeđene ovoj naredbi prilikom poziva.

[u oznake] Bash za početnike: 21 korisna naredba
Naredba cat

cat my_one_file.txt: kada se ovoj naredbi proslijedi jedna datoteka — ona je ispisuje stdout.

Ako joj se proslijede dva ili više datoteka, ponaša se drugačije.

cat my_file1.txt my_file2.txt: primajući više datoteka, ova naredba njihovo sadržaj konkatenira i ispisuje rezultirajući sadržaj u stdout.

Ako rezultat konkatenacije datoteka treba sačuvati kao novu datoteku, možete koristiti operator >:

cat my_file1.txt my_file2.txt > my_new_file.txt

Sada ćemo razgovarati o tome kako brisati datoteke i zaustavljati procese.

▍Brisanje datoteka, zaustavljanje procesa

rm my_file: briše datoteku my_file.

rm -r my_folder: briše mapu my_folder i sve datoteke i mape koje sadrži. Oznaka -r ukazuje da će se naredba izvršavati u rekurzivnom načinu.

Da sistem ne traži potvrdu za svaku operaciju brisanja datoteke ili mape, koristite oznaku -f.

kill 012345: zaustavlja navedeni aktivni proces, dajući mu vremena za pravilno završavanje rada.

kill -9 012345: prisilno završava navedeni aktivni proces. Oznaka tipa -s SIGKILL znači isto što i oznaka -9.

▍Pretraživanje

Za pretraživanje podataka možete koristiti različite naredbe. Konkretno — grep, ag i ack. Počnimo naše upoznavanje s ovim naredbama s grep. Ovo je provjerena i pouzdana naredba koja, međutim, radi sporije od drugih i nije toliko praktična za korištenje.

[u oznake] Bash za početnike: 21 korisna naredba
Naredba grep

grep my_regex my_file: izvršava pretraživanje my_regex u my_file. Kada se pronađu podudaranja, vraća se cijeli redak za svako od njih. Po defaultu my_regex se doživljava kao regularni izraz.

grep -i my_regex my_file: pretraživanje se vrši bez obzira na velika i mala slova.

grep -v my_regex my_file: vraća sve retke koji ne sadrže my_regex. Oznaka -v označava inverziju, podsjeća na operator NOT, prisutan u mnogim programskim jezicima.

grep -c my_regex my_file: vraća informacije o broju podudaranja s traženim obrascem koji su pronađeni u datoteci.

grep -R my_regex my_folder: izvršava rekurzivno pretraživanje u svim datotekama unutar zadane mape i podmapa.

Sada ćemo razgovarati o naredbi ag. Ona se pojavila kasnije grep, brža je i lakše se njome upravlja.

[u oznake] Bash za početnike: 21 korisna naredba
Naredba ag

ag my_regex my_file: vraća informacije o brojevima redaka i samim redcima u kojima su pronađena podudaranja s my_regex.

ag -i my_regex my_file: pretraživanje se vrši bez obzira na velika i mala slova.

Komanda ag automatski obrađuje datoteku .gitignore i isključuje iz ispisa ono što je pronađeno u mapama ili datotekama navedenim u ovoj datoteci. To je vrlo praktično.

ag my_regex my_file -- skip-vcs-ignores: sadržaj datoteka sustava automatskog nadzora verzija (poput .gitignore) pri pretraživanju se ne uzima u obzir.

Osim toga, kako bi se timu ag naznačilo koji putovi do datoteka trebaju biti isključeni iz pretraživanja, možete stvoriti datoteku .agignore.

Na početku ovog odjeljka spomenuli smo naredbu ack. Naredbe ack i ag su vrlo slične, može se reći da su zamjenjive u 99%. Međutim, naredba ag radi brže, zato ću opisati upravo nju.

Sada ćemo razgovarati o radu s arhivima.

▍Arhivacija

tar my_source_directory: spaja datoteke iz mape my_source_directory u jednu tarball datoteku. Takve datoteke je prikladno koristiti za prijenos velikih skupova datoteka nekome.

[u oznake] Bash za početnike: 21 korisna naredba
Naredba tar

Tarball datoteke, koje stvara ova naredba, predstavljaju datoteke s ekstenzijom .tar (Tape ARchive). To što se u nazivu naredbe i u ekstenziji imena datoteka koje ona stvara skriva riječ „tape” (traka), govori o tome koliko dugo ova naredba postoji.

tar -cf my_file.tar my_source_directory: stvara tarball datoteku s imenom my_file.tar s sadržajem mape my_source_directory. Oznaka -c dešifrira se kao „create” (stvaranje), a zastavica -f kao „file” (datoteka).

Za vađenje datoteka koje se nalaze u .tar-datoteci koristi se naredba tar s zastavicama -x („extract“, vađenje) i -f („file“, datoteka).

tar -xf my_file.tar: vadi datoteke iz my_file.tar u trenutnu radnu mapu.

Sada ćemo razgovarati o tome kako komprimirati i raspakirati .tar-datoteke.

tar -cfz my_file.tar.gz my_source_directory: ovdje, uz upotrebu zastavice -z („zip“, algoritam kompresije) naznačeno je da se za komprimiranje datoteka treba koristiti algoritam gzip (GNU zip). Kompresija datoteka omogućuje uštedu prostora na disku prilikom pohrane takvih datoteka. Ako se planira, na primjer, prijenos datoteka drugim korisnicima, to doprinosi bržem preuzimanju takvih datoteka.

Raspakirajte datoteku .tar.gz možete dodavanjem zastavice -z naredbi za vađenje sadržaja .tar-datoteka, koju smo razmatrali ranije. Izgleda ovako:

tar -xfz my_file.tar.gz
Treba napomenuti da naredba tar ima još mnogo korisnih zastavica.

Bash aliasi

Bash aliasi (također se nazivaju aliasi ili skraćenice) namijenjeni su stvaranju skraćenih naziva naredbi ili njihovih sekvenci, čija uporaba umjesto običnih naredbi ubrzava rad. Ako, recimo, imate alias bu, koji skriva naredbu python setup.py sdist bdist_wheel, tada je za pozivanje te naredbe dovoljno koristiti ovaj alias.

Za izradu sličnog nadimka dovoljno je dodati sljedeću naredbu u datoteku ~/ .bash_profile:

alias bu="python setup.py sdist bdist_wheel"

Ako na vašem sustavu nema datoteke ~/ .bash_profile, možete je sami izraditi koristeći naredbu touch. Nakon izrade nadimka, ponovno pokrenite terminal, nakon čega ćete moći koristiti taj nadimak. U ovom slučaju, unos dva simbola zamjenjuje unos više od tri desetaka simbola naredbe koja je namijenjena za kompilaciju Python pakete.

U ~/ .bash_profile možete dodavati nadimke za bilo koje često korištene naredbe.

▍Zaključci

U ovom materijalu obradili smo 21 popularnu Bash naredbu i razgovarali o stvaranju nadimaka za naredbe. Ako vas ova tema zanima — evo ciklus publikacija posvećenih Bash-u. Ovdje možete pronaći pdf verziju ovih publikacija. Osim toga, ako želite naučiti Bash, zapamtite da je ovdje, kao i pri učenju bilo kojeg drugog programskog sustava, važna praksa.

Dragi čitatelji! Koje biste naredbe, korisne za početnike, dodali onima koje su obrađene u ovom članku?

→ Također pročitajte u našem blogu seriju objava o bash skriptama.

[u oznake] Bash za početnike: 21 korisna naredba

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster