Ich führe den folgenden Befehl aus:
pkg_add emacs-23.4,2.tbz 2> output.log
Die Ausgabe wird weiterhin im Terminal angezeigt. Wenn ich drücke ↑, bekomme ich
pkg_add emacs-23.4,2.tbz 2 > output.log
mit einem Leerzeichen vor dem2
.
Ich habe das ursprünglich nicht gesagt. ich versuche
pkg_add emacs-23.4,2.tbz > output.log 2>&1
Wenn ich wieder drücke ↑, wurden Leerzeichen hinzugefügt .
Warum passiert mir das?
Ich verwende csh unter FreeBSD.
command-line
freebsd
io-redirection
csh
Gadgetmo
quelle
quelle
sh
.pkg_add
unter FreeBSD, daher gehe ich davon aus, dass dies für den Root-Benutzer ist (/ bin / csh ist die Standardeinstellung für root unter FreeBSD). In diesem Fall sollten Sie nicht die Shell ändern zu / usr / local / bin / bash. / bin / sh ist akzeptabel. Sie können auch einfach zu einer anderen Shell wechseln, nachdem Sie sich als root angemeldet haben.Ich bin nicht sicher, ob Sie versuchen, STDERR auszublenden oder zu STDOUT umzuleiten.
So leiten Sie STDOUT in eine Datei um:
So leiten Sie STDOUT und STDERR in eine Datei um:
So leiten Sie STDOUT in eine Datei um und verbergen STDERR:
So leiten Sie STDOUT zur Konsole um und verstecken STDERR:
So leiten Sie STDOUT zur Konsole und STDERR in eine Datei um:
So leiten Sie STDOUT in eine Datei und STDERR in eine Datei um:
EDIT: Der Grund, warum dies funktioniert, ist, dass die Aktion in den () zuerst erfolgt; Ergo, wenn wir STDOUT umgeleitet haben, ist es außerhalb der () nicht mehr verfügbar. Dies lässt uns nur noch STDERR übrig, und dann können wir das nach Wunsch umleiten.
quelle
Ich weiß, wie es in Csh geht, aber mit 2 Shells:
Auf diese Weise können Sie nur stderr in die Datei file.txt umleiten , ohne stdout - und zwar genau das, was Sie wollten.
quelle