जब किसी कमांड का आउटपुट किसी फ़ाइल पर रीडायरेक्ट किया जाता है, तो आदेश फ़ाइल को कमांड निष्पादित करने से पहले खोल द्वारा बनाया या छोटा कर दिया जाता है, कोई विचार क्या बिल्ली foo> foo करता है?यूनिक्स में "बिल्ली फ़ाइल 1> फ़ाइल 1 क्या करता है?"
उत्तर
सभी मामलों में, फ़ाइल काट दिया गया। ऐसा इसलिए है क्योंकि शेल द्वारा पुनर्निर्देशन को संभाला जाता है, जो आदेश को आमंत्रित करने से पहले फ़ाइल के लिए फ़ाइल खोलता है।
cat foo > foo
खोल ट्रंकेटस और लिखने के लिए foo को खोलता है, फाइल करने के लिए stdout सेट, और फिर कार्यकारी के ["cat", "foo"]
।
जीएनयू बिल्ली स्मार्ट है और फ़ाइल को खुद को रीडायरेक्ट करने से इंकार कर देती है। यह इनपुट और आउटपुट फ़ाइल डिस्क्रिप्टर पर डिवाइस/इनोड जोड़ी की जांच करके करता है; आप src/cat.c में अद्भुत निम्न-स्तरीय विवरण पढ़ सकते हैं। यह एक संदेश प्रिंट करता है और छोड़ देता है।
बीएसडी बिल्ली की ऐसी सुरक्षा नहीं है, लेकिन चूंकि फ़ाइल को पहले से ही छोटा कर दिया गया है, पढ़ने के लिए कुछ भी नहीं है, लिखने के लिए कुछ भी नहीं है, और यह रुक जाएगा।
आप छंटनी के बजाए चीजों को थोड़ा सा मसाला कर सकते हैं।
echo hello > foo
cat foo >> foo
अब सबकुछ समान है, खोल को खोलने के बजाय खोलने के लिए फ़ाइल खोलता है।
जीएनयू बिल्ली देखता है कि आप क्या कर रहे हैं और बंद हो जाता है; फाइल छूटी हुई है।
बीएसडी बिल्ली एक पाश में जाती है और जब तक आपकी डिस्क भर जाती है तब तक फ़ाइल को स्वयं में जोड़ती है।
और यही कारण है कि मैक बीएसडी पर बनाया गया है। –
फ़ाइल को पहले छोटा कर दिया गया है और फिर पढ़ा गया है, इसलिए यह आदेश फ़ाइल को छोटा कर देगा।
जब मैंने इसे निष्पादित करने के लिए करने की कोशिश की मैं इस चेतावनी मिल गया:
बिल्ली: test.txt: इनपुट फ़ाइल आउटपुट फ़ाइल
आपके पास क्या प्लेटफ़ॉर्म की 'बिल्ली' है? मेरे लिए एक खाली 'foo' फ़ाइल में' cat foo> foo' परिणाम। – birryree
फेडोरा 13 है यह मैं क्या देख रहा है
cat foo > foo
cat: foo: input file is output file
यदि foo
पहले कुछ भी निहित है, तो यह चला गया है।
शैल काटना होगा, cat
जाहिरा तौर पर एक नामित parm की जाँच करता है, लेकिन जैसा कि नीचे stdin
के खिलाफ जांच नहीं करेगा और हमेशा सफल होता है:
$ uname -a
Linux bar 2.6.18-164.15.1.el5PAE #1 SMP Wed Mar 17 12:14:29 EDT 2010 i686 i686 i386 GNU/Linux
$ dd if=/dev/urandom of=foo bs=1024 count=4
4+0 records in
4+0 records out
4096 bytes (4.1 kB) copied, 0.00334456 seconds, 1.2 MB/s
$ od -c foo |head -2
0000000 U 371 003 z 224 334 z K 236 221 k < c 256 !
0000020 % % 256 V \ 005 , 254 X 202 330 004 222 " 037 226
$ cat <foo >foo && od -c foo
0000000
आपके सभी उत्तरों के लिए धन्यवाद। वे हर सहायक थे। – HelloWorld
- 1. यूनिक्स: फ़ाइल
- 2. कोई फ़ाइल रैप के साथ बिल्ली फ़ाइल
- 3. यूनिक्स - फ़ाइल
- 4. यूनिक्स प्रणाली फ़ाइल टेबल
- 5. यूनिक्स रीडायरेक्ट पूंछ फ़ाइल
- 6. बिल्ली
- 7. क्यों "फ़ाइल 1> फ़ाइल 1 सॉर्ट करें" काम नहीं करता है?
- 8. "एचजी बिल्ली" या "एसवीएन बिल्ली"
- 9. "$ 1/*" में "$ 1/*" में फ़ाइल के लिए "$ 1/*" का अर्थ क्या है
- 10. फ़ाइल में स्ट्रिंग को प्रतिस्थापित करना यूनिक्स
- 11. यूनिक्स शेल फ़ाइल फ़ोल्डर संरचना
- 12. क्या यूनिक्स "फ़ाइल" उपयोगिता का कोई अजगर-समतुल्य है?
- 13. यूनिक्स में फ़ाइल के मालिक को खोजें
- 14. rpmbuild (1) RPM "spec" फ़ाइल में "स्रोत:" टैग द्वारा नामित संपीड़ित टैर (1) फ़ाइल को क्यों अनदेखा करता है?
- 15. यूनिक्स: क्या होता है जब एक पठन फ़ाइल डिस्क्रिप्टर चुनते समय चयन करता है()
- 16. फ्रेमवर्क/1 कोर फ़ाइल
- 17. यूनिक्स फ़ाइल की दूसरी पंक्ति दिखाने
- 18. क्या मुझे बिल्ली में हेड्रोक लिखने के लिए बिल्ली चाहिए?
- 19. फ़ाइल नाम ग्लोबिंग विंडोज बनाम यूनिक्स
- 20. बिल्ली से बेहतर डीडी है?
- 21. एक ज़िप फ़ाइल से 1 फ़ाइल निकालने का सबसे तेज़ तरीका क्या है जिसमें बहुत सारी फ़ाइल है?
- 22. यूनिक्स में/dev/tty क्या है?
- 23. Google क्रोम/यूनिक्स के लिए कुकी फ़ाइल
- 24. crossdomain.xml फ़ाइल क्या है?
- 25. बॉर्न शेल में "2 <& 1" रीडायरेक्ट क्या करता है?
- 26. ओकैम में बिल्ली लिखना: यूनिक्स.read
- 27. सी ++ - 2 वर्गों 1 फ़ाइल
- 28. Django: "लोड" क्या करता है (एक टेम्पलेट फ़ाइल में)?
- 29. पीडीबी फ़ाइल क्या है?
- 30. क्या फ़ाइल पथ और फ़ाइल नाम में
मुझे संदेह है कि यह खोल के व्यवहार का एक बहुत अच्छा परीक्षण होगा। –