Uruchomię następujące polecenie:
pkg_add emacs-23.4,2.tbz 2> output.log
Dane wyjściowe są nadal wyświetlane w terminalu. Kiedy naciskam ↑, rozumiem
pkg_add emacs-23.4,2.tbz 2 > output.log
ze spacją przed2
.
Nie umieściłem tego pierwotnie. próbuję
pkg_add emacs-23.4,2.tbz > output.log 2>&1
Ponownie, kiedy naciskam ↑, spacje zostały dodane .
Dlaczego tak się dzieje?
Używam csh na FreeBSD.
command-line
freebsd
io-redirection
csh
gadgetmo
źródło
źródło
sh
.pkg_add
na FreeBSD, więc zakładam , że jest to dla użytkownika root (/ bin / csh jest domyślny dla roota na FreeBSD). W tym przypadku należy nie zmienić powłokę na / usr / local / bin / bash. / bin / sh jest dopuszczalny. Możesz także po prostu przełączyć się na inną powłokę po zalogowaniu się jako root.Nie jestem pewien, czy próbujesz ukryć STDERR lub przekierować go do STDOUT.
Aby przekierować STDOUT do pliku:
Aby przekierować STDOUT i STDERR do pliku:
Aby przekierować STDOUT do pliku i ukryć STDERR:
Aby przekierować STDOUT do konsoli i ukryć STDERR:
Aby przekierować STDOUT na konsolę i STDERR do pliku:
Aby przekierować STDOUT do pliku i STDERR do pliku:
EDYCJA: Powodem, dla którego to działa, jest to, że akcja w () jest pierwsza; Ergo, jeśli przekierowaliśmy STDOUT, to nie będzie już dostępny poza (). To pozostawia nam tylko STDERR, a następnie możemy przekierować to zgodnie z potrzebami.
źródło
Wiem jak to zrobić w Csh, ale używając 2 powłok:
Taki sposób pozwala przekierować tylko stderr do file.txt, bez stdout - czyli tego, co chciałeś.
źródło