Estoy tratando de crear un alias en bash. Lo que quiero hacer es asignar ls -la
als -la | more
En mi archivo .bashrc esto es lo que intenté:
alias 'ls -la'='ls -la | more'
Sin embargo, no funciona porque (supongo) tiene espacios en el nombre del alias. ¿Hay una solución para esto?
alias lsm='ls -la | more'
Respuestas:
La documentación de Bash dice "Para casi cualquier propósito, las funciones de shell son preferibles a los alias". Aquí hay una función de shell que reemplaza
ls
y hace que la salida se canalicemore
si el argumento consiste en (solo)-la
.Como una línea:
Salida de tubería automática:
fuente
command
evita que la función se llame de forma recursiva.Desde la página de manual de alias :
Por lo tanto, solo se verifica la coincidencia de alias en la primera palabra, lo que hace imposible los alias de varias palabras. Es posible que pueda escribir un script de shell que verifique los argumentos y llame a su comando si coinciden y, de lo contrario, solo llama a lo normal
ls
(consulte la respuesta de @Dennis Williamson )fuente
Un enfoque ligeramente mejorado tomado de la respuesta de Dennis:
O el one-liner:
Esto permite agregar más opciones / argumentos después del comando si es necesario, por ejemplo
ls -la -h
fuente
ls -lat
ser excluido de este tratamiento? Necesitaría poner un estuche para manejarlo encima de la-la*
entrada, ¿sí?Todavía puede invocar este alias, pero necesita una cita para que el espacio sea parte de la palabra de comando. Entonces
"ls -la" -p pattern
pasará la-p pattern
opción amore
, nols
.fuente