Inicio > Gestión de archivos y directorios > mktemp

mktemp: Crear archivos/directorios temporales

El comando mktemp crea de forma segura archivos o directorios temporales con nombres únicos. Está diseñado para ser utilizado en scripts que requieren espacio de almacenamiento temporal sin problemas de colisión de nombres o de seguridad.

Descripción general

mktemp genera nombres de archivos o directorios temporales únicos e impredecibles, previniendo problemas de seguridad y colisiones. Se utiliza principalmente en scripts de shell cuando se necesita un espacio temporal seguro, y la ruta del archivo/directorio generado se devuelve a la salida estándar.

Características principales

  • Generación de nombres únicos e impredecibles
  • Prevención de vulnerabilidades de seguridad (contra ataques de condición de carrera)
  • Opción para crear archivos temporales o directorios temporales
  • Adecuado para la automatización de scripts de shell

Opciones principales

El comando mktemp ofrece varias opciones principales para controlar cómo se crean los archivos o directorios temporales.

Tipo de creación

Plantilla de nombre

Comando generado:

Combina los comandos.

Descripción:

`mktemp` Ejecutando el comando.

Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.

Ejemplos de uso

Muestra diversas formas de utilizar el comando mktemp para crear archivos y directorios temporales y utilizarlos en scripts.

Crear archivo temporal predeterminado

mktemp

Crea un archivo temporal con un nombre único en el directorio temporal predeterminado (generalmente /tmp).

Crear directorio temporal

mktemp -d

Crea un directorio temporal usando la opción -d.

Crear archivo temporal con un patrón específico

mktemp /tmp/my_app.XXXXXX

Crea un archivo temporal usando la ruta y el patrón especificados. Las 'X' se reemplazarán por caracteres únicos.

Utilizar archivo temporal y eliminarlo automáticamente en un script

TEMP_FILE=$(mktemp)
if [ -z "$TEMP_FILE" ]; then
  echo "Failed to create temp file"
  exit 1
fi
trap 'rm -f "$TEMP_FILE"' EXIT

echo "Ruta del archivo temporal: $TEMP_FILE"
echo "Hello from mktemp!" > "$TEMP_FILE"
cat "$TEMP_FILE"
# $TEMP_FILE se eliminará automáticamente al finalizar el script.

Guarda la ruta del archivo temporal creado en una variable y usa el comando trap para eliminar automáticamente el archivo al finalizar el script.

Utilizar directorio temporal y eliminarlo automáticamente en un script

TEMP_DIR=$(mktemp -d)
if [ -z "$TEMP_DIR" ]; then
  echo "Failed to create temp directory"
  exit 1
fi
trap 'rm -rf "$TEMP_DIR"' EXIT

echo "Ruta del directorio temporal: $TEMP_DIR"
echo "This is a test file." > "$TEMP_DIR/test.txt"
ls -l "$TEMP_DIR"
cat "$TEMP_DIR/test.txt"
# $TEMP_DIR se eliminará automáticamente al finalizar el script.

Guarda la ruta del directorio temporal creado en una variable y usa el comando trap para eliminar automáticamente el directorio al finalizar el script.

Consejos y precauciones

Consejos útiles y puntos a tener en cuenta al usar mktemp.

Limpieza obligatoria después de su uso

mktemp crea archivos temporales, pero no los elimina automáticamente. Debe eliminar explícitamente los archivos o directorios creados usando el comando `rm` al finalizar el script. El comando `trap` se puede utilizar para asegurar la limpieza automática, independientemente de cómo finalice el script.

  • Archivo: `rm "$TEMP_FILE"`
  • Directorio: `rm -rf "$TEMP_DIR"`
  • Limpieza automática: `trap 'rm -rf "$TEMP_PATH"' EXIT`

Consideraciones de seguridad

mktemp está diseñado para ser seguro, previniendo condiciones de carrera en la creación de archivos temporales. Sin embargo, si almacena información sensible en los archivos creados, debe establecer los permisos de archivo adecuadamente (por ejemplo, `chmod 600 $TEMP_FILE`) para evitar que otros usuarios accedan a ellos.

Al usar plantillas

La cadena de plantilla debe contener al menos 3 caracteres 'X'. Cuantos más caracteres 'X' haya, mayor será la unicidad del nombre generado.

  • Recomendado: XXXXXX (6 o más)
  • Mínimo: XXX (3)

Comandos de la misma categoría