パイプの後、パイプを開いたままにします(ターミナルに接続されている標準入力)。

パイプの後、パイプを開いたままにします(ターミナルに接続されている標準入力)。

やる気私はしばしばAndroidデバイスでリモートシェルを開き(adb/ Androidデバッグブリッジを使用)、私のコンピュータ(Androidデバイスが複数あるため、Androidデバイスではない)にスクリプトを書いて最初のシェルに接続するのに役立ちます。

たとえば、ディレクトリを特定のフォルダに変更したい場合がありますが、コードが実行されるとstdinがすぐに閉じられ、その行が実際に実行されているかどうかをテストするためにシェルもecho "cd /storage/self/primary/Download; mkdir bobby" | adb shellすぐに閉じます。mkdir bobbyそれは。

たとえば、を実行すると、シェルは5秒以内に自動的に閉じますecho "cd /storage/self/primary/Download; mkdir bobby; sleep 5" | adb shell。残念ながら、heredoc区切り文字が見つかるとシェルも閉じるため、heredocは役に立ちません。

質問:コマンドをパイプした後に端末にstdin接続を維持して入力できるようにするにはどうすればよいですか?sshオプションのコマンドを直接渡すことができるので、これは難しいことではありません。


この質問がすでにリクエストされている場合はお詫び申し上げます。表現方法がわからない。

ベストアンサー1

catパイプを開いたままにするには、パイプの左側に次のものを追加します。

{ echo "cd /storage/self/primary/Download; mkdir bobby"; cat; } | adb shell

プロセスcatはその後実行され、echo標準出力はadb shellコマンドに接続され、標準入力は端末(入力可能)から読み取られます。

終了するとすぐに(割り込みまたは入力終了信号をcat押す)パイプラインが終了します。Ctrl+CCtrl+D

プロンプトとコマンドラインの完了、またはコマンドがadb shell通常提供する他の対話型機能を含む完全な対話型シェルを提供できない場合がありますが、パイプの右側にコマンドを送信できます。

で説明されているものと似ています。「パイプを開けておく」とはどういう意味ですか?

おすすめ記事