Cómo manejar el paso de nombres de archivo con espacios en Bash

Linux tiene un shell Bash predeterminado (también conocido como Bourne nuevamente shell) para ejecutar comandos para el sistema. La mayoría de los programadores prefieren bash sobre cmd debido a la flexibilidad y al poderoso intérprete de línea de comandos que proporciona bash. Sin embargo, la mayoría de los usuarios aún tendrán problemas al tratar de manejar el paso de nombres de archivos con espacios en bash. Esto se debe a que los espacios no se consideran lo mismo en bash que en los nombres de archivo.

Archivos con espacios en el nombre

¿Por qué Bash no reconoce el nombre de archivo con espacios?

En Bash, si escribe varias palabras sin caracteres de escape (\) o citas, considerará todas las palabras como argumentos. Eso se aplica a todas las operaciones, ya sea que cambie el directorio con ' cd ' o intente acceder a los archivos con los comandos ' cat '. Cualquier cosa que escriba después de usar estos se considerará como un argumento. Por ejemplo:

 nombre de archivo cat.txt 

Ejecutar el comando sin usar caracteres de escape o citas

Nota : Su nombre de archivo puede ser cualquier cosa menos para este artículo, usaremos " file name.txt " como ejemplo.

Aquí el comando ' cat ' considerará el archivo y el nombre como dos argumentos en lugar de un solo argumento. Sin embargo, si usa caracteres de escape o citas, bash shell lo considerará como un argumento único, que será el "nombre de archivo.txt ".

Nombre de archivo con espacios en Bash

Existen pocos métodos que se pueden usar para los espacios en el nombre. La mejor práctica es evitar espacios para nombres de archivos en el futuro. Un método simple será cambiar el nombre del archivo al que está intentando acceder y eliminar espacios. Algunos otros métodos utilizan comillas simples o dobles en el nombre del archivo con espacios o el símbolo de escape (\) justo antes del espacio. Proporcionaremos métodos con ejemplos aplicados para mostrarle cómo funciona.

Método 1: uso de comillas simples y dobles

  1. Mantenga presionadas las teclas Ctrl + Alt y presione T para abrir la Terminal .
  2. Ahora cambie el directorio a donde se encuentra el archivo.

    (también puede arrastrar y soltar el archivo en el terminal después del comando ' cat ', que colocará automáticamente citas en la ruta / directorio del archivo)

     escritorio de cd 

    Cambio de directorio

    Nota : El escritorio se puede cambiar a la ubicación a la que está intentando acceder.

  3. Escriba el siguiente comando para leer un archivo de texto con espacios en el nombre:
     cat 'nombre de archivo.txt' 

    o

     cat "nombre de archivo.txt" 

    Usar citas para evitar espacios en el error de nombre
  4. Las comillas simples y dobles resultarán en lo mismo. En algunos casos, debe probar ambos y ver cuál funciona.

Método 2: uso del carácter de escape de reacción

  1. Mantenga presionadas las teclas Ctrl + Alt y presione T para abrir la Terminal .
  2. Cambie el directorio a la ubicación del archivo mediante el siguiente comando.
     escritorio de cd 

    Nota : coloque el nombre de su ubicación en lugar del escritorio.

  3. Ahora escriba el comando y use el carácter de escape en cualquier lugar donde haya espacio en el nombre:
     archivo de gato \ nombre.txt 

    Usando el carácter de escape para evitar espacios de error

Bonus: uso de citas y escape

A veces, cuando usa el directorio en el comando, puede haber consecuencias por usar citas en la ruta general. Esto se debe a que algunos comandos como ' mv ' o ' cp ' considerarán la ruta como fuente del archivo si la cita se usa en conjunto. Debe proporcionar cotizaciones para el origen y el destino individualmente para que los comandos como ' cp ' puedan funcionar correctamente. También puede consultar el siguiente ejemplo que le mostrará que usar caracteres de escape para la ruta es mucho más complejo y que los usuarios pueden cometer errores.

La diferencia entre citas y caracteres de escape

Artículos De Interés