SSH経由で何かをLessに転送できますか?

SSH経由で何かをLessに転送できますか?

いくつかの出力を表示するスクリプトを使用して、リモートコンピュータでメールを処理するためにmuttEメールを呼び出しに関連付けるバインディングを設定しようとしています。ただし、これはページなしで完全な出力を提供するため、機能しません。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)\""

おすすめ記事