Como melhorar a função para simplificar o comando do histórico

1

Eu criei este snippet para simplificar o uso de history e evitar a inundação do buffer de rolagem:

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

Como pode ser simplificado evitar a repetição?

    
por forthrin 20.09.2016 / 08:06

2 respostas

3

Se observarmos que grep com um padrão vazio '' corresponde a todas as linhas, você pode usá-lo sem testes:

h(){ 
    history | grep "$1" | tail -n $(($(tput lines)-1))
}
    
por 20.09.2016 / 12:37
2

Você pode inserir e excluir declarações condicionais:

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

O cat é um filtro não operacional para simetria.

    
por 20.09.2016 / 10:36