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?
command-line
bash
history
Radu Rădeanu
fuente
fuente
!!:l
.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.
Explicación
!!
: 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á.fuente
"!!"
.??
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).La clave está en las
`
citas (backticks), que ejecuta la salida como un comando.fuente
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:
O rubí:
O Perl (probablemente mi favorito):
O PHP:
O Awk:
O sed:
O Bash:
O zsh
O NodeJS si lo tienes:
También podría usar
dd
(¡pero no lo haría!):También puede crear un pequeño script para hacer el trabajo:
Que usas así:
fuente
Y el que tiene
sed
,Ejemplo:
Salida:
fuente