[so] Redirectari comenzi interne
Stefan Bucur
stefan.bucur at gmail.com
Sun Oct 28 21:55:16 EET 2007
On 10/28/07, Catalin Iacob <iacobcatalin at gmail.com> wrote:
> On Sunday 28 October 2007 20:44:35 Alexandru-Mihai Carp wrote:
> > Am si eu o intrebare:
> >
> > Tema trebuie sa suporte redirectari pentru comenzi interne?
>
> Nu e nevoie.
>
> > De exemplu: "cd /nu_exista 2> test.txt" ce trebuie sa faca?
>
> Poate sa ignore 2> test.txt sau sa faca cum face Bash (pune mesajul de eroare
> al shell-ului in test.txt).
>
> > Am observat ca in Bash, functioneaza doar ">" pentru "cd" ("|" si "<" nu
> > au nici un efect).
>
> Nu e gresit daca faci ca Bash dar nici nu e nevoie.
>
> Oricum redirectarea < nu prea are sens deoarece cd nu e un executabil care sa
> citeasca ceva de la standard input. Probabil de-aia Bash nu face nimic in
> cazul <.
>
> Si apropo, din ce vad eu | in Bash merge. Daca dai cd - asta in Bash schimba
> directorul in cel in care ai fost inainte si iti afiseaza directorul in care
> tocmai te-a mutat. Daca dai cd - | less o sa vezi in less noul director
> deci | merge. Oricum, cum am zis nu e nevoie sa suportati asta (si nici cd -
> evident).
Merge si nu prea merge. :) Din output-ul urmator:
stefanb at anaconda:~/work$ cd -
/home/stefanb
stefanb at anaconda:~$ cd work/
stefanb at anaconda:~/work$ cd - | less
stefanb at anaconda:~/work$
imi dau seama ca rulata standalone, comanda 'cd' schimba directorul
curent al procesului bash (ceea ce trebuie sa si faca), in timp ce
inlantuita cu pipe, bash-ul face fortat un fork(), pentru a putea crea
lantul de redirectare, si cd va schimba directorul noului proces
(lucru care se reflecta in output-ul comenzii less). La intoarcerea
din executie, directorul curent al procesului parinte ramane, evident,
neschimbat (directorul curent al unui proces nu poate fi partajat cu
alte procese).
Eu asa am facut pe Linux, si rezultatele imita destul de bine
comportamentul Bash-ului, insa pe Windows nu prea merge, pentru ca nu
exista fork() (decat daca invocam fortat o noua instanta a programului
nostru si avem suport de executie de comenzi date prin linia de
comanda - varianta pe care personal nu o agreez :) ).
Stefan Bucur
More information about the so
mailing list