Muitas vezes, executei um comando com todas as letras maiúsculas (talvez porque CapsLockestivesse ligado) e pressionei Enterantes de perceber isso.
Como posso executar o último comando com todas as letras transformadas em minúsculas?
command-line
bash
history
Radu Rădeanu
fonte
fonte
!!:l
.Respostas:
Você pode fazer isso adicionando a seguinte função pequena (eu chamo
??
de muito simples, mas você pode alterar isso como quiser) em seu.bashrc
arquivo:A seguir, quando você executará:
o último comando será executado com todas as letras em minúsculas.
Explicação
!!
: isso faz parte das ferramentas de histórico do bash, especificamente, se expande para a última execução do comando . Assim, por exemplo,echo !!
imprimirá o último comando executado nesta sessão shell específica."${@,,}
: A construção${foo,,}
converterá o conteúdo da variável$foo
convertida em todas as letras minúsculas.$@
é a matriz de parâmetros posicionais. Quando usado dentro de uma função, é expandido para os parâmetros passados para essa função.Portanto,
"${@,,}"
basta converter o que foi passado para a função em minúsculas e depois executá-lo. Portanto, executar a??
função com!!
como parâmetro converterá o último comando em minúsculas e executá-lo.fonte
"!!"
.??
converte suas cartas de argumentos em letras minúsculas e!!
reescreve automaticamente o comando anterior no comando atual (??
assume como argumento do comando anterior).A chave está nas
`
cotações (backticks) - que executam a saída como um comando.fonte
tr
seria minha primeira escolha também. Também funciona (alternativa aos backticks e sem as classes de suporte POSIX):$( echo !! | tr '[A-Z]' '[a-z]')
aqui vem uma resposta dos programadores .... use python:
Ou Ruby:
Ou Perl (provavelmente o meu favorito):
Ou PHP:
Ou Awk:
Ou Sed:
Ou Bash:
Ou zsh
Ou NodeJS, se você tiver:
Você também pode usar
dd
(mas eu não usaria!):Você também pode criar um pequeno script para fazer o trabalho:
Que você usa assim:
fonte
E aquele com
sed
,Exemplo:
Resultado:
fonte