2012-11-16 11 views
23

Jaka jest różnica między następującymi poleceniami?Co oznacza "/ dev/null" na końcu komend powłoki

ssh myhostname "command1; command2;...commandn;" 2>/dev/null 
ssh myhostname "command1; command2;...commandn;" 
  1. co robi 2> oznacza?

  2. co znaczy /dev/null? Czytałem gdzieś, że wynik polecenia zostanie zapisany do pliku /dev/null zamiast konsoli! Czy to jest poprawne? Wydaje mi się dziwne, że nazwa pliku to null!

+0

1. 'man bash' jest interesującą lekturą. 2. '/ dev/null' to specjalny plik, który działa jak czarna dziura; nie zajmuje miejsca na dysku, ponieważ wszystko, co jest w nim umieszczone, jest w rzeczywistości odrzucane. – axiac

Odpowiedz

27

2> oznacza "przekierowanie standardowego błędu" do podanego pliku.

/dev/null jest plikiem zerowym. Wszystko, co do niej napisano, jest odrzucane.

Razem oznaczają one "wyrzucanie komunikatów o błędach".

2

"/ dev/null" zasadniczo oznacza "w pustkę", odrzucone. Wspomniany numer 2 odnosi się do wyjścia błędu, gdzie powinien być skierowany.

1

2> oznacza wysyłanie błąd standardowy do czegoś

/dev/null oznacza bin

+2

Przekierowanie nie jest potokiem. –

0

1) rur wszystko na standardowe wyjście błędów do/dev/null (tak go zignorować i nie go wyświetlić)

2) Dev null tylko wskazuje donikąd, nic do tego nie doprowadza i znika.

+0

W/dev/są inne rzeczy, takie jak wskaźniki do systemów plików (urządzenia ie./dev/sda) i rzeczy takie jak/dev/random, z których można odczytać, aby uzyskać losowe dane. – BrenanK

+2

Nie ma żadnych rur. Przekierowania nie są rurami. –

+0

Masz rację, proszę pana! Przepraszam, zły termin. – BrenanK

3

1 jest stdout. 2 to stderr.

Czasami można znaleźć 2>&1, co oznacza przekierowanie stderr na stdout.