Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Željezo
  • Naredbeni jezik ljuske. Osnove programiranja ljuske

Naredbeni jezik ljuske. Osnove programiranja ljuske

U ovom članku pokušat ćemo prikupiti najčešće korištene naredbe u SSH ili linux ljusci. Popis nije konačan, opis naredbi naravno nije potpun, puni opis naredbi možete dobiti u naredbi linux shell # man.



Tipkovnički prečaci i Linux naredbe:

PAŽNJA: ZAPAMTITE DA SU LINUX NAREDBE OSJETLJIVE NA SLUČAJ U KOJEM SE PRIMAJU. Na primjer: Naredbe Netscape, NETSCAPE i nEtscape su tri različite naredbe, baš kao što su my_filE, my_file i my_FILE tri različite datoteke.

1. Prirodni tipkovnički prečaci i konvencije
Prelazak na prvi terminal konzole
Prebacivanje na #. terminal konzole (# = 1..6)
Prijeđite na grafički terminal (ako je pokrenut)
Dovršavanje trenutnog slijeda znakova upisanih u konzolu za naredbu koja se izvršava. Ova značajka uvelike olakšava život pri tipkanju naredbi! Ovo također radi kada dižete računalo s LILO-om!
Pregledajte i uredite međuspremnik povijesti naredbi. Pritisnite za izvršenje naredbe.
Pregledavanje teksta prikazanog na terminalu konzole i izvan zaslona. Krenite gore.
Isto kao što je gore. Krenite dolje.
[+] (u X-windows) Promjena rezolucije. Prijeđite na sljedeću konfiguraciju.
[-] (U X-windows) Promjena rezolucije. Vratite se na prethodnu konfiguraciju.
(na X-windows) Ubijte trenutni X-windows poslužitelj (izlaz iz grafičke ljuske, ubivši sve procese). Ubijte trenutni proces.
d Izađite iz trenutnog terminala (obično radi).
dŠalje signal [Kraj datoteke] (kraj datoteke) trenutnom procesu.
s Zaustavite izlaz na terminal.
q Nastavite izlaz na terminal. Isprobajte ovaj tipkovnički prečac ako vašem terminalu nije jasno zašto je prestao odgovarati na vaše zahtjeve.
z Pošaljite trenutni proces u pozadinu.
resetirati Vraćanje zadanih vrijednosti za "oštećeni" terminal (terminal prikazuje čudne znakove i ne reagira na odgovarajući način na tipke). Koristite ovu naredbu ako ste pokušali prikazati binarnu datoteku. Vjerojatno nećete moći vidjeti ovu naredbu dok je upisujete.
~ Moj kućni imenik. Na primjer cd ~ / moj_poddirektorij.
... (točka) Trenutni imenik.
.. (dvije točke) Roditeljski imenik za trenutni imenik.

2. Standardne naredbe i naredbe koje pružaju informacije o sustavu
osoba Navedite trenutni imenik.
ime domaćina Prikažite ili promijenite naziv mreže uređaja.
tko sam ja Unesite ime pod kojim sam registriran.
datum Prikažite ili promijenite datum i vrijeme. Na primjer, da biste postavili datum i vrijeme na 2000-12-31 23:57, pokrenite naredbu: date 123123572000
vrijeme Dobijte informacije o vremenu potrebnom za dovršetak postupka + još neke informacije. Nemojte brkati ovu naredbu s datumom. Na primjer: mogu reći koliko je vremena potrebno za popis datoteka u direktoriju upisivanjem: time ls
tko Odredite tko od korisnika radi na stroju.
rko -a Identificiranje svih korisnika povezanih na vašu mrežu. Ova naredba zahtijeva da se pokrene proces rwho. Ako ne, pokrenite "setup" kao superkorisnik.
prst [korisničko ime] Podaci o sustavu o registriranom korisniku. Pokušajte: korijen prsta
vrijeme rada Vrijeme koje je prošlo od posljednjeg ponovnog pokretanja.
ps a Popis tekućih procesa.
vrh Interaktivni popis trenutnih procesa sortiranih prema korištenju procesora.
uname Prikaz informacija o sustavu.
besplatno Prikaz informacija iz memorije.
df -h(= prostor na disku) Ispis informacija o slobodnom i iskorištenom prostoru na disku (čitljivo).
du / -bh | više(= tko je koliko uzeo) Prikaz detaljnih informacija o veličini datoteka po direktorijima počevši od korijena (u čitljivom obliku).
mačka / proc / cpuinfo Podaci o sustavu o procesoru. Imajte na umu da datoteke u direktoriju /proc nisu prave datoteke. Koriste se za dobivanje informacija poznatih sustavu.
mačka / proc / prekida Korišteni prekidi.
mačka / proc / verzija Verzija jezgre Linuxa i druge informacije
cat / proc / datotečni sustavi Navedite trenutno korištene vrste datotečnog sustava.
mačka / etc / printcap Prikaži postavke pisača.
lsmod(kao root) Ispis informacija o trenutno učitanim modulima kernela.
skup | više Ispišite trenutne vrijednosti varijabli okruženja.
odjek $ PATH Ispis vrijednosti varijable okruženja "PATH" Ova se naredba može koristiti za ispis vrijednosti drugih varijabli okruženja. Koristite naredbu set za potpuni popis.

3. Umrežavanje
netconf(kao root) Vrlo dobar program za konfiguraciju mreže koji koristi tekstualni izbornik za interaktivnu upotrebu.
ping [ime hosta]"Provjeri uši". Bez obzira postoji li kontakt s drugim strojem (kao parametar naredbi, možete proslijediti naziv mreže ili IP adresu uređaja), pritisnite -C kada primite sve potrebne informacije.
ruta -n Ispišite tablicu usmjeravanja.
ipfwadm -F -p m Konfigurirajte vatrozid.
ifconfig(kao root) Ispis informacija o trenutnim mrežnim sučeljima (ethernet, ppp, itd.) Vaša prva ethernet ploča prikazat će se kao eth0, druga kao eth1, prvi ppp modem kao ppp0 i tako dalje. "lo" znači "loopback only" mrežno sučelje, koje mora biti stalno aktivirano. Koristite odgovarajuće opcije (pogledajte izlaz ifconfig --help) za konfiguriranje mrežnih sučelja.
ifup [ime_mrežnog_sučelja](/ sbin / ifup kada radite kao obični korisnik) Aktivacija odgovarajućeg mrežnog sučelja. Na primjer: ifup eth0 ifup ppp0. Korisnik može aktivirati i deaktivirati ppp mrežno sučelje samo kada su postavljena odgovarajuća prava pristupa (prava se mogu postaviti tijekom ppp konfiguracije putem "netconf")
ifdown [ime_mrežnog_sučelja](/ sbin / ifdown kada se izvodi kao obični korisnik). Deaktivacija odgovarajućeg mrežnog sučelja.

4. Najjednostavnije radnje
ls Popis datoteka u trenutnom direktoriju. Naredba dir pokreće naredbu ls.
cd [imenik] Promijenite imenik.
cp [što kopirati] [gdje kopirati] Kopiraj datoteke.
mcopy [što kopirati] [gdje kopirati] Kopirajte datoteke kada radite s dos datotečnim sustavom (montaža dos diska nije obavezna). Na primjer: mcopy a: \ autoexec.bat ~ / junk. Za više informacija o sličnim naredbama (mdir, mcd, mren, mmove, mdel, mmd, mrd, mformat ....) provjerite man mtools.
mv [što premjestiti] [kamo se preseliti] Premjestite ili preimenujte datoteku.
ln -s [na što povezati] [naziv veze] Napravite simboličku vezu.
rm [datoteke] Obriši datoteke.
mkdir [imenik] Napravite novi imenik.
rmdir [imenik] Ukloni prazan direktorij.
rm -r [datoteke i/ili direktoriji](rekurzivno brisanje) Brisanje datoteka, direktorija i njihovih poddirektorija. OPREZNO s ovom naredbom ako imate prava superkorisnika! Linux još nema sustav za potpuni oporavak izbrisanih datoteka (osim ako koristite posebne programe za postavljanje izbrisanih datoteka u poseban direktorij - a la basket pod W95).
mačka [naziv datoteke] | više Pregledajte sadržaj tekstualne datoteke jednu po jednu stranicu.
manje [naziv datoteke] Pregled sadržaja tekstualne datoteke s mogućnošću povratka na prethodne stranice. Pritisnite q kada želite izaći iz programa. "Manje" je analogno DOS naredbi "više", iako je vrlo često "manje" prikladnije od "više".
pico [naziv datoteke] Uredite tekstualnu datoteku.
ris Pregledajte html datoteku ili WWW vezu pomoću preglednika teksta Lynx.
tar -zxvf [datoteke] Raspakirajte tgz ili tar.gz arhivu koju ste izvukli s mreže.
pronađi / -name "ime datoteke" Pronađite datoteku pod nazivom "ime datoteke". Pretraživanje počinje iz imenika /. "filename" može sadržavati masku za pretraživanje.
bor Dobar tekst orijentiran čitač e-pošte. Drugi sličan program zove se "brest". Netscape čita vašu poštu s vaše internetske adrese, a pine vam omogućuje pregled "lokalne" pošte - to jest pošte koju vam šalje sin ili cron proces.
mc Pokrenite program za upravljanje datotekama "Midnight Commander" (izgleda kao "Norton Commander", ali bliže daleko ili dn u svojim mogućnostima).
telnet [poslužitelj] Telnet na drugi stroj. Koristite naziv stroja ili IP adresu. Prijavite se sa svojom lozinkom (morate biti prijavljeni na ovaj udaljeni stroj). To će vam omogućiti da se prijavite na drugi stroj i radite na njemu kao da sjedite za njegovom tipkovnicom (gotovo bez razlike).
ftp [poslužitelj] Povežite se putem ftp-a s udaljenim računalom. Ova vrsta veze je dobra za kopiranje datoteka na / s udaljenog stroja.

