Ao pressionar para cima, posso passar pelos comandos inseridos anteriormente. Percebi, porém, que se eu modificar um deles, isso altera a história. Por exemplo, se eu digitar:
echo a
echo b
echo c
[up][up][backspace]d[ctrl+c]
a história agora mostra que o segundo comando foi echo d
, não echo b
. Como mantenho o primeiro echo b
da história?
Por exemplo, digamos que eu execute um comando muito longo, com muitas opções. então eu quero executá-lo novamente, com uma pequena alteração, então eu volto ao histórico para encontrá-lo, faça a alteração, mas percebo que, na verdade, não preciso executá-lo novamente, pensando em outra opção fazer em vez disso. depois, quero voltar e me lembrar qual foi o comando que executei - mas espere, a história agora está mostrando a coisa errada!
Isso acontece muito raramente, mas quando acontece, acho realmente irritante. Existe alguma maneira de preservar automaticamente o histórico original?
fonte
history
você pode ver todo o comando. Depois você pode selecionar o que precisa. Qual shell você está usando agora?echo c
.Respostas:
Tente colocar no seu
~/.inputrc
Em alguns casos, você pode encontrá-lo no valor padrão (Desligado).
Ele deve forçar
readline
a desfazer todas as alterações nas linhas do histórico antes de retornar quandoaccept-line
for executado. (mais informações emman bash
).Edit:
CTRL+c
eset revert-all-at-newline on
funciona bem desde entãobash-4.3.30
.Mas:
fonte
nano
também :-)Usualmente:
vai fazer isso.
O comando original será lembrado se você executar o comando modificado. Obviamente, você não deseja executar de verdade, para poder comentar com a linha
#
.No seu exemplo, você teria, então, em sua história:
echo a
,echo b
,echo c
,# echo d
.fonte
alt-shift-3
para comentar a linha de comando atual se o seu bash estiver usandoreadline
./insert-comment
emman 3 readline
(ouman bash
) para obter mais informações.