Poniżej wysyła standardowe dane wyjściowe do urządzenia zerowego (segmentu bitów).
scriptname >/dev/null
A jeśli chcesz również wysyłać tam komunikaty o błędach, użyj jednego z (pierwszy może nie działać we wszystkich powłokach):
scriptname &>/dev/null
scriptname >/dev/null 2>&1
scriptname >/dev/null 2>/dev/null
A jeśli chcesz nagrywać wiadomości, ale ich nie widzisz, zamień /dev/null
na rzeczywisty plik, taki jak:
scriptname &>scriptname.out
Dla kompletności pod Windows cmd.exe (gdzie „nul” jest odpowiednikiem „/ dev / null”), jest to:
scriptname >nul 2>nul
echo foo > $(tty)
skrypt i uruchom./test.sh &> /dev/null
- dane wyjściowe są nadal drukowane na terminalu. Oczywiście nie stanowi to problemu, jeśli piszesz skrypt, który nie używa takich poleceń./dev/null
istnieje w Cygwin, nie musisz go używaćnul
.Coś jak
Zapobiegnie to standardowemu wyjściu i wyjściu błędu, przekierowując je na oba
/dev/null
.źródło
2>/dev/null
Próbować
:
jest skrótem od „nic nie rób”.$()
to tylko twoje polecenie.źródło
0
(sukces). Zobaczmy przykład wykorzystujący polecenie,false
które zawsze zwraca1
(błąd). Na przykład( echo foo | tee file ; false ) && echo bar
wyświetlafoo
. Korzystanie trick stłumić wyjście:( : $(echo foo | tee file ; false) ) && echo bar
. Ale wyświetla się,bar
co oznacza, że kod statusu powrotu to0
(nie jest to kod statusu zwrotu zfalse
). Zaktualizuj swoją odpowiedź, podając to ograniczenie. Na zdrowieDUMMY=$(yourcommand)
? Nie ma wspomnianego ograniczenia. :)DUMMY=$( echo foo | tee file ; false ) && echo bar
niczego nie wyświetla.DUMMY=$( echo foo | tee file ; true ) && echo bar
Wyświetli się poleceniebar
. Daj mi znać, jeśli podasz odpowiedź, aby go zagłosować ;-) PozdrawiamAlternatywą, która może pasować w niektórych sytuacjach, jest przypisanie wyniku polecenia do zmiennej:
Ponieważ Bash i inne interpretery wiersza poleceń POSIX nie traktują przypisań zmiennych jako polecenia, kod powrotu bieżącego polecenia jest przestrzegany.
Uwaga: przypisanie za pomocą słowa kluczowego
typeset
lubdeclare
jest uważane za polecenie, więc obliczony kod powrotu w przypadku, gdy jest to samo przypisanie, a nie polecenie wykonane w podpowłoce:źródło
Podobnie jak post andynormancx , użyj tego (jeśli pracujesz w środowisku Unix):
Lub możesz użyć tego (jeśli pracujesz w środowisku Windows):
źródło
> nul
systemu Windows z cygwin lub git bash, a teraz utkniesz wnul
pliku, którego nie można usunąć, spróbuj wypróbować tę odpowiedź , działał jak urok.Spójrz na ten przykład z The Linux Documentation Project :
To powiedziawszy, możesz użyć tego prostego przekierowania:
źródło
W swoim skrypcie możesz dodać następujące wiersze, o których wiesz, że dają wynik:
Albo możesz też spróbować
źródło
>>
)?