Jak ukryć wyjście ekranu (printf) aplikacji powłoki w systemie Linux?
Jak ukryć wyjście ekranu (printf) aplikacji powłoki w systemie Linux?
Odpowiedzi:
Możesz przekierować wyjście dowolnego programu, aby nie było widoczne.
$ program > /dev/null
Spowoduje to przekierowanie standardowego wyjścia - nadal będziesz widzieć błędy
$ program &> /dev/null
Spowoduje to przekierowanie wszystkich danych wyjściowych, w tym błędów.
wget
można użyć -q
opcji, aby go uciszyć.
W wierszu poleceń dostępne są trzy urządzenia IO.
standard in - 0
standard out - 1
standard error - 2
Aby przekierować standardowe wyjście (domyślne wyjście) do pliku (i zastąpić plik), użyj
command > file.log
Aby dołączyć do pliku file.log, użyj 2> s
command >> file.log
aby przekierować standardowy błąd do pliku.log, użyj
command 2> file.log
i dołączyć
command 2>> file.log
Aby połączyć wyniki w jeden strumień i wysłać je wszystkie w jedno miejsce
command > file.log 2>&1
To wysyła 2 (stderr) do 1 (stdout) i wysyła stdout do pliku.log
Zauważ, że można również przekierować standard na polecenie oczekujące standardowego wejścia
command << file.txt
EDYCJA
Aby uzyskać więcej informacji, zapoznaj się z przewodnikiem Advanced Bash Scripting Guide
command > file.log 2>&1
działa?
> file
a drugie jest 2>&1
. Pierwszy przekierowuje standard do pliku. Drugi pobiera drugi deskryptor pliku i przekierowuje go do pierwszego. Możesz zrobić odwrotną, przekierować standardowe wyjście do standardowego błędu za pomocą, >&2
a następnie przekierować standardowy błąd do pliku za pomocą 2> file
.
Jeśli chcesz tylko ukryć wynik (i nie zapisywać go w pliku), możesz użyć:
Edytowane:
$ command &> / dev / null
W systemie Mac OS X (10.6 „Snow Leopard”):
Jeśli chcesz ukryć dane wyjściowe, nie informując o tym programu, sprawdzając deskryptor pliku wyjściowego / błędu, możesz spróbować użyć następujących poleceń w powłoce:
stty flusho; command ;stty -flusho
lub jeśli po prostu chcesz ukryć dane wejściowe z terminala:
stty -echo; command ;stty echo
Więcej informacji znajduje się na stronie instrukcji stty (1)
W przypadku Linuksa wiem tylko, że Ubunutu (10.04 „Lucid”) i niektóre „Debian / Arch” (komentowane poniżej - tnx hendry) nie mają tego flusho
ustawienia (i nie widzę nic innego odpowiedniego na stronie podręcznika man) . Mimo to echo
ustawienie działa na Ubuntu.