Administració de fitxers i directoris en Emacs: Dired (1)

Què és Dired

Dired1 (Directory Editor, editor de directoris) és una utilitat que inclou Emacs per a l’administració ordinària de directoris i de fitxers. Dired ens mostra, a l’interior d’una memòria intermèdia2, una llista de directoris i fitxers similar a la que obtindríem en la terminal amb l’ordre ls -l. Amb diverses tecles i dreceres de teclat, ens podem moure per aquest llistat i dur a terme operacions bàsiques i no tan bàsiques sobre directoris i fitxers: navegació, visualització, edició, canvis de noms, eliminació, creació…

En aquest article, em centraré amb els usos bàsics de Dired, les operacions més freqüents. Amb la pràctica que hi he fet fins ara, trobe que solucionen el 95% de les meues necessitats pel que fa a l’administració de directoris i fitxers, i m’estalvia, en la major part dels casos, haver de sortir d’Emacs.

Dired-01.png

Figure 1: Aspecte de Dired mostrant el contingut d’un directori.

Observem que, en accedir a Dired, el menú superior mostra cinc noves opcions: Operate, Mark, Regexp, Immediate i Subdir. És recomanable obrir-les i llegir els submenús que mostren per tal de fer-nos una idea aproximada de la potència que ens ofereix Dired.

Obrir Dired

Hi ha diverses maneres d’accedir a Dired; la més ràpida és la drecera C-x d3.

També s’hi pot accedir amb l’ordre que emprem per obrir fitxer, C-x C-f, però obrint un directori en lloc d’un fitxer.

Una tercera opció és a través del menú File / Open Directory…

Moviment a través de la llista del directori

Per a molts, el més senzill serà emprar les fletxes amunt i avall; tanmateix, com que Emacs és anterior a la invenció d’aquestes tecles, podem emprar opcions basades en mnemotècnics (mnemotècnics en anglés, és clar):

  • n (next; també SPC) línia següent, siga fitxer o directori:
  • p (previous) línia anterior, siga fitxer o directori (i també DEL —que no és la tecla delete, sinó la d’esborrar cap enrere: coses de la nomenclatura Emacs).

Si volem ignorar els fitxers i moure’ns únicament sobre les línies que representen directoris, utilitzarem les tecles major que i menor que:

  • > anar al següent directori en la llista;
  • < anar al directori anterior en la llista.

Per entrar a un directori, l’opció senzilla és situar el cursor a sobre i prémer RET.

Per tornar al directori pare, només cal prémer l’accent circumflex, ^ (que s’assembla a una fletxa que apunta cap amunt i que suggereix l’accés a un nivell superior). Això és més ràpid que moure’ns fins a la línia .. i prémer RET.

Operacions bàsiques amb fitxers i directoris

Ordenar el directori

En accedir a un directori, Dired el mostra ordenat alfabèticament. Podem alternar entre aquest ordre i l’ordre per data de creació prement només la tecla s 4 (sort, ordenar).

Veure i editar fitxers

El procediment general és simple i intuïtiu: situem el cursor sobre el fitxer i premem la inicial que representa l’ordre desitjada:

  • veure (només lectura): v5;
    • tancar la memòria intermèdia de només lectura i tornar a Dired: q6;
  • editar: e7;
    • RET té el mateix efecte i potser és més intuïtiu;
    • també funciona amb f8, que recordarem de C-x C-f, l’ordre que ens permet editar un fitxer directament.

Crear fitxers o directoris

Amb Dired, crear un directori es redueix a situar-nos en el lloc en el volem crear i prémer +9; després, escrivim el nom que volem donar-hi i premem RET. Veiem-ho amb un exemple.

Dired-mkd-0.png

Figure 2: El directori Magatzem no inclou cap subdirectori.

Cliquem + per a crear un directori nou i Dired ens en demanarà el nom:

Dired-mkd-1.png

Figure 3: Dired ens demana el nom del nou directori.

Escrivim el nom del directori nou:

Dired-mkd-2.png

Figure 4: Escrivim un nom «original» per al directori nou.

El resultat apareix en prémer RET:

Dired-mkd-3.png

Figure 5: El directori ja ha estat creat.

D’altra banda, crear un fitxer és tan fàcil com navegar, a través de Dired, fins al directori on el volem crear i, un cop allí, emprar la drecera habitual per a crear fitxer, ço és, C-x C-f, i escriure el nom del fitxer com fem normalment. És a dir, que la navegació intuïtiva de Dired ens estalviarà haver d’escriure la via d’accés al fitxer.

Reanomenar un fitxer o un directori

El funcionament d’aquesta ordre és similar al comandament mv dels sistemes de la família Unix.

