PDA

View Full Version : [unix-bourne shell]ridirezione e altro


MEMon
30-01-2008, 16:52
Sto litigando un pò con la shell unix, volevo provi alcune domandine su cose che non mi sono chiarissime.

Per esempio, non ho ancora capito che differenze sostanziale c'è nel fare:
cat file
e
cat < file
L'output sul terminale è uguale...
Inoltre
cat file > file2
ridirezione il contenuto di file in file2
mentre
cat > file
prendo dentro dallo stdinput e mette in file, perchè?

Poi volevo una conferma, mi sembra di aver capito che nella rediriezione l'ordine è dal più esterno verso l'interno, ad esempio mettiamo caso che esista solo file1
cd file1 file2 > fileoutput 2>&1
Se faccio così sia ciò che va nello stderror che quello che va nello stdoutput mi vanno a finire in fileoutput, io penso perchè viene eseguito prima 2>&1(lo stderror viene ridirezionato nello stdoutput) e poi > fileoutput(lo stdoutput viene ridirezionato in fileoutput), è giusto?

kingv
30-01-2008, 17:49
Sto litigando un pò con la shell unix, volevo provi alcune domandine su cose che non mi sono chiarissime.

Per esempio, non ho ancora capito che differenze sostanziale c'è nel fare:
cat file
e
cat < file
L'output sul terminale è uguale...


niente, il programma cat se specifichi qualcosa sulla riga comando lo interpreta come fosse un file, se non specifchi niente legge da STDIN


Inoltre
cat file > file2
ridirezione il contenuto di file in file2
mentre
cat > file
prendo dentro dallo stdinput e mette in file, perchè?


esattamente come prima, se non specifichi nessun file cat legge da STDIN, quello che viene letto è poi ridiretto su "file"


Poi volevo una conferma, mi sembra di aver capito che nella rediriezione l'ordine è dal più esterno verso l'interno, ad esempio mettiamo caso che esista solo file1
cd file1 file2 > fileoutput 2>&1
Se faccio così sia ciò che va nello stderror che quello che va nello stdoutput mi vanno a finire in fileoutput, io penso perchè viene eseguito prima 2>&1(lo stderror viene ridirezionato nello stdoutput) e poi > fileoutput(lo stdoutput viene ridirezionato in fileoutput), è giusto?

corretto (a parte che penso che abbia sbagliato comando, cd file1 file2 non ha senso)

MEMon
30-01-2008, 17:51
Grazie!

ps: si è sbagliato, era ls e non cd :stordita:

MEMon
30-01-2008, 21:40
Ho un problema, ho creato un file comandi(.sh), all'interno ci sono vari comandi tra cui anche mkdir e expr.
Quando lo eseguo mi dice che mkdir:not found, expr:not found

Coma mai??

MEMon
30-01-2008, 21:48
come non detto, problema di PATH, risolto.