आशा है कि यह नोट करना ठीक है, अब जब मैंने इसका सामना किया है:
मैं पहले से ही जानता हूं कि कमांड 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"?