Caractere speciale și screening-ul lor

Un număr de caractere din comenzile sunt simboluri speciale. Acest lucru înseamnă că ele nu sunt transferate pentru a porni un program sau handler de comandă shell interior și prelucrate înaintea comenzii este executată. Aceasta este, caractere speciale controlate de shell. Unele dintre aceste personaje includ:

Dacă doriți să coajă nu este procesat într-un caracter special mod special, și tratează-l ca un personaj obișnuit, acesta trebuie să fie scăpat. Există trei modalități de a face acest lucru:

1. Pune-o bară oblică inversă (\), înainte de caracter special (în limba engleză, această metodă se numește evadare). Sam backslash, respectiv, de asemenea, este un caracter special, și poate, de asemenea, ecranate (de exemplu, a pus două linii oblice, \\). De exemplu:

grep norocos \ * steaua mea \ fișier # Cauti o linie * stea norocoasă în fișierul dosarul meu

Backslash în fața, nu este un caracter special de obicei vor fi ignorate.

2. Introduceți într-o comandă sau o parte a unei echipe cu caractere speciale între ghilimele duble ( „) în limba engleză, această metodă se numește ghilimele ghilimele duble ecran caracterele cele mai speciale, dar nu toate caracterele speciale ramase in ghilimele, poate scăpa backslash Exemplu .....:

grep „noroc * stea“ „fișierul meu“ # În mod similar la comanda anterioară

Backslash în termen de ghilimele duble în fața unui personaj obișnuit sau un simbol și fără ecranate în ghilimele duble este tratată ca un slash ecranată. Dar poate fi scăpat în mod explicit. Acest lucru înseamnă că comanda echo „Bună ziua, \ slash“ și echo „Bună ziua, \\ desisuri“ va aduce pe ecran la fel: Buna ziua, \ slash.

3. Introduceți într-o comandă sau o parte a unei echipe în ghilimele simple (în limba engleză, această metodă este, de asemenea, numit citat). Ei ecran toate caracterele speciale. exemplu:

# Găsiți linia de 1.000 $ per fișier venitul meu

grep '$ 1000' "venitul meu"

# „$“ Nu este ecranată de ghilimele duble si single - ecranate.

Backslash interior ghilimele duble este considerat întotdeauna ecranat. Ecoul comandă „Bună ziua, \\ slash“ afișează un salut, \\ slash.

Concluzie Rezultatele fișierului

Cel mai probabil va trebui vreodată să scrie întreaga ieșire a unei comenzi într-un fișier. Asigurați-l simplu: comanda> nume de fișier

# Găsiți toate liniile care conțin șirul „loruser“ în fișierul / etc / passwd

# Și scrie-le în fișierul „myfile“ în „Documente“ din directorul home.

grep loruser / etc / passwd>

În acest caz, rețineți că fiecare program are două fluxuri de ieșire: stdout și stderr. Programul în sine determină mesajele pentru orice flux de ieșire. Dacă redirecționa numai fluxul de ieșire, eroarea nu va fi înregistrată în dosar, și va fi afișat pe ecran (și invers). Pentru a redirecționa fluxul de eroare, utilizați următoarea sintaxă: comandă 2> nume de fișier

Puteți trimite fișiere în două fluxuri:

comanda> fayl_dlya_vyvoda 2> fayl_dlya_oshibok

grep loruser / etc / passwd>

Când redirecționați ieșirea într-un fișier sau o eroare este complet suprascris (sau create în cazul în care nu există). Chiar dacă nu se afișează nimic, fișierul va fi suprascris și înlocuit cu un martor.

Pentru a adăuga la fișierul, salvând conținutul anterior, folosiți dublu semnul „mai mult“ în loc de un singur. Aceasta este:

comandă >> fișier # Pentru a afișa

Echipa 2 >> fișier # pentru erori

Poate că aveți o altă întrebare: cum să obțineți un program pentru a citi date dintr-un fișier, ca și în cazul în care acestea au fost introduse de la tastatura?

Dar dacă sunteți sigur că nu există nici o astfel de funcție, puteți trimite în continuare date dintr-un fișier în fluxul de intrare a programului:

Da, puteți combina de intrare și de ieșire redirecționarea:

echipă <файл_для_ввода> fayl_dlya_vyvoda

Un exemplu particular de realizare este canalul de organizare software de redirecționare (transportor). Pentru a face acest lucru, două sau mai multe echipe, astfel încât ieșirea anterioară este de intrare pentru următoarea (dacă vă place sau separat, mai mult) simbolul țeavă, conectate - „|“. În acest caz, comanda de ieșire standard la stânga a simbolului |, este trimis la intrarea standard a programului, la dreapta simbolului |.

Trebuie remarcat faptul că teaca în același timp, este de a efectua toate comenzile incluse în transportorul de funcționare pentru fiecare dintre echipe o instanță separată a carcasei, astfel încât de îndată ce primul program începe să dea afară nimic în fluxul său de ieșire, următoarea comandă își începe procesul. În mod similar, fiecare comanda următoare efectuează funcționarea sa, așteptând date de la o comandă anterioară și care trece rezultatele la intrarea ulterioară. Dacă doriți să faceți un fel de echipă este complet finalizată înainte de începerea ulterioare, puteți utiliza aceeași linie ca și caracterul conductei |, și un punct și virgulă ;. Înainte de fiecare coajă și virgulă se va opri și să aștepte pentru sfârșitul tuturor instrucțiunilor anterioare incluse în transportor.

Filtre - sunt comenzi (sau programe) care acceptă flux de date de intrare, care produc peste ea, unele de conversie și de ieșire la ieșirea standard (în cazul în care acesta poate fi redirecționat în altă parte de către utilizator). Printre filtrele de comenzi includ comenzi pisica, mai mult, mai puțin, WC, cmp, dif, și următoarele comenzi.

Tabelul 5.1. filtre Echipe

articole similare