लिनक्स टेस्ट -a कमांड टेस्ट किस लिए होता है?


3

कृपया निम्नलिखित कोड पर एक नज़र डालें,

snap=snapshot.file   
touch snapshot.file-1

$ [ -a $snap-1 ] && echo yes 
yes

क्या test -aआदेश यहाँ के लिए परीक्षण करता है?

मैंने कोशिश की info coreutils 'test invocation'और खोज की -a, लेकिन इसे फ़ाइल विशेषता परीक्षण अनुभाग में नहीं पाया, बल्कि परीक्षण अनुभाग के लिए संयोजकों में

क्या इस तरह की test -aआज्ञा एक अनिर्दिष्ट है?

NB, मेरा सिस्टम उबंटू 13.10 है और मेरा man testकहना है कि GNU कोरुटिल्स 8.20 अक्टूबर 2012 TEST (1)

जवाबों:


3

मुझे यकीन नहीं है कि infoपृष्ठ क्यों नहीं है, लेकिन जवाब देने help testमें भाग रहा है bash:

...
    File operators:

  -a FILE        True if file exists.
...

तो यह केवल एक "अस्तित्व" परीक्षण है, कोई अन्य अनुमतियाँ / विशेषताएँ जाँची नहीं गई हैं।


उत्तम! धन्यवाद। अजीब बात है, man testकि या तो नहीं है। केवल help testकरता है। इसका मतलब यह है कि यह एक bash विशिष्ट फ़ाइल अस्तित्व परीक्षण है?
3

1
@xpt ऐसा लगता है कि यह मामला है, लेकिन मेरे लिए /bin/test -a fileभी काम किया है ... तो क्यों मैं इस पृष्ठ में नहीं है मुझे पता नहीं है।
बेनजीवेब

3

यदि आप चला रहे हैं testया [अंदर चल रहे हैं bash, तो यह वास्तव में बिल्ट-इन संस्करण है, न कि coreutilsसंस्करण /usr/bin:

$ type test
test is a shell builtin
$ type [
[ is a shell builtin

जिसके अनुसार, वह प्रकट हो coreutils संस्करण दोनों को लागू करता है कि -aऔर -e, ठीक उसी व्यवहार के साथ। हो सकता -aहै कि यह मानक के अनुरूप न हो, क्योंकि यह बाद में जोड़ा गया था और उस व्यक्ति ने मैनपेज को तदनुसार अपडेट करने की उपेक्षा की थी। लेकिन मैं यह नहीं कह सकता कि मैं इसके पीछे के इतिहास को जानता हूं कि इसे क्यों जोड़ा गया (या यहां तक ​​कि इसके लिए क्या aछोटा होना चाहिए)।


1

-a शर्तों को संयोजित करने के लिए AND ऑपरेटर है, इसलिए दोनों निर्देशिकाओं के मौजूद होने पर निम्नलिखित दिखाता है:

[-e / root -a -e / usr] && इको हाँ

एक एकल स्थिति के साथ इसका उपयोग जो एक अस्तित्व परीक्षण के लिए चूकता है, पुराने व्यवहार को बनाए रखने जैसा लगता है, लेकिन मैं इसे पुराने आदमी के पन्नों में नहीं ढूंढ सकता।

संदर्भ (कुछ बाद स्क्रॉल करें info coreutils 'test invocation'):

`परीक्षण 'के लिए 16.3.6 संयोजक

सामान्य तार्किक संयोजक।

`! EXPR 'सही है अगर EXPR गलत है।

यदि EXPR1 और EXPR2 दोनों सत्य हैं तो 'EXPR1 -a EXPR2' सही है।

'EXPR1 -o EXPR2' सही है या तो EXPR1 या EXPR2 सत्य है।


1
यदि आप कोरुटिल्स स्रोत को देखते हैं, aऔर eमामले फ़ंक्शन में एक ही कोड साझा करते हैं जो यूनिरी ऑपरेटरों को संभालता है, तो मुझे नहीं लगता कि यह एक आकस्मिक बात है।
जजलिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.