답변:
2> 리디렉션은 csh 또는 tcsh에서 작동하지 않습니다.
스타일 재 지정을 사용하려면 chsh
명령을 사용하여 쉘을 / bin / sh 또는 / usr / local / bin / bash로 2>
변경하십시오. 참고 : 루트 쉘을 / usr / local / bin / bash로 변경하지 마십시오
csh와 tcsh는 표준 출력과 오류를 개별적으로 리디렉션 할 수 없지만 >&
결합 된 출력을 파일로 리디렉션합니다.
pkg_add
FreeBSD 에서 실행 중이므로 이것이 루트 사용자를위한 것이라고 가정합니다 (/ bin / csh는 FreeBSD의 루트에 대한 기본값입니다). 이 경우 쉘을 / usr / local / bin / bash로 변경 해서는 안됩니다 . / bin / sh가 허용됩니다. 루트로 로그인 한 후 다른 쉘로 전환 할 수도 있습니다.
STDERR을 숨기거나 STDOUT으로 리디렉션하려고하는지 잘 모르겠습니다.
STDOUT을 파일로 경로 재 지정하려면 다음을 수행하십시오.
pkg_add emacs-23.4,2.tbz > stdout.log
STDOUT 및 STDERR을 파일로 경로 재 지정하려면 다음을 수행하십시오.
pkg_add emacs-23.4,2.tbz > & stdxxx.log
STDOUT을 파일로 리디렉션하고 STDERR을 숨기려면 다음을 수행하십시오.
( pkg_add emacs-23.4,2.tbz > stdout.log ) > & /dev/null
STDOUT을 콘솔로 리디렉션하고 STDERR을 숨기려면 다음을 수행하십시오.
( pkg_add emacs-23.4,2.tbz > /dev/tty ) > & /dev/null
STDOUT을 콘솔로 리디렉션하고 STDERR을 파일로 리디렉션하려면 :
( pkg_add emacs-23.4,2.tbz > /dev/tty ) > & stderr.log
STDOUT을 파일로 리디렉션하고 STDERR을 파일로 리디렉션하려면
( pkg_add emacs-23.4,2.tbz > stdout.log ) > & stderr.log
편집 : 이것이 작동하는 이유는 ()의 동작이 먼저 발생하기 때문입니다. Ergo, STDOUT을 리디렉션하면 더 이상 () 외부에서 사용할 수 없습니다. STDERR 만 남긴 다음 원하는대로 리디렉션 할 수 있습니다.
Csh에서 수행하는 방법을 알고 있지만 2 개의 셸을 사용합니다.
csh -c 'SOME_COMMAND 1>/dev/null' |& tee file.txt
이러한 방법으로 stdout없이 stderr 만 file.txt 로 리디렉션 할 수 있습니다 .
sh
.