Windows: chuyển hướng stdout và stderror thành không có gì


33

Tôi có một lệnh tôi đang chạy tạo ra một tấn đầu ra, tôi muốn tắt tiếng đầu ra mà không ghi vào tệp. Tôi đã sử dụng cách sau để gửi tất cả đầu ra vào một tệp, nhưng một lần nữa tôi không muốn bất kỳ đầu ra tệp nào:

command > out.txt 2>&1

Tôi đã sử dụng command > /dev/nulltrên hộp CentOS của mình trước đây, nhưng tôi không thể tìm thấy một thứ tương tự cho các cửa sổ.


Tôi hy vọng bạn đã sử dụng command > /dev/nulltrên CentOS của bạn.
Kurt Pfeifle

@pipitas bất cứ điều gì tôi đã làm nó hoạt động: D
Alec Gorge

Nếu bạn thực sự được sử dụng command > /bin/nulltrên CentOS, bạn đã tạo một tệp tệp chung có tên /bin/nulltrên hệ thống của mình. Bạn có thể nói 'Nó đã làm việc!' , nếu bạn muốn. Tập tin này hiện chứa đầu ra tiêu chuẩn thiết bị xuất chuẩn của bạn command. Thông thường, trong /bin/đó chỉ có các tập tin thực thi. Và thông thường, chỉ người dùng root mới được phép tạo tập tin ở đó. Vì vậy, nếu tệp đó ở đó, bạn đã chạy lệnh của mình với tư cách là người dùng root ... /bin/nullthường không tồn tại - và /dev/null(mà tôi đã đề cập) thường được sử dụng làm 'toàn bộ màu đen' nơi đầu ra không mong muốn sẽ biến mất trong ...
Kurt Pfeifle

Điểm tốt, tôi đã không nghĩ về điều đó. Tuy nhiên, tôi khá chắc chắn rằng đó chỉ là bộ nhớ bị lỗi của tôi vì lúc đó tôi đang ở trên Windows.
Hẻm núi Alec

Câu trả lời:


47

Bạn muốn command > nul 2>&1.


cảm ơn! mà làm việc Tôi cần đợi 12 phút để chấp nhận câu trả lời (yêu cầu serverfault)!
Hẻm núi Alec

7
Điều này chỉ chuyển hướng thiết bị xuất chuẩn. Bạn cũng cần > nul 2>&1hoặc 2> nulđể giết stderr.
grawity

Vâng tôi biết điều đó, nhưng cảm ơn vì đã đề cập đến nó cho những người khác ghé thăm câu hỏi này!
Hẻm núi Alec

chỉ cần thêm, tôi đã nhận được quyền từ chối lỗi trong khi sử dụng: sudo hostname -f 2> nul trong khi lệnh sau hoạt động tốt: sudo hostname -f 2> / dev / null Dành cho những người hết vấn đề về quyền trong khi sử dụng nul
Ranvir

1
@AminM nullà từ khóa đặc biệt của Windows cho đầu ra null (nghĩa là loại bỏ đầu ra). Trên các hệ thống dựa trên * nix (như Ranvir đang đề cập) thay vào đó họ sử dụng tệp đặc biệt /dev/null. Có >nghĩa là "chuyển hướng" (và 2>có nghĩa là bộ đệm chuyển hướng 2 - là đầu ra lỗi)
Doktor J

3

Bạn muốn command > null 2>&1

nulchỉ hoạt động trong dấu nhắc lệnh trong khi nullhoạt động trong powershell

Null có thể được sử dụng trong và cmd.exe để tương thích nhưng tạo một tệp có tên null.


3
Dấu nhắc lệnh là cmd.exe. '> null' tạo một tệp có tên 'null' với bất cứ điều gì bạn hướng vào nó từ cmd.exe và từ PowerShell.
Ông Smythe

Tôi không ý kiến. Đúng đã chỉnh sửa câu trả lời của tôi.
AirCombat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.