Alias vs función en Bash

2025

Esta 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:

Ejemplo:

alias ll='ls -lah'

No recibe parámetros ni toma decisiones. Solo ahorra escritura.

¿Cuándo uso funciones?

Uso funciones cuando necesito:

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.