Odpowiedzi:
Operator> przekierowuje dane wyjściowe zwykle do pliku, ale może to być urządzenie. Możesz także użyć >>, aby dołączyć.
Jeśli nie podasz liczby, przyjmowany jest standardowy strumień wyjściowy, ale możesz także przekierowywać błędy
> fileprzekierowuje stdout do pliku
1> fileprzekierowuje stdout do pliku
2> fileprzekierowuje stderr do pliku
&> fileprzekierowuje stdout i stderr do pliku
/dev/nulljest zerowym urządzeniem, które pobiera dowolne dane wejściowe i wyrzuca je. Można go użyć do stłumienia dowolnego wyjścia.
2>&1starsza składnia, więc &>nie działałaby wiele lat temu, ale obie są równoważne.
Krótko mówiąc, przekierowuje stderr(fd 2) do czarnej dziury (odrzuca wyjście polecenia).
Niektóre bardziej powszechne przypadki użycia przekierowania:
command > /dev/null 2>&1 &
Uruchom commandw tle, odrzuć stdoutistderr
command >> /path/to/log 2>&1 &
Uruchom commandi dołącz stdout i stderr do pliku dziennika.
W Bash 4+ funkcjonuje krótsza (ale mniej czytelna) forma
command &>> /path/to/log
> /dev/null 2>&1zamiast &> /dev/null?
&>jest nowy w Bash 4, ten pierwszy to tradycyjny sposób, jestem tak przyzwyczajony (łatwy do zapamiętania).
&> /dev/nullmoże nie działać w niektórych powłokach, ale> / dev / null 2> i 1 będzie działać we wszystkich powłokach zgodnych z POSIX.
fn>target: gdzie fnjest numer pliku (zazwyczaj 0-2, niektóre programy definiują więcej liczb) i targetzwykle jest to nazwa pliku, ale tutaj jest inny numer pliku - z prefiksem, &którym jest składnia dla „Chcę numer pliku zamiast nazwy pliku”.
/dev/nullw Linuksie / Uniksie jest traktowany jako czarna dziura, więc możesz w to wszystko włożyć, ale nie będziesz w stanie go odzyskać /dev/null.
Ponadto 2>oznacza, że przekierowujesz (tj. >) Stderr (tj. 2) Do czarnej dziury (tj. /dev/null)
Twoje polecenie to:
grep -i 'abc' content 2>/dev/null
Nie próbuj kończyć kolejnym ukośnikiem takim jak ten - 2>/dev/null/(to nie jest katalog).
Treść grep -i 'abc' wygeneruje dane wyjściowe wyświetlane na konsoli, w tym wszelkie błędy.
Określenie 2>/dev/nullspowoduje odfiltrowanie błędów, aby nie były one wysyłane do konsoli.
Bardziej szczegółowo: 2 oznacza deskryptor błędu, w którym zapisywane są błędy. Domyślnie są one drukowane na konsoli.
\> przekierowuje dane wyjściowe do określonego miejsca, w tym przypadku /dev/null
/dev/null to standardowe urządzenie Linux, do którego wysyłasz dane wyjściowe, które chcesz zignorować.
> /dev/null 2>&1i&> /dev/null