Alias vs función en Bash
2025Esta duda es bastante común y me la hago seguido: ¿uso un alias o escribo una función?
Al principio usaba alias para todo, porque es más fácil y rápido. Luego descubrí las funciones y quise convertir todo en funciones.
Con el tiempo entendí algo más simple: no hay una respuesta correcta. Todo depende del contexto y de lo que soy capaz de entender en ese momento.
¿Cuándo uso alias?
Normalmente uso alias cuando el comando es:
- Corto
- Directo
- Sin lógica interna
Ejemplo:
alias ll='ls -lah'
No recibe parámetros ni toma decisiones. Solo ahorra escritura.
¿Cuándo uso funciones?
Uso funciones cuando necesito:
- Recibir parámetros
- Tomar decisiones
- Encadenar varios comandos
Un ejemplo simple:
fcd() {
cd "$(find . -type d | fzf)"
}
Aquí ya hay búsqueda, selección y ejecución. Esto es más que un simple atajo.
Cómo entender esta función sin complicarse
Con fcd() { ... } defino una función llamada fcd
El nombre es intencional: f viene de fzf
y cd de cambiar de directorio.
Luego aparece find . -type d
Esto significa: busca find desde el directorio actual
. y muestra solo carpetas -type d
El símbolo | (pipe) le dice a Bash:
toma el resultado de la izquierda y pásalo al comando de la derecha.
En este caso, ese comando es fzf
fzf muestra esa lista de carpetas y permite filtrarlas
escribiendo unas pocas letras en tiempo real.
La parte $( ... ) se llama sustitución de comando.
Básicamente significa:
"ejecuta esto primero y usa su resultado aquí".
Entonces, al escribir fcd aparece una lista interactiva
de carpetas. Elijo una, presiono Enter y Bash entra directamente en ella.
En palabras simples, toda la función hace algo como: “Busca todas las carpetas desde aquí, muéstramelas con fzf, deja que yo elija una y luego entra en ella”.
Mi regla personal
Si el comando empieza a crecer o necesito explicarlo, probablemente ya no sea un alias.
Por ahora no creo funciones demasiado complejas. Voy ampliándolas poco a poco, a medida que entiendo cómo mejorarlas.
Si lo puedo leer meses después y entenderlo rápido, entonces está bien escrito.
No busco elegancia.
Busco volver a mi .bashrc
y entender qué hace cada cosa.
Si mañana un alias se convierte en función, está bien. El flujo de trabajo manda.
Nota: Este artículo forma parte de la serie Mi terminal, paso a paso . Escribo esto porque ya me equivoqué antes (varias veces) y así no tengo que pensar lo mismo dos veces.