5. Naredbe osnovne uprave
alat za ispis(kao root u X terminalu) Konfigurirajte svoj pisač.
postaviti(kao root) Konfigurirajte miš, zvučnu karticu, tipkovnicu, X-windows ljusku i sistemske usluge. Program koji je vrlo jednostavan za korištenje.
alias ls = "ls -Fskb --color" Napravite alias - alias tako da jedna naredba može pokrenuti složeniju kombinaciju naredbi. Stavite stvaranje aliasa u / etc / bashrc datoteku ako želite da ovi pseudonimi budu dostupni svim korisnicima na vašem sustavu.
adduser [korisničko ime] Registrirajte novog korisnika (morate imati prava superkorisnika). Na primjer: adduser ivanov. Ne zaboravite sljedeće postaviti korisničku lozinku. Korisnički imenik nalazi se u imeniku / home / korisničko ime.
useradd [korisničko ime] Isto kao adduser.
userdel [korisničko ime] Uklonite korisnika iz sustava (morate biti prijavljeni kao root). Korisnički imenik i nepročitane poruke udaljenog korisnika moraju se rješavati odvojeno.
groupadd [naziv_grupe] Napravite novu korisničku grupu na svom sustavu. Nije potrebno kreirati grupu izravno na glavnom stroju.
passwd Promijeni lozinku. Ako ste superkorisnik, možete promijeniti lozinku bilo kojeg registriranog korisnika upisivanjem naredbe: passwd korisničko ime
chmod [dopuštenja] [datoteka](= promjena načina rada) Promijenite dopuštenja datoteka koje posjedujete (ako ste root, u ovom slučaju možete promijeniti dopuštenja za bilo koju datoteku). Postoje tri načina za pristup datoteci: čitanje - čitanje (r), pisanje - pisanje (w), izvršavanje - izvršavanje (x) i tri vrste korisnika: vlasnik datoteke je vlasnik (u), članovi ista grupa kao i vlasnik datoteke (g) i svi ostali (o). Trenutna prava pristupa možete provjeriti na sljedeći način: ls -l naziv datoteke... Ako je datoteka dostupna svim korisnicima, tada će se sljedeća kombinacija slova pojaviti nasuprot naziva datoteke: rwxrwxrwx... Prva tri slova su dopuštenja za vlasnika/vlasnika datoteke, druga trojka su dopuštenja za njegovu/njezinu grupu, sljedeća tri su dopuštenja za ostatak. Nedostatak prava pristupa prikazan je kao "-" .; Na primjer: Ova naredba će vam omogućiti da postavite dopuštenja za čitanje datoteke "junk" za sve (sve = korisnik + grupa + ostali):
chmod a + r smeće
Ova naredba će opozvati dopuštenje za izvršavanje datoteke svima osim korisnika i grupe:
chmod o-x smeće
Za više informacija upišite chmod --help ili man chmod ili pročitajte bilo koji priručnik za Linux.
Možete postaviti zadane dozvole za datoteke koje kreirate naredbom "umask" (upišite man umask).
chown [novi_host] [datoteke]
chgrp [nova_grupa] [datoteke] Promijenite vlasnika i grupu za datoteku.
Ove dvije naredbe možete koristiti nakon što napravite kopiju datoteke za nekog drugog. su(= super korisnik) Prijavite se kao superkorisnik (od vas će se tražiti vaša lozinka). Upisivanjem "exit" vratit ćete se na prethodnu korisničku ljusku. Root korisnik postoji za administraciju sustava, a naredba su vam daje brz pristup mogućnostima superkorisnika kada vam zatreba. Nikada se nemojte prijavljivati ​​kao root, u tu svrhu koristite naredbu su.

6. Kontrola procesa
p.s(= status ispisa) Navedite trenutne procese s njihovim ID-ovima (PID) identifikatorima. Upotrijebite ps axu za popis svih procesa koji se izvode na vašem sustavu koji vas imaju kao glavnog (ovo se također odnosi na procese koji su odvojeni od terminala).
fg Vratite pozadinski ili suspendirani proces u interaktivno (visoki prioritet) stanje;
bg Napravite proces u pozadini. Inverzna funkcija fg. Može slijediti z.
ubiti"Ubiti" proces. Najprije odredite PID procesa koji treba biti ubijen s ps.
killall [naziv_programa]"Ubiti" sve procese imenom programa.
lpc(kao root) Provjerite red čekanja pisača.
lpq Navedite red čekanja za ispis.
lprm [broj posla] Uklonite zadatak iz reda čekanja za ispis.
lijepo [naziv_programa] Započnite proces postavljanjem prioriteta.
renice Promijenite prioritet procesa.

Obratite pažnju na kombinacije tipki: c, z, s i q. Oni su opisani ranije u odjeljku Prirodni tipkovnički prečaci i konvencije.

=====================================================

LABORATORIJSKI RAD br.1 (vrijeme izvođenja - 3 sata)

Tema: ”Uvod uljuska

1. Upoznavanje s ljuskom

Shell je tumač naredbi (naredbeni procesor) koji pruža funkcije sučelja između korisnika i Unix kernela. Solaris nudi tri glavna procesora naredbi:

    Zadana Bourneova ljuska je / sbin / sh

    C ljuska - / bin / csh

    Korn školjka - ./bin/ksh

Osim ovih, Solaris nudi dodatne školjke:

    J ljuska - / sbin / jsh

    Ograničeno Korn l - / usr / bin / rsh

    T ljuska - / usr / bin / tcsh

    GNU Bourne Opet - / usr / bin / bash

    Z ljuska - usr / bin / zsh

Izbor školjke je stvar osobnih preferencija.

2. Izvođenje naredbi

Svaka naredba u Unixu sastoji se od naziva programa (naredbe) za pokretanje, opcija (prekidača) i argumenata koji se prosljeđuju programu. Razdjelnik naredbenog retka su razmaci ili tabulatori.

Primjer

$ / bin / ping –t 10 192.168.2.13

argument

shell prompt

Ako put do izvršne datoteke nije naveden pri pokretanju programa, OS uzastopno skenira direktorije navedene u varijabli PATH. Ako postoji program s ovim imenom u direktoriju koji se pregledava, tada se pokreće za izvršenje. Trenutni radni direktorij se ne traži pri traženju programa osim ako nije naveden u varijabli PATH.

! Iz sigurnosnih razloga, administratoru se ne preporučuje dodavanje korisničkog trenutnog imenika i kućnih (osobnih) direktorija u varijablu PATH.

Primjeri za

Pokretanje programa s punim putem

$ / usr/ lokalni/ kantu/ moj_ program

Pokretanje programa iz roditeljskog (roditeljskog) direktorija

$ ../ lokalni/ kantu/ moj_ program

Pokretanje programa iz trenutnog direktorija

$ ./ moj_ program

3. Posebni znakovi u ljusci

Neki znakovi ljuske imaju posebna značenja.

3.1. Predlošci za generiranje naziva datoteke

? (upitnik) odgovara bilo kojem znaku osim prve točke;

(uglate zagrade) definirati grupu znakova (jedan znak se bira iz grupe);

