私は高度なLinuxユーザーではないので、いくつかの新しい概念を理解するのは難しいです。私は最近コマンドについて読んxargs
で、いくつかの例をテストしたかったです。そのうちの1つは私を本当に混乱させました。
理論は次のとおりです。に存在しないファイルの編集を開始しvim
(を使用して)、vim someFile
編集後にのみ:qw
ファイルを生成できる場合は(を使用して)echo
、次のようにxargs
同じ操作を実行できます。
echo "someFile" | xargs vim
xargs
echo
fromの出力を取得し、stdout
パラメータとして渡しますvim
。ただし、これにより次のエラーが発生するようです。
Vim:警告:入力は端末から出ていません。
最も奇妙なことは、vim
エラーが印刷されてから1秒後にファイルが開きますが、保存して終了するとvim
端末に完全にバグが発生することです。端末を変更するには、tmuxウィンドウを閉じる必要があります。すべてのプロセスが完了すると、ファイルが作成され、内容は期待どおりになります。ここに何か問題があることは明らかでしたが、その理由はまったくわかりませんでした。
私はこれを見つけました質問StackOverflowにありますが、私の質問には答えません。
ベストアンサー1
stty sane
端末の問題を解決します。
これは、子プロセスで開かなかったxargs
ために発生します。tty
「open tty」オプションを追加する必要があります-o
。xargs
echo "sane" | xargs -o stty
その後、stty sane
端末に接続して実行されます。エラーは発生しません。
echo "sane" | xargs stty
BSDではエラーが発生します。
stty:stdinは端末ではありません
Linuxの場合:
stty: '標準入力': デバイスに不適切な ioctl
これは私にとって効果的です。
echo /etc/hosts | xargs -o vim