私は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+c
ctrl+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
。
true
no コマンドの実行と同様に、0 で終了し、パイプが効果的に終了します。と
false
同様に、0ではなく1で終了することを除いて、パイプは終了します。:
true
問題は、前のコマンドの出力が次のコマンドの標準入力に「パイプ」されることです。ユーザーが提供したコマンドが入力に影響を与えない場合、出力は出ません。
問題に対する解決策(ただし、一般的な問題に対する包括的な解決策と見なされるべきではない)はを使用することですcat
。
$ echo test |
> echo here |
> cat
here