- (znak minus") definira raspon valjanih znakova;

! (uskličnik) odbacuje sljedeću skupinu znakova;

* (simbol zvjezdice) odgovara bilo kojem broju znakova osim prve točke.

3.2. I/O znakovi za preusmjeravanje

< - preusmjeravanje unosa;

>, >> - preusmjeravanje izlaza;

2>, 2>> - preusmjeravanje poruka o greškama;

| - transporter.

3.3. Zamjenski simboli

$ ime_varijableq - zamjena varijabli;

$ (naredba) ili `naredba` - zamjena zapovijedi;

~ je zamjena tilde.

4. Traži

Za brzo pronalaženje datoteka i direktorija koristite naredbu whereis, za dublju naredbu find (tražite datoteke koje zadovoljavaju navedene zahtjeve;).

5. Uređivač teksta vi

Uređivač teksta vi je svestrani uređivač koji se nalazi na bilo kojem Unixu. Osim za uređivanje tekstualnih datoteka, vi se može koristiti za uređivanje naredbenog retka.

Vi editor ima 3 načina rada (vidi sliku).

Ulazak u vi editor

Izlazak vi

Simbol ”~” (tilda) na prvom mjestu označava prazne (nepostojeće) retke datoteke.

Glavni način rada je naredbeni način, u kojem se naredbe unose pritiskom niza tipki (ni na koji način se ne prikazuju na ekranu).

Kretanje kroz tekst u naredbenom načinu vrši se pomoću strelica i tipki (nalijevo), (put prema dolje), (gore), (nadesno).

Neke vi naredbe navedene su u tablici.

Izbriši trenutni redak

Kopirajte trenutni redak u međuspremnik

Y pomicanje kursora

Međuspremnik znakova označenih kursorom

Umetnite novi redak na dnu

Umetnite novu liniju na vrhu

Dodavanje nakon kursora

Dodavanje nakon trenutnog retka

Umetni ispred kursora

Umetni ispred trenutnog retka

Zamijenite znak znakom na tipkovnici

Lijepljenje teksta iz međuspremnika

. (točka)

Ponovite posljednju izvršenu naredbu

Poništite posljednju naredbu

Poništi sve promjene u trenutnom retku

Brisanje znaka iznad kursora

U načinu unosa svi znakovi upisani na tipkovnici umetnuti su u tekst.

U načinu zadnjeg retka, naredba koju unesete prikazuje se u zadnjem retku zaslona.

6. Pomoć

Unix ima elektronički priručnik koji sadrži opis svrhe naredbi, njihovu sintaksu, primjere korištenja itd. Priručnik se poziva naredbom man:

7. Osnovne naredbe ljuske

tko- prikaz informacija o aktivnim korisnicima;

jeka- izlaz poruka na terminal;

banner- izlaz poruka na terminal velikim slovima;

čovjek- pozivanje online sustava pomoći;

datum - prikaz trenutnog datuma;

pisati- slanje poruka na terminal drugog korisnika;

poruka- dopuštenje/zabrana prikazivanja poruka drugih korisnika;

pošta- slanje/primanje pošte;

vijesti- upoznavanje s novostima sustava;

osoba- izlaz apsolutnog naziva rute trenutnog radnog imenika;

CD- promjena radnog imenika;

ls- prikaz informacija o sadržaju imenika;

mkdir- stvaranje imenika;

rmdir- brisanje imenika;

dodir- ažuriranje vremenske oznake datoteke;

k.č- kopiranje datoteka;

mačka- spajanje i prikaz sadržaja datoteka;

više- prikaz stranice po stranicu sadržaja datoteke.

mv - premještanje ili preimenovanje datoteke;

rm- brisanje datoteke;

alias- stvaranje aliasa;

tr- konverzija znakova;

Izlaz- završetak tekuće ljuska-a;

tee- presretanje rezultata transportera;

izrezati - izbor polja iz reda;

grep- pretraživanje po uzorku;

pr- izlaz datoteke u standardni izlaz u određenom formatu;

vrsta- sortiranje;

glava- izlaz prvih redaka datoteke;

rep- izlaz zadnjih redaka datoteke;

zahod- brojanje broja znakova, riječi i redaka;

čitati, jeka - čitanje i prikaz vrijednosti varijabli;

test- vrednovanje vrijednosti izraza;

ekspr, neka- izračunavanje aritmetičkih izraza;

8. Ljuska-programi

Shell vam omogućuje spremanje niza naredbi u datoteci i njihovo izvršavanje. Da biste pokrenuli datoteku s programom ljuske za izvršenje, trebate dodati pravo izvršenja pravima pristupa:

$ chmod + x naziv_datoteke programa

Grananje u programima ljuske organizirano je pomoću operatora:

ako-onda-drugo

Operatori petlje:

VJEŽBE

1. Koja od sljedećih naredbi će prikazati poruku dobrodošlice na zaslonu? Što nisu? Zašto?

$ eho bok

$ Echo zdravo

$ echo ZDRAVO, SVIJETE

$ banner zdravo

$ BANNER ZDRAVO, SVIJET

2. Iznesite poruku iz nekoliko redaka pomoću naredbi jeka i banner.

3. Ispišite datum u dva retka: na prvom dan, mjesec, godina, na drugom trenutno vrijeme, dajući izlaz s komentarom.

4. Korištenje naredbe pisati, pošaljite poruku na konzolu. Šaljite poruke na više terminala u isto vrijeme.

5. Korištenje naredbe poruka, odredite jesu li poruke dopuštene vašem terminalu. Odbij poruke. Kako će sustav reagirati ako vam netko pokuša poslati poruku?

6. Identificirajte svoje ime DOM-imenik.

7. Pregledajte podstablo imenika, počevši od / export / home imenika koristeći naredbe cd, ls i osoba

8 .. Kreirajte u svom DOM-poddirektorijumi u obliku:

voće cvijeće

jabuka kruška grožđe ruža ljubičica maslačak

tamnozelene

9. Biti u svom DOM-directory, kreirajte sljedeće poddirektorije pomoću jednog retka za naredbe:

A / B / C / D

10. Biti u svom DOM-imenik, obrišite sve poddirektorije imenika A.

11. Biti u DOM-direktorij, stvorite datoteku Macintosh u postojećem imeniku jabuka i više datoteka u imenicima tamno i zelena... Unesite imenik fspušta... Biti u imeniku fspušta, kopirajte sve poddirektorije fruševine zajedno s datotekama u njima u posebno kreirani direktorij košara.

12. Biti u katalogu fspušta, uklonite imenik fruševine.

13. Pročitajte datoteku .profil korištenjem naredbi mačka i više.

14. Kreirajte u DOM-tekstualna datoteka imenika moja datoteka više redaka pomoću naredbe mačka. Napravite tekstualnu datoteku MyFIle, napisujući mu iste redove. Koliko ste datoteka dobili? Zašto?

15. Pregledajte sadržaj datoteke kreirane u zadatku 2.2 moja datoteka... Kopirajte datoteku moja datoteka upisati mikopiju. Pogledajte sadržaj obje datoteke.

16. Premjestite datoteku mikopiju katalogizirati cvijeće.

17. Biti u DOM-imenik, kreirajte vezu myveza po datoteci mikopiju nalazi u imeniku cvijeće... Pogledajte datoteku veze.

18. Dodajte redak u datoteku mojveza. Koji od datoteka mojveza, mojkopirati, mojdatoteka su se promijenili? Zašto?

19. Kojom naredbom možete odrediti broj poveznica? Odredite broj veza za datoteke mojveza, mojkopirati, mojdatoteka.

Izbrišite datoteku mikopiju... Što se dogodilo s datotekom veze? Odredite broj veza za datoteke mojveza, mojdatoteka.

20. Napravite alias red koji ispisuje sadržaj trenutnog imenika u proširenom formatu.

21. Završite sesiju i ponovno se registrirajte. Radi li alias red? Što treba učiniti kako bi se spriječilo da se alias "izgubi" između sesija?

22. Napravite alias točka, koji ispisuje popis datoteka u radnom direktoriju koje počinju točkom.

23. Korištenje naredbe dodir, kreirajte datoteke u novom direktoriju s takvim nazivima da u isto vrijeme:

Predložak a* podudara se 5 datoteka;

Predložak * a odgovara 4 datoteke;

Predložak ??.? odgovara 3 datoteke;

Predložak * aa* odgovara 2 datoteke;

Predložak??? odgovara 1 datoteci.

24. Koju naredbu treba unijeti da se učini sljedeće:

a) ispisati nazive svih datoteka koje počinju s točkom;

b) ispisati nazive svih datoteka koje završavaju na ".Txt";

c) prikazati nazive svih datoteka koje sadrže tu riječ "Moj";

25. Zamijenite sva mala slova u jednoj datoteci velikim slovima, u drugoj - sva velika slova malim slovima. Isključite sve duple razmake iz datoteke.

26. Napravite datoteku pod nazivom * ... Izbrišite samo ovu datoteku. Budite oprezni kada koristite znakove za generiranje naziva datoteka!

27. Napravite datoteku koja ima razmak u nazivu. Kako mogu izbrisati takvu datoteku?

28. Korištenje naredbe mačka udvostručite sadržaj datoteke dodavanjem izvornog sadržaja na kraj iste datoteke. Idite na imenik cvijeće... Dodaj u datoteku spisok popis sadržaja imenika cvijeće. Pregledajte sadržaj datoteke

29. Pokušajte čitati s naredbom mačka nepostojeća datoteka. Kakva je reakcija sustava? Učinite isto preusmjeravanjem poruka o pogrešci u datoteku moja pogreška... Što vidite na ekranu? Pregledajte datoteku moja pogreška.

30. Stvorite cjevovod za popis samo imena i dopuštenja datoteka koje se trenutno nalaze u vašem radnom direktoriju.

31. Izmijenite izgrađeni cjevovod tako da popis bude pohranjen u datoteci spisok Tvoja njegova DOM-direktorij, a prikazan je samo broj datoteka na popisu.

32. Prikažite sadržaj datoteke / etc / passwd sortirano prema polju korisničkog imena.

33. Napravite alias prijavljenna, koji će prikazati abecedni popis imena korisnika prijavljenih na sustav.

33. Prikažite trenutni datum na zaslonu velikim slovima pomoću naredbi datum i banner.

34. Dodijelite varijablu JA SAM Vaše ime za registraciju. Pokrenite još jednu ljuska... Vidite li ovu varijablu? Što treba učiniti da je vidimo u rođenoj ljuska? Promijenite vrijednost varijable JA SAM u rođenom ljuska... Izađite iz začeta ljuska. Pogledajte vrijednost ove varijable u izvorniku ljuska... Objasnite rezultat.

35. Napiši ljuska-program info koji će od korisnika tražiti da unese ime, adresu, datum, mjesec i godinu rođenja i prikaže ove podatke obrnutim redoslijedom

36. Napiši ljuska-program koji će prikazati upit za unos broja, spremiti uneseni broj u varijablu Y i ispišite poruku "Y je veći od 7", ako vrijednost Y više od 7, i “Y jene veći od 7” inače.

37. Napišite shell program koji ispisuje sljedeću statistiku na zaslon:

a) svoje ime;

b) broj argumenata s kojima se pokreće;

c) ispisuje svaki svoj argument i duljinu argumenta u znakovima;

38. Napiši ljuska- program koji određuje broj argumenata u retku za naredbe i izdaje poruku o pogrešci ako broj argumenata nije tri, ili samih argumenata, ako je njihov broj tri.

39. Napiši ljuska-program koji će izdati pozivnicu za unos korisničkog ID-a, provjeriti usklađenost ID-a s onima koji se koriste u sustavu i prikazati puno ime DOM-imenika ili, u slučaju nevažećeg identifikatora, izdati poruku o pogrešci.

40. Napišite shell program zdravo, koji daje sljedeći odgovor na argumente naredbenog retka:

Argument "-D"- program će izvršiti naredbu datum;

Argument "-L"- program će prikazati sadržaj trenutnog imenika;

    ako u naredbenom retku nema argumenata ili neispravnih argumenata, program će prikazati pomoć o svojim opcijama.

41. Napišite program riječišto će od korisnika tražiti da unese jednu po jednu riječ dok ne unese riječ kraj... Zapamtite sve riječi koje ste unijeli. Nakon što upišete riječ kraj prikazati sve unesene riječi.

42. Izmijenite prompt sustava da sadrži potpuno kvalificirani naziv rute trenutnog radnog direktorija .

43. Napišite program virus koji stvara vlastitu izvršnu kopiju s drugim imenom, a zatim se briše.

44. Napišite program virus2 , koji u trenutnom direktoriju traži programe na jeziku naredbi i dodaje naredbu za prikaz riječi Zaražen!”.

45. Napišite program virus3 , koji dodaje vlastiti kod kako bi zarazio druge programe programima na jeziku naredbi koje pronađe.

