각 파일 앞에 새로운 "more" 명령 양식 페이지: 억제하는 방법은 무엇입니까?

각 파일 앞에 새로운 "more" 명령 양식 페이지: 억제하는 방법은 무엇입니까?

나는 이 명령이 작동하는 것을 35년 동안 지켜봤습니다 more. 옵션 없이 여러 파일을 지정하면 다음과 같이 헤더와 파일 내용이 표시됩니다(짧은 파일의 경우 가장 보기 쉽습니다).

$ more file*
::::::::::::::
file1
::::::::::::::
one
/* you press the space bar to advance from this point */
::::::::::::::
file2
::::::::::::::
two
/* you don't press it here because it's already reached EOF */
$

위는 Ubuntu 22.04 버전입니다 more. Ubuntu 22.10의 새로운 기능으로 각 파일 헤더 앞에(분명히 각 파일 헤더 앞에) 터미널 "formfeed"를 인쇄하고 모든 이전 출력을 화면에서 제거합니다. 나에게 이것은 텍스트 파일 브라우저의 목적을 위반하는 것입니다.util-linux2.37.2util-linux 2.38::::::::::::::

또한 버전 2.38에서는 이제 에서와 같이 수행 more되어야 합니다 . 사용자로서 이것은 다소 자연스러운 것처럼 보이지만 동시에 스페이스바만 사용하여 모든 파일을 탐색할 수 있었기 때문에 혼란스럽기도 합니다. 열.:nvivi

more --help언제나 그렇듯이 페이징을 제어하기 위한 몇 가지 옵션이 표시되지만, 내가 아는 한(적어도 Ubuntu에서 컴파일할 때) 페이징 기능은 이를 억제하는 옵션 없이 도입되었습니다.

util-linux버전이 이전 버전이 될 수 있다고 하더라도 2.37.2수십 년 동안 표준 어휘의 일부였던 100개가 넘는 다른 Unix 명령의 개발도 중단되므로 지속 가능하지 않을 것이라고 생각합니다. 1980년대 이후로 운영 변경의 영향이 more너무 광범위해 원래 동작을 복원하는 방법을 고려해야 합니다.

답변1

이는 새로 도입된 옵션으로 인해 발생했을 가능성이 높습니다.

-e, --exit-on-eof
    Exit on End-Of-File, enabled by default if not executed on terminal.

확실히,이는 POSIX 준수를 위해 수행됩니다. 즉, EOF 없이 종료되는 것을 방지하기 위한 것입니다.-e.
그러나 많은 사람들이 이것이 이전 버전과의 호환성을 깨뜨린다고 불평했기 때문에(그리고 그것을 고치려면 해야 합니다 alias more='more -e') 또 다른 변화가 작업 중입니다.-e기본적으로 활성화됨만약에 POSIXLY_CORRECT터미널에서 환경 변수가 설정되지 않았거나 실행되지 않았습니다.. 따라서 다음 버전에서는 이전에 사용하던 동작이 다시 나타날 수도 있습니다( POSIXLY_CORRECT설정되지 않은 경우 ).

답변2

이것이 유용한지는 확실하지 않지만 단지 (또는 그 문제를 위해) | tail -n+1 | more대신 사용하기 시작했습니다 .| more|less

다음과 같은 것을 사용해 보십시오:

find . -maxdepth 1 -type f | xargs tail -n+1 | more

이것의 장점은 각 파일의 상단에 파일 이름이 포함된 헤더가 있다는 것입니다. 그것은 다음과 같습니다:

...
==> ./somefile.name <==
...

관련 정보