LINUX

Caracteres especiales y de escape de Linux en FileName

En Linux, el espacio en blanco es un carácter especial y uno de los caracteres más utilizados. Separa los comandos o argumentos de los comandos. Por ejemplo, el comando de copia trata el primer archivo asignado como archivo de origen y el segundo archivo como archivo de destino.

Estos dos argumentos de archivo están separados por espacios en blanco. Entonces, si el nombre del archivo contiene espacios en blanco, crea un problema en la línea de comando. En este tutorial discutimos cómo puede crear archivos con caracteres especiales y cómo usarlos en la línea de comandos de manera efectiva.

Manejo de caracteres especiales

Intentemos crear un archivo con espacios en su nombre con el comando táctil.

$ touch file with spaces
$ ls -l
total 0
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:04 file
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:04 spaces
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:04 with

El comando ls en la salida anterior muestra que no obtenemos un solo archivo sino tres archivos, es decir, archivo, espacios y con. Esto se debe a que el comando táctil considera el nombre como tres archivos diferentes y no como un solo archivo.

Hay dos métodos disponibles para manejar estos caracteres que tienen un significado especial para shell. Primero, uno usa comillas y el segundo es con carácter de escape.

Citas

El método más simple es usar comillas con el nombre del archivo. Ahora, intentemos crear el archivo anterior con comillas.

$ touch 'file with spaces'
$ ls -l
total 0
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:04 file
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:10 file with spaces
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:04 spaces
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:04 with

Ahora, puede ver el archivo llamado «archivo con espacios». Se pueden utilizar comillas simples y dobles con los nombres de archivo, pero se recomienda utilizar comillas simples. Esto se debe a que algunos caracteres especiales no pueden escaparse mediante comillas dobles. Las comillas simples los manejan también. Otros caracteres especiales como $, *,? etc también se puede utilizar en los nombres de archivo.

$ touch '?file'
$ touch '*file'
$ touch '$file'
$ ls -l
total 0
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:17 ?file
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:17 $file
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:17 *file

Otro ejemplo

$ rm ‘File*.txt’

En el ejemplo anterior, las citas son más importantes. Debido a que * es un comodín de shell que coincide con cualquier carácter, tendrá problemas si no usa las comillas. Sin las comillas, el shell elimina el archivo * .txt según lo previsto, pero además, se eliminarán File.txt, File2.txt, File22.txt y otros.

Personajes que escapan

Este es otro método que se puede utilizar para archivos con caracteres especiales en sus nombres. El carácter de barra invertida escapa al carácter que lo sigue. Significa que el carácter que sigue inmediatamente al carácter de barra invertida es tratado como un carácter normal por el shell y no como un carácter especial.

Por ejemplo, podemos usar la barra invertida para crear un archivo que contenga espacios en su nombre.

$ touch escaping with backslash.txt
$ ls -l
total 0
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:23 escaping with backslash.txt

Del mismo modo, los otros caracteres especiales también se pueden escapar con barra invertida:

$ touch escape?
$ touch escape*
$ touch escape$
$ ls -l
total 0
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:24 escape?
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:24 escape$
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:24 escape*
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:23 escaping with backslash.txt

Ahora, ha visto que las comillas (simples o dobles) y los caracteres de barra invertida son los caracteres especiales que se utilizan para manejar caracteres especiales. Entonces, ¿cómo puedes usar estos caracteres en los nombres de tus archivos? Para las comillas, puede utilizar la barra invertida:

$ ls
$ touch quote'mark
$ touch quote"mark
$ ls -l
total 0
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:28 quote'mark
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:28 quote"mark

Eso fue sencillo. Entonces, ¿qué pasa con la barra invertida? ¿Recuerda que la barra invertida escapa a todos los caracteres especiales que le siguen inmediatamente? Entonces usamos la barra invertida para escapar de la barra invertida.

$ touch escapebackslash
$ ls -l
total 0
-rw-r--r-- 1 raghu raghu 0 2012-08-11 09:30 escapebackslash

Leer también:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar