Supponendo che il rjp2tif
il comando restituisce un file-percorso di uscita standard, e si desidera passare questa uscita come una normale CLI argomento ad un altro comando, si può essere interessati in xargs
comando. Ma è da notare che nel caso generale, si può colpire qualche problema se il percorso del file contiene spazi o così:
Leggi di spazio, tab, newline e di fine del file delimitato argomenti da standard input e di eseguire specificato utilità con loro come argomenti.
Gli argomenti sono in genere un lungo elenco di nomi di file (generato da ls
o find
, per esempio) che passa per xargs
tramite un tubo.
Quindi, in questo caso, supponendo che ogni percorso del file richiede solo una linea (che è, ovviamente, il caso, se c'è solo una linea generale), è possibile utilizzare la seguente NUL
basato su suggerimento affidamento sulla tr
comando.
Qui è il comando che vuoi ottenere:
rjp2tif /path/to/rjpeg | tr '\n' '\0' | xargs -0 open -a imagej
Nota: ho una GNU/Linux OS, in modo da potete per favore confermare che funziona sotto macOS?
FTR, sotto è un sistema completo di guscio un codice che permette di testare le due diverse modalità di xargs
la generazione di un comando per linea-argomento (-n1
), o di un singolo comando con tutti gli argomenti in un solo colpo:
$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 -n1 \
bash -c 'printf "Run "; for a; do printf "\"$a\" "; done; echo' bash
Run "one "
Run "two"
Run "three and four"
$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 \
bash -c 'printf "Run "; for a; do printf "\"$a\" "; done; echo' bash
Run "one " "two" "three and four"
######################################
# or alternatively (with no for loop):
######################################
$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 -n1 \
bash -c 'printf "Run "; printf "\"%s\" " "$@"; echo' bash
Run "one "
Run "two"
Run "three and four"
$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 \
bash -c 'printf "Run "; printf "\"%s\" " "$@"; echo' bash
Run "one " "two" "three and four"
tr
comando di cui sopra non funziona su macOS, grazie. Ho trovato che il-t
opzione (traccia) perxargs
è utile per mostrare ciò chexargs
non a comando. Nel caso qui, quandopath/to/tiff
è passatoxargs
tramite il tubo,xargs
riorganizza il comandoopen -a imagej path/to/tiff
. Molto utile.