ls 명령줄 개행 방지

ls 명령줄 개행 방지

나는 명령과 관련되지 않은 이 질문에 대한 답을 찾고 있습니다 less.

ls터미널에서 명령을 실행하고 긴 파일 이름이 줄 바꿈되는 것을 방지하는 방법이 있습니까 ?

예를 들어, 다음 대신 ls를 실행할 때:

shortfile
thisisalongfi
lename
shortfile

래핑해야 하거나 전혀 래핑하지 않아야 하는 긴 파일 이름을 잘라내어 다음과 같이 읽도록 하고 싶습니다.

shortfile
thisisalongfi
shortfile

답변1

setterm --linewrap off
ls
setterm --linewrap on

setterm터미널(터미널 에뮬레이터)을 구성하기 위해 노력할 것이지만 일반적으로 터미널은 이 기능을 지원할 수도 있고 지원하지 않을 수도 있습니다.

답변2

ls명령에는 파일 이름을 자르는 옵션이 없으므로 추가 도구가 필요합니다.

당신은 그것을 사용할 수 있습니다cut줄을 자릅니다. 터미널에서 환경 변수에는 터미널 크기가 LINES포함됩니다 .COLUMNS

ls | cut -c 1-$COLUMNS

ls이렇게 하면 종종 앨리어싱되는 음영이 억제됩니다. 음영을 텍스트 도구 기반 잘림과 결합하는 쉬운 방법은 없으므로 음영을 원하는 경우 사용하는 것이 좋습니다.터미널 자체에 자르도록 지시.

답변3

래핑된 파일 이름과 래핑되지 않은 파일 이름을 구별하기 어렵기 때문에 표준 fold(1)명령은 여기서 조금 더 나쁩니다.

$ printf 'short\nlongeshort\nshort\n' | fold -w 5
short
longe
short
short

GNU는 sed작동하지만 백슬래시로 인해 약간의 문제가 있습니다.

$ printf 'short\nlongeshort\nshort\n' | gsed 's/\(.\{5\}\).*/\1/'
short
longe
short

awk선이 잘리는 위치를 표시할 수 있습니다.

$ printf 'short\nlongeshort\nshort\n' |
awk -v w=5 '{if(length > w){print substr($0,0,w-3) "..."}else{print}}'
short
lo...
short

너비 매개변수를 허용하는 스크립트에서는 숨겨져 있거나 기본적으로 사용되어야 할 수도 있습니다 w.$COLUMNS

동시에,

$ setterm --linewrap off
ksh: setterm: not found
$ pkglocate setterm
$ 

휴대성에 별로 도움이 되지 않습니다.

관련 정보