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

관련 정보