J'exécute la commande suivante:
pkg_add emacs-23.4,2.tbz 2> output.log
La sortie s'affiche toujours dans le terminal. Quand j'appuie ↑, je reçois
pkg_add emacs-23.4,2.tbz 2 > output.log
avec un espace avant le2
.
Je n'ai pas mis cela à l'origine. J'essaie
pkg_add emacs-23.4,2.tbz > output.log 2>&1
Encore une fois, lorsque j'appuie sur ↑, des espaces ont été ajoutés .
Pourquoi cela m'arrive-t-il?
J'utilise csh sur FreeBSD.
command-line
freebsd
io-redirection
csh
gadgetmo
la source
la source
sh
.pkg_add
sur FreeBSD, donc je suppose que c'est pour l'utilisateur root (/ bin / csh est la valeur par défaut pour root sur FreeBSD). Dans ce cas, vous ne devez pas changer le shell en / usr / local / bin / bash. / bin / sh est acceptable. Vous pouvez également simplement basculer vers un autre shell après vous être connecté en tant que root.Je ne sais pas si vous essayez de masquer STDERR ou de le rediriger vers STDOUT.
Pour rediriger STDOUT vers un fichier:
Pour rediriger STDOUT et STDERR vers un fichier:
Pour rediriger STDOUT vers un fichier et masquer STDERR:
Pour rediriger STDOUT vers la console et masquer STDERR:
Pour rediriger STDOUT vers la console et STDERR vers un fichier:
Pour rediriger STDOUT vers un fichier et STDERR vers un fichier:
EDIT: La raison pour laquelle cela fonctionne est que l'action dans le () se produit en premier; Ergo, si nous avons redirigé STDOUT, alors il ne sera plus disponible en dehors des (). Cela nous laisse juste STDERR, puis nous pouvons rediriger cela comme vous le souhaitez.
la source
Je sais comment le faire en Csh, mais en utilisant 2 shells:
Une telle façon permet de rediriger uniquement stderr vers file.txt, sans stdout - à savoir ce que vous vouliez.
la source