Comando printf de Linux

Linux 命令大全Referencia completa de comandos de Linux


1. Resumen del comando printf

printf es un potente comando de salida formateada en sistemas Linux/Unix, derivado de la función printf() del lenguaje C. En comparación con el comando echo, printf proporciona un control de salida y capacidades de formato más precisos.

Características principales

  • Formato preciso: Permite controlar la alineación, el ancho, la precisión de la salida, etc.
  • Sin salto de línea automático: Por defecto no añade un salto de línea al final de la salida (a diferencia de echo)
  • Soporte multilingüe: Admite salida de caracteres Unicode
  • Inserción de variables: Puede insertar valores de variables en la cadena

2. Sintaxis básica

printf format-string [arguments...]

Descripción de parámetros

  • format-string: Cadena de formato, contiene caracteres normales y especificadores de formato
  • arguments: Lista de argumentos correspondientes a los especificadores de formato

3. Explicación detallada de los especificadores de formato

Los especificadores de formato comienzan con%al principio, la forma básica es:

%[flags][width][.precision]specifier

Especificadores de formato comunes

Especificador Descripción Ejemplo
%s Cadena printf "%s" "hello"
%d Entero decimal printf "%d" 123
%f Número de punto flotante printf "%f" 3.14
%x Entero hexadecimal (minúsculas) printf "%x" 255
%X Entero hexadecimal (mayúsculas) printf "%X" 255
%o Entero octal printf "%o" 8
%c Carácter individual printf "%c" 65

Opciones de modificadores

1. Banderas (flags)

Bandera Descripción Ejemplo
- Alinear a la izquierda printf "%-10s" "hi"
+ Mostrar signo positivo/negativo printf "%+d" 123
0 Rellenar con ceros printf "%05d" 12
Espacio Dejar espacio antes de números positivos printf "% d" 123
# Formato especial (como prefijo 0x) printf "%#x" 255

2. Ancho (width)

Especifica el ancho mínimo del campo; se rellena si es insuficiente

Ejemplo

printf "%10s\n" "hello"  # Alineación a la derecha, ancho 10
printf "%-10s\n" "hello" # Alineación a la izquierda, ancho 10

3. Precisión (.precision)

Para números de punto flotante, especifica el número de decimales; para cadenas, especifica el número máximo de caracteres

Ejemplo

printf "%.2f\n" 3.14159  # Salida 3.14
printf "%.5s\n" "abcdefg" # Salida abcde

4. Ejemplos prácticos

Ejemplo 1: Salida formateada básica

Ejemplo

printf "Name: %s, Age: %d, Height: %.2f\n" "Alice" 25 1.68

Salida:

Name: Alice, Age: 25, Height: 1.68

Ejemplo 2: Salida alineada en tabla

Ejemplo

printf "%-10s %-10s %-10s\n" "Name" "Age" "Score"
printf "%-10s %-10d %-10.2f\n" "Alice" 25 89.5
printf "%-10s %-10d %-10.2f\n" "Bob" 23 92.3

Salida:

Name       Age        Score     
Alice      25         89.50     
Bob        23         92.30     

Ejemplo 3: Manejo de caracteres especiales

Ejemplo

printf "Temperature: %d°C\n" 25
printf "Path: %s\n" "/home/user"
printf "Alert: \a\n"  # Carácter de campana

Ejemplo 4: Inserción de variables

Ejemplo

name="John"
age=30
printf "User: %s, %d years old\n" "$name" "$age"

5. Uso avanzado

1. Salida de fecha formateada

Ejemplo

printf "Today is %(%Y-%m-%d)T\n" -1

2. Salida con colores

Ejemplo

printf "\e[31mRed Text\e[0m\n"
printf "\e[32mGreen Text\e[0m\n"

3. Especificación dinámica de ancho

Ejemplo

width=20
printf "%*s\n" $width "Right aligned"

6. Preguntas frecuentes y precauciones

Problema de salto de línea: printf no añade un salto de línea por defecto, hay que añadirlo manualmente\n

Ejemplo

printf "No newline"
printf "Add newline\n"

Desajuste en el número de argumentos: Cuando hay menos argumentos que especificadores de formato, se muestra un valor indefinido

Ejemplo

printf "%s %s\n" "only_one"  # El segundo %s mostrará vacío

Manejo de comillas: Se recomienda poner la cadena de formato entre comillas dobles, y también las variables entre comillas dobles

Ejemplo

printf "%s\n" "$variable"

Escape de caracteres especiales: Es necesario utilizar una barra invertida para escapar caracteres especiales en la cadena de formato


7. printf vs echo

Característica printf echo
Salto de línea Requiere añadir \n explícitamente Se añade automáticamente
Formato Admite formato complejo Salida simple
Consistencia Comportamiento consistente entre sistemas Puede variar entre sistemas
Expansión de variables Se debe especificar explícitamente Expansión automática
Caracteres especiales Requiere escape Algunas versiones admiten la opción -e

Linux 命令大全Referencia completa de comandos de Linux

Otras extensiones