मैंने इसे गलती से टाइप किया लेकिन बैश ने कोई त्रुटि नहीं छापी (लेकिन एक खाली फ़ाइल बनाई) तो मुझे लगा कि शायद इसका वास्तव में कुछ मतलब है? (उदा। तिथि |> tmp.txt)
मैंने इसे गलती से टाइप किया लेकिन बैश ने कोई त्रुटि नहीं छापी (लेकिन एक खाली फ़ाइल बनाई) तो मुझे लगा कि शायद इसका वास्तव में कुछ मतलब है? (उदा। तिथि |> tmp.txt)
जवाबों:
ऐसा लगता है कि सिर्फ एक पाइपलाइन है जहां दूसरा भाग एक खाली कमांड है, जिसमें केवल पुनर्निर्देशन है। इसे लिखने date | >fileसे व्याख्या करना आसान हो सकता है। खाली कमांड कुछ भी नहीं करता है, लेकिन पुनर्निर्देशन की प्रक्रिया करता है, फ़ाइल का निर्माण करता है।
date >| fileदूसरी तरफ noclobberशेल विकल्प के लिए एक ओवरराइड के रूप में कार्य करेगा , जो नियमित रूप >से मौजूदा फ़ाइलों को ओवरराइट करने से रोकता है ।
$ touch foo; set -o noclobber
$ date > foo
bash: foo: cannot overwrite existing file
$ date >| foo # works
हां, यह एरर नहीं फेंकेगा क्योंकि बैश का > fileमतलब नाम की फाइल पर रीडायरेक्ट करना है file। जैसा कि आपके मामले में फ़ाइल को रीडायरेक्ट करने के लिए कुछ भी नहीं है, बैश बस एक फ़ाइल नाम बना देगा fileजिसमें कुछ भी नहीं है।
[bd@centos-6.5 my-tests]$ date | > my_file
[bd@centos-6.5 my-tests]$ cat my_file
[bd@centos-6.5 my-tests]$
my_fileका आउटपुट होता है date।
zsh, जब केवल पुनर्निर्देशन होते हैं और कोई कमांड नहीं होता है, केवल इनपुट पुनर्निर्देशन होने पर कमांड ( डिफ़ॉल्ट रूप से) या (डिफ़ॉल्ट रूप से पेजर ) zshचलाता है । $NULLCMDcat$READNULLCMD
date |> tmp.txt cmd2? क्योंकि इससे उत्तर बदल जाता है।