पाइप filepath करने के लिए ImageJ

0

सवाल

मैं एक छोटे से कमांड लाइन उपयोगिता rjp2tif कि निष्कर्षों radiometric डेटा से एक jpeg फ़ाइल में एक झगड़ा फ़ाइल. मैं उम्मीद कर रहा था करने के लिए सक्षम होना करने के लिए पाइप के filepath करने के लिए ImageJ कमांड लाइन पर है और ImageJ झगड़ा फ़ाइल को खोलने. यह अंत करने के लिए, rjp2tif लिखता filepath की tiff फाइल मानक आउटपुट करने के लिए. मैं करने की कोशिश की निम्नलिखित में bash:

$ rjp2tif /path/to/rjpeg | open -a imagej

और

$ rjp2tif /path/to/rjpeg | open -a imagej -f

पहली खोलता है ImageJ लेकिन नहीं करता है, फ़ाइल को खोलने के । दूसरी खोलता है ImageJ के साथ एक पाठ खिड़की के साथ filepath ।

इस पर macOS मोंटेरी, लेकिन मुझे नहीं लगता है कि मायने रखती है. किसी को भी ऐसा करने की कोशिश की और सफल रहा? TIA.

bash macos
2021-11-23 23:05:07
1

सबसे अच्छा जवाब

1

मान rjp2tif आदेश रिटर्न एक फ़ाइल पथ में मानक उत्पादन, और आप चाहते हैं पारित करने के लिए इस उत्पादन के रूप में एक नियमित रूप से सीएलआई तर्क करने के लिए एक और आदेश, आप में रुचि हो सकती है xargs आदेश । लेकिन ध्यान दें कि सामान्य मामले में, आप हिट हो सकती है कुछ मुद्दा है अगर फ़ाइल पथ शामिल हैं रिक्त स्थान या तो:

पढ़ें स्पेस, टैब, नई और अंत-के-सीमांकित फ़ाइल तर्कों से मानक इनपुट और निष्पादित निर्दिष्ट उपयोगिता के साथ उन्हें तर्क के रूप में.
तर्क आम तौर पर कर रहे हैं की एक लंबी सूची फ़ाइल नाम (द्वारा उत्पन्न ls या find, उदाहरण के लिए) मिलता है कि पारित करने के लिए xargs के माध्यम से एक पाइप.

तो इस मामले में, मान प्रत्येक फ़ाइल पथ केवल एक लाइन (जो जाहिर है, के मामले में अगर वहाँ केवल एक ही लाइन कुल मिलाकर), आप का उपयोग कर सकते हैं निम्नलिखित NUL-आधारित सुझाव पर निर्भर है tr आदेश ।

यहाँ आदेश है, आप चाहते हैं को प्राप्त:

rjp2tif /path/to/rjpeg | tr '\n' '\0' | xargs -0 open -a imagej

नोट: मैं एक जीएनयू/लिनक्स ओएस, तो आप कर सकते हैं कृपया पुष्टि करें कि यह काम करता है के तहत macOS?

FTR, नीचे एक व्यापक शैल कोड की अनुमति के लिए एक परीक्षण के दो अलग मोड xargs: जनरेट कर रहा है एक कमांड लाइन प्रति-तर्क (-n1है ), या एक एकल आदेश के साथ सभी लाइन तर्क, एक ही बार में:

$ 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" 
2021-11-24 14:55:40

@ErickMD हाँ, tr आदेश में आप ऊपर पर काम करता है macOS, धन्यवाद. मैंने पाया है कि -t विकल्प (ट्रेस) के लिए xargs उपयोगी है क्या दिखाने के लिए xargs करता है करने के लिए कमांड. मामले में यहाँ है, जब path/to/tiff पारित कर दिया है करने के लिए xargs के माध्यम से पाइप, xargs पुनर्व्यवस्थित करने के लिए आदेश open -a imagej path/to/tiff. बहुत उपयोगी है ।
Jim Merkel

@ErickMD एक अतिरिक्त बात, आप ऊपर उल्लेख किया है कि वहाँ एक लाइन के लिए मानक उत्पादन से rjp2tif कि पहुंचाया है करने के लिए xargs. हालांकि वहाँ हो सकता है कई लाइनों मानक आउटपुट करने के लिए अगर मैं एक का उपयोग करें -v करने के लिए विकल्प rjp2tif. यह काम कर सकते हैं इसके अलावा, अगर मैं का उपयोग करें tee /dev/tty दिखाने के लिए सभी स्क्रीन पर लाइनों के द्वारा पीछा किया tail -n 1 सिर्फ करने के लिए अंतिम पंक्ति के लिए पाइपिंग के लिए xargs. इस मामले में कमांड लाइन है: rjp2tif -v /path/to/rjpeg | tee /dev/tty | tail -n 1 | xargs open -a imagej. मैं बाहर छोड़ दिया tr आदेश के लिए सरलीकरण.
Jim Merkel

हाँ, लेकिन xargs कर सकते हैं भी समर्थन कई लाइनों में इनपुट के रूप में मैं में उल्लेख किया है, मेरा जवाब है, और तुम 2 विकल्प हैं, इस मामले में: या तो चलाने के लिए एक open आदेश के लिए प्रत्येक फ़ाइल → xargs -0 -n1 open -a imagej; या चलाने के लिए एक एकल open कमांड के साथ सभी फ़ाइलों के रूप में पारित args → xargs -0 open -a imagej. तो आप की जरूरत नहीं है tail -n 1 सब पर (जब तक कि आप में रुचि रखते हैं, केवल एक ही फाइल में, ज़ाहिर है)
ErikMD

वास्तव में मुझे लगता है कि मैं गलत व्याख्या की गई अपनी टिप्पणी के साथ: -v विकल्प, आप की जरूरत नहीं है कई फ़ाइल पथ शामिल है, लेकिन सिर्फ कुछ अतिरिक्त "शोर" है कि कर सकते हैं से हटाया जा stdout का उपयोग करके tail -n 1, वास्तव में.
ErikMD

हाँ, rjp2tif सिर्फ काम करता है के साथ एक फ़ाइल में मौजूद है । के -v है के लिए वर्बोज़. तो "शोर" का एक प्रिंट आउट के मेटाडाटा फ़ाइल के लिए. मुझे लगता है कि मैं कर सकता की कोशिश करो और rjp2tif काम के लिए कई सारी फाइलें ।
Jim Merkel

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में