Frage

Ich habe einen Bash-Skript, das ein Programm mit Parametern ausgeführt wird. Das Programm gibt einige Status (dies zu tun, das zu tun ...). Es gibt keine Option für dieses Programm, ruhig zu sein. Wie kann ich verhindern, dass das Skript von etwas angezeigt wird?

Ich bin auf der Suche nach so etwas wie Fenstern "echo off".

War es hilfreich?

Lösung

Nachfolgend sendet die Standardausgabe in das Nullgerät (bit bucket).

scriptname >/dev/null

und wenn Sie möchten auch Fehlermeldungen dort gesendet werden, verwenden Sie eine der (die erste in allen Schalen können nicht funktionieren):

scriptname &>/dev/null
scriptname >/dev/null 2>&1
scriptname >/dev/null 2>/dev/null

und, wenn Sie möchten, die Nachrichten aufnehmen, aber nicht sehen, wie sie, ersetzen /dev/null mit einer tatsächlichen Datei, wie zum Beispiel:

scriptname &>scriptname.out

Für die Vollständigkeit, unter Windows cmd.exe ein (wobei "nul" ist das Äquivalent von "/ dev / null"), es ist:

scriptname >nul 2>nul

Andere Tipps

So etwas wie

script > /dev/null 2>&1

Dies verhindert, dass die Standardausgabe und Fehlerausgabe, Umleitung, sie beide zu /dev/null.

Versuchen

: $(yourcommand)

: ist die Abkürzung für "nichts tun".

$() ist nur Ihr Befehl.

Eine Alternative, die in einigen Situationen passen können, ist das Ergebnis eines Befehls an eine Variable zuzuordnen:

$ DUMMY=$( grep root /etc/passwd 2>&1 )
$ echo $?
0
$ DUMMY=$( grep r00t /etc/passwd 2>&1 )
$ echo $?
1

Da Bash und anderer POSIX-Kommandozeilen-Interpreter sind nicht die Variablenzuweisungen als Befehl, der Rückkehrcode des vorliegenden Befehls respektiert wird.

Hinweis: assignement mit dem typeset oder declare Schlüsselwort wird als Befehl betrachtet, so dass der ausgewertete Rückgabecode für den Fall ist die Zuweisung selbst und nicht der in der Unterschale ausgeführt Befehl:

$ declare DUMMY=$( grep r00t /etc/passwd 2>&1 )
$ echo $?
0

Wie andynormancx Post verwenden: (wenn Sie in einer Unix-Umgebung arbeiten)

scriptname > /dev/null

oder Sie können diese verwenden: (wenn Sie in einer Windows-Umgebung arbeiten)

scriptname > nul

Werfen Sie einen Blick auf dieses Beispiel von der Linux-Dokumentation Projekt :

  

3.6 Sample: stderr und stdout 2-Datei

     

Dies wird jede Ausgabe eines Programms in einer Datei platzieren. Dies eignet sich manchmal für cron-Einträge, wenn Sie einen Befehl wollen in absoluter Stille zu übergeben.

     rm -f $(find / -name core) &> /dev/null 

Wie gesagt, können Sie diese einfache Umleitung verwenden:

/path/to/command &>/dev/null

Sie Skript können Sie die folgenden zu den Linien hinzufügen, die Sie wissen wollen einen Ausgang geben:

some_code 2>>/dev/null

Oder Sie können auch versuchen,

some_code >>/dev/null
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top