Existe uma maneira de salvar um comando no histórico do bash sem executá-lo? por exemplo
$ cmd [a long list of arguments]
e agora, durante a digitação, lembro que gostaria de fazer outra coisa primeiro. Posso ter algo como
$ cmd [a long list of arguments][some-key-strokes]
e isso realmente não é executado, mas entra no histórico do bash para que eu possa usá-lo mais tarde?
#
e pressione Enter.Respostas:
Pode haver uma maneira melhor, mas você pode usar o
:p
modificador de expansão do histórico para imprimir a linha de comentários atual sem executar.!#
é a linha atual e,%
por si só, não corresponderá a nadafonte
ls -al
umUse a
-s
opção para ohistory
comando:A chamada para
history -s
si mesma, convenientemente, não é adicionada ao histórico de comandos; portanto, no seu histórico, parece que você executoucmd
sem realmente fazer isso.fonte
Geralmente isso é feito por
Observe que o nome do histórico pode diferir no seu sistema. Portanto, você pode usar o
HISTFILE
ambiente varo que faz o:
fonte
Normalmente eu apenas adiciono um # no início da linha para transformar a linha em um comentário:
Eu prefiro assim, porque você pode fazer isso com apenas 3 [4 se precisar de SHIFT para inserir #] pressionamentos de tecla
^ a vai para o início da linha atual
# adiciona o comentário
ENTER executa o comentário
fonte
... ou use a combinação de teclas:
ESC #
Veja também: Bash - salvar comando sem executá-lo
fonte
Você pode tentar adicionar um espaço e | (pipe) no final da linha, pressionando enter e, em seguida, pressione Ctrl-C'ing.
( Space, |, Enter, Ctrl+ C)
O comando estará no seu histórico com um | no final (pode simplesmente remover com backspace) em vez de um # no início (potencialmente mais tedioso de remover).
AVISO LEGAL: Eu não sei se isso sempre funciona! Use por sua conta e risco!
fonte
Você pode tentar usar esta linha:
history -s -p $COMMAND
De
help
:Isso significa que você pode expandir coisas como
!!
e armazenar o resultado no fundo da história.fonte
history -s
foi dada em uma resposta há dois anos. Isso-p
melhora nisso? O que-p
faz? (Na medida em que faça sentido, edite sua resposta para torná-la melhor e não responda a meu comentário com outro comentário.)Outra opção é ir para o início da linha e fazer o que você faria, seguido por &&, como
Portanto, se a coisa que você deseja fazer for bem-sucedida, seu comando será executado imediatamente depois e, se falhar, o comando não será executado, mas estará no histórico. Você também pode fazer
Como o teste sem argumentos falhará, mas este é um punhado de pressionamentos de tecla extras em comparação com o
#
método.fonte
Eu acho que os "alguns pressionamentos de tecla" que você deseja são Ctrl-U e Ctr-Y, que armazenam uma linha no ringue e, em seguida, retiram-na mais tarde. Não entra na história, mas acho que não deveria, como você não fez.
Comandos de eliminação da linha de leitura
Matança e arrancada
Eu aprendi isso anos atrás, depois esqueci e fui procurar essas teclas também.
Também é discutido aqui: /unix/140741/how-to-save-a-command-you-entered-without-executing-it
fonte