आशा है कि यह नोट करना ठीक है, अब जब मैंने इसका सामना किया है:
मैं पहले से ही जानता हूं कि कमांड test
( [
) कमांड का उपयोग करके फाइल अस्तित्व के लिए परीक्षण कर सकता है :
$ touch exists.file
$ if [ -f exists.file ] ; then echo "yes" ; else echo "no" ; fi
yes
$ if [ -f noexists.file ] ; then echo "yes" ; else echo "no" ; fi
no
... लेकिन यह वहाँ टाइप करने का एक सा है :)
तो, मैं भटक रहा था अगर वहाँ एक "डिफ़ॉल्ट" एकल कमांड है, जो फ़ाइल अस्तित्व को वापस कर देगा stdout
?
मैं test
बाहर निकलने की स्थिति के साथ भी उपयोग कर सकता हूं $?
:
$ test -f exists.file ; echo $?
0
$ test -f noexists.file ; echo $?
1
... लेकिन यह अभी भी दो आदेश हैं - और तर्क "उलटा" (सफलता के लिए 0, और विफलता के लिए नॉनज़रो) भी है।
कारण मैं पूछ रहा हूं कि मुझे फ़ाइल अस्तित्व के लिए परीक्षण करने की आवश्यकता है gnuplot
, जिसके system("command")
परिणामस्वरूप " स्ट्रिंग के रूप में स्टडआउट से परिणामी चरित्र धारा वापस आती है ;" में gnuplot
सीधे कर सकते हैं:
gnuplot> if (0) { print "yes" } else { print "no" }
no
gnuplot> if (1) { print "yes" } else { print "no" }
yes
इसलिए मैं मूल रूप से इस तरह (छद्म) कुछ लिखने में सक्षम होना चाहता हूं:
gnuplot> file_exists = system("check_file --stdout exists.file")
gnuplot> if (file_exists) { print "yes" } else { print "no" }
yes
... दुर्भाग्य से, मैं उस का सीधे उपयोग नहीं कर सकता test
और $?
:
gnuplot> file_exists = system("test -f exists.file; echo $?")
gnuplot> if (file_exists) { print "yes" } else { print "no" }
no
... मुझे तर्क को उल्टा करना होगा।
इसलिए, मुझे मूल रूप से एक कस्टम स्क्रिप्ट सॉल्यूशन (या स्क्रिप्ट को इनलाइनर के रूप में लिखना) के साथ आना होगा ... और मुझे लगा, अगर पहले से ही कोई डिफॉल्ट कमांड है जो 0 या 1 प्रिंट कर सकता है (या) एक कस्टम संदेश) फ़ाइल अस्तित्व के लिए stdout करने के लिए, तो मुझे ऐसा करने की ज़रूरत नहीं है :)
(ध्यान दें कि ls
एक उम्मीदवार हो सकता है, लेकिन यह stdout आउटपुट बहुत अधिक क्रिया है; और अगर मैं उससे बचना चाहता हूं, तो मुझे सभी आउटपुट को दबाना होगा और फिर से मौजूद स्थिति को वापस करना होगा, जैसे कि
$ ls exists.file 1>/dev/null 2>/dev/null ; echo $?
0
$ ls noexists.file 1>/dev/null 2>/dev/null ; echo $?
2
... लेकिन यह फिर से दो आज्ञाएँ हैं (और अधिक टाइपिंग), और "उलटा" तर्क ...)
तो, क्या एक डिफ़ॉल्ट कमांड है जो लिनक्स में ऐसा कर सकता है?
( [ -f py_concur.py ] && echo "file exists" ) || echo "file does not exist"
?