2012-11-16 20 views
23

Sự khác nhau giữa các lệnh sau là gì?"/ dev/null" có nghĩa là gì ở cuối các lệnh shell

ssh myhostname "command1; command2;...commandn;" 2>/dev/null 
ssh myhostname "command1; command2;...commandn;" 
  1. 2> nghĩa là gì?

  2. /dev/null có nghĩa là gì? Tôi đọc ở đâu đó kết quả của lệnh sẽ được ghi vào tập tin /dev/null thay vì giao diện điều khiển! Đúng không? Có vẻ lạ với tôi rằng tên của tập tin là null!

+0

1. 'man bash' là một bài đọc thú vị. 2. '/ dev/null' là một tệp đặc biệt hoạt động như một lỗ đen; nó không mất dung lượng đĩa vì mọi thứ được đặt vào nó thực sự bị loại bỏ. – axiac

Trả lời

27

2> có nghĩa là "chuyển hướng lỗi chuẩn" cho tệp đã cho.

/dev/null là tệp rỗng. Bất cứ thứ gì được ghi vào nó đều bị loại bỏ.

Cùng nhau, chúng có nghĩa là "vứt bỏ mọi thông báo lỗi".

2

'/ dev/null' về cơ bản có nghĩa là "vào khoảng trống", bị loại bỏ. Các 2 bạn đề cập đề cập đến đầu ra lỗi, nơi nó nên được hướng dẫn.

1

2> có nghĩa là gửi sai số chuẩn để một cái gì đó

/dev/null nghĩa là một bin

+2

Chuyển hướng không phải là đường ống. –

0

1) Ống mọi thứ trên sai số chuẩn vào/dev/null (để bỏ qua nó và không hiển thị nó)

2) Dev null chỉ trỏ đến hư không, đường ống bất cứ điều gì đó, và nó biến mất.

+0

Có những thứ khác được lưu trữ trong/dev/như con trỏ tới hệ thống tập tin (thiết bị ie./dev/sda) và những thứ như/dev/random nơi bạn có thể đọc để lấy dữ liệu ngẫu nhiên. – BrenanK

+2

Không có đường ống nào liên quan. Chuyển hướng không phải là đường ống. –

+0

Bạn là đúng! Xin lỗi, sai thời hạn. – BrenanK

3

1 là stdout. 2 là stderr.

Sau đó, đôi khi bạn tìm thấy 2>&1, điều đó có nghĩa là chuyển hướng stderr thành stdout.

Các vấn đề liên quan