หากเรามีแนวคิดเกี่ยวกับแผนผังไดเร็กทอรี GNU / Linux อยู่แล้วอย่างน้อยเราควรทำความคุ้นเคยกับ / dev / reference ซึ่งเป็นที่ที่ไฟล์ทั้งหมดที่เกี่ยวข้องกับ อุปกรณ์ฮาร์ดแวร์.
หากเราดูในไดเร็กทอรี / dev / เราจะเห็น "ไฟล์" ที่เรียกว่า โมฆะแต่หากเราต้องการเปิดเพื่อดูเนื้อหาระบบจะแจ้งให้เราทราบว่าเป็นไปไม่ได้เนื่องจากไม่ใช่เนื้อหาธรรมดา ฉันได้แนบไฟล์ word ไว้เพราะอย่างที่คุณทุกคนรู้สำหรับ Linux ทุกอย่าง (ฮาร์ดแวร์และซอฟต์แวร์) แสดงเป็นไฟล์ |
อุปกรณ์ใดที่ / dev / null สอดคล้องกับ?
สำหรับวัตถุประสงค์ในทางปฏิบัติลองนึกภาพถังขยะหลุมก้นบึ้งหรืออวกาศที่ทิ้งสิ่งของโดยไม่สามารถกู้คืนได้ (ไม่ว่าพวกนาซ่าจะพยายามแค่ไหนก็ตาม)
แต่ถ้าฉันมีคำสั่งเช่น rm อยู่แล้วทำไมฉันถึงต้องการลบสิ่งใหม่ ๆ
เนื่องจากวิธีการทำงานของ“ หลุมดำ” แตกต่างกันอย่างสิ้นเชิงคุณจะไปเกี่ยวกับการแทนที่เอาต์พุตมาตรฐานของข้อผิดพลาดในคำสั่งภายในเชลล์สคริปต์ที่รันไทม์ได้อย่างไร นี่คือที่ที่ / dev / null เข้ามา
มาดูตัวอย่างกันเลย
เราได้สร้างไฟล์ที่เรียกว่าการทดสอบที่มีสตริง "Hello World" หากเราต้องการแสดงเนื้อหาของไฟล์นั้นในบรรทัดคำสั่งเราสามารถทำได้ด้วยวิธีต่อไปนี้:
user @ laptop: ~ $ cat test
สวัสดีชาวโลก
หากไฟล์ไม่มีอยู่หรือถูกตั้งชื่อเป็นการทดสอบ (โดยมี 's' ต่อท้าย) เราจะได้รับข้อผิดพลาดต่อไปนี้ในคอนโซล:
user @ laptop: ~ $ cat การทดสอบ
cat: การทดสอบ: ไม่มีไฟล์หรือไดเร็กทอรี
เราจะทำอย่างไรเพื่อหลีกเลี่ยงข้อความแสดงข้อผิดพลาด เพียงแค่เปลี่ยนทิศทางผลลัพธ์ของคำสั่งในกรณีที่มีข้อผิดพลาดไปยัง "ถังขยะ" นั่นคือ / dev / null
เราจะระบุอย่างไรในกรณีที่เกิดข้อผิดพลาด? ที่นี่คุณป้อนค่าอินพุตเอาต์พุตและข้อผิดพลาดมาตรฐานสำหรับโปรแกรม: STDIN, STDOUT และ STDERR (ซึ่งสามารถแทนที่ได้ด้วย 0, 1 และ 2 ตามลำดับ) ด้วยวิธีนี้ถ้าเราใส่ ...
user @ laptop: ~ $ cat การทดสอบ 2> / dev / null
ผู้ใช้ @ แล็ปท็อป: ~ $
…เราจะเห็นว่าข้อความแสดงข้อผิดพลาดจะไม่ถูกสร้างขึ้นบนคอนโซล
คุณต้องระวังเพราะไวยากรณ์เป็นสิ่งสำคัญ: ระหว่างอักขระ 2 และ> ไม่ควรมีช่องว่าง มิฉะนั้นจะให้สิ่งต่อไปนี้:
user @ laptop: ~ $ cat การทดสอบ 2> / dev / null
cat: การทดสอบ: ไม่มีไฟล์หรือไดเร็กทอรี
cat: 2: ไม่มีไฟล์หรือไดเร็กทอรี
ในทางตรงกันข้ามช่องว่างระหว่าง> และ / dev / null จะไม่ส่งผลเสียต่อผลลัพธ์
นอกจากนี้เรายังสามารถใช้การเปลี่ยนเส้นทางข้อผิดพลาดตัวอย่างเช่นเพื่อจับข้อผิดพลาดในไฟล์บันทึกดังต่อไปนี้:
user @ laptop: ~ $ cat การทดสอบ 2> err.log
อีกกรณีที่น่าสนใจคือการรวบรวมผลลัพธ์ในไฟล์อื่นตราบเท่าที่ไม่มีข้อผิดพลาดเกิดขึ้นซึ่งเราจะใส่:
user @ laptop: ~ $ cat test 1> output_result 2> err.log
ในที่สุดก็เป็นไปได้ที่จะใส่นิพจน์«> / dev / null 2> & 1 »ซึ่งเอาต์พุตมาตรฐานและเอาต์พุตข้อผิดพลาดจะถูกรวมเข้าด้วยกันโดยเปลี่ยนเส้นทางเพื่อไม่ให้ได้รับข้อมูลเอาต์พุต
อ่า แต่หนึ่งในยูทิลิตี้ที่ใช้มากที่สุดที่ / dev / null ขาดหายไปซึ่งก็คือการล้างไฟล์: $ cat / dev / null> file.log ด้วยวิธีนี้ไฟล์ file.log จะว่างเปล่า เพิ่มเลย!
มันเป็นคำอธิบายที่ชัดเจนที่เขากำลังมองหา
ฉันสนับสนุนการเคลื่อนไหวเพื่อเพิ่ม =)
Saludos!
สวัสดีก่อนอื่นบทความดีมาก! อย่างที่สองฉันต้องการมีส่วนร่วมกับลิงก์นี้ในหัวข้อนี้ cron job ใน php จาก Cpanel และขอแสดงความยินดีครั้งที่สามสำหรับบล็อก!
บทความที่ดีเกี่ยวกับ dev / null น่าเสียดายที่ฉันคิดว่าฉันแสดงความคิดเห็นผิดพลาดในที่ที่ไม่ถูกต้องมาก่อน! ฉันขอโทษ
ขอบคุณการสนับสนุนที่ดี
สวัสดีฉันได้รับการโจมตีว่างเปล่า ฉันใช้ andrirc และได้รับชื่อเล่นส่วนตัวของฉันด้วยคำว่า Null 2 วินาทีต่อมาโปรแกรมก็ปิดลงฉันได้อ่านและจากสิ่งที่ฉันเห็นสิ่งนี้สามารถทำได้โดยเชลล์เท่านั้นไม่ใช่บุคคลภายนอก ฉันพยายามละเว้นตัวเอง / ไม่สนใจ -lrpcntikd และไม่มีอะไรทำให้ฉันประหลาดใจที่คำสั่งยังคงมา หากคุณมีวิธีใดในการพยายามบล็อกฉันจะขอบคุณ ไชโย
จะเกิดอะไรขึ้นถ้าเมื่อเรียกใช้ประโยคสัญลักษณ์> ไม่ได้ถูกวางไว้?
ใครช่วยแนะนำฉันได้ไหม
สวัสดีตอนเช้า ฉันได้ติดตั้ง Debian netinst ใน ACER Extensa 5620Z – 32 บิตแล้ว เมื่อการติดตั้งจาก USB เสร็จสิ้นและ pendrive จะถูกลบออกเพื่อให้บูตจากฮาร์ดดิสก์ ระบบที่เธอถามฉัน:
เข้าสู่ระบบเดเบียน: xxxxxxxxx (ตกลง)
รหัสผ่าน: xxxxxxxxx (ตกลง)
ไม่มี@debian:~$ ???? นี่คืออะไร? ฉันควรใส่อะไรที่นั่น?
หากไม่มีคำสั่งนี้ ฉันไม่สามารถดำเนินการบูตระบบต่อได้
คุณสามารถช่วยฉันได้ไหม? ฉันไม่รู้ว่าควรทำอย่างไรต่อไป
ขอบคุณมาก. ขอแสดงความนับถืออย่างสูง.