"명령 | 덜" 대 "덜 <(명령)"

"명령 | 덜" 대 "덜 <(명령)"

대량의 명령 출력을 보기 위한 일반적인 "관용어"는 를 less통해 로 파이프하는 것입니다 command | less. 그러나 이 구문을 사용 하는 것이 가능하지만 bash(아마도 Windows에서만 가능하며 아직 다른 쉘에서는 테스트되지 않았습니다) 불평하는 경향이 있습니다 . 그것을 살펴본 후 두 경우 모두 파이프에서 읽고 있음을 발견했습니다. 유일한 차이점은 첫 번째 경우 리디렉션된다는 것입니다. 두 번째 경우에는 파일 이름으로 얻습니다. 읽을 때 일반 파일 검사가 어떻게든 "무시"됩니까 ? 또한 내용이 텍스트인 경우에도 이것이 일반 파일이 아닌지 어떻게 판단합니까?less <(command)less/dev/fd/63 is not a regular file/proc/*/fdstdin/dev/fd/63lessstdin/dev/fd/63

답변1

less일반적으로 파이프나 바이너리 파일과 같은 비정규 파일 열기를 거부합니다. 연산자를 사용하여 비정규 파일을 -f강제로 열 수 있습니다 .less

less -f <(command)

또 다른 방법은프로세스 교체:

less < <(command)

이로 인해 파이프가 표준 입력( ) <()으로 작동하도록 생성됩니다 .STDINless

답변2

less/dev/fd/63보통 파일이 아니라고 불평하는 경우가 많다

적어도 GNU에서는 이 문제에 대한 해결책은 다음 옵션을 사용하는 것입니다 -f.

less -f <(command)

일반적으로 less비정규 파일은 열리지 않습니다(물론 stdin은 제외). 이는 귀하를 보호하기 위한 것입니다. -f비정규 파일을 강제로 엽니다.

관련 정보