कुछ बॉर्न-जैसे गोले में, read
बिलिन फाइल में से पूरी लाइन नहीं पढ़ सकता है /proc
(नीचे दी गई कमांड को चलाया जाना चाहिए zsh
, अन्य शेल के साथ प्रतिस्थापित $=shell
करें $shell
):
$ for shell in bash dash ksh mksh yash zsh schily-sh heirloom-sh "busybox sh"; do
printf '[%s]\n' "$shell"
$=shell -c 'IFS= read x </proc/sys/fs/file-max; echo "$x"'
done
[bash]
602160
[dash]
6
[ksh]
602160
[mksh]
6
[yash]
6
[zsh]
6
[schily-sh]
602160
[heirloom-sh]
602160
[busybox sh]
6
read
मानक के लिए मानक इनपुट की आवश्यकता होती है एक पाठ फ़ाइल होना चाहिए , क्या यह आवश्यकता विभिन्न व्यवहारों का कारण बनती है?
पाठ फ़ाइल की POSIX परिभाषा पढ़ें , मैं कुछ सत्यापन करता हूं:
$ od -t a </proc/sys/fs/file-max
0000000 6 0 2 1 6 0 nl
0000007
$ find /proc/sys/fs -type f -name 'file-max'
/proc/sys/fs/file-max
की NUL
सामग्री में कोई चरित्र नहीं है /proc/sys/fs/file-max
, और find
इसे एक नियमित फ़ाइल के रूप में भी रिपोर्ट किया है (क्या यह एक बग है find
?)।
मुझे लगता है कि खोल ने हुड के नीचे कुछ किया था, जैसे file
:
$ file /proc/sys/fs/file-max
/proc/sys/fs/file-max: empty
strace
आधारित व्याख्या को समझना बहुत आसान है!