コマンドに出力があるかどうかを確認する方法(zsh)

コマンドに出力があるかどうかを確認する方法(zsh)

コマンドの出力がある場合は、コマンドの後に新しい行を印刷したいです(ターミナルがスクロールを開始した後に読みやすくなることを願っています)。

私はこれを見つけました:

precmd() {
    precmd() {
        print ""
    }
}

これは機能しますが、明らかに各コマンドの後に行を印刷します。

これ:

precmd () {                        
    exec 2>&- >&-
    lastline=$(tail -1 ~/.command.out)
    sleep 0.1
    exec > /dev/tty 2>&1
}

preexec() {
    exec > >(tee ~/.command.out&)
}

修正しようとしましたが、修正しなくても出力が「破損」してvimを使用できなくなりました。

答え1

似たようなものをお探しですか?スクリプトは最初の引数として実行され、コマンドがstdoutに何でも出力すると、改行文字も印刷されます。

#!/bin/bash

if [[ $($1 | tee /dev/tty) ]]; then
    echo
fi

関連情報