Cómo manejar nombres de archivos con espacios en Bash

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

Archivos con espacios en el nombre

¿Por qué Bash no reconoce los nombres de archivo con espacios?

En Bash, si escribe varias palabras sin escapar carácter () o citas, considerará todas las palabras como argumentos. Esto se aplica a todas las operaciones, ya sea que esté cambiando de directorio a ‘discos compactos‘o intentando acceder a archivos con’gato‘pedidos. Todo lo que escriba después de usarlos se considerará un argumento. Por ejemplo:

cat file name.txt
Pase el comando sin usar un carácter de escape o una cita

Nota: Su nombre de archivo puede ser cualquier cosa, pero para este artículo usaremos «filename.txt«Por ejemplo.

SEOgatoconsiderar ‘comando expediente y nombre como dos argumentos en lugar de un solo argumento. Sin embargo, si usa un carácter de escape o una cita, bash shell lo considerará como un argumento, y ese es el «filename.txt“.

Nombre de archivo con espacios en Bash

Hay pocos métodos que se pueden utilizar para los espacios en un nombre. Es una buena práctica evitar espacios para nombres de archivos en el futuro. Será un método sencillo para acceder al archivo al que está intentando acceder y eliminar espacios. Algunos otros métodos usan comillas simples o dobles en el nombre del archivo con espacios o usan un símbolo de salida () justo antes del espacio. Proporcionaremos métodos con ejemplos funcionales para mostrarle cómo funciona.

Método 1: uso de estimaciones simples y dobles

  1. Esperar Ctrl + Alt teclas y presione T. abierto Terminal.
  2. Ahora cambie el directorio donde se encuentra el archivo.
    (usted también puede dibujar y soltar el archivo en la terminal después del comando ‘gato‘, que agregará comillas automáticamente a la ruta / directorio del archivo)
    cd Desktop
    Cambio de directorio

    Nota: El escritorio se puede cambiar al lugar donde desee acceder a él.

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

    o

    cat "file name.txt"
    Use comillas para evitar espacios en el error de nombre
  4. Las comillas simples y dobles darán como resultado lo mismo. En algunos casos, debe probar ambos y ver cuál funciona.

Método 2: utilizar el carácter de escape de reacción

  1. Esperar Ctrl + Alt teclas y presione T. abierto Terminal.
  2. Cambie el directorio donde se encuentra el archivo usando el siguiente comando.
    cd Desktop

    Nota: Reemplace Desktop con el nombre de su sitio.

  3. Ahora escriba el comando y use escapar carácter en cualquier lugar donde el nombre contenga un espacio:
    cat file name.txt
    Utilice un carácter de escape para evitar errores de espacio

Bono: uso de estimaciones y escape

A veces, cuando se usa el directorio en el comando, puede haber consecuencias por usar comillas en toda la ruta. Esto es porque ‘mv‘o’cpconsidera el camino como fuente de archivo si la cotización se utiliza en su totalidad. Debes proporcionar cotizaciones para ambos fuente y destino solo para que ordenes ‘cp‘capaz de funcionar correctamente. También puede consultar el siguiente ejemplo que le mostrará que es mucho más complicado usar un carácter de escape para la ruta y que los usuarios pueden cometer un error con él.

La diferencia entre comillas y carácter de escape