Redirecció (informàtica)
En informàtica, la redirecció és una forma de comunicació entre processos i és una funció comuna a la majoria dels intèrprets de línia d'ordres, incloses les diverses intèrprets d'ordres Unix que poden redirigir fluxos estàndard a ubicacions especificades per l'usuari.[1]
En sistemes operatius semblants a Unix, els programes fan redireccions amb el dup2(2) crida al sistema o els seus anàlegs stdio menys flexibles però de nivell superior, freopen(3) i popen(3).[2]
Redirecció d'entrada estàndard i sortida estàndard
[modifica]La redirecció normalment s'implementa col·locant certs caràcters entre ordres.[3]
Bàsic
[modifica]Normalment, la sintaxi d'aquests caràcters és la següent, utilitzant <
per redirigir l'entrada i >
per redirigir la sortida. command > file1
s'executacommand, col·locant la sortida afile1, en lloc de mostrar-lo al terminal, que és la destinació habitual per a la sortida estàndard. Això afectarà les dades existentsfile1.
Utilitzant command < file1
s'executacommand, ambfile1 com a font d'entrada, a diferència del teclat, que és la font habitual d'entrada estàndard.
command < infile > outfile
combina les dues capacitats:command llegeix deinfile i escriu aoutfile
Variants
[modifica]Per afegir la sortida al final del fitxer, en comptes d'enfonsar-lo, s'utilitza l'operador > >
: command1 >> file1
.
Per llegir des d'un literal de flux (un fitxer en línia, passat a l'entrada estàndard), es pot utilitzar un document here, utilitzant l'operador < <
:
$ tr a-z A-Z << END_TEXT
> one two three
> uno dos tres
> END_TEXT
ONE TWO THREE
UNO DOS TRES
Canonada
[modifica]Els programes es poden executar junts de manera que un programa llegeix la sortida d'un altre sense necessitat d'un fitxer intermedi explícit. command1 | command2
S'executa command1 | command2
command1, utilitzant la seva sortida com a entrada percommand2 (comunament anomenat piping, amb el caràcter " |
" conegut com a "pipe").
Els dos programes que realitzen les ordres poden executar-se en paral·lel amb l'únic espai d'emmagatzematge que són els buffers de treball (Linux permet fins a 64K per a cada memòria intermèdia) més l'espai de treball que requereixi el processament de cada comanda. Per exemple, una ordre "ordenar" no pot produir cap sortida fins que s'hagin llegit tots els registres d'entrada, ja que el darrer registre rebut podria resultar ser el primer en ordre ordenat. El sistema operatiu experimental de la Dra. Alexia Massalin, Synthesis, ajustaria la prioritat de cada tasca a mesura que s'executaven segons la plenitud dels seus buffers d'entrada i sortida.[4]
Redirecció cap a i des dels identificadors de fitxers estàndard
[modifica]A les intèrprets d'ordre Unix derivats de l'intèrpret d'ordres Bourne original, les dues primeres accions es poden modificar encara més col·locant un número (el descriptor del fitxer) immediatament abans del caràcter; això afectarà quin flux s'utilitza per a la redirecció. Els fluxos d'E/S estàndard d'Unix són:
Gestionar | Nom | Descripció |
---|---|---|
0 | stdin | Entrada estàndard |
1 | stdout | Sortida estàndard |
2 | stderr | Error comú |
Referències
[modifica]- ↑ «What is a Redirection?» (en anglès). [Consulta: 10 desembre 2023].
- ↑ «Redirection (computing) explained» (en anglès). [Consulta: 10 desembre 2023].
- ↑ «Linux I/O Redirection - javatpoint» (en anglès). [Consulta: 10 desembre 2023].
- ↑ «Redirection (computing)» (en anglès). [Consulta: 10 desembre 2023].