bash가 출력을 래핑하지 않도록하는 방법?


33

일부 명령이 긴 행을 출력으로 생성 할 때마다 (예를 들어, ls -l긴 이름의 파일을 포함하는 폴더) 긴 행이 다음 행으로 줄 바꿈되어 열 구조가 엉망이됩니다.

이것을 피할 수있는 방법이 있습니까? 'nowrap'vim 옵션과 비슷한 것이 있습니까?


최신 정보

허용 된 답변에 문제가 있음을 알았습니다 :
별칭을 다음 alias ll="tput rmam; ls -l; tput smam"
과 같이 만들면 grep하려고하면 grep이 없는 것처럼 ll | grep foo
여전히 모든 파일을 인쇄 합니다 .

내가 찾은 해결책은 전체 별칭 주위에 대괄호를 넣는 것입니다.
alias ll="(tput rmam; ls -l; tput smam)"



답변:


27

이것은 bash (명령을 실행하면 bash는 명령이 완료되기를 기다립니다)와 터미널과 관련된 모든 것과 관련이 없습니다.

대부분의 터미널 에뮬레이터는 기본적으로 오른쪽 여백으로 줄 바꿈됩니다. 그러나 터미널 에뮬레이터에서 지원하는 경우 적절한 제어 시퀀스 를 사용하여이 기능을 끌 수 있습니다 . 긴 줄은 단순히 잘립니다.

printf '\033[?7l'
ls -l /a/folder/that/contains/files/with/long/names
printf '\033[?7h'

네, 이것이 제가 찾던 것입니다, Gilles에게 감사합니다!
Mihai Rotaru

12
더 이식성 :tput rmam; ls -l longname; tput smam
추후 공지가있을 때까지 일시 중지됨.

더 나은; 그러나 어디에서 왔을 까? 나는 tput 및 termcap 매뉴얼을 검색했지만 그에 대해 아무것도 찾을 수 없었습니까?
Mihai Rotaru

2
@Mihai : man 5 terminfoLinux 에서 terminfo 문서를 사용해보십시오 .
Gilles 'SO- 악마 그만'

실제로, 거기에있다
Mihai Rotaru


5

다음과 같은 기능을 사용할 수 있습니다.

nowrap() 
{ 
   cut -c-$(tput cols); 
}

명령에 접두사를 붙여야 nowrap하거나 함수 이름을 지정해야합니다.


작동하지만 색상 코딩이 손실됩니다. 뿐만 아니라 그것을 보존하는 방법?
Mihai Rotaru


2

-S 스위치를 사용하여 적은 명령으로 파이프하십시오.

ls -l | less -S

그런 다음 위 / 아래 / 왼쪽 / 오른쪽 화살표를 사용하여 스크롤하고 q를 입력하여 종료 할 수 있습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.