Como copiar um comando digitado anteriormente usando o utilitário de histórico sem executá-lo novamente?


14

Sou capaz de usar o historycomando no CentOS para obter a lista de comandos inseridos anteriores, no entanto, se eu fizer algo como !372:, o history tentará executar o comando referenciado.

Eu preciso que o comando de execução anterior apareça no cursor atual. Aqui está um exemplo:

[dev@home ~]$ previous_command_no_execute!372  

Respostas:


25

Que tal, coloque isso na sua linha de comando:

$ !372

Em seguida, pressione ESCseguido de CTRL+E. Isso será expandido automaticamente na linha de comando sem realmente executá-lo. (também expande tudo o mais na linha, incluindo env vars)

Isso só funciona no Bash, até onde eu sei.


Sim, esta é a solução exata.
centosnoob

1
Para uma solução no zsh, pressione a tecla tab após digitar !372e ela será expandida para você.
Reid

10

Você pode usar Ctrlre digitar alguns caracteres do comando original, por exemplo

(reverse-i-search)`/etc': sudo /etc/init.d/apache2 restart

acima eu digitei Ctrl-r /etce puxou o sudo /etc/init.d/apache2 restartcomando da história


6

history | grep 372 deve funcionar, certo?

Editar:

Além disso, você pode fazer algo como echo !372 > /dev/clipcolocar o diretório de comando na sua área de transferência.


sempre trabalhou para mim ...
voretaq7

não que apenas encontre esse comando específico executado anteriormente.
centosnoob

Então, eu e @ voretaq7 estamos entendendo mal sua pergunta. Você poderia ser um pouco mais claro?
MDMarra

@MDMarra Atualizei a pergunta. Espero que eleve mais alguma luz.
centosnoob

@centosnoob olhando sua atualização e assumindo que seu console suporta mouse e copiar e colar (e é raro estar diretamente no console no estilo de terminal sem capacidade de copiar e colar atualmente), a solução de copiar e colar é realmente a menos dolorosa . vi-style comando de edição como descrevi na minha resposta é outra opção, mas eu sou um fanático vi e mesmo que eu não use edição de linha de comando vi-style ...
voretaq7

4

O MDMarra ofereceu o caminho mais fácil ( history|grepe copie / cole usando o ambiente da área de trabalho, supondo que você tenha um). Fornecerei o que chamo da maneira mais difícil, que funciona se você não tiver um ambiente de área de trabalho ou mouse.

Supondo que você esteja executando o bash como seu shell:

$ set -o vi
$ ESC372k

(agora você terá o comando que executou 372 comandos atrás, na linha, e estará no vimodo de comando -style. Edite como faria se estivesse usando ex/ vi)


Interessante. Isso só parece funcionar se você "set -o vi" rodar desde o início. Pode ter que colocar isso no perfil do bash ou algo assim.
30512 Matt

Essa é uma daquelas coisas que "eu sempre uso vi, por que não estou usando ligações vi para editar linhas no bash" que você percebe com um choque. Demora um pouco para se acostumar, então as ligações no estilo emacs que todo mundo usa parecem estranhas e inúteis.
Cjc 30/03/12

@ Matt Sim - você precisa definir o seu modo de viedição para edição com estilo. Ele deve funcionar assim que você set -o vie todo o seu histórico (o modo de edição é apenas uma interface para o histórico de comandos do shell e outras coisas).
voretaq7

@cjc Eu uso o vi como meu editor de escolha, mas não uso vinculações no estilo vi para editar minha linha de comando (eu sabia como fazer isso no modo vi no topo da minha cabeça, mas outras pessoas postaram o equivalente no modo emacs, que pode ser mais amigável :).
voretaq7

4

A maneira mais simples e rápida de fazer o que você quer é executar:

!372:p

seguido por Entere


0

Você está em um sistema ou servidor de desktop?

No meu sistema desktop Kubuntu com o shell aberto, ele suporta o destaque com o mouse. Normalmente, apenas realço o texto com o mouse e clico no botão do meio do mouse para colá-lo. Isso funcionaria para você?

Então você pode grep para o comando. Realce o texto. Cole-o com o botão do meio do mouse e edite-o.

Pode haver uma maneira melhor, mas isso funciona para mim.


0

não há nenhum comando para colar automaticamente, mas você pode recuperar qualquer comando em um editor para editá-lo antes de executar. isso pode alcançar o que você está procurando, mas, ao sair do comando, o comando será executado. Se você deseja abortar, limpe seu buffer de edição antes de sair do editor.

fc -e vi 372 372

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.