46. ​​Napišite program virus4 modificiranjem vašeg virusa tako da se kod zaraze nakon infekcije uklanja iz programa zaraze.

47. Napišite program antivirusni koji će pronaći sve ljuske programe zaražene vašim virusom.

48. Izmijenite razvijeni program tako da ne samo da pronalazi zaražene programe u navedenom direktoriju, već ih i "liječi" spremanjem zaražene verzije u novu datoteku sa završetkom . vir, i uklanjanje atributa izvršenja iz takve datoteke.

49. Napišite program virus5 što bi:

a) zarazio bi ljuske programe u trenutnom direktoriju i njegovim poddirektorijima virusom samo ako bi korisnik unio naredbu ls;

b) ponašali bi se kao tim ls, bez davanja ništa na terminalu svog rada.

50. Napišite virus6 program na temelju programa virus2 -virus5 čiji zarazni kod program koji ste razvili nije mogao otkriti antivirusni, a infekcija bi se dogodila pri bilo kojoj vrijednosti varijable STAZA.

51. Napišite program supervirus, čije pokretanje inficira vaše datoteke virusom razvijenim u prethodnom zadatku, a svaki put kada se prijavite na sustav, pokušava se zaraziti datoteke vaših suboraca. Program supervirus briše se nakon prve vožnje.

52. Napišite program superantivirus, koji otkriva i potpuno "liječi" (ako je navedena odgovarajuća opcija) sve datoteke u navedenom direktoriju i njegovim poddirektorijima od svih razvijenih virusa.

Ovaj odjeljak pruža dokumentaciju koja će pomoći programeru u jezicima ljuske (sh, bash, ksh i drugi)

Tumač naredbi C-ljuske

0. Uvod

Tumač naredbi u UNIX okruženju ima dvije glavne funkcije:

predstavlja interaktivno sučelje s korisnikom, tj. izdaje prompt i obrađuje naredbe koje je unio korisnik;
obrađuje i izvršava tekstualne datoteke koje sadrže naredbe tumača (naredbene datoteke);

U potonjem slučaju, operativni sustav vam omogućuje da tretirate batch datoteke kao neku vrstu izvršnih datoteka. Sukladno tome, razlikuju se dva načina rada tumača: interaktivni i naredbeni.

U UNIX okruženju (za razliku od, recimo, DOS-a) postoji nekoliko različitih ljuski. Nabrojimo najpopularnije:

/ bin / sh - Bourneova školjka. Povijesno gledano, to je bila prva naredbena ljuska razvijena za prvu verziju UNIX OS-a. Ova ljuska je trenutno dominantna ljuska u verzijama UNIX System V.
/ bin / csh - S-ljuska. Školjka čija je sintaksa naredbenog jezika bliska jeziku C. To je glavna ljuska za Berkeley UNIX OS.
/ bin / ksh - k-ljuska.
/ bin / rsh - Ograničena ljuska. To je sh s ograničenim mogućnostima (prvenstveno za zaštitu OS od neovlaštenih radnji korisnika).

Operativni sustav ConvexOS je okus 4.3 BSD UNIX () BSD - Berkeley Series Distribution i stoga je osnovna ljuska csh.

1. Glavne značajke

Rad s naredbenom linijom

Redak koji upiše korisnik tumač tumači kao naredbu (ili nekoliko naredbi). Sintaksa ljuske omogućuje vam tipkanje

više naredbi u jednom retku, odvojenih točkom i zarezom. Na primjer

je ekvivalentno dvije uzastopno unesene naredbe:

Naprotiv, po želji korisnik može

nastavite upisivati ​​dugu naredbu u sljedećem retku, završavajući trenutni redak s \\. Primit ćete 'sekundarni prompt' "> umjesto primarnog (%) dok se naredba ne dovrši. Na primjer,

% tar tv Makefile star.o star.c star.dat main.o main.c

ekvivalentno

% tar tv Makefile star.o \

> star.c star.dat \

I/O tokovi se kontroliraju poput DOS-a (točnije, DOS OS je usvojio sintaksu preusmjeravanja niti iz UNIX-a) pomoću simbola>,>>,

Koristan poseban slučaj korištenja mehanizma preusmjeravanja toka je preusmjeravanje na / dev / null, što vam omogućuje da se riješite nepotrebnih poruka na ekranu. Prazne datoteke mogu se stvoriti pomoću istog mehanizma:

će stvoriti praznu datoteku myfile u trenutnom direktoriju.

Dodatno, C-ljuska vam omogućuje grupiranje naredbi pomoću zagrada. U ovom slučaju interpretator smatra cijelu konstrukciju unutar zagrada kao jednu naredbu. Ovo je korisno, na primjer, u takvim konstrukcijama:

% (naredba1 | naredba2)

Ako izostavite zagrade, ljuska neće moći odrediti koju od naredbi želite unijeti u datoteku myfile.

Sljedeće "pogodnosti" postoje u danoj implementaciji C-ljuske:

Možete izbjeći upisivanje duge naredbe do kraja, ali pokušajte nakon djelomičnog upisivanja naredbe (ili naziva datoteke) pritisnuti tipku tab. C-shell će sam pokušati popuniti znakove koji nedostaju ili će odgovoriti škripom ako je izbor dvosmislen.
Ako ste upisali naredbu, ali ste zaboravili njezine opcije, upišite H. C-ljuska će vam dati kratku pomoć. Na primjer,

Kada upisujete puni naziv datoteke, koristite kombinaciju tipki ^ D. Moći ćete dobiti popis upisanog imenika u formatu naredbe lf.
Međuspremnik naredbi pamti zadnjih 20 naredbi. Umjesto upisivanja naredbe, možete je pozvati iz međuspremnika pomoću tipkovnice sa strelicama (naravno, samo ako je naredba u međuspremniku).

Raščlanjivanje naredbenog retka

Interpretator, nakon što je primio naredbeni red, na njemu izvodi niz transformacija, i to:

Proširuje pseudonime
Proširuje zamjenske znakove (*,?, [,], ~, (,))
Zamjenjuje varijable ljuske
Pokreće naredbu ako je naredba ugrađena u tumača ili pokreće proces ako je naredba vanjska.

Analizirajmo ove radnje u fazama.

Aliasi. Ugrađena naredba alias omogućuje vam definiranje aliasa naredbi. Primjer:

% alias mycat "mačka | više"

definira mycat kao alias za string cat | više. Stoga, nadalje, imate pravo koristiti naredbu mycat, koju će tumač proširiti gdje god je koristite. Ovo je način definiranja kratkih naziva za duge složene naredbe.

Ugrađeni unalias mycat uništit će prethodno uneseni alias mycat.

Metaznakovi. Metaznakovi omogućuju sažeto pisanje cijelih popisa riječi (uglavnom imena datoteka). Shell tretira riječ koja sadrži metaznakove kao predložak za sastavljanje popisa naziva datoteka:

* u uzorku zamjenjuje bilo koji niz znakova. Na primjer, m * će se proširiti na popis svih datoteka koje počinju slovom m. Postoji mala iznimka od ovog pravila: jednostavno * izostavlja s popisa one datoteke čiji nazivi počinju točkom.
? zamjenjuje jedan znak. Na primjer m? proširit će se na popis svih naziva datoteka koji počinju slovom m i koji se sastoje od točno dva slova.
[.-.] vam omogućuje da odredite razmak za znak koji treba zamijeniti. Na primjer m će se proširiti na ma mb mc me.
(..., ...) omogućuje vam da navedete riječi koje treba zamijeniti. Tako će se, na primjer, m (crvena, plava, zelena) proširiti na mred mblue mgreen.

Konačno, tilda vam omogućuje da odredite korisnikov početni direktorij:

~ ime / je ekvivalentno određivanju punog puta do imena korisničkog početnog imenika (recimo / usr1 / ime /)
~ / je ekvivalentno određivanju punog puta do vašeg vlastitog matičnog direktorija.

Varijable ljuske Školjka tumači riječi koje počinju sa simbolom $ kao imena varijabli. Varijable se dijele na varijable okruženja (poznate su svim programima pozvanim iz ove ljuske i u tom su smislu globalne) i jednostavne varijable.

Ugrađena naredba set name = value omogućuje vam definiranje jednostavne varijable pod nazivom ime i davanje vrijednosti vrijednosti. Nakon što naiđe na izraz $ name u naredbenom retku, tumač će ga zamijeniti vrijednošću. Na primjer,

% postavljena boja = plava

ispisat će plavu liniju na terminal. A

% postavljena boja = plava

% echo nova $ boja

dat će newblue. Konačno, uvođenjem

% postavljena boja = plava

% echo $ (boja) novo

