Redirecționare intrare ieșire în exemple Linux/Unix

Ce este redirecționarea?

Redirecționarea este o caracteristică în Linux, astfel încât atunci când executați o comandă, puteți schimba dispozitivele standard de intrare/ieșire. Fluxul de lucru de bază al oricărui Comanda Linux este că ia o intrare și dă o ieșire.

  • Dispozitivul de intrare standard (stdin) este tastatura.
  • Dispozitivul standard de ieșire (stdout) este ecranul.

Cu redirecționare, intrarea/ieșirea standard de mai sus poate fi modificată.

Clic aici dacă videoclipul nu este accesibil

Redirecționare ieșire

'>simbolul ' este folosit pentru redirecționarea ieșirii (STDOUT).

Redirecționare ieșire

Exemplu:

ls -al > listings

Aici rezultatul comenzii ls -al este redirecționat către fișierul „listări” în loc de ecran.

Redirecționare ieșire

notițe: Folosiți numele corect al fișierului în timp ce redirecționați rezultatul comenzii către un fișier. Dacă există un fișier existent cu același nume, comanda redirecționată va șterge conținutul acelui fișier și apoi acesta poate fi suprascris.”

Dacă nu doriți ca un fișier să fie suprascris, dar doriți să adăugați mai mult conținut la un fișier existent, atunci ar trebui să utilizați '>>'operator.

Redirecționare ieșire

Puteți redirecționa ieșirea standard, nu doar către fișiere, ci și către dispozitive!

$ cat music.mp3 > /dev/audio

Comanda cat citește fișierul music.mp3 și trimite ieșirea la /dev/audio, care este dispozitivul audio. Dacă configurațiile de sunet de pe computer sunt corecte, această comandă va reda fișierul music.mp3

Redirecționare de intrare

'Simbolul ' este folosit pentru redirecționarea intrării (STDIN).

Redirecționare de intrare

Exemplu: Programul de e-mail din Linux vă poate ajuta să trimiteți e-mailuri de la Terminal.

Puteți introduce conținutul e-mailului folosind tastatura standard a dispozitivului. Dar dacă doriți să atașați un fișier la e-mail, puteți utiliza operatorul de redirecționare a intrării în următorul format.

Mail -s "Subject" to-address < Filename

Redirecționare de intrare

Acest lucru ar atașa fișierul la e-mail și ar fi trimis destinatarului.

Exemplele de mai sus au fost simple. Să ne uităm la câteva tehnici avansate de redirecționare care folosesc File Descriptors.

Fișier Descriptsau (FD)

În Linux/Unix, totul este un fișier. Fișierul obișnuit, directoarele și chiar dispozitivele sunt fișiere. Fiecare fișier are asociat un număr numit Fișier Descriptsau (FD).

Ecranul tău are și un fișier Descriptsau. Când un program este executat, rezultatul este trimis la File Descriptsau de pe ecran și vedeți ieșirea programului pe monitor. Dacă rezultatul este trimis la File Descriptsau a imprimantei, rezultatul programului ar fi fost tipărit.

Redirecționare eroare

Ori de câte ori executați un program/comandă la terminal, 3 fișiere sunt întotdeauna deschise, și anume, intrare standard, ieșire standard, eroare standard.

Redirecționare eroare

Aceste fișiere sunt întotdeauna prezente ori de câte ori rulează un program. După cum sa explicat înainte, un descriptor de fișier este asociat cu fiecare dintre aceste fișiere.

Fișier Fișier Descriptor
Intrare standard STDIN 0
Ieșire standard STDOUT 1
Eroare standard STDERR 2

În mod implicit, fluxul de erori este afișat pe ecran. Redirecționarea erorilor este direcționarea erorilor către un alt fișier decât ecranul.

De ce redirecționarea erorilor?

Redirecționarea erorilor este una dintre caracteristicile foarte populare ale Unix / Linux.

Utilizatorii frecventi de UNIX vor considera că multe comenzi vă dau cantități masive de erori.

  • De exemplu, în timpul căutării de fișiere, de obicei, cineva primește erori de refuzare a permisiunii. Aceste erori de obicei nu ajută persoana care caută un anumit fișier.
  • În timp ce executați scripturi shell, adesea NU doriți ca mesajele de eroare să aglomereze ieșirea normală a programului.

Soluția este să redirecționați mesajele de eroare către un fișier.

Exemplu 1

$ myprogram 2>errorsfile

De ce redirecționarea erorilor

Mai sus executăm un program numit myprogram.

Descriptorul de fișier pentru eroarea standard este 2.

Folosind „2>” redirecționăm rezultatul de eroare către un fișier numit „fișier de eroare”

Astfel, ieșirea programului nu este aglomerată cu erori.

Exemplu 2

Iată un alt exemplu care utilizează declarația find -

find . -name 'my*' 2>error.log

Folosind comanda „găsi”, căutăm „.” directorul curent pentru un fișier cu „nume” care începe cu „meu”

De ce redirecționarea erorilor

Exemplu 3: Să vedem un exemplu mai complex,

Administratorii serverului, în mod frecvent, listează directoare și stochează atât erorile, cât și rezultatele standard într-un fișier, care poate fi procesat ulterior. Aici este comanda.

ls Documents ABC> dirlist 2>&1

Aici,

  • care scrie ieșirea dintr-un fișier în intrarea altui fișier. 2>&1 înseamnă că STDERR redirecționează către ținta STDOUT (care este lista directorului de fișiere)
  • Redirecționăm rezultatul erorii către ieșirea standard care, la rândul său, este redirecționat către lista de fișiere. Prin urmare, ambele rezultate sunt scrise în lista de fișiere

De ce redirecționarea erorilor

Rezumat

  • Fiecare fișier din Linux are un fișier corespunzător Descriptsau asociat cu acesta
  • Tastatura este dispozitivul de intrare standard, în timp ce ecranul este dispozitivul de ieșire standard
  • „>” este operatorul de redirecționare a ieșirii. „>>” adaugă ieșirea unui fișier existent
  • „<” este operatorul de redirecționare de intrare
  • „>&”redirecționează ieșirea unui fișier către altul.
  • Puteți redirecționa eroarea folosind fișierul corespunzător Descriptsau 2.