
Freebsd 시스템에서는 출력을 리디렉션하기 위해 bash 스크립트를 실행합니다.
% sudo bash some_file.sh arg1 >/dev/null 2>&1
Ambiguous output redirect.
% sudo bash some_file.sh arg1 &> /dev/null
Invalid null command.
답변1
명령줄에서 csh를 사용하는 것 같습니다( 확인 echo $SHELL
).
- csh 구문을 사용하여 stdout과 stderr을 모두 리디렉션하는 방법은 다음과 같습니다.
sudo bash some_file.sh arg1 >& /dev/null
- 또는 다음을 사용하여 리디렉션을 명령의 "bash 부분"으로 이동합니다.
sudo bash -c 'some_file.sh arg1 >/dev/null 2>&1'
답변2
가까이 왔지만 둘 중 어느 것도 TENEX C 셸에 적합한 구문이 아닙니다.
기억하세요: FreeBSD에서 사용하는 대화형 로그인 쉘은 변경하지 않는 한 TENEX C 쉘입니다. 명령 을 리디렉션하려면 sudo
TENEX C 셸의 리디렉션 구문을 사용해야 합니다. 를 통해 Bourne Again 쉘을 실행하는 것은 중요하지 않습니다 sudo
. 그것만이 정해져 있다리디렉션이 발생하고 sudo
이미 실행된 후.
이것:
% sudo bash some_file.sh arg1 >/dev/null 2>&1사실상 다음과 같습니다
% >/dev/null >&1 sudo bash some_file.sh arg1 2표준 출력을 두 번 다른 두 위치로 리디렉션하려고 시도합니다.
이것:
% sudo bash some_file.sh arg1 &> /dev/null실제로는
% sudo bash some_file.sh arg1 & > /dev/null명령 기록에 다시 기록됩니다. 로 결합
&
된 두 개의 명령 sudo
과 이름이나 인수가 없는 명령 입니다 . 후자는 TENEX C 셸에서 허용되지 않습니다.
/dev/null
다음은 TENEX C 셸에서 표준 출력과 표준 오류를 모두 리디렉션하는 방법입니다 .
% sudo bash some_file.sh arg1 >& /dev/null