dobivamo novu boju. Posljednji primjer pokazuje kako koristiti vitičaste zagrade za odvajanje naziva varijable od riječi (da bi odjeknuo $ colornew, tumač bi rekao da je varijabla colornew nedefinirana.

Naredba unset uništava prethodno definirane varijable.

Da biste definirali varijablu da bude jednaka nizu od više riječi, stavite je u jednostruke navodnike. Primjer

% postavljena boja = "plava ili crvena ili zelena"

Jednostavne varijable mogu biti nizovi riječi (što se mora razlikovati od upravo razmatranog slučaja kada varijabla sadrži niz od nekoliko riječi. Da biste deklarirali niz, morate koristiti zagrade:

% postavljenih boja = (plavo crveno zeleno)

Naredba echo $ colors sada će dati niz od tri boje (probajte!). Međutim, možete raditi i u zasebnim elementima niza (elementi su numerirani počevši od nule), na primjer:

(dobivamo zeleno). Broj elemenata u nizu sadržan je u varijabli $ # boja.

će terminalu dati broj 3.

Moguće su prilično složene kombinacije pomoću predložaka, na primjer:

% postavljenih datoteka = (m *)

ispisat će broj datoteka u trenutnom direktoriju koji počinje slovom m.

Varijable okruženja nazivaju se na isti način kao i jednostavne varijable. Razlika je u načinu na koji su definirani:

Naredba % setenv name value postavlja varijablu okruženja pod nazivom ime. Obratite pažnju na neugodnu razliku u sintaksi: kada definirate varijablu okruženja, ne morate staviti znak =.

Sve varijable okoline mogu se navesti pomoću ugrađene naredbe printenv.

Možete poništiti definicije varijable okruženja s unsetenv.

Konačno, zagrade se NE koriste za definiranje niza varijabli okruženja, ali se dvotočke koriste kao separatori za elemente polja:

% setenv MANPATH / usr / man /: / usr / local / man: / usr / man / X11: ~ / man

Ugrađene naredbe i varijable

Popis najvažnijih ugrađenih naredbi C-ljuske s kratkim objašnjenjima:

alias definira alias

bg zadatak stavlja u drugi plan

chdir path je naredba za promjenu u direktorij staze.

echo ispisuje sve svoje argumente u standardni izlaz

exec filename pokreće proces od naziva datoteke umjesto (tj. na vrhu trenutne ljuske). Nema načina da se vratite u ljusku.

exit izlazi iz ljuske.

fg čini pozadinski proces sinkronim.

naziv datoteke daje informacije o tome što operativni sustav misli o ovoj datoteci.

goto label izvodi bezuvjetni skok na red batch datoteke označen oznakom label. Ne koristi se interaktivno.

kill pid šalje signal o padu pid procesu, što obično ubija proces.

izvorni naziv datoteke čita i izvršava naredbe iz naziva datoteke.

set, setenv postavljanje internih i okolinskih varijabli.

shift var pomiče elemente polja var ulijevo. U ovom slučaju, veličina niza se smanjuje za jedan, a nulti element niza se gubi. Var mora biti niz.

time naredba izvršava naredbu i ispisuje proteklo vrijeme na terminal.

unset uništava varijablu ljuske.

unalias uklanja prethodno definirani alias naredbe.

@ name = expr pohranjuje rezultat aritmetičkog izraza expr u naziv varijable.

Popis najvažnijih ugrađenih varijabli C-ljuske s kratkim objašnjenjima:

argv niz parametara naredbenog retka (koristi se u naredbenom načinu)

cdpath je direktorij u koji ljuska ide kada primi chdir bez argumenta.

povijest je veličina međuspremnika za pamćenje naredbi.

home je korisnikov početni imenik

mjesto pošte u datotečnom sustavu poštanskog sandučića korisnika.

put put za traženje vanjskih naredbi.

prompt je glavni prompt ljuske.

prompt1 je sekundarni prompt.

ljuska puni put izvršne datoteke trenutne ljuske (/ bin / csh)

Kontrolne i petlje izjave

Namjerno smo isključili uvjetne izraze i izraze petlje s popisa naredbi ugrađenih u ljusku, o čemu će ovdje biti riječi.

Uvjetno izvršenje

Sintaksa za uvjetni if ​​izraz u C-ljusci je sljedeća

if (expr) naredba

Izraz može biti ili aritmetički izraz ili provjera atributa datoteke. Primjer:

if (-f / etc / hosts) cat / etc / hosts

Razmotrimo posljednji slučaj detaljnije. Moguće su sljedeće provjere atributa datoteke:

R je čitljiv

W je dostupan za snimanje

X je dostupan za izvršenje

E provjerava postojanje datoteke

O provjeravanje da li ste vlasnik dane datoteke

Z datoteka ima veličinu nula

F datoteka je obična datoteka

P datoteka je imenovana cijev

D datoteka je direktorij

Dok petlja

Petlja traje sve dok je uvjet istinit. Primjer:

dok ($ # datoteka> 0)

Foreach petlja

Ovo je iznimno koristan operator za petlju kroz elemente niza riječi.

foreach varname (popis)

Tijelo petlje se izvršava onoliko puta koliko ima elemenata u nizu popisa. U ovom slučaju, varijabla varname sadrži sljedeću vrijednost elementa niza. Primjer

boja prednjeg dijela (plavo crveno zeleno)

echo Boja je $ boja

foreach datoteka (* .for)

echo Preimenovanje datoteke $

mv $ datoteka `basename $ file .for`.f

Ovdje smo koristili standardnu ​​naredbu basename, koja uklanja sufiks dan u drugom argumentu od riječi dane u prvom argumentu i ispisuje rezultirajuću riječ u standardni izlaz. Korištenje povratnih oznaka u jeziku C-ljuske bit će riječi malo kasnije.

Viševarijatni uvjetni operator

Sintaksa za uvjetni izraz switch u C-ljusci je sljedeća

case pattern1: ... breaksw case (\ it pattern2):

Operator vam omogućuje prijenos kontrole ovisno o tome odgovara li niz niza bilo kojem uzorku iz postavljenog uzorka1, uzorka2, ... (u ovom slučaju, kontrola se prenosi na blok ograničen velikim slovima ... breaksw) ili ne (u ovom U slučaju, kontrola se prenosi na zadanu granu: ... endsw Općenito, naredba switch je vrlo slična analognom operatoru jezika C. Takve se konstrukcije često koriste u batch datotekama za raščlanjivanje korisničkog odgovora na pitanje ().

2. Pokretanje ljuske u naredbenom modu

Već je napomenuto da se csh može pokrenuti u naredbenom načinu. Štoviše, uvjetni izrazi i izrazi petlje često se koriste u batch datotekama. Ovdje ćemo pogledati značajke takvog "timskog" "rada.

Identifikacija tumača

Najlakši način je pokrenuti ljusku u načinu izvršavanja neke datoteke mycommand dajući ovoj datoteci izvršni atribut naredbom chmod:

% chmod + x moja naredba

Sada je dovoljno upisati naredbu mycommand s tipkovnice i OS će automatski pokrenuti ljusku u načinu izvršavanja naredbe ove datoteke. Postoji jedna zamka na ovom putu: postoji mnogo interpretatora naredbi u sustavu i sintaksa naredbi je drugačija za njih. Kako će OS odrediti što vam treba? Odgovor je nikako. Morate eksplicitno reći OS-u koji interpretator želite pokrenuti da izvrši danu batch datoteku. Da biste to učinili, prvi redak vaše datoteke trebao bi imati sljedeći standardni obrazac:

što će OS-u omogućiti da učini pravu stvar. Ako ne date ove informacije, OS će pretpostaviti (iz povijesnih razloga) da je datoteka napisana u Bourne ljusci i najvjerojatnije ćete dobiti mnogo poruka o sintaksičkim pogreškama.

Imajte na umu još jednu korisnu značajku ljuske u naredbenom načinu: svi redovi koji počinju znakom # bit će zanemareni. To vam omogućuje dodavanje komentara u tekst batch datoteke.

Sljedeća činjenica omogućuje vam da radite s naredbenim redkom koristeći csh: kada pokrenete batch datoteku mycommand, automatski se definira interna varijabla pod nazivom argv, koja predstavlja niz parametara naredbenog retka. Na primjer, sljedeća batch datoteka jednostavno ispisuje sve svoje argumente i njihov broj na terminal:

# Ova datoteka jednostavno ispisuje svoje argumente

# i ukupan broj argumenata

echo Argumenti: $ argv

echo Broj argumenata: $ # argv

Eksplicitno lansiranje

Možete koristiti izravniji, ali manje prikladan način za pokretanje batch datoteke - pozivanjem ljuske s prekidačem -c naziva datoteke. Primjer:

% / bin / csh -c moja naredba arg1 arg2 arg3 ...

gdje ime izvršne datoteke mora odmah slijediti ključ. Obavezni argumenti navedeni su nakon. Imajte na umu da s ovom metodom izvršenja datoteka možda neće imati izvršni atribut.

Citati

U sintaksi ljuske, navodnici igraju važnu ulogu. Postoje tri vrste navodnika: jednostavni ("), dvostruki (") i stražnji (`).

Pojedinačni navodnici se koriste za isticanje teksta koji ljuska mora shvatiti doslovno. Drugim riječima, tekst unutar jednostavnih navodnika nije podložan otkrivanju i tumačenju. Primjer:

echo "Dolar je dobar"

dobivamo doslovno dolar je $ dobar iako je znak za dolar metaznak ljuske.

Dvostruki navodnici ocrtavaju niz znakova koji će ljuska protumačiti kao jednu riječ. Primjer:

set boja = "zelena plava crvena"; odjek $ # boja

vratit će broj 1, što znači da je varijabla boja jednostavna, a ne niz. Sve unutar dvostrukih navodnika tumači se školjkom.

Povratak vam omogućuje da predstavite niz koji se sastoji od rezultata naredbe. Dakle, izraz u navodnicima se tretira kao naredba koju ljuska izvršava, a ono što ta naredba ispisuje na standardni izlaz zamjenjuje se kao niz u kojem se pojavljuju povratni navodniki. Primjer:

će postaviti varijablu mytty na redak koji proizvodi naredba tty (odnosno ime i broj trenutnog terminala).

Školjke su se pojavile rano u razvoju Unixa i bile su neophodne jer su bile jedini način interakcije sa sustavom. Tijekom tog vremena prošli su vrlo dug put razvoja i dobili mnoge nove funkcije. Nije lako procijeniti evoluciju Linux ljuski. O tome se može pisati jako dugo i jedan članak definitivno nije dovoljan. Pokušat ćemo pokriti samo ono najosnovnije bez zarona jako duboko. Pogledajmo prvo što je Linux naredbena ljuska i koje školjke postoje.

Što je Linux / Unix naredbena ljuska

Unix ljuska je tumač naredbenog retka koji izvršava naredbe koje je unio korisnik. Upisujemo naredbu, interpretiramo je, izvršavamo, a zatim dobivamo rezultat njenog izvršenja. Ljuska pruža tradicionalno Unix sučelje za unos naredbi na koje smo navikli. Ovo je obično crni ekran i bijeli tekst. Naredbe unosimo u običnom tekstu, a možemo kreirati i skripte iz jedne ili više naredbi.

Školjka je vaše sučelje za interakciju sa sustavom. Nakon što se prijavite u Unix sustav, nalazite se u programu koji se zove ljuska.

Thompson Shell

Prema povijesti i mnogim internetskim izvorima, prva ljuska bila je Thompson Shell, koju je napisao Ken Thomson iz Bell Labsa. Bilo je ukupno 6 verzija i distribuiran je od 1971. do 1975. godine. Podržane su funkcije kao što su I/O preusmjeravanje i jednostavne upravljačke konstrukcije - if, goto. Sve moderne Linux ljuske podržavaju ove funkcije.

PWB školjka

PWB školjka je modifikacija Thomsonove ljuske koju je razvio John Macheu. Napisana je kako bi se poboljšala praktičnost programiranja u Shellu. Postoje zanimljive strukture kao što su if-then-else-endif, switch i while petlje.

Bourne školjka

Unix je započeo svoj uspon s Bourne ljuskom. Napisao ju je Stefan Bourne iz Bell Labsa i korištena je kao zadana ljuska u Unixu 7 1979. godine. Ovdje je već implementiran veliki broj značajki dostupnih u modernim ljuskama - dovršavanje naziva datoteke, dovršavanje naredbi, standardne varijable okruženja i ugrađene kontrolne strukture. Bourneova ljuska zvala se sh i nalazila se u datotečnom sustavu Unixa na / bin / sh.

Na mnogim sustavima, Bourneov program ljuske (sh) je simbolična ili tvrda veza na jednu od njegovih alternativa:

  • Almquist školjka (pepeo)
  • Bourne-Again shell (bash)
  • korn ljuska (ksh)
  • Z ljuska (zsh)

Primjer skripte za Bourne Shell:

! / bin / sh
echo "Hello World 1!"
echo "Hello World 2!"

Almquist školjka (pepeo)

Almquist školjka, također poznata kao A Shell. To je lagana Unix ljuska koju je izvorno napisao Kenneth Almquist. Razvijen je kasnih 1980-ih. Ovo je modifikacija Bourneove ljuske i zamjenjuje originalni BSD Unix objavljen 1990. godine. Sada se može koristiti na distribucijama kao što su Debian i Ubuntu kao verzija asha koja se zove dash (Debian Almquist shell). Također je popularna na ugrađenim Unix distribucijama.

To je brza, kompaktna i POSTIX kompatibilna Unux ljuska, što je možda razlog zašto se često koristi na ugrađenim uređajima. Ali pepeo ne podržava zapovjedne povijesti. Iako je u modernim verzijama ova značajka već dodana.

Bourne-Again Shell (Bash)

Napisao Brian Fox kao dio GNU projekta kao besplatnu i open source zamjenu za Bourneovu ljusku. Bash je najpopularnija i naširoko korištena od svih školjki. Sve Linux distribucije dolaze s ovom ljuskom prema zadanim postavkama. Proširuje funkcionalnost Bourne Shell-a. Na većini Unix / Linux sustava, ova ljuska se može naći u datotečnom sustavu na / bin / bash. Izdan je 1989. godine.

Zbog te popularnosti, portiran je na Windows i distribuiran zajedno s Cygwin i MinGW kompajlerskim setovima. Bash se također koristi u Androidu, a za pristup mu možete koristiti razne emulatore terminala.

Podržava automatsko dovršavanje, I/O preusmjeravanje, dovršavanje naredbi, varijable i kontrolne strukture za donošenje odluka (if-then-elese if) i petlje.

Bash skripte počinju ovako:

Ova linux ljuska također podržava čitanje naredbi iz datoteke i preusmjeravanje izlaza u datoteku ili drugu naredbu.

Primjer Bash koda:

! / bin / sh
ako [$ dana -gt 365]
zatim
echo Ovo je više od godinu dana.
fi

korn ljuska (ksh)

Napisao David Kron i temelji se na izvorima Bourneove školjke. KornShell (ksh) je ljuska koju je razvio Bell Labs davne 1980. Kompatibilna je unatrag s Bourne Shellom i također uključuje mnoge značajke C ljuske.

Postoje sljedeće verzije i modifikacije:

  • Dtksh
  • MKS Korn školjka

Primjer skripte:

! / bin / ksh
ispis Potrošnja prostora na disku
du -k
izlaz 0

Z ljuska (zsh)

Paul Falstad napisao je prvu verziju sa zsh shell naredbom 1990. godine. To je naredbena ljuska Linuxa koja se može koristiti kao interaktivna ljuska za prijavu, vrlo moćan tumač naredbi. Zapravo Zsh je proširena Bourneova ljuska s puno poboljšanja koja uključuje neke značajke iz Bash, KSH i Tcsh.

Ime Zsh dolazi od profesora s Yalea Zhong Shaoa otkako je Paul bio student na Sveučilištu Princeton.

Podržane su takve zanimljive funkcije:

  • Završetak linije
  • Zajednička povijest naredbi za sve sesije ljuske
  • Poboljšan rad s varijablama i nizovima
  • Uređivanje više redaka u jednom međuspremniku
  • Ispravak pravopisa i još mnogo toga.

C ljuska

C ljuska je također poznata kao Csh. Razvio ga je Bill Joy dok je bio student na Sveučilištu u Kaliforniji. Ova ljuska je vrlo česta na BSD Linux sustavima. Ovdje postoje mnoge zanimljive značajke, uključujući strukture provjere i gramatičke izraze. Ovaj omot također je po prvi put uveo veliki broj zanimljivih značajki, kao što su povijest i mehanizmi za uređivanje, aliasi, CDPATH, upravljanje zadacima i raspršivanje, preusmjeravanje izlaza, pričvršćivanje, zamjena varijable, pozadinsko izvršenje itd.

Kao i druge vrste Linux ljuski, podržava datoteke skripta, preusmjeravanja i kontrolne strukture. Csh se sada koristi kao tcsh na mnogim sustavima, kao što su MacOS X i Red Hat Linux. I CSH i Tcsh se mogu koristiti na Debianu.

Primjer C shell koda:

! / bin / csh
ako ($ dana> 365) onda
echo Ovo je više od godinu dana.
završi ako

Riba

Fish or Friendly Interactive Shell je sljedeća generacija Linux naredbene ljuske. Dizajniran je kako bi korisniku olakšao izvršavanje naredbi, postoji isticanje sintakse, isticanje točnih adresa datoteka, brzo pretraživanje u povijesti, web konfigurator, kao i posebna sintaksa skripte.

To je nova naredbena ljuska u Linuxu i njezina je sintaksa za razliku od bilo koje moderne ljuske, već je to programski jezik Python.

Primjer stvaranja funkcije u ribi:

! / usr / bin / riba
financirao su
funkcija su
/ bin / su --shell = / usr / bin / fish $ argv
kraj
funcsave su

Ovdje možete vidjeti detaljniju usporedbu ljuski u Linuxu.

To je sve za danas. Nadam se da ste bili zainteresirani.

  • Vodič

Zašto i za koga je članak?

Prvobitno je zamišljen kao vodič za studente koji počinju sa sustavima sličnim unixu. Drugim riječima, članak je namijenjen onima koji nemaju prethodnog iskustva u radu u unix naredbenom retku, ali iz ovog ili onog razloga žele ili moraju naučiti kako s njim učinkovito komunicirati.

Neće biti prepričavanja ljudi (dokumentacija), a članak ni na koji način ne ukida niti zamjenjuje njihovo čitanje. Umjesto toga, reći ću vam o glavnim stvarima (naredbama, tehnikama i principima) koje morate razumjeti od samog početka rada u unix ljusci kako bi rad bio učinkovit i ugodan.

Članak se bavi punopravnim okruženjima sličnim unixu, s potpuno funkcionalnom ljuskom (po mogućnosti zsh ili bash) i prilično širokim rasponom standardnih programa.

Što je školjka

Shell (ljuska, aka "naredbena linija", aka CLI, aka "konzola", aka "terminal", aka "crni prozor s bijelim slovima") je tekstualno sučelje za komunikaciju s operativnim sustavom (pa, strogo govoreći, to je program, koji pruža takvo sučelje, ali sada ta razlika nije značajna).

Općenito, rad kroz ljusku izgleda ovako: korisnik (odnosno vi) unese naredbu s tipkovnice, pritisne Enter, sustav izvrši naredbu, zapiše rezultat izvršenja na zaslon i opet čeka sljedeću naredbu da se unese.

Tipična vrsta školjke:

Shell je primarni način interakcije sa svim poslužiteljskim sustavima sličnim Unixu.

Gdje se pojavljuju sustavi naredbenog retka?

Gdje vas može čekati unix ljuska, popularne opcije:
  • MacOS (bash);
  • daljinski pristup poslužitelju za rad ili za osobni web projekt;
  • kućni poslužitelj datoteka s daljinskim pristupom;
  • Ubuntu, PC-BSD na prijenosnom računalu / stolnom računalu - sustavi slični unixu danas su jednostavni za instalaciju i korištenje.

Koje je zadatke razumno rješavati ljuskom?

Prirodni zadaci za koje je školjka prikladna, korisna i nezamjenjiva:
  • interaktivni rad u terminalu:
    • obavljanje kompilacije, izvršavanje zadataka kroz make;
    • usporedba tekstualnih datoteka;
    • brza ad-hoc analiza podataka (broj jedinstvenih IP-ova u zapisniku, distribucija zapisa po satima/minutama, itd.);
    • jednokratne skupne radnje (ubiti mnogo procesa; ako radite sa sustavom kontrole verzija, poništite ili vratite hrpu datoteka);
    • dijagnostika onoga što se događa u sustavu (semafori, brave, procesi, deskriptori, prostor na disku itd.);
  • skriptiranje:
    • instalacijske skripte, za čije se izvršavanje ne možete osloniti na prisutnost drugih tumača - ovo nije za početnike;
    • funkcije za prilagodbu interaktivne ljuske (utječu na prompt, mijenjanje direktorija, postavljanje varijabli okruženja) - također ne u potpunosti za početnike;
    • jednokratne skripte kao što je masovno transkodiranje datoteka;
    • makefiles.

Apsolutni prvi koraci

Početak: Prijavite se i odjavite se

Provjerite znate li točno kako pokrenuti shell i kako izaći iz nje.

Ako ste na računalu s instaliranim Ubuntuom, morate pokrenuti program Terminal. Kada završite, možete jednostavno zatvoriti prozor.

Na MacOS-u također pokrenite Terminal.

Za pristup udaljenom poslužitelju upotrijebite ssh (ako imate MacOS, Ubuntu ili neki drugi sustav sličan unixu) ili putty (ako imate Windows).

Tko sam ja, gdje sam?

Pokrenite sljedeće naredbe:
  • naziv hosta - prikazuje naziv stroja (poslužitelja) na kojem se trenutno nalazite;
  • whoami - prikazuje vašu prijavu (vaše ime u sustavu);
  • stablo -d / | manje - pseudo-grafička slika stabla imenika na stroju; izlaz iz pomicanja - q;
  • pwd - prikazuje imenik u kojem se trenutno nalazite; u naredbenom retku, ne možete biti “samo tako”, sigurno ste u nekom direktoriju (= trenutni direktorij, radni direktorij). Vaš trenutni radni imenik vjerojatno se prikazuje na vaš upit.
  • ls - popis datoteka u trenutnom direktoriju; ls / home - popis datoteka u navedenom direktoriju;

Povijest naredbi (povijest)

Važno svojstvo punopravnog naredbenog retka je povijest naredbi.

Pokrenite nekoliko naredbi: ime hosta, ls, pwd, whoami. Sada pritisnite tipku gore. Prethodna naredba pojavila se u retku za unos. Koristite tipke "gore" i "dolje" za kretanje naprijed i natrag kroz povijest. Kada se pomaknete dolje do imena hosta, pritisnite Enter - naredba će se ponovno izvršiti.

Naredbe iz povijesti mogu se ne samo ponavljati, već i uređivati. Potražite povijest naredbe ls, dodajte joj prekidač -l (ispostavilo se da je ls -l, ima razmak ispred minusa, ali ne i iza). Pritisnite Enter - izmijenjena naredba će se izvršiti.

Pomicanje kroz povijest, uređivanje i ponovno izvršavanje naredbi su najčešće radnje kada radite u naredbenom retku, naviknite se na to.

Copy-paste

Naredbeni redak je vrlo tekstualno usmjeren: naredbe su tekst, ulazni podaci za većinu standardnih programa su tekst, a rezultat rada najčešće je i tekst.

Lijepa stvar kod teksta je to što se može kopirati i zalijepiti, a to vrijedi i za naredbeni redak.

Pokušajte s naredbom datum + "% y-% m-% d,% A"
Jeste li ga u cijelosti unijeli ručno ili ste ga kopirali iz članka? Provjerite možete li ga kopirati, zalijepiti u terminal i izvršiti.

Nakon što naučite koristiti man, provjerite možete li kopirati i pokrenuti primjere naredbi iz pomoći. Za testiranje potražite odjeljak PRIMJERI u uslužnom programu za datum, kopirajte i pokrenite prvi prikazani primjer (za svaki slučaj: znak dolara je nije dio naredbe, ovo je uvjetna slika prompta).

Kako točno kopirati tekst s terminala i zalijepiti ga u terminal ovisi o vašem sustavu i njegovim postavkama, tako da, nažalost, neće raditi davati univerzalne upute. Na Ubuntu pokušajte ovo: copy je samo odabir mišem, paste je srednja tipka miša. Ako ne radi, ili ako imate drugačiji sustav, pretražite internet ili pitajte iskusnije poznanike.

Tipke i opcije

Gledajući povijest naredbi, već ste naišli na činjenicu da naredba ls ima barem dvije opcije. Ako ga nazovete samo tako, izlazi jednostavan popis:

[e-mail zaštićen]: ~ / shell-survival-quide> ls Makefile shell-first-steps.md shell-first-steps.pdf shell-survival-quide.md shell-survival-quide.pdf
Ako dodate prekidač -l, za svaku se datoteku prikazuju detaljne informacije:

[e-mail zaštićen]: ~ / shell-survival-quide> ls -l ukupno 332 -rw-rw-r-- 1 akira akira 198 13. veljače 11:48 Makefile -rw-rw-r-- 1 akira akira 15107 14. veljače 22:26 shell -first-steps.md -rw-rw-r-- 1 akira akira 146226 13. veljače 11:49 shell-first-steps.pdf -rw-rw-r-- 1 akira akira 16626 13. veljače 11:45 shell-survival -quide.md -rw-rw-r-- 1 akira akira 146203 13. veljače 11:35 shell-survival-quide.pdf
Ovo je vrlo tipična situacija: ako dodate posebne modifikatore (tipke, opcije, parametre) pozivu naredbe, ponašanje naredbe se mijenja. Usporedite: stablo / i stablo -d /, ime hosta i ime hosta -f.

Osim toga, naredbe mogu kao parametre uzeti nazive datoteka, direktorija ili samo tekstualne nizove. Probati:

Ls -ld / home ls -l / home grep root / etc / passwd

čovjek

man je referenca za naredbe i programe dostupne na vašem računalu, kao i za sistemske pozive i standardnu ​​biblioteku C.

Pokušajte: man grep, man atoi, man chdir, man man.

Pomicanje naprijed i natrag vrši se tipkama "gore", "dolje", "PageUp", "PageDown", izlaz iz prikaza pomoći - tipkom q. Tražite određeni tekst u članku pomoći: Pritisnite / (kosa crta), unesite tekst za pretraživanje, pritisnite Enter. Pomaknite se na sljedeća pojavljivanja - tipka n.

Svi članci pomoći su kategorizirani. Najvažniji:

  • 1 - izvršni programi i naredbe ljuske (wc, ls, pwd, itd.);
  • 2 - sistemski pozivi (fork, dup2, itd.)
  • 3 - funkcije knjižnice (printf, scanf, cos, exec).
Potrebno je naznačiti iz koje kategorije treba iskazati pomoć u slučajevima podudarnosti naziva. Na primjer, man 3 printf opisuje funkciju iz standardne biblioteke C, a man 1 printf opisuje konzolni program istog imena.

Možete vidjeti popis svih man stranica dostupnih na stroju pomoću naredbe man -k. (točka je također dio tima).

manje

Kada trebate pogledati vrlo dugačak tekst u malom terminalskom prozoru (sadržaj datoteke, dugi čovjek, itd.), koriste se posebni programi "pageri" (od riječi stranica / stranica, odnosno leci stranice) . Najpopularniji preglednik stranica je manje, i to je onaj koji vam omogućuje okretanje kada čitate stranice man.

Pokušajte i usporedite ponašanje:

Mačka /etc/bash.bashrc mačka /etc/bash.bashrc | manje

Datoteku možete prenijeti u preglednik izravno u parametrima:

Manje /etc/bash.bashrc

Pomicanje gore i dolje - gore, dolje, gumbi PageUp, PageDown, izlaz - q gumb. Tražite određeni tekst: pritisnite / (kosa crta naprijed), unesite tekst za pretraživanje, pritisnite Enter. Pomaknite se na sljedeća pojavljivanja - tipka n. (Prepoznajete li priručnik o čovjeku? Nije ni čudo, manje se također koristi za prikaz pomoći.)

Prava

Skup "prava" povezan je s bilo kojom datotekom ili direktorijem: pravo čitanja datoteke, pravo pisanja u datoteku, pravo izvršavanja datoteke. Svi su korisnici podijeljeni u tri kategorije: vlasnik datoteke, grupa vlasnika datoteke, svi ostali korisnici.

Dozvole datoteke možete vidjeti pomoću ls -l. Na primjer:

> ls -l Makefile -rw-r - r-- 1 akira student 198 13. veljače 11:48 Makefile
Ovaj izlaz znači da vlasnik (akira) može čitati i pisati datoteku, grupa (učenici) može samo čitati, a svi ostali u korisniku mogu samo čitati.

Ako tijekom rada dobijete poruku odbijeno dopuštenje, to znači da nemate dovoljno dopuštenja za objekt s kojim ste htjeli raditi.

Za detalje pročitajte man chmod.

STDIN, STDOUT, transporteri (cijevi)

Postoje 3 standardna toka podataka povezana sa svakim izvršnim programom: STDIN ulazni tok podataka, STDOUT izlazni tok podataka i STDERR izlazni tok grešaka.

Pokrenite WC program, upišite tekst Dobar dan danas, pritisnite Enter, upišite tekst Dobar dan, pritisnite Enter, pritisnite Ctrl + d. Wc program će prikazati statistiku za broj slova, riječi i redaka u vašem tekstu i izlaz:

> wc dobar dan danas dobar dan 2 5 24
U ovom slučaju, dali ste tekst u dva retka u STDIN programa, a tri broja u STDOUT.

Sada pokrenite naredbu head -n3 / etc / passwd, trebala bi izgledati otprilike ovako:

> head -n3 / etc / passwd root: x: 0: 0: root: / root: / bin / bash daemon: x: 1: 1: daemon: / usr / sbin: / usr / sbin / nologin bin: x: 2: 2: bin: / bin: / usr / sbin / nologin
U ovom slučaju, head nije pročitao ništa iz STDIN-a, već je napisao tri retka u STDOUT.

Razmislite o tome na sljedeći način: program je cijev u koju ulazi STDIN, a izlazi STDOUT.

Najvažnije svojstvo naredbenog retka Unixa je da se kanali mogu međusobno povezati: izlaz (STDOUT) jednog programa može se proslijediti kao ulaz (STDIN) drugom programu.

Takva konstrukcija povezanih programa na engleskom se zove pipe (pipe), na ruskom - transporter ili cijev.

Kombinacija programa u cjevovod vrši se simbolom | (okomita traka)

Pokrenite naredbu head -n3 / etc / passwd | wc, dobit ćete nešto poput ovoga:

> glava -n3 / etc / passwd | wc 3 3 117
Evo što se dogodilo: glavni program je izdao tri retka teksta u STDOUT, koji je odmah otišao na ulaz wc programa, koji je zauzvrat brojao broj znakova, riječi i redaka u rezultirajućem tekstu.

Možete kombinirati onoliko programa koliko želite u cjevovodu. Na primjer, možete dodati još jedan wc program u prethodni cjevovod koji broji koliko je riječi i slova bilo u izlazu prvog wc-a:

> glava -n3 / etc / passwd | wc | wc 1 3 24

Sastavljanje cjevovoda (cijevi) je vrlo česta stvar kada se radi u naredbenom retku. Za primjer kako se to radi u praksi, pogledajte Izgradnja jednolinijskog cjevovoda.

I/O preusmjeravanje

Izlaz (STDOUT) programa ne samo da se može prenijeti u drugi program, već i jednostavno zapisati u datoteku. Ovo preusmjeravanje se vrši sa> (znakom veće od):

Datum> /tmp/today.txt
Kao rezultat izvršenja ove naredbe, datoteka /tmp/today.txt će se pojaviti na disku. Pogledajte njegov sadržaj s cat /tmp/today.txt

Ako je datoteka s istim imenom već postojala, njen stari sadržaj bit će uništen. Ako datoteka nije postojala, bit će kreirana. Direktorij u kojem je datoteka stvorena mora postojati prije nego što se naredba izvrši.

Ako ne želite prebrisati datoteku, već dodati izlaz na njen kraj, upotrijebite >>:

Datum >> /tmp/today.txt
Provjerite što je sada zapisano u datoteci.

Osim toga, bilo koja datoteka se može proslijediti programu umjesto STDIN-a. Probati:

Zahod

Što učiniti kada nešto nije jasno

Ako ste suočeni s ponašanjem sustava koje ne razumijete, ili želite postići određeni rezultat, ali ne znate kako točno, savjetujem vam da postupite sljedećim redoslijedom (usput, to se ne odnosi samo na školjke) :
  • što jasnije formulirajte pitanje ili zadatak - nema ništa teže od rješavanja "ne znam što";
  • zapamtite ako ste se već susreli s istim ili sličnim problemom - u ovom slučaju vrijedi isprobati rješenje koje je uspjelo prošli put;
  • pročitajte odgovarajuće man-ove (ako znate koji su man-ovi prikladni u vašem slučaju) - možda ćete pronaći prikladne primjere korištenja naredbi, potrebne opcije ili poveznice na druge naredbe;
  • razmislite: je li moguće malo promijeniti zadatak? - možda ćete malom promjenom uvjeta dobiti problem koji već znate riješiti;
  • postavite svoje jasno formulirano pitanje u tražilici - možda se odgovor može pronaći na Stack Overflowu ili drugim stranicama;
Ako ništa od navedenog ne pomaže, potražite savjet učitelja, iskusnog kolege ili prijatelja. I nemojte se bojati postavljati „glupa“ pitanja – nije šteta ne znati, šteta je ne pitati.

Ako ste shvatili neki težak problem (sam, uz pomoć interneta ili drugih ljudi) - zapišite svoje rješenje u slučaju da vi ili vaši suborci ponovo imate isti problem. Možete snimati u jednostavnu tekstualnu datoteku, u Evernoteu, objavljivati ​​na društvenim mrežama.

Metode rada

Kopiranje i lijepljenje- od man-s, iz članaka na StackOverflowu, itd. Naredbeni redak se sastoji od teksta, koristite ovo: kopirajte i koristite primjere naredbi, zapišite uspješne nalaze kao suvenir, objavite ih na twitteru i blogovima.

Izvucite prethodnu naredbu iz povijesti, dodajte drugu naredbu u cjevovod, pokrenite, ponovite.Cm. Vidi također Sastavljanje jednolinijskog cjevovoda.

Osnovne naredbe

  • premještanje u drugi direktorij: cd;
  • pregled sadržaja datoteka: mačka, manje, glava, rep;
  • manipulacija datotekama: cp, mv, rm;
  • pregled sadržaja direktorija: ls, ls -l, ls -lS;
  • struktura imenika: stablo, stablo -d (možete proslijediti imenik kao parametar);
  • traži datoteke: pronađi. -Ime ...;

Analitika

  • wc, wc -l;
  • sort -k - sortiranje po navedenom polju;
  • sort -n - numeričko sortiranje;
  • diff - usporedba datoteka;
  • grep, grep -v, grep -w, grep "\ ", grep -E - traženje teksta;
  • uniq, uniq -c - jedinstvenost linije;
  • awk - u awk varijanti "(ispis $1)" kako bi se zadržalo samo prvo polje svakog retka, $1 se može promijeniti u $2, $3, itd.;

Dijagnostika sustava

  • ps axuww - informacije o procesima (pokrenutim programima) koji se izvode na stroju;
  • vrh - interaktivni pogled na procese koji zahtijevaju najviše resursa;
  • df - iskorišteni i slobodni prostor na disku;
  • du je ukupna veličina datoteka u direktoriju (rekurzivno s poddirektorijumima);
  • strace, ktrace - ono što sustav zove proces izvodi;
  • lsof - koje datoteke proces koristi;
  • netstat -na, netstat -nap - koji su portovi i utičnice otvoreni na sustavu.

Možda nemate neke programe, potrebno ih je dodatno instalirati. Osim toga, neke opcije ovih programa dostupne su samo privilegiranim korisnicima (root "y).

Masovna i poluautomatska izvedba

Isprva preskočite ovaj odjeljak, trebat će vam ove naredbe i konstrukcije kada dođete do jednostavnog skriptiranja ljuske.
  • test - provjera uvjeta;
  • while read - petlja kroz STDIN linije;
  • xargs - zamjena nizova iz STDIN-a u parametre navedenog programa;
  • seq - generiranje nizova prirodnih brojeva;
  • () - kombinirati izlaz nekoliko naredbi;
  • ; - dovršiti jedan po jedan;
  • && - izvršiti pod uvjetom uspješnog završetka prve naredbe;
  • || - izvršiti pod uvjetom neuspješnog završetka prve naredbe;
  • tee - duplicirati izlaz programa u STDOUT i u datoteku na disku.

Razno

  • datum - trenutni datum;
  • curl - preuzima dokument na navedenom url-u i zapisuje rezultat u STDOUT;
  • dodir - ažuriranje datuma izmjene datoteke;
  • ubiti - poslati signal procesu;
  • true - ne radi ništa, vraća true, korisno za organiziranje vječnih petlji;
  • sudo - izvrši naredbu kao root "a.

Sastavljanje jednovodnog cjevovoda

Pogledajmo primjer zadatka iz stvarnog svijeta: trebate ubiti sve procese na poslužitelju zadataka 6 koji se pokreću u ime trenutnog korisnika.

Korak 1.
Shvatite koji program proizvodi približno potrebne podatke, čak i ako ne u čistom obliku. Za naš zadatak vrijedi dobiti popis svih procesa u sustavu: ps axuww. Trčanje.

Korak 2.
Gledajte primljene podatke očima, smislite filter koji će izbaciti dio nepotrebnih podataka. Često je to grep ili grep -v. Upotrijebite tipku "Gore" da izvučete prethodnu naredbu iz povijesti, dodijelite joj filtar koji ste izumili i pokrenite je.

Ps axuww | grep `whoami`
- samo procesi trenutnog korisnika.

Korak 3.
Ponavljajte korak 2 dok ne dobijete čiste podatke koje želite.

"
- svi procesi sa željenim imenom (plus, možda, nepotrebni kao što je vim task-6-server.c, itd.),

Ps axuww | grep `whoami` | grep "\ "| grep -v vim ps axuww | grep` whoami` | grep "\ "| grep -v vim | grep -v manje
- samo procesi s traženim imenom

Ps axuww | grep `whoami` | grep "\ "| grep -v vim | grep -v manje | awk" (ispis 2 dolara) "

Potrebni pids procesa, korak 3 je dovršen

4. korak.
Nanesite odgovarajuću završnu obradu. Pomoću tipke "Gore" izvucite prethodnu naredbu iz povijesti i dodajte obradu koja će dovršiti rješenje problema:

  • | wc -l za brojanje broja procesa;
  • > pids za pisanje pidova u datoteku;
  • | xargs ubija -9 procesa ubijanja.

Zadaci treninga

Želite vježbati nove vještine? Isprobajte sljedeće zadatke:
  • dobiti popis svih datoteka i direktorija u vašem početnom imeniku;
  • dobiti popis svih man članaka iz kategorije 2 (pozivi sustava);
  • izbroj koliko se puta riječ grep pojavljuje u grep man-e;
  • brojite koliko procesa se trenutno izvodi kao root korisnik;
  • pronaći koja se naredba pojavljuje u maksimalnom broju kategorija pomoći (man);
  • izbroj koliko se puta riječ var pojavljuje na stranici ya.ru.
Savjet: trebate find, grep -o, awk "(print $1)", regularne izraze u grep, curl -s.

Što dalje studirati?

Ako vam se počne sviđati naredbeni redak, nemojte stati, nastavite poboljšavati svoje vještine.

Evo nekih programa koji će vam svakako dobro doći ako živite na naredbenoj liniji:

  • pronaći sa složenim opcijama
  • odnosno
  • pronaći
  • telnet
  • netcat
  • tcpdump
  • rsync
  • zaslon
  • zgrep, zless
  • visudo
  • crontab -e
  • poslati mail
Osim toga, s vremenom se isplati naučiti skriptni jezik kao što je perl ili python, ili čak oboje.

Kome to treba?

Isplati li se danas naučiti naredbeni redak i shell skripte? Definitivno se isplati. Evo samo nekoliko primjera zahtjeva Facebooka za kandidate koji se žele prijaviti za posao na FB.

Vrhunski povezani članci