Come passare un comando terminale come argomento a un altro comando


-1

Voglio eseguire questo comando:

ls -arth Test*log | tail -1

... e passa il suo output come argomento a:

open /Applications/Utilities/Console.app <previous output>

Vorrei fare tutto questo in una riga.


Risposte:


4

Questo è noto come sostituzione dei comandi :

open /Applications/Utilities/Console.app "$(ls -arth Test*log | tail -1)"

Se si è certi che l'output del comando che si sta sostituendo non conterrà spazi o newline (o se si desidera fornire l'output separato da spazio / newline come argomenti multipli), è possibile omettere le virgolette:

open /Applications/Utilities/Console.app $(ls -arth Test*log | tail -1)

@Lauri Ranta, per favore, non modificare il codice in una risposta. È particolarmente confuso quando il tuo cambiamento altera qualcosa che era stato deliberatamente mantenuto lo stesso della domanda a scopo dimostrativo.

FWIW, ho suggerito di cambiare il primo comando in open -a Console "$(ls -t Test*log | head -n1)". open /Applications/Utilities/Console.app "$(ls -arth Test*log | tail -1)"apre Console.app e il file nell'applicazione predefinita. POSIX ha annullato le opzioni solo numeriche per la testa e la coda.
Lri,

1

Questo è abbastanza semplice

open /Applications/Utilities/Console.app `ls -arth Test*log | tail -1`

Qualsiasi comando incluso tra accenti gravi verrà eseguito in un nuovo ambiente bash, uscirà dopo l'esecuzione e si sostituirà con il suo risultato

Se eseguo un semplice comando "ls" con accenti gravi attorno alla mia cartella home ottengo un tale errore:

john@ship:~$ `ls`
Desktop: command not found

Ciò significa che bash tenta di eseguire il valore restituito fino al delimitatore corretto come comando

Ecco un altro esempio per chiarire questa tecnica confusa:

john@ship:~$ `echo "ls -l"`
total 36
drwxr-xr-x 2 john john 4096 Jul 27 19:43 Desktop
drwxr-xr-x 2 john john 4096 Jul 27 19:43 Documents
drwxr-xr-x 2 john john 4096 Aug  2 22:04 Downloads
drwxr-xr-x 7 john john 4096 Aug  2 19:28 Music
drwxr-xr-x 2 john john 4096 Aug  2 10:49 Pictures
drwxrwxr-x 3 john john 4096 Jul 28 22:21 Projects
drwxr-xr-x 2 john john 4096 Jul 27 19:43 Public
drwxr-xr-x 2 john john 4096 Jul 27 19:43 Templates
drwxr-xr-x 2 john john 4096 Jul 27 19:43 Videos
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.