Alternativa da história do bash -p em zsh?

2

No bash, history -p faz expansão de histórico em seu argumento; Qual é a alternativa em zsh?

    
por HappyFace 03.09.2018 / 13:38

2 respostas

2

Não tenho conhecimento de nada, mas veja a opção histverify que altera o comportamento da expansão do histórico para que, quando você pressionar enter em uma linha que contenha operadores de histórico, a expansão seja executada no buffer do editor sem executar o comando.

$ setopt histverify
$ echo !!Enter
$ echo setopt histverifyEnter
setopt histverify

Observe também que, em zsh , como em csh (onde a expansão do histórico vem no final dos anos 70), os modificadores de histórico (como :h , :r , :A ...) também podem ser aplicados a expansões de parâmetros ( $var:h ...).

E todo o histórico está acessível com a matriz associativa especial $history .

As chaves dessas matrizes associativas são os números da história e, ao contrário das matrizes associativas regulares em que a ordem é indefinida, $history[@] é classificado em ordem decrescente no valor numérico da chave.

Portanto, ${history:0:1} é a última entrada do histórico. Portanto, você pode usar operadores de expansão de parâmetro para obter o mesmo resultado dos operadores de expansão de histórico. Por exemplo: !$:h , poderia ser ${${(z)history:0:1}[-1]:h}

    
por 03.09.2018 / 16:21
0

No bash, você pode expandir um comando fazendo isso:

history -p !23 

Então se em 23 você tiver ls -l o, o retorno será:

ls 
-l 

Em zsh, consigo reproduzir um comportamento semelhante (mas não idêntico) ao fazer isso:

history 23 23 | xargs -n1 | tail -n+2
    
por 03.09.2018 / 16:57