Per a reanomenar un fitxer, en situem a sobre d’ell:

Dired-Ren-0.png

Figure 6: Triem un fitxer.

Invoquem aquesta ordre prement R 10(ha de ser majúscula, atenció). Com a resposta, Emacs ens demanarà, des del mini-buffer, el nom nou per al fitxer:

Dired-Ren-1.png

Figure 7: Premem R i Dired en pregunta el nom que desitgem.

Escrivim el nom nou en el mini-buffer:

Dired-Ren-2.png

Figure 8: Escrivim el nom nou.

Després de prémer RET, Dired executarà el canvi i ens mostrarà el resultat de l’operació:

Dired-Ren-3.png

Figure 9: Dired ha canviat el nom del fitxer.

Reanomenar un directori funciona exactament igual.

Moure un fitxer o un directori

El procediment és molt similar al de reanomenar-los (de fet, és la mateixa ordre i emprarem la mateixa drecera, R): només cal introduir la ruta d’accés que desitgem en el moment d’introduir-hi el nom nou (i, si no volem modificar aquest, només ens hem de preocupar per la ruta d’accés).

Veiem com movem el fitxer Nou.md al subdirectori Magatzem. Per començar, ens situem sobre el fitxer:

Dired-Mov-0.png

Figure 10: Ens situem sobre el fitxer.

Premem R (sempre majúscula!) i Dired ens en pregunta el nom nou:

Dired-Mov-1.png

Figure 11: Dired ens demana el nom nou.

Escrivim la nova via d’accés però ometem el nom del fitxer perquè en conserve l’original11:

Dired-Mov-2.png

Figure 12: Escrivim la nova via d’accés (sense el nom del fitxer).

Premem RET i Dired ens mostra que el fitxer ja no es troba en el directori actual (i ens indica, en la zona d’eco, que ha mogut un fitxer):

Dired-Mov-3.png

Figure 13: El fitxer ja no hi és.

Podem observar que, efectivament, el fitxer Nou.md ha estat mogut al directori Magatzem.

Dired-Mov-4.png

Figure 14: El fitxer ja es troba al nou emplaçament.

Moure un directori és exactament el mateix, sols que, en aquest cas, hem d’introduir vies d’accés en lloc de noms de fitxers. Veiem, tot seguit, com movem el directori Dir1 a l’interior del directori Dir2:

Dired-MVD-0.png

Figure 15: Ens situem sobre el directori que volem moure.

Dired-MVD-1.png

Figure 16: Premem R i Dired ens demana on el volem.

Dired-MVD-2.png

Figure 17: Escrivim la via d’accés al directori de destí.

Dired-MVD-3.png

Figure 18: En prémer RET, Dired ens mostra que el directori ja no es troba on era abans.

Dired-MVD-4.png

Figure 19: El directori Dir1 ja es troba dins del directori Dir2.

Copiar un fitxer o un directori

En la memòria intermèdia de Dired, ens situem sobre el fitxer a copiar:

Dired-cp-0.png

Figure 20: Sobre el fitxer a copiar.

Cliquem C12 (atenció: és majúscula) i Dired ens demana el nom de la còpia o el directori on volem crear-la:

Dired-cp-1.png

Figure 21: Dired ens demana el nom (o la via d’accés) de la còpia.

Escrivim el nom desitjat:

Dired-cp-2.png

Figure 22: Escrivim el nom de la còpia.

I, en clicar RET, obtenim el resultat:

Dired-cp-3.png

Figure 23: Ara tenim original i còpia.

Si volem obtindre la còpia, per exemple, en el directori No-buit, el que hauríem d’escriure quan Dired ens ho demana és la nova via d’accés (i, si no volem mantindre el nom original, un de nou):

Dired-cp-4.png

Figure 24: Copiant el fitxer a un altre directori.

I observarem que la còpia s’ha creat en el lloc que volíem:

Dired-cp-5.png

Figure 25: La còpia, en un altre directori.

El mateix procediment serveix per a moure un directori.

Esborrar fitxer o directoris

Per a aquesta operació, Emacs empra un procediment en dos passos:

  1. marcar els fitxers o directoris que volem esborrar i
  2. donar l’ordre per esborrar els fitxers o directoris marcats.

Emacs parla de banderes (flags) per referir-se a les marques amb que indica quina fitxers i directoris volem eliminar. La bandera per a esborrar vindrà representada per una D (delete, esborrar, eliminar) que apareixerà a l’esquerra de la línia de del fitxer o directori marcat. Podrem marcar diversos fitxers o directoris i, després, esborrar-los.

