O Bash herdou o mecanismo !
de csh
. A maneira de visualizar seu comando em ambos os shells é adicionar um :p
ao final.
!for:p
!
como um prefixo para alguma string executará qualquer comando no buffer de comando que comece com a string (parcial) dada. Há também alguns outros usos para isso. Veja por exemplo Entendendo o ponto de exclamação (!) no bash
Minha pergunta é: como posso visualizar qual comando será executado antes de executá-lo? Por exemplo. se eu fizer !for
, e eu escrevi vários comandos começando com 'for' anteriormente, mas eu não tenho certeza se aquele que eu acho que foi o último é de fato o que eu acho. Seria muito útil se o bash pudesse me mostrar o que o comando que seria executado antes de eu realmente executá-lo. Existe alguma maneira de fazer isso em bash?
O Bash herdou o mecanismo !
de csh
. A maneira de visualizar seu comando em ambos os shells é adicionar um :p
ao final.
!for:p
Você pode usar a opção histverify
shell:
histverify
If set, and readline is being used, the results of history substitution
are not immediately passed to the shell parser. Instead,
the resulting line is loaded into the readline editing buffer,
allowing further modification.
Exemplo:
$ shopt -s histverify
$ !shopt
Outra opção útil é histreedit
:
histreedit
If set, and readline is being used, a user is given the opportunity
to re-edit a failed history substitution.
Eu geralmente me abster de (IMO quebrado) !
substituição e usar as funções de histórico do shell; por exemplo. em modo-vi (você certamente encontrará opções equivalentes em emacs-mode ) você procuraria pela última ocorrência, com o seu exemplo que seria <Esc>
/
for
<Enter>
e (se não for o comando desejado) repita a pesquisa para a próxima aparição de for
usando a chave n
(ou N
para ir na outra direção) e confirme comando desejado com <Enter>
.
Você pode mapear readline
commands history-search-backward
e history-search-forward
para algo (estou usando PgUp e PgDown ) e usá-los para navegar pelo histórico de !
.
Se você estiver usando o modo vi
( set -o vi
), clique em Esc
ou C-[
e k
ou UP
para subir no histórico e j
ou DOWN
para ir para baixo.
Você pode editar o que você chegou ou executar com Enter
.
Tags bash command-history