如何改进简化历史命令的功能

如何改进简化历史命令的功能

我想出了这个片段来简化滚动缓冲区的使用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是一个用于对称性的无操作滤波器。

相关内容