3

の内容a.txt:ba.txt

と入力するとcat a.txt | xargs vi、 vi が開き、ba.txtすべて問題ないようです...

しかし、vi を終了すると、bash が異常であることがわかります。入力した命令が表示されませんls。見えませんが、エンターを押すと結果が表示されます(変な方法で.. lsll.バッシュは次のようになります。

バッシュ

誰でもこれを説明できますか?

4

3 に答える 3

4

vi/vim がパイプライン内から呼び出された場合stdin、ターミナルではなく、前のパイプラインの出力に接続されます。vi/vim は対話型コマンドであり、端末 (tty) から入力を受け取る必要があります。

結論: vim はインタラクティブ ターミナルからの入力を想定しているため、xargs vim にパイプすることはできません。

端末をよく見ると、vi/vim が次のように書いていることに気付くでしょう:

Vim: 警告: 入力は端末からではありません

PS: 次を使用できます。

cat file | xargs vim -Nu NONE

これを回避し、vi/vim を非対話型にします。

于 2013-07-18T07:55:52.773 に答える