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

14

Eu posso usar o comando history no CentOS para obter uma lista de comandos inseridos anteriormente, no entanto, se eu fizer algo como: !372 , o histórico tentará executar o comando referenciado.

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

[dev@home ~]$ previous_command_no_execute!372  
    
por centosnoob 30.03.2012 / 18:47

7 respostas

25

Que tal, coloque isso na sua linha de comando:

$ !372

Em seguida, pressione ESC seguido por CTRL + E . Isto irá autoexpandir na linha de comando sem realmente executá-lo. (também expande todo o resto da linha, incluindo env vars)

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

    
por 30.03.2012 / 19:06
10

Você pode usar Ctrl r e digitar alguns caracteres do comando original, por exemplo

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

acima eu digitei Ctrl-r /etc e ele puxou o comando sudo /etc/init.d/apache2 restart do histórico

    
por 30.03.2012 / 19:10
6

history | grep 372 deve funcionar, certo?

Editar:

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

    
por 30.03.2012 / 18:50
4

O MDMarra ofereceu o caminho mais fácil ( history|grep e copiar / colar usando seu ambiente de área de trabalho, supondo que você tenha um). Eu fornecerei o que chamo de maneira difícil, o que funciona se você não tiver um ambiente de área de trabalho ou um mouse.

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

$ set -o vi
$ ESC 372k

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

    
por 30.03.2012 / 18:58
4

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

!372:p

seguido por Enter e

    
por 30.03.2012 / 20:43
0

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

No meu sistema desktop Kubuntu com o shell aberto, ele suporta o realce com o mouse. Eu costumo apenas destacar o texto com o mouse e clique no botão do meio do mouse para colá-lo. Isso funcionaria para você?

Então você pode buscar 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.

    
por 30.03.2012 / 18:57
0

não há comando para fazer a colagem automática, mas você pode chamar qualquer comando em um editor para editá-lo antes de executá-lo. isso pode alcançar o que você está procurando, mas ao sair, o comando será executado, portanto, se você quiser abortar, limpe o buffer de edição antes de sair do editor.

fc -e vi 372 372

    
por 30.03.2012 / 19:04

Tags