Windows: เปลี่ยนเส้นทาง stdout และ stderror เป็นอะไร


33

ฉันมีคำสั่งที่ฉันกำลังเรียกใช้สร้างผลลัพธ์เป็นตันฉันต้องการปิดเสียงผลลัพธ์โดยไม่ต้องเขียนลงในไฟล์ ฉันได้ใช้สิ่งต่อไปนี้เพื่อส่งเอาต์พุตทั้งหมดไปยังไฟล์ แต่อีกครั้งฉันไม่ต้องการไฟล์เอาต์พุตใด ๆ :

command > out.txt 2>&1

ฉันเคยใช้command > /dev/nullกล่อง CentOS มาก่อน แต่ฉันไม่พบสิ่งที่คล้ายกันสำหรับหน้าต่าง


ฉันหวังว่าคุณจะใช้command > /dev/nullCentOS ของคุณ
Kurt Pfeifle

@pipitas สิ่งที่ฉันทำมันทำงาน: D
Alec Gorge

หากคุณใช้command > /bin/nullกับ CentOS แน่นอนคุณได้สร้างไฟล์ไฟล์ทั่วไปที่ชื่อ/bin/nullในระบบของคุณ คุณอาจพูดว่า'ใช้งานได้!' , ถ้าคุณต้องการ. เดี๋ยวนี้มี stdout และ stderr commandการส่งออกของคุณ โดยปกติแล้วจะ/bin/มีเพียงไฟล์ที่ปฏิบัติการได้เท่านั้น และโดยปกติผู้ใช้รูทเท่านั้นที่ได้รับอนุญาตให้สร้างไฟล์ได้ ดังนั้นหากไฟล์นั้นอยู่ที่นั่นคุณได้รันคำสั่งของคุณในฐานะผู้ใช้รูท ... /bin/nullมักจะไม่มีอยู่ - และ/dev/null(ซึ่งฉันพูดถึง) มักจะถูกใช้เป็น'สีดำทั้งหมด'ซึ่งผลลัพธ์ที่ไม่พึงประสงค์ควรหายไปใน ...
Kurt Pfeifle

จุดดีฉันไม่ได้คิดอย่างนั้น อย่างไรก็ตามฉันค่อนข้างมั่นใจว่ามันเป็นเพียงความทรงจำที่ผิดพลาดเพราะฉันอยู่บน Windows ในเวลานั้น
Alec Gorge

คำตอบ:


47

command > nul 2>&1คุณต้องการ


ขอบคุณ! ที่ได้ผล ฉันต้องรอ 12 นาทีเพื่อยอมรับคำตอบ (ข้อกำหนดเซิร์ฟเวอร์ผิดพลาด)!
Alec Gorge

7
นี่จะเปลี่ยนเส้นทาง stdout เท่านั้น คุณต้องการ> nul 2>&1หรือ2> nulฆ่า stderr ด้วย
grawity

ใช่ฉันรู้ว่า แต่ขอบคุณที่พูดถึงมันสำหรับคนอื่น ๆ ที่เยี่ยมชมคำถามนี้!
Alec Gorge

เพียงเพื่อเพิ่มฉันได้รับอนุญาตปฏิเสธข้อผิดพลาดในขณะที่ใช้: sudo hostname -f 2> nul ในขณะที่คำสั่งต่อไปนี้ทำงานได้ดี: sudo hostname -f 2> / dev / null สำหรับผู้ที่หมดปัญหาเรื่องการอนุญาตขณะใช้ nul
Ranvir

1
@AminM nulเป็นคีย์เวิร์ดพิเศษของ Windows สำหรับเอาท์พุท null (เช่นเอาท์พุททิ้ง) บนระบบที่ใช้ * nix (เช่น Ranvir อ้างถึง) ระบบจะใช้ไฟล์พิเศษ/dev/nullแทน >หมายถึง "การเปลี่ยนเส้นทาง" (และ2>วิธีการเปลี่ยนเส้นทาง buffer 2 - ซึ่งเป็นข้อผิดพลาดออก)
Doktor J

3

คุณต้องการ command > null 2>&1

nulใช้งานได้เฉพาะใน command prompt ขณะที่nullทำงานใน powershell

Null สามารถใช้ในและ cmd.exe เพื่อความเข้ากันได้ แต่สร้างไฟล์ชื่อ null


3
พรอมต์คำสั่งคือ cmd.exe '> null' สร้างไฟล์ชื่อ 'null' ด้วยไฟล์ที่คุณต้องการจากไฟล์ cmd.exe และ PowerShell
นายสมิ ธ

ฉันไม่มีความคิดเห็น. แก้ไขคำตอบของฉันอย่างถูกต้อง
AirCombat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.