端末がより多くのパイプ入力を要求するのを止める方法は?

端末がより多くのパイプ入力を要求するのを止める方法は?

私はWindowsでgit bashを使用しており、パイプの後に端末が追加の入力(予期しない入力)を要求しないようにする方法を知りたいです。このようにパイプコマンドを入力することはまれですが、bashスタイルの端末が実行できる操作の一部をエミュレートしようとしています。
たとえば、私の入力は次のようになります。

zecuse MINGW64 ~/source/repos/Sim
$ echo test |
> echo here| (pipe typed by accident)
> (enter key was pressed)
> (the caret is sitting here waiting for another command)

最初のエコーをリダイレクトしないので、対応するコマンドチェーンの出力をhere端末に入力するだけです。しかし、入力の受け入れとコマンドの実行を停止するには、予期しないパイプの後に何を入力するのかわかりません。私は、
としようとしました。 ;ctrl+cctrl+d

  • ;=bash: syntax error near unexpected token ';'
  • ctrl+c= 何も起こらないようにコマンドを終了します。私はこのようなことが起こることができると思いました。
  • ctrl+d=bash: syntax error: unexpected end of file

これには機能しないキーボードショートカットまたは「空の」コマンドはありますか?

修正する

@Jesse_bの答えからの提案は:うまく機能し、I / Oリダイレクトを見つけた後、すべてが期待どおりに端末に表示されるようになりました。私はプロジェクトのコンテキストを取得するために文字列にechoを書き、何が起こっているかをテストする方法としてgit bashを使用しています。

$ echo test >&0 |
> echo here >&2|
> :

生産する

test
here

ベストアンサー1

IMOの「正しい」方法はctrl+を押してcコマンドを再実行することですが、見つかったとおり、これは出力を終了します。

また、次のようないくつかのタスクを実行できます。

:これは本質的に「何もしない」コマンドであり、ゼロで終了します。これによりパイプラインが終了しますが、コマンドの出力は生成されませんecho here
trueno コマンドの実行と同様に、0 で終了し、パイプが効果的に終了します。と
false同様に、0ではなく1で終了することを除いて、パイプは終了します。:true

問題は、前のコマンドの出力が次のコマンドの標準入力に「パイプ」されることです。ユーザーが提供したコマンドが入力に影響を与えない場合、出力は出ません。

問題に対する解決策(ただし、一般的な問題に対する包括的な解決策と見なされるべきではない)はを使用することですcat

$ echo test |
> echo here |
> cat
here

おすすめ記事