Cómo manejar la transferencia de nombres de archivos con espacios en Bash

How Handle Passing Filenames With Spaces Bash

Linux tiene un shell Bash predeterminado (también conocido como Bourne again shell) 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 manejar nombres de archivo con espacios en bash. Esto se debe a que los espacios no se consideran iguales 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 escape carácter () o cotizaciones , considerará todas las palabras como argumentos. Eso se aplica a todas las operaciones, ya sea que cambie de directorio con ' cd 'O intentando acceder a archivos con' gato 'Comandos. Todo lo que escriba después de usarlos se considerará un argumento. Por ejemplo:



cat nombre de archivo.txt

Ejecutar el comando sin usar caracteres de escape o comillas



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

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

Nombre de archivo con espacios en Bash

Hay pocos métodos que se pueden utilizar 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 usan comillas simples o dobles en el nombre del archivo con espacios o usan 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 citas simples y dobles

  1. Sostener Ctrl + Alt teclas y presione T abrir Terminal .
  2. Ahora cambie el directorio donde se encuentra el archivo.
    (tú también puedes arrastrar y soltar el archivo en la terminal después del comando ' gato ', Que colocará comillas automáticamente en la ruta / directorio del archivo)

    escritorio 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 comillas para evitar espacios en el error de nombre

  4. Las citas simples y dobles darán como resultado 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. Sostener Ctrl + Alt teclas y presione T abrir Terminal .
  2. Cambie el directorio donde se encuentra el archivo usando el siguiente comando.
    escritorio cd

    Nota : Coloque el nombre de su ubicación en lugar de Escritorio.

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

    Uso de caracteres de escape para evitar errores de espacios

Bono: uso de citas y escape

A veces, cuando usa el directorio en el comando, puede haber consecuencias por usar comillas en la ruta general. Esto se debe a que algunos comandos como ' mv 'O' cp 'Considerará la ruta como fuente de archivo si la cotización se usa en su totalidad. Debe proporcionar cotizaciones para ambos fuente y destino individualmente para que comandos como ' cp 'Puede funcionar correctamente. También puede consultar el ejemplo a continuación, que le mostrará que usar el carácter de escape para la ruta es mucho más complejo y los usuarios pueden equivocarse con él.

La diferencia entre citas y carácter de escape.

2 minutos de lectura