Muchas veces he ejecutado un comando con todas las letras en mayúscula (tal vez porque CapsLockestaba activado), y presioné Enterantes de darme cuenta.
¿Cómo puedo ejecutar el último comando con todas las letras transformadas a minúsculas?
Muchas veces he ejecutado un comando con todas las letras en mayúscula (tal vez porque CapsLockestaba activado), y presioné Enterantes de darme cuenta.
¿Cómo puedo ejecutar el último comando con todas las letras transformadas a minúsculas?
Respuestas:
Puede lograr eso agregando la siguiente función pequeña (lo llamo ??
muy simple, pero puede cambiar esto como lo desee) en su .bashrc
archivo:
?? () { "${@,,}"; }
A continuación, cuándo correrás:
?? !!
el último comando se ejecutará con todas las letras en minúsculas.
!!
: esto es parte de las herramientas de historial de bash, específicamente, se expande hasta la última ejecución del comando . Entonces, por ejemplo, echo !!
imprimirá el último comando ejecutado en esta sesión de shell en particular."${@,,}
: La construcción ${foo,,}
convertirá el contenido de la variable $foo
convertida a todas las letras minúsculas. $@
es la matriz de parámetros posicionales. Cuando se usa dentro de una función, se expande a los parámetros pasados a esa función.Entonces, "${@,,}"
simplemente convertirá lo que se pasó a la función en minúsculas y luego lo ejecutará. Por lo tanto, ejecutar la ??
función !!
como parámetro convertirá el último comando a minúsculas y lo ejecutará.
"!!"
.
??
convierte sus letras de argumentos en minúsculas y !!
reescribe automáticamente el comando anterior en el comando actual (así que ??
toma como argumento el comando anterior).
`echo !! El | tr '[: superior:]' '[: inferior:]' '
La clave está en las `
citas (backticks), que ejecuta la salida como un comando.
tr
sería mi primera opción también. También funciona (alternativa a los backticks y sin las clases de soporte POSIX):$( echo !! | tr '[A-Z]' '[a-z]')
aquí viene una respuesta de los programadores ... use python:
`echo "print '!!'.lower()" | python`
O rubí:
`echo "print '!!'.downcase" | ruby`
O Perl (probablemente mi favorito):
`perl -e "print lc('!!');"`
O PHP:
`php -r "print strtolower('!!');"`
O Awk:
`echo "!!" | awk '{ print tolower($1) }'`
O sed:
`echo "!!" | sed 's/./\L&/g'`
O Bash:
str="!!" ; ${str,,}
O zsh
echo "A='!!' ; \$A:l" | zsh
O NodeJS si lo tienes:
`echo "console.log('!!'.toLowerCase());" | node`
También podría usar dd
(¡pero no lo haría!):
`echo "!!" | dd conv=lcase 2> /dev/null`
También puede crear un pequeño script para hacer el trabajo:
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 usas así:
`echo !! | lower`
Y el que tiene sed
,
$(echo !! | sed 's/^\(.*\)$/\L\1/g')
Ejemplo:
$ SUDO APT-GET UPDATE
SUDO: command not found
$ $(echo !! | sed 's/^\(.*\)$/\L\1/g')
Salida:
$(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
.