ls 명령을 "무음"하는 방법은 무엇입니까?

ls 명령을 "무음"하는 방법은 무엇입니까?

내가 재귀를 한다고 가정해보자ls

$ ls -R 

루트 디렉터리에 있습니다.

이런 문자를 많이 받습니다 -

ls: cannot open directory ./var/lib/sendmail: Permission denied
ls: cannot open directory ./var/lib/sudo: Permission denied
...

cannot open directory위의 " " 메시지가 표시되지 않도록 하는 방법이 있나요 ?

답변1

이는 오류 메시지이므로 stdout이 아닌 stderr로 전송됩니다. 해결책은 stderr를 리디렉션하는 것입니다.

ls -R 2>/dev/null

설명하다:

모든 명령에는 3가지 표준 파일 설명자가 있습니다: 표준 입력(0)(보통 명령이 입력되는 터미널), 표준 출력(1)(보통 명령이 출력을 인쇄하는 터미널), 표준 오류(2)(by 기본값은 표준 출력과 동일합니다).

전부는 아니지만 대부분의 프로그램/도구는 표준 오류 파일 설명자에 경고와 오류를 인쇄합니다. 이제 파일 설명자가 복구되면 그다지 유용하지 않습니다. 이것이 바로 쉘이 다음을 제공하는 이유입니다.리디렉션: 표준 파일 설명자를 원하는 파일로 리디렉션할 수 있습니다.

표준 입력 리디렉션(키보드 대신 파일에서 입력 받기):

interactive_program 0< file_with_answers

보시다시피 표준 입력에 소위 "응답 파일"을 제공하여 많은 질문을 하는 간단한 프로그램을 자동화하는 데 도움이 될 수 있습니다.

이는 다음과 같이 단축될 수 있습니다.

 interactive_program < file_with_answers

<리디렉션을 명확하게 하기 때문에 (~에서문서도착하다프로그램)

1>...마찬가지로, stdout은 또는 (기존 파일을 자르지 않고 추가)을 통해 >...리디렉션 될 수 있습니다.>>...

표준 오류 리디렉션을 사용하려면 다음과 같이 파일 설명자를 명시적으로 지정해야 합니다. 2>...따라서 위의 작업은 모든 오류를 특수 파일로 보내는 것입니다. /dev/null이는 약간 블랙홀과 비슷합니다.

관련 독서아래 설명에서 MattDMo가 제공한 리디렉션에 대해 설명합니다.

관련 정보