Marquem un fitxer per a esborrar-lo situant el cursor a sobre d’ell i prement la tecla d13. Apareixerà la bandera D a l’esquerra de la línia i el nom de l’element a esborrar apareixerà destacat en vermell. Podem marcar, en aquest moment, altres fitxers o directoris per a esborrar.

Si observem que, per error, hem marcat un element que, en realitat, no volem eliminar, el podem desmarcar si tornem a la seua línia i cliquem u14 (unmark, desmarca); observarem que la D a inici de la línia desapareix.

Quan hem marcat tots elements a eliminar, executem l’operació i els esborrem tots amb x 15 (expugning, esborrant). Dired ens demanarà que confirmem l’ordre. En les següent imatges, seleccionarem i eliminarem els fitxers que porten un valor senar:

Dired-DEL-0.png

Figure 26: La vista original del directori

Dired-DEL-1.png

Figure 27: El fitxers marcats amb la D apareixen en vermell.

Dired-DEL-2.png

Figure 28: En donar l’ordre amb d, Dired ens demana confirmació.

Dired-DEL-3.png

Figure 29: El resultat final.

Si volem esborrar directoris buits, Dired es comportarà igual que si foren fitxers. En canvi, si marquem per a esborrar un directori que continga fitxers o altres directoris, Dired ens demanarà una segona confirmació especificant si volem eliminar recursivament tot el seu contingut:

Dired-DEL-9.png

Figure 30: Segona confirmació si el directori no és buit.

Actualitzar el llistat de Dired

Després de realitzar qualsevol canvi, sol ser necessari dir a Dired, expressament, que actualitze el llistat que ens mostra. Això s’aconsegueix prement la tecla g16.

Quadre resum

Operació Drecera Comentari
Obrir Dired C-x d Operarem sobre la línia de cada ítem.
Moure’s/ítems n / p següent / anterior (next / previous)
Moure’s/dirs > / < Ignora els fitxers.
Dir: entrar-hi RET  
Dir: sortir-ne ^ Accent circumflex, com fletxa amunt.
Dir: ordenar s (sort)
Fitxer: veure v  
Fitxer: editar e També RET o f.
Crear dir + Demana el nom.
Crear fitxer C-x C-f Demana el nom.
Reanomenar/Moure R Funciona com mv. Fitxers i dirs.
Copiar C Com cp. Fitxers i dirs.
Eliminar d Marca per a eliminar (delete).
No eliminar u Treu la marca d’eliminar (unmark)
Executar eliminació x Elimina fitxers i directoris marcats.

Conclusions

Com hem observat, les dreceres emprades amb Dired són molt intuïtives i fàcils de recordar (no cal un gran nivell d’anglés per interpretar els significats de next i de previous, ni tampoc de la resta d’opcions). Per a moure’ns per l’arbre de directoris i realitzar les operacions bàsiques sobre fitxers és ben senzill i ja no ens cal sortir d’Emacs.

Però això no és tot: Emacs també ens permet realitzar aquestes operacions sobre grups de fitxers, comparar dos fitxers, comprimir i descomprimir arxius i altres opcions que espere explicar més endavant en un altre article.

Footnotes:

1

Dired en el manual d’Emacs.

2

Memòria intermèdia és la traducció que proposen el TERMCAT i Softcatalà per a buffer. En general, tracte d’emprar aquesta expressió; tanmateix, en alguns casos, com ara per referir-me al mini-buffer d’Emacs, no la trobe còmoda i, per tant, no sempre la faré servir.

3

Equival a l’ordre M-x dired.

4

Equival a l’ordre M-x dired-sort-toggle-or-edit.

5

Equival a l’ordre M-x dired-view-file.

6

Equival a l’ordre M-x quit-window.

7

Equival a l’ordre M-x dired-find-file.

8

Equival a l’ordre M-x dired-advertised-find-file.

9

Equival a l’ordre M-x make-directory.

10

Equival a l’ordre M-x dired-do-rename.

11

Si volem canviar el nom del fitxer al mateix temps que el movem, només ens cal escriure’n en aquest pas el nom nou.

12

Equival a l’ordre M-x dired-do-copy.

13

Equival a l’ordre M-x dired-do-flagged-delete.

14

Equival a l’ordre M-x dired-unmark.

15

Equival a l’ordre M-x dired-do-flagged-delete.

16

Equival a l’ordre M-x revert-buffer.

Cookies? Galetes? Bunyols! Aquest blog utilitza bunyols per... bé, us mentiria si us digués que sé per a què punyetes utilitza bunyols aquest blog; a més, els bunyols els posa Wordpress, no jo, que no els vist mai. Però, com que la llei mana que us n'avise, avisats quedeu.
Accepte els bunyols
No vull bunyols, que engreixen!