-e 다양한 터미널 에뮬레이터 옵션

-e 다양한 터미널 에뮬레이터 옵션

나는 마우스로 less의 출력을 스크롤하려고 할 때 xterm의 동작이 마음에 들지 않습니다(덜 스크롤하는 대신 명령 기록을 스크롤합니다). 그래서 나는 사쿠라를 얻었고 그것은 내가 원하는 대로 작동합니다. 그러나 "-e" 옵션은 제대로 작동하지 않는 것 같습니다.

내가 입력하는 동안

xterm -e "ls /usr/bin | less"

명령이 ls /usr/bin | less실행된 새 xterm을 얻습니다. 하지만,

sakura -e "ls /usr/bin | less"

내 요청을 무시하고 새 사쿠라 터미널을 시작하는 것 같습니다.

사실 다른 터미널 에뮬레이터와 옵션도 시도해 보았으나 성공하지 못했습니다...

sakura -x "ls /usr/bin | less"
xfce4-terminal -e "ls /usr/bin | less"
roxterm -e "ls /usr/bin | less"
lxterminal -e "ls /usr/bin | less"
lilyterm -e "ls /usr/bin | less"

그들 중 일부는 내 요청을 무시했고 때로는 "하위 프로세스를 실행할 수 없습니다...(해당 파일이나 디렉터리가 없습니다)"라고 주장했습니다.

저는 현재 아치에 있습니다. 내가 만난http://osdir.com/ml/general/2013-07/msg06468.html, 이는 Sakura가 한때 제가 바라던 대로 동작했음을 나타내는 것 같습니다(현재 버전 3.1.0이 있습니다).

예상대로 실행되도록 하는 데 도움이 되거나 sakura다른 "좋은" 터미널 에뮬레이터를 사용하면 매우 감사하겠습니다(예: $TERM -e "ls /usr/bin | less" 명령을 사용하여 터미널 에뮬레이터를 열고 주어진 명령을 실행하고 마우스 휠로 스크롤이 덜 가능한 출력).

답변1

sakura깨진 것처럼 보이지만 다른 경우에는 두 가지 주요 유형이 있습니다. 나중에 인수를 받아들이고 -e이를 쉘 명령줄로 처리하는 유형과 인수 목록을 받아들이고 첫 번째 유형은 명령 유형을 파생하는 데 사용됩니다(아니요). 쉘이 포함되어 있으므로 파이프와 같은 쉘 기능을 사용할 수 없습니다.

xterm는 특수한 경우로 여러 인수가 있거나 인수가 $PATH기존 실행 파일을 확인하여( 에서 확인) 확인되는 경우 두 번째 범주에 속하고, 그렇지 않으면 두 번째 범주에 속합니다.

그래서:

xterm -e 'ls | less'

/usr/bin/ls | lessls | less예를 들어 실행 파일은 첫 번째 인수가 있는 경우 이를 사용하여 실행됩니다(예, 공백과 파이프 문자가 있는 파일 이름). 그렇지 않으면 /bin/sh, , , sh, 그렇지 않은 경우를 사용합니다.-cls | less

대부분의 다른 터미널( xterm명확하게 하는 것이 권장됨)에서는 다음을 명시적으로 호출해야 합니다 sh.

lxterminal -e sh -c 'ls | less'

sakura'는 -e작동하지 않는 것 같습니다. 이것은 -x어느 정도 작동합니다. 넌 할 수있어:

sakura -x 'sh -c "ls | less"'

전달된 단일 인수에 대해 쉘과 유사한 구문 분석을 수행 -x하고 이를 인수 목록으로 분할한 다음 실행하는 것으로 보입니다.

스크롤 인과 관련하여 교대 로(방출된 후와 같이 ) 스크롤 다운 및 업 이벤트가 및 키를 누를 때와 동일한 이스케이프 시퀀스를 보내기 때문에 (및 기타 VTE 기반 터미널 에뮬레이터)에서 작동합니다 less.sakurascreentput smcupDownUp

게시되지 않은 ls | less -X경우에는 작동하지 않는다는 것을 알 수 있습니다 .smcup

xterm이는 옵션으로 지원되며 기본적으로 활성화되어 있지 않습니다. XTerm.VT100.alternateScroll리소스를 로 설정하여 변경할 수 있습니다 true. 예를 들어 다음을 추가하세요.

XTerm.VT100.alternateScroll: true

귀하의 것 ~/.Xdefaults( xterm해당 머신에서 시작된 경우) 또는 X 서버에 로드된 리소스 파일( xterm어디서나 시작되고 X 서버에 연결된 경우) 또는 다음을 xterm사용하여 호출됩니다.

xterm -xrm 'XTerm.VT100.alternateScroll: true' -e sh -c 'ls | less'

관련 정보