{"id":140,"date":"2023-08-31T09:06:13","date_gmt":"2023-08-31T07:06:13","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/?page_id=140"},"modified":"2025-04-24T17:48:40","modified_gmt":"2025-04-24T15:48:40","slug":"1-8-2-metacaracteres-y-operadores","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/1-8-2-metacaracteres-y-operadores\/","title":{"rendered":"1.8.2. Metacaracteres y operadores"},"content":{"rendered":"<p>Ya sea que est\u00e9is listando, moviendo, copiando, eliminando o realizando cualquier otra acci\u00f3n con archivos en tu sistema Gnu\/Linux, existen ciertos caracteres especiales, denominados <em>metacaracteres<\/em> y <em>operadores<\/em>, que os ayudar\u00e1n a trabajar con archivos de manera m\u00e1s eficiente. Los metacaracteres pueden ayudar a hacer coincidir uno o varios archivos sin tener que escribir completamente cada nombre de archivo. Los operadores te permiten dirigir informaci\u00f3n de un comando o archivo a otro comando o archivo.<\/p>\n<p>Por otra parte, tambi\u00e9n hay que introducir ciertos mecanismos de citaci\u00f3n. Con ejemplos, ser\u00e1 m\u00e1s f\u00e1cil de entender:<\/p>\n<p><strong>Car\u00e1cter escape<\/strong><\/p>\n<p>Una barra invertida no citada \u00ab\\\u00bb es el car\u00e1cter de <em>escape<\/em> de <em>bash<\/em>: preserva el valor literal del siguiente car\u00e1cter que sigue, con la excepci\u00f3n de la nueva l\u00ednea.<\/p>\n<div class=\"featured featured-grey\"><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo variable; argumento<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">variable\r\nargumento: command not found<\/pre>\n<p># Si se escribe <code>\u00ab\\;\u00bb<\/code>\u00a0te ayuda a usar <code>\u00ab;\u00bb<\/code>\u00a0como un car\u00e1cter normal<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo variable \\; argumento<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">variable ; argumento<\/pre>\n<p># Un ejemplo m\u00e1s sutil. El objetivo es crear un solo fichero que se llame <em>mi fichero.txt<\/em><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ touch mi fichero.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ ls mi*txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">ls: cannot access mi*txt': No such file or directory<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ rm fichero.txt m<\/pre>\n<p># Con el car\u00e1cter <em>escape<\/em> se genera un \u00fanico fichero<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ touch mi\\ fichero.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ ls mi*txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">'mi fichero.txt'<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ rm mi\\ fichero.txt<\/pre>\n<p>\n<\/div>\n<p><strong>Comillas sencillas<\/strong><\/p>\n<p>Encerrar caracteres en comillas simples <code>(')<\/code> preserva el valor literal de cada car\u00e1cter dentro de las comillas. Una comilla simple no puede darse entre comillas simples, incluso cuando est\u00e9 precedida por una barra invertida. Y ning\u00fan car\u00e1cter es especial dentro de las cadenas entre comillas simples. Ejemplos:<\/p>\n<div class=\"featured featured-grey\"><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo 'variable; argumento'<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">variable; argumento<\/pre>\n<p># Se pueden colocar cadenas representadas por diferentes mecanismos de citaci\u00f3n una al lado de la otra para concatenarlas. Otro ejemplo:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># concatenaci\u00f3n of 4 strings<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># 1: '@comandos = '\r\n\r\n# 2: \\'\r\n\r\n# 3: 'sort and grep'\r\n\r\n# 4: \\'<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo '@comandos = '\\' sort and grep'\\'<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">@comandos = 'sort and grep\\<\/pre>\n<p>\n<\/div>\n<p><strong>Comillas dobles<\/strong><\/p>\n<p>Encerrar caracteres en comillas dobles <code>(\")<\/code> preserva el valor literal de todos los caracteres dentro de las comillas, con la excepci\u00f3n de <code>$<\/code>, <code>`, ,<\/code> y, cuando la expansi\u00f3n de historia est\u00e1 habilitada, <code>!<\/code>. Aqu\u00ed hay un ejemplo que muestra la interpolaci\u00f3n de variables dentro de comillas dobles:<\/p>\n<div class=\"featured featured-grey\"><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ qty='5'<\/pre>\n<p># Ning\u00fan car\u00e1cter es especial dentro de las comillas simples<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo 'Desde principio de a\u00f1o, he ejecutado $qty GWAS'<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">Desde principio de a\u00f1o, he ejecutado $qty GWAS<\/pre>\n<p># Un uso t\u00edpico de las comillas dobles es habilitar la interpolaci\u00f3n de variables<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo \"Desde principio de a\u00f1o, he ejecutado $qty GWAS\"<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">Desde principio de a\u00f1o, he ejecutado 5 GWAS<\/pre>\n<p># A menos que quieras espec\u00edficamente que la <em>shell <\/em> interprete el contenido de una variable, siempre debes entrecomillar la variable para evitar problemas debido a la presencia de metacaracteres de la <em>Shell<\/em><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ f='segundo fichero.txt'<\/pre>\n<p># Ser\u00eda lo mismo que: echo <code>'pec informe' &gt; segundo fichero.txt<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo 'pec informe' &gt; $f<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">bash: $f: ambiguous redirect<\/pre>\n<p># Ser\u00eda lo mismo que: echo <code>'pec informe' &gt; 'segundo fichero.txt'<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo 'pec informe' &gt; \"$f\"<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ cat \"$f\"<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">pec informe<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ rm \"$f\"<\/pre>\n<p>\n<\/div>\n<p>Ahora s\u00ed que nos introducimos m\u00e1s profundamente en la definici\u00f3n de metacaracteres y operadores.<\/p>\n<p><strong>Metacaracteres<\/strong><\/p>\n<p>Para ahorrar algunas pulsaciones de teclas y permitiros referencias f\u00e1ciles a un grupo de archivos, la <em>shell bash<\/em> os permite usar metacaracteres. Aqu\u00ed hay algunos metacaracteres \u00fatiles para hacer coincidir nombres de archivos. En la tabla 4 se describen los m\u00e1s habituales.<\/p>\n<div class=\"tabletitle\"><p>Tabla 4. Metacaracteres de fichero.<\/p>\n<\/div>\n<table width=\"602\">\n<tbody>\n<tr class=\"table-header\">\n<td width=\"85\">Comod\u00edn<\/td>\n<td width=\"517\">Descripci\u00f3n<\/td>\n<\/tr>\n<tr>\n<td width=\"85\">?<\/td>\n<td width=\"517\">Coincidir un car\u00e1cter, cualquier car\u00e1cter<\/td>\n<\/tr>\n<tr>\n<td width=\"85\">*<\/td>\n<td width=\"517\">Coincidir cualquier cantidad de caracteres<\/td>\n<\/tr>\n<tr>\n<td width=\"85\">[\u2026.]<\/td>\n<td width=\"517\">Coincidir cualquiera de los caracteres entre los corchetes, que pueden incluir un rango de letras o n\u00fameros separados por un guion<\/td>\n<\/tr>\n<tr>\n<td width=\"85\">[! \u2026.]<\/td>\n<td width=\"517\">No coincidir con ninguno de los caracteres entre los corchetes, que pueden incluir un rango de letras o n\u00fameros separados por un guion<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"tablefooter\"><p>Fuente: elaboraci\u00f3n propia.<\/p>\n<\/div>\n<p>Probad algunos de estos metacaracteres de coincidencia de archivos yendo primero a un directorio vac\u00edo (como el directorio de prueba descrito en la secci\u00f3n anterior) y creando algunos archivos vac\u00edos. El comando <code>touch<\/code> crea archivos vac\u00edos. Las l\u00edneas de comandos que siguen le muestran c\u00f3mo utilizar metacaracteres de <em>shell<\/em> con el comando <code>ls<\/code> para coincidir con nombres de archivo. Cualquier otro comando tambi\u00e9n funciona.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ touch Transcriptomics Proteomics Epigenomics Metagenomics Pharmacogenomics<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ ls P*<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">Pharmacogenomics\u00a0 Proteomics<\/pre>\n<p># Se imprime cualquier archivo que comience con P<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ ls P*t*<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">Proteomics<\/pre>\n<p># Se\u00a0imprime\u00a0cualquier\u00a0archivo\u00a0que\u00a0comience\u00a0con\u00a0P\u00a0y\u00a0contenga\u00a0la\u00a0t<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ ls [EM]*<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">Epigenomics\u00a0 Metagenomics<\/pre>\n<p># Se imprime cualquier archivo que comience por E or M<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ ls [P-Z]*<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">Pharmacogenomics\u00a0 Proteomics\u00a0 Transcriptomics<\/pre>\n<p># Se imprimen todos los nombres de archivo que comienzan con una letra entre P y Z<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ ls ???genomics<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">Epigenomics<\/pre>\n<p># Se imprime cualquier archivo de 11 caracteres que termine con la cadena genomics<\/p>\n<p><strong>Metacaracteres de redireccionamiento de archivos<\/strong><\/p>\n<p>Los comandos reciben datos desde la entrada est\u00e1ndar y los env\u00edan a la salida est\u00e1ndar. Utilizando <em>pipes <\/em>(en castellano, tuber\u00edas) se puede dirigir la salida est\u00e1ndar de un comando a la entrada est\u00e1ndar de otro. Con archivos, se puede usar el signo menor que (<code>&lt;<\/code>) y mayor que (<code>&gt;<\/code>) para dirigir datos hacia y desde archivos. En la tabla 5 se recogen los caracteres de redireccionamiento de archivos:<\/p>\n<div class=\"tabletitle\"><p>Tabla 5. Metacaracteres de redireccionamiento.<\/p>\n<\/div>\n<table>\n<tbody>\n<tr class=\"table-header\">\n<td width=\"89\">Comod\u00edn<\/td>\n<td width=\"513\">Descripci\u00f3n<\/td>\n<\/tr>\n<tr>\n<td width=\"89\"><code>&lt;<\/code><\/td>\n<td width=\"513\">Dirige el contenido de un archivo al comando. En la mayor\u00eda de los casos, esta es la acci\u00f3n predeterminada esperada por el comando y el uso del car\u00e1cter es opcional; usar \u00ab<code>less seq.fa<\/code>\u00bb es lo mismo que \u00ab<code>less &lt; seq.fa<\/code>\u00bb<\/td>\n<\/tr>\n<tr>\n<td width=\"89\"><code>&gt;<\/code><\/td>\n<td width=\"513\">Dirige la salida est\u00e1ndar de un comando a un archivo. Si el archivo existe, el contenido de ese archivo se sobrescribe<\/td>\n<\/tr>\n<tr>\n<td width=\"89\"><code>2&gt;<\/code><\/td>\n<td width=\"513\">Dirige el error est\u00e1ndar (mensajes de error) al archivo<\/td>\n<\/tr>\n<tr>\n<td width=\"89\"><code>&amp;&gt;<\/code><\/td>\n<td width=\"513\">Dirige tanto la salida est\u00e1ndar como el error est\u00e1ndar al archivo<\/td>\n<\/tr>\n<tr>\n<td width=\"89\"><code>&gt;&gt;\u00a0<\/code><\/td>\n<td width=\"513\">Dirige la salida de un comando a un archivo, agregando la salida al final del archivo existente<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"tablefooter\"><p>Fuente: elaboraci\u00f3n propia.<\/p>\n<\/div>\n<p>Las siguientes l\u00edneas son ejemplos realizados mediante l\u00edneas de comando donde la informaci\u00f3n se dirige hacia y desde archivos:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ mail root &lt; ~\/.bashrc<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ man chown | col -b &gt; \/tmp\/chown<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo \"Estoy practicando los ejercicios de HIB en $(date)\" &gt;&gt; ~\/testHIB\/testimonio<\/pre>\n<p>En el primer ejemplo, el contenido del archivo .<em>bashrc<\/em> en el directorio de inicio se env\u00eda en un mensaje de correo al usuario <em>root<\/em> de la m\u00e1quina Gnu\/Linux. La segunda l\u00ednea de comando formatea la p\u00e1gina del manual de <em>chown<\/em> (utilizando el comando <code>man<\/code>), elimina los espacios en blanco adicionales (<code>col -b<\/code>) y env\u00eda la salida al archivo \/tmp\/chown (borrando el archivo \/tmp\/chown anterior, si existiera). El comando final genera un fichero de texto que se visualiza con el comando <code>cat<\/code>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$cat testHIB\/testimonio<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">Estoy practicando los ejercicios de HIB en Wed 19 Apr 19:08:04 CEST 2023<\/pre>\n<p>Otro tipo de redireccionamiento permite escribir texto que se puede emplear como entrada est\u00e1ndar para un comando. Los documentos implican, aqu\u00ed, ingresar dos caracteres de menor (<code>&lt;&lt;<\/code>) despu\u00e9s de un comando seguido de una palabra. Todo lo que escrib\u00e1is despu\u00e9s de esa palabra se tomar\u00e1 como entrada del usuario hasta que se repita la palabra en una l\u00ednea aparte.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ mail student Josep Joan Guerau Bego &lt;&lt; mensaje<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">&gt; Os recuerdo que hay que realizar todos los ejercicios\r\n&gt; propuestos para entender la asignatura.\r\n&gt;\r\n&gt; equipo HIB\r\n&gt; mensaje\r\n$<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$<\/pre>\n<p>Este ejemplo env\u00eda un mensaje de correo a los usuarios <em>student<\/em>, Josep, Joan, Guerau y Bego. El texto introducido entre &lt;&lt;mensaje&gt;&gt; y &lt;&lt;mensaje&gt;&gt; se convierte en el contenido del mensaje.<\/p>\n<p><strong>Caracteres de expansi\u00f3n de llaves<\/strong><\/p>\n<p>Al usar llaves (<code>{}<\/code>), pod\u00e9is expandir un conjunto de caracteres en los nombres de archivo, nombres de directorios u otros argumentos que des a los comandos. Por ejemplo, si quer\u00e9is crear el conjunto de archivos desde <em>sequence1 <\/em>hasta <em>sequence7<\/em>, pod\u00e9is hacerlo de la siguiente manera:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ touch sequence{1,2,3,4,5,6,7}<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ ls<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">sequence1 sequence2 sequence3 sequence4 sequence5 sequence6 sequence7<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ rm sequence?<\/pre>\n<p>Los elementos que se expanden no tienen que ser n\u00fameros, ni siquiera d\u00edgitos \u00fanicos; podr\u00edais usar rangos de n\u00fameros o d\u00edgitos. Tambi\u00e9n podr\u00edais utilizar cualquier cadena de caracteres, siempre y cuando se separen con comas. Ejemplo:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ touch sequence{1..4}-{human,drosophila}<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ ls<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">sequence1-drosophila\u00a0 sequence2-drosophila\u00a0 sequence3-drosophila\u00a0 sequence4-drosophila\r\nsequence1-human \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sequence2-human\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 sequence3-human\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 sequence4-human<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ rm sequence*<\/pre>\n<p><strong>Permisos de archivos y la propiedad<\/strong><\/p>\n<p>Despu\u00e9s de trabajar con Gnu\/Linux durante un tiempo, es casi seguro que obtendr\u00e9is un mensaje de permiso denegado. Los permisos asociados a archivos y directorios en Gnu\/Linux fueron dise\u00f1ados para evitar que los usuarios accedan a los archivos privados de otros usuarios y para proteger los archivos importantes del sistema. Los nueve <em>bits<\/em> asignados a cada archivo para los permisos definen el acceso que vosotros y otros tienen a tu archivo. Los <em>bits<\/em> de permiso para un archivo regular aparecen como <code>-rwxrwxrwx<\/code>. Esos <em>bits<\/em> se usan para definir qui\u00e9n puede leer, escribir o ejecutar el archivo.<\/p>\n<p>De los permisos de nueve <em>bits<\/em>, los primeros tres <em>bits<\/em> se aplican al permiso del propietario, los siguientes tres se aplican al grupo asignado al archivo y los \u00faltimos tres se aplican a todos los dem\u00e1s. La <em><code>r<\/code><\/em> significa lectura, la <em><code>w<\/code><\/em> significa escritura y la <em><code>x<\/code><\/em> significa permisos de ejecuci\u00f3n. Si aparece un guion en lugar de la letra, significa que ese permiso est\u00e1 desactivado para ese <em>bit<\/em> asociado de lectura, escritura o ejecuci\u00f3n.<\/p>\n<p>Pod\u00e9is ver los permisos de cualquier archivo o directorio escribiendo el comando <code>ls -ld<\/code>. El archivo o directorio nombrado aparece como se muestra en este ejemplo:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ ls -ld testHIB\u00a0 testHIB\/testimonio<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">-rw-rw-r--\u00a0 1 student student\u00a0\u00a0\u00a0\u00a0 73 Apr 19 19:08 testHIB\/testimonio\r\ndrwxr-xr-x 2 student student 4096 Apr 19 19:27 testHIB<\/pre>\n<p>La primera l\u00ednea muestra que el archivo <em>testimonio<\/em> tiene permiso de lectura y escritura para el propietario y el grupo. Todos los dem\u00e1s usuarios tienen permiso de lectura, lo que significa que pueden ver el archivo, pero no pueden cambiar su contenido ni eliminarlo. La segunda l\u00ednea muestra el directorio testHIB (indicado por la letra <em>d<\/em> antes de los <em>bits<\/em> de permiso). El propietario tiene permisos de lectura, escritura y ejecuci\u00f3n, mientras que el grupo y otros usuarios solo tienen permisos de lectura y ejecuci\u00f3n. Como resultado, el propietario puede agregar, cambiar o eliminar archivos en ese directorio, y todos los dem\u00e1s solo pueden leer el contenido, cambiar a ese directorio y listar el contenido del directorio.<\/p>\n<p>Si sois propietarios de un archivo, pod\u00e9is usar el comando <code>chmod<\/code> para cambiar los permisos como dese\u00e9is. En un m\u00e9todo para hacer esto, a cada permiso (lectura, escritura y ejecuci\u00f3n) se le asigna un n\u00famero: <em>r<\/em> = 4, <em>w<\/em> = 2 y <em>x<\/em> = 1, y utiliza el n\u00famero total de cada conjunto para establecer el permiso. Por ejemplo, para hacer que los permisos est\u00e9n completamente abiertos para vosotros como propietarios, establecer\u00edais el primer n\u00famero en 7 (4 + 2 + 1), y luego dar\u00edais al grupo y a otros permisos de solo lectura, estableciendo ambos el segundo y el tercer n\u00famero en 4 (4 + 0 + 0), de modo que el n\u00famero final sea 744. Cualquier combinaci\u00f3n de permisos puede resultar desde 0 (sin permiso) hasta 7 (permiso completo).<\/p>\n<p>Aqu\u00ed hay algunos ejemplos de c\u00f3mo cambiar el permiso de un archivo (llamado <em>archivo<\/em>) y de qu\u00e9 permiso resultar\u00eda:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># La ejecuci\u00f3n del comando chmod da como resultado este permiso: rwxrwxrwx<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod 777 archivo<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># La ejecuci\u00f3n del comando chmod da como resultado este permiso: rwxr-xr-x<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod 755 archivo<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># La ejecuci\u00f3n del comando chmod da como resultado este permiso: rw-r--r--<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod 644 archivo rw-r--r-<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># La ejecuci\u00f3n del comando chmod da como resultado este permiso: ---------<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod 000 archivo<\/pre>\n<p>El comando <code>chmod<\/code> tambi\u00e9n se puede usar de manera recursiva. Por ejemplo, supongamos que dese\u00e1is dar una estructura de directorios completa con permiso 755 (<code>rwxr-xr-x<\/code>), comenzando en el directorio <code>$HOME\/testHIB<\/code>. Para hacer eso, se podr\u00eda usar la opci\u00f3n <code>-R<\/code> (recursiva), como sigue:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod -R 755 $HOME\/testHIB<\/pre>\n<p>Todos los archivos y directorios debajo, e incluyendo el directorio Work en su directorio de inicio, tendr\u00e1n permisos 755 establecidos. Debido a que el enfoque de los n\u00fameros para establecer cambios de permiso, con todos los <em>bits<\/em> de permiso a la vez, generan confusi\u00f3n, es m\u00e1s com\u00fan usar letras para cambiar recursivamente los <em>bits<\/em> de permiso en un gran conjunto de archivos.<\/p>\n<p>Tambi\u00e9n pod\u00e9is activar y desactivar los permisos de un archivo utilizando los signos m\u00e1s (<code>+<\/code>) y menos (<code>-<\/code>), respectivamente, junto con letras para indicar qu\u00e9 cambios y para qui\u00e9n. Empleando letras, para cada archivo, pod\u00e9is cambiar los permisos para el usuario (<em><code>u<\/code><\/em>), el grupo (<em><code>g<\/code><\/em>), otros (<em><code>o<\/code><\/em>) y todos los usuarios (<em><code>a<\/code><\/em>). Lo que cambiar\u00edais incluye los <em>bits<\/em> de lectura (<em>r<\/em>), escritura (<em><code>w<\/code><\/em>) y ejecuci\u00f3n (<em><code>x<\/code><\/em>). Por ejemplo, comenz\u00e1is con un archivo que tenga todos los permisos abiertos (<code>rwxrwxrwx<\/code>). Ejecut\u00e1is los siguientes comandos <code>chmod<\/code> utilizando opciones con signo menos. Los permisos resultantes se muestran a la derecha de cada comando:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># La ejecuci\u00f3n del comando chmod resulta en este permiso: r-xr-xr-x<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod a-w archivo<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># La ejecuci\u00f3n del comando chmod resulta en este permiso: rwxrwxrw-<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"droide\">$ chmod o-x archivo<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># La ejecuci\u00f3n del comando chmod resulta en este permiso: rwx------<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod go-rwx archivo<\/pre>\n<p>Asimismo, los siguientes ejemplos comienzan con todos los permisos cerrados (<code>---------<\/code>). El signo m\u00e1s se utiliza con <code>chmod<\/code> para activar los permisos:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># La ejecuci\u00f3n del comando chmod resulta en este permiso: rw-------<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod u+rw archivos<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># La ejecuci\u00f3n del comando chmod resulta en este permiso: --x--x--x<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod a+x archivos<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">#\u00a0La\u00a0ejecuci\u00f3n\u00a0del\u00a0comando\u00a0chmod\u00a0resulta\u00a0en\u00a0este\u00a0permiso:\u00a0r-xr-x---<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$\u00a0chmod\u00a0ug+rx\u00a0archivos<\/pre>\n<p>El uso de letras para cambiar los permisos de manera recursiva con <code>chmod<\/code> generalmente funciona mejor que usar n\u00fameros, porque se pueden cambiar los <em>bits<\/em> selectivamente, en lugar de cambiar todos los <em>bits<\/em> de permiso a la vez.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ya sea que est\u00e9is listando, moviendo, copiando, eliminando o realizando cualquier otra acci\u00f3n con archivos en tu sistema Gnu\/Linux, existen ciertos caracteres especiales, denominados metacaracteres y operadores, que os ayudar\u00e1n a trabajar con archivos de manera m\u00e1s eficiente. Los metacaracteres pueden ayudar a hacer coincidir uno o varios archivos sin tener que escribir completamente cada [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/140"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/comments?post=140"}],"version-history":[{"count":103,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/140\/revisions"}],"predecessor-version":[{"id":1353,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/140\/revisions\/1353"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/media?parent=140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}