Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

Sostituzione del comando

La sostituzione dei comandi ci consente di utilizzare l'output di un comando come espansione:



[io@linuxbox~]$ echo $(ls)

Documenti desktop ls-output.txt Musica Immagini Modelli pubblici Video

[io@linuxbox~]$ echo $(ls)

Documenti desktop ls-output.txt Musica Immagini Modelli pubblici Video


Uno dei miei preferiti recita più o meno così:



[io@linuxbox~]$ ls -l $(quale cp)

-rwxr-xr-x 1 root root 71516 2007-12-05 08:58 /bin/cp

[io@linuxbox~]$ ls -l $(quale cp)

-rwxr-xr-x 1 root root 71516 2007-12-05 08:58 /bin/cp


Qui abbiamo passato i risultati di quale cp come argomento per il ls comando, ottenendo così l'elenco di cp programma senza doverne conoscere il percorso completo. Non siamo limitati a semplici comandi. È possibile utilizzare pipeline intere (solo output parziali)


mostrato):



[io@linuxbox~]$ file $(ls -d /usr/bin/* | grep zip)

/usr/bin/bunzip2: collegamento simbolico a `bzip2'

/usr/bin/bzip2: eseguibile ELF LSB a 32 bit, Intel 80386, versione 1 (SYSV), collegato dinamicamente (utilizza librerie condivise), per GNU/Linux 2.6.9, spogliato

/usr/bin/bzip2recover: eseguibile ELF LSB a 32 bit, Intel 80386, versione 1 (SYSV), collegato dinamicamente (utilizza librerie condivise), per GNU/Linux 2.6.9, spogliato

/usr/bin/funzip: eseguibile ELF LSB a 32 bit, Intel 80386, versione 1 (SYSV), collegato dinamicamente (utilizza librerie condivise), per GNU/Linux 2.6.9, spogliato

/usr/bin/gpg-zip: eseguibile di testo dello script della shell Bourne

/usr/bin/gunzip: collegamento simbolico a `../../bin/gunzip'

/usr/bin/gzip: collegamento simbolico a `../../bin/gzip'

/usr/bin/mzip: collegamento simbolico a `mtools'

[io@linuxbox~]$ file $(ls -d /usr/bin/* | grep zip)

/usr/bin/bunzip2: collegamento simbolico a `bzip2'

/usr/bin/bzip2: eseguibile ELF LSB a 32 bit, Intel 80386, versione 1 (SYSV), collegato dinamicamente (utilizza librerie condivise), per GNU/Linux 2.6.9, spogliato

/usr/bin/bzip2recover: eseguibile ELF LSB a 32 bit, Intel 80386, versione 1 (SYSV), collegato dinamicamente (utilizza librerie condivise), per GNU/Linux 2.6.9, spogliato

/usr/bin/funzip: eseguibile ELF LSB a 32 bit, Intel 80386, versione 1 (SYSV), collegato dinamicamente (utilizza librerie condivise), per GNU/Linux 2.6.9, spogliato

/usr/bin/gpg-zip: eseguibile di testo dello script della shell Bourne

/usr/bin/gunzip: collegamento simbolico a `../../bin/gunzip'

/usr/bin/gzip: collegamento simbolico a `../../bin/gzip'

/usr/bin/mzip: collegamento simbolico a `mtools'


In questo esempio, i risultati della pipeline sono diventati l'elenco degli argomenti del filetto comando.

Esiste una sintassi alternativa per la sostituzione dei comandi nei vecchi programmi shell che è supportata anche in bash. Utilizza virgolette inverse invece del simbolo del dollaro e delle parentesi:


[io@linuxbox~]$ ls -l `quale cp`

-rwxr-xr-x 1 root root 71516 2007-12-05 08:58 /bin/cp

[io@linuxbox~]$ ls -l `quale cp`

-rwxr-xr-x 1 root root 71516 2007-12-05 08:58 /bin/cp


Il miglior sistema operativo cloud computing su OnWorks: