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/null
indem 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 -q
so. Überprüfen Sie die Manpages der von Ihnen verwendeten Befehle.