履歴コマンドを簡素化する機能を強化する方法

履歴コマンドを簡素化する機能を強化する方法

historyスクロールバッファの使用を簡素化し、スクロールバッファのフラッディングを防ぐために、このコードを考えました。

h() {
    if [ $# -eq 1 ]; then
        history | grep $1 | tail -n $(expr $(tput lines) - 1)
    else
        history | tail -n $(expr $(tput lines) - 1)
    fi
}

重複を避けるために単純化する方法は何ですか?

答え1

grep空のパターンはすべての行に一致するため、''テストしなくてもいつでも使用できます。

h(){ 
    history | grep "$1" | tail -n $(($(tput lines)-1))
}

答え2

入出力条件文をパイプできます。

h() {
    history |
    if [ $# -eq 1 ]; then
        grep $1
    else
        cat
    fi |
    tail -n $(expr $(tput lines) - 1)
}

これはcat対称のためのランダムフィルタです。

関連情報