前のコマンドの処理中に端末から入力をどのように受け入れますか?

前のコマンドの処理中に端末から入力をどのように受け入れますか?

私は個人のラップトップと学校のコンピュータの両方でUbuntu Linuxを使用しています。私の個人的なラップトップでは、端末が前のコマンドを処理している間にユーザー入力を受け入れる学校のコンピュータの動作を複製したいと思います。たとえば、実行時に最初のコマンドが処理中に入力できるようにgit commit -m "a commit message"したいとします。git pushユーザー入力の生と標準のパターンを調べましたが、どのように機能や実装方法を理解することができませんでした。

答え1

最初のコマンドの実行中に入力された内容は、次のコマンドでバッファリングされます。

最初のコマンドが標準入力から読み出される場合は例外です。標準入力が最初に入力を読み取るためです。最初のコマンドの標準入力をリダイレクトしてこれを防ぐことができます。

command1 < /dev/null
command2

私はこれがあなたのサンプルコマンドで起こってはいけないと思います。git commit通常、コミットメッセージの入力を求められますが、この-mオプションを使用するとこれを回避できます。しかし、試してみるのも悪くありません。

答え2

私の意見では、ターミナルは他のターミナルを実行するときは常に追加の入力を許可すると思います(ターミナルを使用するプログラムを実行しない限り)。あなたの例では入力を許可しますが、git commit完了したときにのみ実行します。

PS:私のコンピュータでgit push実行しているときcd ..git commitテストするには速すぎました)、うまくいきました。

答え3

セミコロンを使用してください:

git commit -m "foo" ; git push

これはメッセージをコミットし、コミットが成功したかどうかにかかわらずプッシュします。

または、コミットが成功した場合にのみプッシュするには、次のリンクコマンドを使用します&&

git commit -m "foo" && git push

関連情報