FreeBsd에서 출력을 리디렉션할 수 없습니다.

FreeBsd에서 출력을 리디렉션할 수 없습니다.

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 쉘입니다. 명령 리디렉션은 sudoTENEX 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

관련 정보