0Pricing
Linux Command Line & Bash Scripting Mastery · Lección

Funciones de shell y fragmentos reutilizables

Defina y utilice funciones de Bash para empaquetar comandos en bloques reutilizables y parametrizados para su shell.

Funciones de shell y fragmentos reutilizables es una lección gratuita de Linux Command Line & Bash Scripting Mastery en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Linux Command Line & Bash Scripting Mastery, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Linux Command Line & Bash Scripting Mastery incluye 4 lecciones en total.

¿Por qué usar funciones del shell?

Una función del shell agrupa varios comandos bajo un único nombre para que pueda reutilizarlos sin volver a escribirlos.

  • Más rápidas que copiar y pegar comandos
  • Más claras que los alias largos
  • Pueden aceptar argumentos, a diferencia de los alias
mkcd() {
  mkdir -p "$1" && cd "$1"
}

Definir una función

La forma más sencilla utiliza la sintaxis name() { ... }. Los comandos entre las llaves se ejecutan cuando se llama a la función por su nombre.

greet() {
  echo "Hello from a function"
}
greet

Argumentos de funciones

Las funciones reciben parámetros posicionales igual que los scripts: $1, $2. $# es el recuento y $@ se expande a todos los argumentos.

backup() {
  cp "$1" "$1.bak"
  echo "Backed up $1"
}
backup notes.txt

Valores devueltos y estado de salida

Las funciones devuelven un estado de salida mediante return N (0-255). Úselo para comprobar el éxito o el fallo, no para devolver datos.

is_root() {
  [ "$(id -u)" -eq 0 ] && return 0 || return 1
}
if is_root; then echo root; else echo normal; fi

Devolver resultados mediante echo

Como return solo transporta un código de estado, los resultados reales se muestran y capturan con $( ).

timestamp() {
  date +%Y%m%d-%H%M%S
}
name="log-$(timestamp).txt"
echo "$name"

Variables locales

De forma predeterminada, las variables dentro de las funciones son globales. Use local para limitar una variable a la función y evitar contaminar el shell.

count_lines() {
  local n
  n=$(wc -l < "$1")
  echo "$1 has $n lines"
}

Valores de argumentos predeterminados

Use la expansión de parámetros ${1:-default} para recurrir a un valor predeterminado cuando falte un argumento.

say() {
  local msg="${1:-Hello World}"
  echo "$msg"
}
say
say "Custom message"

Funciones frente a alias

Los alias simplemente sustituyen texto y no pueden recibir argumentos posicionales de forma adecuada. Las funciones pueden ramificar, iterar y procesar datos de entrada.

  • Utilice un alias para un atajo fijo
  • Utilice una función cuando necesite lógica o argumentos
alias ll='ls -la'
lt() { ls -la "${1:-.}" | tail -n "${2:-5}"; }

Hacer que las funciones sean persistentes

Las funciones definidas en el indicador desaparecen cuando se cierra el shell. Añádalas a ~/.bashrc para que estén disponibles en todas las sesiones.

# Append to ~/.bashrc
extract() {
  case "$1" in
    *.tar.gz) tar xzf "$1" ;;
    *.zip)    unzip "$1" ;;
    *)        echo "Unknown format" ;;
  esac
}

Enumerar y eliminar funciones

declare -F enumera los nombres de las funciones; declare -f name muestra el cuerpo. Elimine una función con unset -f name.

declare -F
declare -f greet
unset -f greet

Componer funciones

Las funciones pueden llamar a otras funciones, lo que permite combinar pequeños componentes reutilizables para crear herramientas más grandes.

log() { echo "[$(date +%T)] $*"; }
deploy() {
  log "Starting deploy"
  log "Done"
}
deploy

Comprobación rápida

Compruebe sus conocimientos sobre las funciones del shell.

Resumen

Ha aprendido a crear funciones reutilizables del shell:

  • Defínalas con name() { ... } y llámelas por su nombre
  • Utilice $1, $@ y $# para los argumentos, y return para el estado
  • Delimite el ámbito de las variables con local y devuelva datos mediante echo
  • Hágalas persistentes en ~/.bashrc e inspecciónelas con declare -f

Preguntas frecuentes

¿La lección «Funciones de shell y fragmentos reutilizables» es gratis?

Sí — el texto completo de «Funciones de shell y fragmentos reutilizables» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Linux Command Line & Bash Scripting Mastery, actualiza a CoddyKit PRO. El curso de Linux Command Line & Bash Scripting Mastery incluye 4 lecciones en total.

¿Qué aprenderé en «Funciones de shell y fragmentos reutilizables»?

Defina y utilice funciones de Bash para empaquetar comandos en bloques reutilizables y parametrizados para su shell. Practicas Linux Command Line & Bash Scripting Mastery con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Linux Command Line & Bash Scripting Mastery?

No se requiere experiencia previa. Linux Command Line & Bash Scripting Mastery en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Funciones de shell y fragmentos reutilizables»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Linux Command Line & Bash Scripting Mastery?

Sí. Cada lección de Linux Command Line & Bash Scripting Mastery incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Control de trabajos (bg, fg, jobs)
  2. Expansión del shell y globbing
  3. Alias y prompts personalizados
  4. Funciones de shell y fragmentos reutilizables
← Volver a Linux Command Line & Bash Scripting Mastery