Cómo lidiar con espacios en nombres de archivo en Linux

Dec 14, 2024
Linux

Como la mayoría de los sistemas operativos, Linux admite nombres de archivo con espacios en ellos. Pero usar estos nombres de archivo en la línea de comandos no siempre es sencillo. Aquí hay varias formas en que puede manejar los nombres de archivo que contienen espacios.

El humilde nombre de archivo
Por qué los espacios en los nombres de archivos de Linux son un dolor
Cómo citar y escapar de los espacios
Cómo solucionar el problema del espacio en su fuente
La expansión de las pestañas facilita el trato con los espacios
Cómo usar nombres de archivo con espacios en scripts bash
Espaciado, pero no escamoso

El humilde nombre de archivo

Todo almacenado en tu computadora disco duro necesita tener un nombre. Sin un nombre, no existirían archivos. Todas las aplicaciones y demonios que se lanzan cuando su computadora se inicia, y todo el software que usa, debe identificarse y almacenarse en un sistema de archivos. Esa identificación es el nombre del archivo ".

Lo mismo se aplica a los archivos que crea o instala. Todos sus documentos, imágenes y música necesitan nombres de archivo. Sin nombres de archivo, ninguno de sus activos digitales podría existir. Debido a que los nombres de archivo son tan importantes, Linux intenta imponer tan pocas reglas sobre su composición como puede.

En Linux, un nombre de archivo puede contener cualquier personaje aparte de la barra delantera " / "Y el personaje nulo, 0x00 . El carácter nulo se usa para marcar el extremo de una cadena, por lo que no puede estar presente en la cadena misma, o Linux truncaría el nombre de archivo en la posición del carácter nulo. El " / "Forward Slash se usa como separador en las rutas de directorio.

Los nombres de archivo son sensibles a los casos, y puede tener hasta 255 bytes de largo , incluido el personaje nulo. Las rutas de directorio pueden tener hasta 4096 bytes de largo, incluido el carácter nulo. Tenga en cuenta que esta es su longitud en bytes , que podría no equiparar directamente a caracteres . Los caracteres unicode de 16 bits, por ejemplo, toman dos bytes cada uno.

Los entusiastas retro-computadores y aquellos con recuerdos largos sabrán que en los primeros días de las computadoras personales, Sistema operativo de disco de Microsoft , DOS, no era insensible al caso y tenía un límite de nombre de archivo de ocho caracteres, más un tres caracteres extensión .

Tenías que ser muy atento y, a veces, creativo cuando nombró archivos. En comparación, la libertad que tenemos hoy significa que podemos nombrar archivos lo que queramos, con poco pensamiento en algo más que la descripción que estamos creando para ese archivo.

Pero con los nombres de archivo, lo que nos hace tropezar con más frecuencia no son los caracteres que escribimos, son los espacios entre ellos.

Por qué los espacios en los nombres de archivos de Linux son un dolor

Los conchas como Bash interpretarán una cadena de palabras separadas espaciales como argumentos de comando individuales, no un solo argumento. Aquí hay un ejemplo, usando tocar a Crea un nuevo archivo llamado "mi nuevo archivo.txt".

Como podemos ver, LS nos muestra que hay tres archivos creados, uno llamado "My", otro llamado "nuevo" y uno más llamado "File.txt".

Tenga en cuenta que tocar No se quejé ni arrojó un error. Realiza lo que cree que le estamos pidiendo que haga. Entonces, en silencio, nos devuelve a la línea de comando. Si no estamos motivados para verificar, no sabremos que las cosas no han ido según el plan.

Para crear el archivo que queríamos, tenemos que citar o escapar.

Cómo citar y escapar de los espacios

Si citamos todo el nombre de archivo, tocar sabe que necesita tratar el texto citado como un solo argumento.

Esta vez obtenemos el archivo único que esperamos.

Podemos obtener el mismo resultado si usamos el carácter de barra de inactividad " \ "Para escapar de los espacios. Al "escapar" de los espacios que no son tratados como caracteres especiales, es decir, separadores de argumentos, se consideran espacios simples.

Eso funciona, pero los espacios de escape hacen que la escritura de los nombres de archivo sea más lento y propenso a errores. Las cosas pueden ser realmente feas si tienes nombres de directorio con espacios en ellas.

Ese comando copia un solo archivo de texto de un directorio llamado "Dir One" a un directorio llamado "Dir Two", y guarda la copia como un archivo BAK. Y es un ejemplo bastante simple.

Cómo solucionar el problema del espacio en su fuente

Si son sus propios archivos, puede tomar la decisión de la política de nunca usar espacios y crear (o renombro a granel ) nombres de archivo como este.

Es cierto que esa es una solución robusta, pero sigue siendo fea. Hay mejores opciones, como usar guiones " - "O subrayado" _ "Para separar tus palabras.

Ambos evitarán el problema, y son legibles. Si no desea agregar caracteres adicionales a sus nombres de archivo, puede usar El caso de Carmel Para que sus nombres de archivo sean legibles, así:

La expansión de las pestañas facilita el trato con los espacios

Por supuesto, adoptar una convención de nombres y cumplirla solo ayudará cuando se trata de sus propios archivos. Es poco probable que los archivos que vienen de cualquier otro lugar sigan su convención de nomenclatura adoptada.

Puede usar la expansión de la pestaña para ayudarlo a "completar" con precisión los nombres de archivo para nosotros. Digamos que queremos borrar El archivo BAK que creamos en "Dir Two", usando RM .

