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