나는 명령과 관련되지 않은 이 질문에 대한 답을 찾고 있습니다 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
$
휴대성에 별로 도움이 되지 않습니다.