Comenzamos escribiendo "RM Dir" porque estamos usando el RM Comando y sabemos que el nombre del directorio comienza con "Dir".

Al presionar la tecla "pestaña" hace que Bash escanee las coincidencias en el directorio actual.

Hay dos directorios que comienzan con "Dir", y en ambos casos el siguiente personaje es un espacio. Entonces Bash agrega el personaje de Back -savlash " \ "Y un espacio. Bash luego espera a que nos proporcionemos el próximo personaje. Necesita el siguiente personaje para diferenciar entre los dos posibles partidos en este directorio.

Escribiremos una "T", para "dos", y luego presionaremos "Tab" una vez más.

Bash completa el nombre del directorio para nosotros y nos espera a escribir el inicio del nombre de archivo.

Solo tenemos un archivo en este directorio, por lo que escribir la primera letra del nombre de archivo, "M", es suficiente para que Bash sepa qué archivo queremos usar. Escribir "M" y presionar "Tab" completa el nombre de archivo para nosotros, y "Ingrese" ejecuta todo el comando.

La expansión de las pestañas facilita la garantía de obtener nombres de archivo correctos, y también acelera navegando y escribiendo en la línea de comando en general.

RELACIONADO: Use la finalización de la pestaña para escribir comandos más rápido en cualquier sistema operativo

Cómo usar nombres de archivo con espacios en scripts bash

No es sorprendente que guiones Tener exactamente los mismos problemas con los espacios en los nombres de archivo que la línea de comando. Si está pasando un nombre de archivo como variable, asegúrese de citar el nombre de la variable.

Este pequeño script verifica el directorio actual para archivos que coinciden con el patrón de archivo "*.txt", y los almacena en una variable llamada file_list . A para bucle se usa para realizar una acción simple en cada uno.

Copie este texto en un editor y guárdelo en un archivo llamado "Files.sh". Luego usa el chmod dominio para hacerlo ejecutable.

Tenemos algunos archivos en este directorio. Uno tiene un nombre de archivo simple, y los otros dos usan subrayadores " _ "O guiones" - "En lugar de espacios. Esto es lo que vemos cuando ejecutamos el script.

Eso parece funcionar bien. Pero cambiemos los archivos en el directorio para archivos que contienen espacios en sus nombres.

Cada palabra en cada nombre de archivo se maneja como si fuera un nombre de archivo por sí solo, por lo que el script falla. Pero todo lo que necesitamos hacer para que el script maneje los espacios en los nombres de archivo es citar el $ Archivo variable dentro del para bucle.

Tenga en cuenta que el signo de dólar " ps "Está dentro de las citas. Hicimos ese cambio y lo guardamos en el archivo de script "Files.sh". Esta vez, los nombres de archivo se manejan correctamente.

RELACIONADO: Cómo procesar un archivo Línea por línea en un script bash de Linux

Espaciado, pero no escamoso

Evitar espacios en sus propios nombres de archivo solo lo llevará tan lejos. Es inevitable que encuentre archivos de otras fuentes con nombres que contienen espacios. Afortunadamente, si necesita manejar esos archivos en la línea de comando o en los scripts, hay formas fáciles de hacerlo.


Linux - Artículos más populares

CÓMO FORZAR A LOS USUARIOS A CAMBIAR SUS CONTASEÑAS EN LINUX

Linux Nov 4, 2024

Ilya Titchev / Shutterstock Las contraseñas son la piedra angular para tener en cuenta la seguridad. Le mostraremos cómo restablecer las contraseñas, establ..


Cómo usar el navegador de DB para SQLite en Linux

Linux Dec 16, 2024

Fatmawati Achmad Zaenuri / Shutterstock DB Browser para SQLite Le permite ver y editar bases de datos SQLite en Linux. Puede diseñar, crear y editar ..


Cómo obtener un administrador de dispositivos gráficos para Linux

Linux Mar 17, 2025

Estudio de África / Shutterstock.com Hay interminable Utilidades de la línea de comandos de Linux que muestran los detalles del hardware de su computad..


Las 6 mejores distribuciones ligeras de Linux

Linux Jul 27, 2025

3DMI / Shutterstock.com Si su computadora con Windows o Mac es antigua y lucha para mantenerse al día, la instalación de Linux puede darle un nuevo arrendami..


Cómo configurar o deshabilitar notificaciones de actualización de MINT de Linux

Linux Jul 9, 2025

¿Tuvo suficiente de las molestas notificaciones de actualización de Linux Mint? ¿O tal vez estás tan preocupado por quedarse al día con la que quieres verlos aún más? De cualquier m..


Esta nueva computadora portátil Linux Gaming tiene las especificaciones para ejecutar cualquier cosa

Linux Oct 20, 2025

JUNTO Computadoras Linux y los juegos están empezando a unirse mucho más últimamente. los Plataforma de vapor está en camino con Linux instalado, y Juno ..


Cómo desactivar una PC de Ubuntu

Linux Oct 12, 2025

Como todas las computadoras personales, una PC que ejecuta el Ubuntu El sistema operativo de escritorio debe estar apagado de vez en cuando. Apagar Ubuntu es fácil, y tiene var..


Cómo enumerar los servicios de Linux con SystemCTL

Linux Oct 18, 2025

Su computadora Linux se basa en muchas tareas de fondo llamadas Servicios o Daemons. En las distribuciones basadas en Systemd, tiene comandos incorporados que le permiten ver qué servicios est..


Categorías