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?
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?
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 .bashrcarquivo:
?? () { "${@,,}"; }
A seguir, quando você executará:
?? !!
o último comando será executado com todas as letras em minúsculas.
!!: 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 $fooconvertida 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.
"!!".
??converte suas cartas de argumentos em letras minúsculas e !!reescreve automaticamente o comando anterior no comando atual ( ??assume como argumento do comando anterior).
`eco !! | tr '[: superior:]' '[: inferior:]' '
A chave está nas `cotações (backticks) - que executam a saída como um comando.
trseria 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:
`echo "print '!!'.lower()" | python`
Ou Ruby:
`echo "print '!!'.downcase" | ruby`
Ou Perl (provavelmente o meu favorito):
`perl -e "print lc('!!');"`
Ou PHP:
`php -r "print strtolower('!!');"`
Ou Awk:
`echo "!!" | awk '{ print tolower($1) }'`
Ou Sed:
`echo "!!" | sed 's/./\L&/g'`
Ou Bash:
str="!!" ; ${str,,}
Ou zsh
echo "A='!!' ; \$A:l" | zsh
Ou NodeJS, se você tiver:
`echo "console.log('!!'.toLowerCase());" | node`
Você também pode usar dd(mas eu não usaria!):
`echo "!!" | dd conv=lcase 2> /dev/null`
Você também pode criar um pequeno script para fazer o trabalho:
sudo bash -c 'cat << EOF > /usr/local/bin/lower
#!/usr/bin/python
import fileinput
print "".join(fileinput.input()).lower(),
EOF' && sudo chmod +x /usr/local/bin/lower
Que você usa assim:
`echo !! | lower`
E aquele com sed,
$(echo !! | sed 's/^\(.*\)$/\L\1/g')
Exemplo:
$ SUDO APT-GET UPDATE
SUDO: command not found
$ $(echo !! | sed 's/^\(.*\)$/\L\1/g')
Resultado:
$(echo SUDO APT-GET UPDATE | sed 's/^\(.*\)$/\L\1/g')
[sudo] password for avinash:
0% [Waiting for headers] [Waiting for headers] [Waiting for headers] [Connectin^
!!:l.