Varsayarsak rjp2tif
komut, standart çıktıda bir dosya yolu döndürür ve bu çıktıyı normal bir CLI bağımsız değişkeni olarak başka bir komuta aktarmak istiyorsanız, ilginizi çekebilirxargs
komut. Ancak, genel durumda, dosya yolu boşluk içeriyorsa bir sorunla karşılaşabileceğinizi unutmayın:
Boşluk, sekme, satırsonu ve dosya sonu ile sınırlandırılmış bağımsız değişkenleri standart girdiden okuyun ve belirtilen yardımcı programı bağımsız değişken olarak yürütün.
Bağımsız değişkenler genellikle dosya adlarının uzun bir listesidir (tarafından oluşturulur ls
veya find
örneğin) iletilir xargs
bir borudan.
Bu durumda, her dosya yolunun yalnızca bir satır aldığını varsayarsak (ki bu genel olarak yalnızca bir satır varsa açıktır), aşağıdakileri kullanabilirsiniz NUL
- dayalı ipucu güvenerektr
komut.
İşte alacağınız komut:
rjp2tif /path/to/rjpeg | tr '\n' '\0' | xargs -0 open -a imagej
Not: Bir GNU / Linux işletim sistemim var, bu yüzden lütfen macOS altında çalıştığını onaylayabilir misiniz?
FTR, aşağıda iki farklı modun test edilmesine izin veren kapsamlı bir kabuk kodudur. xargs
: satır bağımsız değişkeni başına bir komut oluşturma (-n1
) veya tek seferde tüm satır argümanlarına sahip tek bir komut:
$ 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
yukarıdaki komut Macos'ta çalışıyor, teşekkürler. Bunu buldum-t
seçenek (izleme)xargs
ne olduğunu göstermek için yararlıdırxargs
komut yok. Buradaki durumda, ne zamanpath/to/tiff
iletilirxargs
borudan,xargs
komutu yeniden düzenleropen -a imagej path/to/tiff
. Çok yararlı.