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