Como posso adicionar um comando ao histórico do Bash sem executá-lo?


32

De vez em quando, seria útil adicionar um comando diretamente ao histórico no Bash sem executá-lo. Até agora, a coisa fechada que encontrei está adicionando um #na frente dele e retornando. Existem maneiras melhores?

Respostas:


39

history -s comando


Nunca soube desse recurso. Não consigo pensar em um uso imediato para isso, mas é bom saber.
Doug Harris

7
Você sabe se é possível executar um comando semelhante a este a partir de um script? Eu tenho um script ./resize-images.shcuja linha final indica um comando que você deve executar para desfazer as alterações, que seria muito útil se, em vez do script poderia adicionar o comando à minha história, então eu só bater up-enterse eu precisava para desfazer
Ben Page

1
@ BenPage: Veja as duas respostas aqui: unix.stackexchange.com/questions/112354/… .
RustyTheBoyRobot

9

history -s comando

Você pode até ligar um pressionamento de tecla para fazer isso por você. Você pode inserir isso em um prompt do Bash:

bind '"\C-q": "\C-a history -s \C-j"'

ou adicione isso ao seu ~/.inputrc:

"\C-q": "\C-a history -s \C-j"

então você pode digitar algo e pressionar Ctrl- qe ele será adicionado ao histórico sem ser executado. O espaço antes do "histórico" faz com que o historypróprio comando não seja adicionado ao histórico se sua HISTCONTROLvariável contiver ignorespaceou ignoreboth. Outra combinação de teclas pode ser escolhida em vez de "\ Cq".


3

É difícil criar algo mais curto que um "comando" de um caractere, por isso precisamos realmente ir para o nível de pressionamento de tecla. Com minha configuração do bash e um teclado americano, o que você faz agora é:

  1. Ir para o início da linha:: CTRLAinstrução +1, pressionamento de tecla +2
  2. Adicionar #(necessário SHIFT): +1 instrução, +2 pressionamento de tecla
  3. Anexando-o ao histórico com ENTER: +1 instrução, +1 tecla pressionada

assim, no total de 3 instruções, 5 pressionamentos de tecla.

O uso ALT#faz o mesmo em 1 instrução, 2 pressionamentos de tecla.

YMMV, dependendo do layout do teclado e da configuração do bash.


3
O problema não é o número de pressionamentos de tecla, mas esse "#command" é armazenado no histórico, em vez do "comando" pretendido.
Grumbel 28/04/10

1
É bom que "#command" seja armazenado no arquivo de histórico, pois permite que você saiba que o comando não foi realmente executado. Isso pode ser bom se você mais tarde quiser revisar os comandos inseridos para descobrir um problema.
Marnix A. van Ammers

2
@Grumbel, @Marnix: Concordo, não respondi à pergunta, mas mostrei como tornar o que ele faz agora ainda mais rápido. Pessoalmente, acho que o uso #commandé muito mais rápido history -s commande fácil de usar, se você mapear history-search-backward/-forwardcorretamente. Mas é uma questão de gosto.
Benjamin Bannier
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.