{"id":634,"date":"2023-10-18T10:35:52","date_gmt":"2023-10-18T08:35:52","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/?page_id=634"},"modified":"2025-04-24T17:37:06","modified_gmt":"2025-04-24T15:37:06","slug":"1-8-2-metacaracters-i-operadors","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/1-8-2-metacaracters-i-operadors\/","title":{"rendered":"1.8.2. Metacar\u00e0cters i operadors"},"content":{"rendered":"<p>Si esteu llistant, movent, copiant, eliminant o realitzant qualsevol altra acci\u00f3 amb arxius en el vostre sistema Gnu\/Linux, existeixen certs car\u00e0cters especials, denominats <em>metacar\u00e0cters<\/em> i <em>operadors<\/em>, que us ajudaran a treballar amb arxius de manera m\u00e9s eficient. Els metacar\u00e0cters poden ajudar a fer coincidir un o diversos arxius sense haver d\u2019escriure completament cada nom d\u2019arxiu. Els operadors us permeten adre\u00e7ar informaci\u00f3 d\u2019una ordre o arxiu a una altra ordre o arxiu.<\/p>\n<p>D\u2019altra banda, tamb\u00e9 cal introduir certs mecanismes de citaci\u00f3. Amb exemples, ser\u00e0 m\u00e9s f\u00e0cil d\u2019entendre:<\/p>\n<p><strong>Car\u00e0cter escapament<\/strong><\/p>\n<p>Una barra invertida no citada \u00ab<code>\\<\/code>\u00bb \u00e9s el car\u00e0cter <em>d\u2019escapament<\/em> de <em>bash<\/em>: preserva el valor literal del seg\u00fcent car\u00e0cter que segueix, amb l\u2019excepci\u00f3 de la nova l\u00ednia.<\/p>\n<div class=\"featured featured-grey\"><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo variable; argument<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">variable\r\n\r\nargument: command not found<\/pre>\n<p># Si s\u2019escriu \u00ab<code>\\;<\/code>\u00bb t\u2019ajuda a utilitzar \u00ab<code>;<\/code>\u00bb com un car\u00e0cter normal<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo variable \\; argument<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">variable ; argument<\/pre>\n<p># Un exemple m\u00e9s subtil. L\u2019objectiu \u00e9s crear un sol fitxer que s\u2019anomeni <em>el meu fitxer.txt<\/em><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ touch el meu fitxer.txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ ls meu*txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">ls: cannot access meu*txt': No such file or directory<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ rm fitxer.txt meu<\/pre>\n<p># Amb el car\u00e0cter <em>escape<\/em> es genera un \u00fanic fitxer<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ touch meu\\ fitxer.txt\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ ls meu*txt<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">'meu fitxer.txt'<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ rm meu\\ fitxer.txt<\/pre>\n<p>\n<\/div>\n<p><strong>Cometes simples<\/strong><\/p>\n<p>Tancar car\u00e0cters amb cometes simples <code>(')<\/code> preserva el valor literal de cada car\u00e0cter dins de les cometes. No hi pot haver una cometa simple entre cometes simples, fins i tot quan est\u00e0 precedida per una barra invertida. I cap car\u00e0cter \u00e9s especial dins de les cadenes entre cometes simples. Exemples:<\/p>\n<div class=\"featured featured-grey\"><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo 'variable; argument'<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">variable; argument<\/pre>\n<p># Es poden col\u00b7locar cadenes representades per diferents mecanismes de citaci\u00f3 una al costat de l\u2019altra per concatenar-les. Un altre exemple:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># concatenaci\u00f3 of 4 strings\r\n\r\n# 1: '@ordre = '\r\n\r\n# 2: \\'\r\n\r\n# 3: 'sort and grep'\r\n\r\n# 4: \\'\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo '@ordre = '\\' sort and grep'\\'<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">@ordre = 'sort and grep\\<\/pre>\n<p>\n<\/div>\n<p><strong>Cometes dobles<\/strong><\/p>\n<p>Tancar car\u00e0cters en cometes dobles <code>(\")<\/code> preserva el valor literal de tots els car\u00e0cters dins de les cometes, amb l\u2019excepci\u00f3 de <code>$<\/code>,<code>\u2019, ,<\/code> i quan l\u2019expansi\u00f3 d\u2019hist\u00f2ria est\u00e0 habilitada, <code>!<\/code>. Aqu\u00ed hi ha un exemple que mostra la interpolaci\u00f3 de variables dins de cometes 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># Cap car\u00e0cter \u00e9s especial dins de les cometes simples<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo 'Des de principi d\u2019any, he executat\u00a0$qty GWAS'<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">Des de principi d\u2019any, he executat $qty GWAS<\/pre>\n<p># Un \u00fas t\u00edpic de les cometes dobles \u00e9s habilitar la interpolaci\u00f3 de variables<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo \"Des de principi d\u2019any, he executat\u00a0$qty GWAS\"<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">Des de principi d\u2019any, he executat 5 GWAS<\/pre>\n<p># Llevat que vulguis espec\u00edficament que la <em>shell<\/em> interpreti el contingut d\u2019una variable, sempre has d\u2019escriure entre cometes la variable per evitar problemes a causa de la pres\u00e8ncia de metacar\u00e0cters de la <em>shell<\/em><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ f='segon fitxer.txt'<\/pre>\n<p># Seria el mateix que: <span class=\"courier\">echo &#8216;pac informe&#8217; &gt; segon fitxer.txt<\/span><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo 'pac informe' &gt; $f\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">bash: $f: ambiguous redirect<\/pre>\n<p># Seria el mateix que: <span class=\"courier\">echo &#8216;pac informe&#8217; &gt; &#8216;segon fitxer.txt&#8217;<\/span><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo 'pac informe' &gt; \"$f\"\r\n<\/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\">pac informe<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ rm \"$f\"<\/pre>\n<p>\n<\/div>\n<p>Ara s\u00ed que ens introdu\u00efm m\u00e9s profundament en la definici\u00f3 de metacar\u00e0cters i operadors.<\/p>\n<p><strong>Metacar\u00e0cters <\/strong><\/p>\n<p>Per estalviar-vos haver de pr\u00e9mer algunes tecles i per poder-vos referir f\u00e0cilment a un grup d\u2019arxius, la <em>shell bash<\/em> us permet l&#8217;\u00fas de metacar\u00e0cters. Aqu\u00ed hi ha alguns metacar\u00e0cters \u00fatils per fer coincidir noms d\u2019arxius. A la taula 4 es descriuen els m\u00e9s habituals.<\/p>\n<div class=\"tabletitle\"><p>Taula 4. Metacar\u00e0cters de fitxer.<\/p>\n<\/div>\n<table width=\"602\">\n<tbody>\n<tr class=\"table-header\">\n<td width=\"85\">Comod\u00ed<\/td>\n<td width=\"517\">Descripci\u00f3<\/td>\n<\/tr>\n<tr>\n<td width=\"85\">?<\/td>\n<td width=\"517\">Coincidir un car\u00e0cter, qualsevol car\u00e0cter<\/td>\n<\/tr>\n<tr>\n<td width=\"85\">*<\/td>\n<td width=\"517\">Coincidir qualsevol quantitat de car\u00e0cters<\/td>\n<\/tr>\n<tr>\n<td width=\"85\">[\u2026.]<\/td>\n<td width=\"517\">Coincidir qualsevol dels car\u00e0cters entre claud\u00e0tors, que poden incloure un rang de lletres o n\u00fameros separats per un gui\u00f3<\/td>\n<\/tr>\n<tr>\n<td width=\"85\">[! \u2026.]<\/td>\n<td width=\"517\">No coincidir amb cap dels car\u00e0cters entre els claud\u00e0tors, que poden incloure un rang de lletres o n\u00fameros separats per un gui\u00f3<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"tablefooter\"><p>Font: elaboraci\u00f3 pr\u00f2pia.<\/p>\n<\/div>\n<p>Proveu alguns d\u2019aquests metacar\u00e0cters de coincid\u00e8ncia d\u2019arxius anant primer a un directori buit (com el directori de prova descrit a la secci\u00f3 anterior) i creant alguns arxius buits. L\u2019ordre <code>touch<\/code> crea arxius buits. Les l\u00ednies d\u2019ordres que segueixen mostren com usar metacar\u00e0cters de <em>shell<\/em> amb l\u2019ordre <code>ls<\/code> per coincidir amb noms d\u2019arxiu. Qualsevol altra ordre tamb\u00e9 funciona.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ touch Transcriptomics Proteomics Epigenomics Metagenomics Pharmacogenomics\r\n<\/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># S\u2019imprimeix qualsevol arxiu que comenci amb 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># S\u2019imprimeix qualsevol arxiu que comenci amb P i contingui la t<\/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># S\u2019imprimeix qualsevol arxiu que comenci per 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>#S\u2019imprimeixen tots els noms d\u2019arxiu que comencen amb una lletra entre P i 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># S\u2019imprimeix qualsevol arxiu d\u201911 car\u00e0cters que acabi amb la cadena genomics<\/p>\n<p><strong>Metacar\u00e0cters de redireccionament d\u2019arxius<\/strong><\/p>\n<p>Les ordres reben dades des de l\u2019entrada est\u00e0ndard i les envien a la sortida est\u00e0ndard. Fent servir <em>pipes<\/em> (en catal\u00e0, tubs) es pot dirigir la sortida est\u00e0ndard d\u2019una ordre a l\u2019entrada est\u00e0ndard d\u2019una altra. Amb arxius, es pot fer servir el signe menor que (<code>&lt;<\/code>) i m\u00e9s gran que (<code>&gt;<\/code>) per dirigir dades cap a i des d\u2019arxius. A la taula 5 es recullen els car\u00e0cters de redirecci\u00f3 d\u2019arxius:<\/p>\n<div class=\"tabletitle\"><p>Taula 5. Metacar\u00e0cters de redirecci\u00f3.<\/p>\n<\/div>\n<table>\n<tbody>\n<tr class=\"table-header\">\n<td width=\"89\">Comod\u00ed<\/td>\n<td width=\"513\">Descripci\u00f3<\/td>\n<\/tr>\n<tr>\n<td width=\"89\"><code>&lt;<\/code><\/td>\n<td width=\"513\">Dirigeix el contingut d\u2019un arxiu a l\u2019ordre. En la majoria dels casos, aquesta \u00e9s l\u2019acci\u00f3 predeterminada esperada per l\u2019ordre i l\u2019\u00fas del car\u00e0cter \u00e9s opcional; usar \u00ab<code>less seq.fa<\/code>\u00bb \u00e9s el mateix 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\">Dirigeix la sortida est\u00e0ndard d\u2019una ordre a un arxiu. Si l\u2019arxiu existeix, el contingut d\u2019aquest arxiu se sobreescriu<\/td>\n<\/tr>\n<tr>\n<td width=\"89\"><code>2&gt;<\/code><\/td>\n<td width=\"513\">Dirigeix l\u2019error est\u00e0ndard (missatges d\u2019error) a l\u2019arxiu<\/td>\n<\/tr>\n<tr>\n<td width=\"89\"><code>&amp;&gt;<\/code><\/td>\n<td width=\"513\">Dirigeix tant la sortida est\u00e0ndard com l\u2019error est\u00e0ndard a l\u2019arxiu<\/td>\n<\/tr>\n<tr>\n<td width=\"89\"><code>&gt;&gt;\u00a0<\/code><\/td>\n<td width=\"513\">Dirigeix la sortida d\u2019una ordre a un arxiu, agregant la sortida al final de l\u2019arxiu existent<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"tablefooter\"><p>Font: elaboraci\u00f3 pr\u00f2pia.<\/p>\n<\/div>\n<p>Les seg\u00fcents l\u00ednies s\u00f3n exemples realitzats mitjan\u00e7ant l\u00ednies d\u2019ordre on la informaci\u00f3 s\u2019adre\u00e7a cap a i des d\u2019arxius:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ mail root &lt; ~\/.bashrc\r\n<\/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 \"Estic practicant els exercicis d\u2019HIB a $(date)\" &gt;&gt; ~\/testHIB\/testimoni<\/pre>\n<p>En el primer exemple, el contingut de l\u2019arxiu . <em>bashrc<\/em> en el directori d\u2019inici s\u2019envia en un missatge de correu a l\u2019usuari <em>root<\/em> de la m\u00e0quina Gnu\/Linux. La segona l\u00ednia d\u2019ordre de la p\u00e0gina del manual de <em>chown<\/em> (usant l\u2019ordre <code>man<\/code>) elimina els espais en blanc addicionals (<code>col -b<\/code>) i envia la sortida a l\u2019arxiu \/tmp\/chown (esborrant l\u2019arxiu \/tmp\/chown anterior, si exist\u00eds). L\u2019ordre final genera un fitxer de text que es visualitza amb l\u2019ordre <code>cat<\/code>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$cat testHIB\/testimoni\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">Estic practicant els exercicis d\u2019HIB a Wed 19 Apr 19:08:04 CEST 2023<\/pre>\n<p>Un altre tipus de redirecci\u00f3 us permet escriure text que es pot fer servir com a entrada est\u00e0ndard per a una ordre. Aqu\u00ed, els documents impliquen ingressar dos car\u00e0cters de menor (<code>&lt;&lt;<\/code>) despr\u00e9s d\u2019una ordre seguida d\u2019una paraula. Tot el que escrigui despr\u00e9s d\u2019aquesta paraula s&#8217;interpretar\u00e0 com a entrada de l\u2019usuari fins que es repeteixi la paraula en una l\u00ednia a part.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ mail student Josep Joan Guerau Bego &lt;&lt; missatge\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">&gt; Us recordo que cal realitzar tots els exercicis \r\n&gt; proposats per entendre l\u2019assignatura. \r\n&gt; &gt; equip HIB \r\n&gt; missatge<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$<\/pre>\n<p>Aquest exemple envia un missatge de correu als usuaris <em>student<\/em>, Josep, Joan, Guerau i Bego. El text introdu\u00eft entre &lt;&lt;missatge&gt;&gt; i &lt;&lt;missatge&gt;&gt; esdev\u00e9 el contingut del missatge.<\/p>\n<p><strong>Car\u00e0cters d\u2019expansi\u00f3 de claus<\/strong><\/p>\n<p>Quan useu claus (<code>{}<\/code>), podeu expandir un conjunt de car\u00e0cters en els noms d\u2019arxiu, noms de directoris o altres arguments que doneu a les ordres. Per exemple, si voleu crear el conjunt d\u2019arxius des de <em>sequence1 <\/em>fins a<em> sequence7<\/em>, podeu fer-ho de la seg\u00fcent manera:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ touch sequence{1,2,3,4,5,6,7}\r\n<\/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>Els elements que s\u2019expandeixen no han de ser n\u00fameros, ni tan sols d\u00edgits \u00fanics; podr\u00edeu fer servir rangs de n\u00fameros o d\u00edgits. Tamb\u00e9 podr\u00edeu fer servir qualsevol cadena de car\u00e0cters, sempre que se separin amb comes. Exemple:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ touch sequence{1..4}-{human,drosophila}\r\n<\/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 d\u2019arxius i la propietat<\/strong><\/p>\n<p>Despr\u00e9s de treballar amb Gnu\/Linux durant un temps, \u00e9s gaireb\u00e9 segur que obtindreu un missatge de perm\u00eds denegat. Els permisos associats a arxius i directoris a Gnu\/Linux van ser dissenyats per evitar que els usuaris accedeixin als arxius privats d\u2019altres usuaris i per protegir els arxius importants del sistema. Els nou <em>bits<\/em> assignats a cada arxiu per als permisos defineixen l\u2019acc\u00e9s que vosaltres i d\u2019altres usuaris tenen en el vostre arxiu. Els <em>bits<\/em> de perm\u00eds per a un arxiu regular apareixen com -rwxrwxrwx. Aquests <em>bits<\/em> es fan servir per definir qui pot llegir, escriure o executar l\u2019arxiu.<\/p>\n<p>Dels permisos de nou <em>bits<\/em>, els primers tres <em>bits<\/em> s\u2019apliquen al perm\u00eds del propietari, els seg\u00fcents tres s\u2019apliquen al grup assignat a l\u2019arxiu i els darrers tres s\u2019apliquen a tots els altres. La <em>r<\/em> significa lectura, la w significa escriptura i la <em>x<\/em> significa permisos d\u2019execuci\u00f3. Si apareix un gui\u00f3 en lloc de la lletra, significa que aquest perm\u00eds est\u00e0 desactivat per a aquest <em>bit<\/em> associat de lectura, escriptura o execuci\u00f3.<\/p>\n<p>Podeu veure els permisos de qualsevol arxiu o directori escrivint l\u2019ordre ls -ld. L\u2019arxiu o directori anomenat apareix com es mostra en aquest exemple:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ ls -ld testHIB\u00a0 testHIB\/testimoni\r\n<\/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\/testimoni\r\ndrwxr-xr-x 2 student student 4096 Apr 19 19:27 testHIB<\/pre>\n<p>La primera l\u00ednia mostra que l\u2019arxiu <em>testimoni<\/em> t\u00e9 perm\u00eds de lectura i escriptura per al propietari i el grup. Tots els altres usuaris tenen perm\u00eds de lectura, cosa que significa que poden veure l\u2019arxiu, per\u00f2 que no poden canviar el seu contingut ni eliminar-lo. La segona l\u00ednia mostra el directori testHIB (indicat per la lletra <em>d<\/em> abans dels <em>bits<\/em> de perm\u00eds). El propietari t\u00e9 permisos de lectura, escriptura i execuci\u00f3, mentre que el grup i altres usuaris nom\u00e9s tenen permisos de lectura i execuci\u00f3. Com a resultat, el propietari pot agregar, canviar o eliminar arxius en aquest directori, i tots els altres nom\u00e9s poden llegir-ne el contingut, canviar aquest directori i llistar el contingut del directori.<\/p>\n<p>Si sou propietari d\u2019un arxiu, podeu fer servir l\u2019ordre <code>chmod<\/code> per canviar els permisos com desitges. En un m\u00e8tode per fer-ho, a cada perm\u00eds (lectura, escriptura i execuci\u00f3) se li assigna un n\u00famero: <em>r<\/em> = 4, <em>w<\/em> = 2 i <em>x<\/em> = 1, i s&#8217;utilitza el nombre total de cada conjunt per establir el perm\u00eds. Per exemple, per fer que els permisos estiguin completament oberts per a vosaltres com a propietaris, establir\u00edeu el primer n\u00famero en 7 (4 + 2 + 1), i despr\u00e9s donar\u00edeu al grup i a altres persones permisos nom\u00e9s de lectura establint tant el segon com el tercer n\u00famero en 4 (4 + 0 + 0), de manera que el n\u00famero final sigui 744. Qualsevol combinaci\u00f3 de permisos pot resultar des de 0 (sense perm\u00eds) fins a 7 (perm\u00eds complet).<\/p>\n<p>Aqu\u00ed hi ha alguns exemples de com canviar el perm\u00eds d\u2019un arxiu (anomenat <em>arxiu<\/em>) i de quin perm\u00eds en resultaria:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># L\u2019execuci\u00f3 de l\u2019ordre chmod dona com a resultat aquest perm\u00eds: rwxrwxrwx\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod 777 arxiu<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># L\u2019execuci\u00f3 de l\u2019ordre chmod dona com a resultat aquest perm\u00eds: rwxr-xr-x<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"droide\">$chmod 755 arxiu<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># L\u2019execuci\u00f3 de l\u2019ordre chmod dona com a resultat aquest perm\u00eds: rw-r--r--<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod 644 arxiu rw-r--r-<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># L\u2019execuci\u00f3 de l\u2019ordre chmod dona com a resultat aquest perm\u00eds: ---------<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod 000 arxiu<\/pre>\n<p>L\u2019ordre <code>chmod<\/code> tamb\u00e9 es pot fer servir de manera recursiva. Per exemple, suposem que es desitja donar una estructura de directoris completa amb perm\u00eds 755 (<code>rwxr-xr-x<\/code>), comen\u00e7ant al directori <code>$HOME\/testHIB<\/code>. Per fer aix\u00f2, es podria fer servir l\u2019opci\u00f3 <code>-R<\/code> (recursiva):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod -R 755 $HOME\/testHIB<\/pre>\n<p>Tots els arxius i directoris de sota, incloent-hi el directori Work en el seu directori d\u2019inici, tindran els permisos 755 establerts. At\u00e8s que, amb tots els <em>bits<\/em> de perm\u00eds alhora, l\u2019enfocament dels n\u00fameros per establir canvis de perm\u00eds generen confusi\u00f3, \u00e9s m\u00e9s com\u00fa usar lletres per canviar els <em>bits<\/em> de perm\u00eds en un gran conjunt d\u2019arxius.<\/p>\n<p>Tamb\u00e9 podeu activar i desactivar els permisos d\u2019un arxiu utilitzant els signes m\u00e9s (<code>+<\/code>) i menys (<code>-<\/code>), respectivament, juntament amb lletres per indicar quins canvis i per a qui. Fent servir lletres per a cada arxiu podeu canviar els permisos per a l\u2019usuari (<em>u<\/em>), el grup (<em><code>g<\/code><\/em>), altres (<em><code>o<\/code><\/em>) i tots els usuaris (<em><code>a<\/code><\/em>). El que canviar\u00edeu inclou els <em>bits<\/em> de lectura (<em><code>r<\/code>)<\/em>, escriptura (<em><code>w<\/code><\/em>) i execuci\u00f3 (<em><code>x<\/code><\/em>). Per exemple, comenceu amb un arxiu que tingui tots els permisos oberts (<code>rwxrwxrwx<\/code>). Executeu les seg\u00fcents ordres <code>chmod<\/code> utilitzant opcions amb signe menys. Els permisos resultants es mostren a la dreta de cada ordre:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># L\u2019execuci\u00f3 de l\u2019ordre chmod resulta en aquest perm\u00eds: r-xr-xr-x<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod a-w arxiu<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># L\u2019execuci\u00f3 de l\u2019ordre chmod resulta en aquest perm\u00eds: rwxrwxrw-\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod o-x arxiu<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># L\u2019execuci\u00f3 de l\u2019ordre chmod resulta en aquest perm\u00eds: rwx------<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod go-rwx arxiu<\/pre>\n<p>Aix\u00ed mateix, els seg\u00fcents exemples comencen amb tots els permisos tancats (<code>---------<\/code>). El signe m\u00e9s s\u2019utilitza amb <code>chmod<\/code> per activar els permisos:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># L\u2019execuci\u00f3 de l\u2019ordre chmod resulta en aquest perm\u00eds: rw-------<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod u+rw arxiu<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># L\u2019execuci\u00f3 de l\u2019ordre chmod resulta en aquest perm\u00eds: --x--x--x--x\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod a+x arxiu\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\"># L\u2019execuci\u00f3 de l\u2019ordre chmod resulta en aquest perm\u00eds: r-xr-x---<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ chmod ug+rx arxiu<\/pre>\n<p>L\u2019\u00fas de lletres per canviar els permisos de manera recursiva amb <code>chmod<\/code> funciona generalment millor que l&#8217;\u00fas de n\u00fameros, perqu\u00e8 es poden canviar els <em>bits<\/em> selectivament, en lloc de canviar tots els <em>bits<\/em> de perm\u00eds alhora.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si esteu llistant, movent, copiant, eliminant o realitzant qualsevol altra acci\u00f3 amb arxius en el vostre sistema Gnu\/Linux, existeixen certs car\u00e0cters especials, denominats metacar\u00e0cters i operadors, que us ajudaran a treballar amb arxius de manera m\u00e9s eficient. Els metacar\u00e0cters poden ajudar a fer coincidir un o diversos arxius sense haver d\u2019escriure completament cada nom d\u2019arxiu. [&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\/wp-json\/wp\/v2\/pages\/634"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/comments?post=634"}],"version-history":[{"count":33,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/pages\/634\/revisions"}],"predecessor-version":[{"id":1350,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/pages\/634\/revisions\/1350"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/media?parent=634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}