SSH를 통해 어떻게 무언가를 Less로 전송할 수 있습니까?

SSH를 통해 어떻게 무언가를 Less로 전송할 수 있습니까?

일부 출력을 표시하는 스크립트를 사용하여 원격 컴퓨터에서 메일을 처리하기 위해 mutt이메일을 호출로 연결하는 바인딩을 구성하려고 합니다 . 그러나 이것은 페이지 매김 없이 전체 출력을 제공하기 때문에 작동하지 않습니다 .sshlessless

범위를 좁히려고 노력하면서 본질적으로 모방하려는 것은 다음과 같습니다.

seq 1 100 | less

하지만 less원격 컴퓨터에서 실행 중입니다. (mutt에서 스크립트를 호출하는 사용 사례로 인해 해당 seq 1 100부분(이메일을 나타냄)은 원격 시스템에서 작동하지 않고 해당 less부분(less를 나타내는 스크립트)은 로컬 시스템에서도 작동하지 않습니다.)

만약 내가한다면:

seq 1 100 | ssh -t REMOTE_MACHINE less

"표준 입력이 터미널이 아니기 때문에 의사 터미널이 할당되지 않으며 less출력이 페이징 없이 직접 표시됩니다. "라는 경고가 표시됩니다.

만약 내가한다면:

seq 1 100 | ssh -t -t REMOTE_MACHINE less

less"파일 이름 누락(도움말은 "less --help")"으로 인해 실패하므로 입력이 누락된 것 같습니다.

추가도 시도했지만 zsh -ic소용이 없었습니다.원격 호스트가 표준 입력을 읽고 평소대로 페이지를 매길 수 ssh있도록 하는 올바른 호출은 무엇입니까 ?less

아래 Giles의 의견에 답변하도록 편집하십시오.less위 예제의 호출을 실제 스크립트로 바꾸는 경우에도 이 문제가 발생합니다. 다음 내용으로 실행 파일을 생성하면 script.sh:

#!/bin/bash

exec less

집에 있는 로컬 및 원격 컴퓨터에 설치하고 다음을 수행합니다.

seq 1 100 | ~/script.sh

이는 그렇지 않습니다(있든 -t없든 -t -t):

seq 1 100 | ssh REMOTE_MACHINE less

답변1

명령을 인수로 전달하고 이를 사용하여 -t의사 터미널 할당을 강제할 수 있습니다.

예를 들어 seq원격 서버에서 명령을 실행해야 하는 경우 다음을 수행합니다.

ssh $REMOTE_HOST -t 'seq 1 100 | less'

명령을 로컬 컴퓨터에서 실행해야 하는 경우 seq인라인 문자열을 사용하여 다음과 같은 것을 사용할 수 있습니다 <<<(물론 인용이 조금 더 어려워집니다).

ssh $REMOTE_HOST -t "less <<< \"$(seq 1 100)\""

관련 정보