Por exemplo:
[root@ip-10-0-7-125 ~]# history | grep free
594 free -m
634 free -m | xargs | awk '{print "free/total memory" $17 " / " $ 8}'
635 free -m
636 free -m | xargs | awk '{print "free/total memory" $9 " / " $ 10}'
736 df -h | xargs | awk '{print "free/total disk: " $11 " / " $9}'
740 df -h | xargs | awk '{print "free/total disk: " $11 " / " $8}'
741 free -m | xargs | awk '{print "free/total memory: " $17 " / " $8 " MB"}'
Só estou me perguntando se existe alguma maneira de executar o comando 636 sem digitá-lo novamente, basta digitar algo mais o número, como o histórico 636 ou algo assim.
bash
command-history
Único
fonte
fonte
ctrl-r
?Respostas:
No bash, tudo
!636
ficará bem.fonte
In Linux
- Isso tem mais a ver com o shell (bash, zsh, etc) em que uma pessoa está executando e o sistema operacional em que está executando. Existem shell no linux sem suporte para a história.:p
para imprimir o comando sem executá-lo,!636:p
por exemplo. O que significa que você pode facilmente selecioná-lo novamente a partir de seu histórico, pressionando a seta para cima e fazer as pequenas mudanças que você querSim, isso se chama "expansão da história". Vejo
para mais detalhes.
Usar um ponto de exclamação seguido por um número é sem dúvida o uso mais simples:
No entanto, você também pode executar o último comando executado diretamente sem saber o número do histórico:
Ou você pode executar dois comandos de volta:
A forma que eu mais uso, no entanto, é repetir o último argumento do último comando:
Ou, digamos que estou inspecionando um arquivo. Usando o preenchimento da guia, posso fazer o seguinte:
Novamente, leia a página do manual para mais detalhes:
fonte
Alt-.
pode ser mais conveniente do que!$
. Ele insere o último argumento do último comando literalmente na linha.!$
, mas nunca ouvi falarAlt-.
)? Você vai postar um link para ele, por favor?LESS="+/DEFAULT KEY BINDINGS" man 3 readline
,/etc/inputrc
,~/.inputrc
. Muitos programas além do bash usam libreadline; para quem obtém, você obtém os mesmos recursosAlt-.
, comoCtrl-X-U
(desfazer),Ctrl-/
(descrever atalho), preenchimento de guias etc. - de graça. Por exemplo, com apenas três linhas dePYTHONSTARTUP
uma, é possível ativar o preenchimento de guias e o histórico no REPL do python padrão . O que funcionará (principalmente) da mesma forma que no bash, já que é a biblioteca GNU Readline que faz o trabalho. A página de manual da linha de leitura descreve os recursos em detalhes.echo {1..5}
seguido portouch !$
tocará cinco arquivos, não apenas um. Então, estritamente falando, não é o último argumento, mas a última palavra concha nessa linha. (Tente tambémecho hello >temp
seguirecho goodbye !$
.) Se você puder pensar em uma maneira de colocá-lo mais claramente, fique à vontade para sugerir uma edição.Uma boa, se você não quiser primeiro histórico, anote o número, etc:
no bash (e talvez outros):
(
ctrl-r
= "pesquisa reversa interativa") (something
= parte de um comando anterior)Isso mostrará a última linha do histórico que contém
something
. Para obter o anterior, pressione ctrl-r (sozinho) novamente, sempre que obtiver uma linha anterior.ex:
para mostrar a última linha do histórico contendo '10' (por exemplo, a linha com
$10
, no seu exemplo) ectrl-r
novamente até recuperar a linha do histórico que estava procurandoQuando a linha que queria aparecer, apenas
Enter
para executá-lo (ou você também pode editá-lo, usando oarrow keys
,backspace
ectrl-a
para ir para o início da linha,ctrl-e
para chegar ao fim,ctrl-k
: "matar" do cursor para o fim da linha (= exclui + salva em um buffer),:ctrl-y
para restaurar, a partir do buffer, um bit eliminado anteriormente, etc.)Se você deseja pesquisar para a frente (ctrl-s), primeiro precisa desativar o XON : consulte https://stackoverflow.com/a/791800/1841533 :
"apenas para desativar o XON / XOFF executando
"(e então você poderá usar ctrl-s, sem que congele o terminal)
fonte
Você pode usar o shell builtin fc :
fonte
-s
-lo para obter os benefícios. Se você executar,fc 636
você abrirá um editor com o comando 636 do seu histórico no buffer e, quando salvar e sair, o comando (modificado ou não) será executado. E melhor ainda, este é compatível com POSIX .help
não é POSIX - pode ter que fazerman dash
ou algo parecido #help
existe. Outro shell embutido. E intrigante para usuários incautos que podem querer ajuda com um novo sistema, mas são confrontados com um fluxo de bobagens. :-(Existe
HSTR
-hh
comando parabash
ezsh
seleção de comando interativa, melhor que a pesquisa reversa Ctrl-R:é interativo, para que você possa procurar e editar o comando antes de executá-lo.
No Ubuntu, você pode instalar
hh
com o seguinte recurso:ou passo a passo:
Instale
hh
no Fedora, RHEL ou CentOS:No macOS com
homebrew
:... em seguida, configure-o com:
Isso substituirá o comportamento padrão do Ctrl-R.
Execute
hh --show-configuration
para determinar o que será acrescentado ao seu perfil do Bash.Mais opções de configuração disponíveis na página inicial do projeto no Github: https://github.com/dvorka/hstr
fonte