Como você pode obter a linha de terminal atual (aquela que ainda é editável pelo usuário)?

2

Eu preciso de uma maneira de usar a linha atual que os usuários digitaram como variável para uma função de shell.

meu código atual, que pode ser chamado por ctrl + r

zle -N search

bindkey "^R" search

search () {
read str;
fc -ln -30 | grep $(printf "%q\n" "$str");
}

ou simplesmente, para chamá-lo como uma função

search () {
fc -ln -30 | grep $(printf "%q\n" "$1");
}

atualizado: pseudo código de destino, para chamar como uma função chamada por ctrl + r que não precisa de mais prompt de entrada

zle -N search

bindkey "^R" search

search ()
echo ""; #for better formatting because ctrl+R is not enter so the BUFFER(current line) gets corrupted and looks messy and the current input is not correctly shown
fc -ln -30 | grep $(printf "%q\n" "$BUFFER"); #edited to be the solution where $BUFFER is the current terminal line
}
    
por HopefullyHelpful 26.08.2014 / 16:56

0 respostas