Ausblenden der Ausgabe von Skriptbefehlen

Ausblenden der Ausgabe von Skriptbefehlen

Ich erstelle ein Shell-Skript, um einen bestimmten Computer automatisch mit den besten Einstellungen zu konfigurieren. Ich möchte die gesamte Ausgabe dieses Skripts außer der Echo-Ausgabe verbergen. Ist das möglich?

Antwort1

Beginnen Sie Ihr Skript mit:

exec 3>&1 1>/dev/null 2>&1

Dadurch wird Ihr ursprünglicher Dateideskriptor für stdout auf &3 gespeichert und stdout und stderr werden dann auf /dev/null umgeleitet. Wenn Sie etwas drucken möchten, leiten Sie die Ausgabe auf &3 um, wie:

echo "This message won't be output"
echo "But this one will" >&3

Und wenn Sie dieses Detail verbergen möchten, können Sie einfach eine Funktion definieren, die an fd 3 zurückgibt:

say() {
    echo >&3 "$@"
}

say "This goes to the log"

Antwort2

Sie können stdout umleiten, /dev/nullindem Sie hinzufügen

1>/dev/null

am Ende jeder Zeile Ihres Skripts, die eine Ausgabe erzeugt.

Sie können Fehler auf die gleiche Weise umleiten, indem Sie hinzufügen

2>/dev/null

Die meisten Befehle verfügen auch über eine Option zum Deaktivieren der normalen Ausgabe auf der Konsole, etwa -qso. Überprüfen Sie die Manpages der von Ihnen verwendeten Befehle.

verwandte Informationen