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.
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 d
3.
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 tecladelete
, 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:
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.
Figure 2: El directori Magatzem
no inclou cap subdirectori.
Cliquem +
per a crear un directori nou i Dired ens en demanarà el nom:
Figure 3: Dired ens demana el nom del nou directori.
Escrivim el nom del directori nou:
Figure 4: Escrivim un nom «original» per al directori nou.
El resultat apareix en prémer RET
:
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:
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:
Figure 7: Premem R i Dired en pregunta el nom que desitgem.
Escrivim el nom nou en el mini-buffer:
Figure 8: Escrivim el nom nou.
Després de prémer RET
, Dired executarà el canvi i ens mostrarà el resultat de l’operació:
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:
Figure 10: Ens situem sobre el fitxer.
Premem R
(sempre majúscula!) i Dired ens en pregunta el nom nou:
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:
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):
Figure 13: El fitxer ja no hi és.
Podem observar que, efectivament, el fitxer Nou.md
ha estat mogut al directori Magatzem
.
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
:
Figure 15: Ens situem sobre el directori que volem moure.
Figure 16: Premem R
i Dired ens demana on el volem.
Figure 17: Escrivim la via d’accés al directori de destí.
Figure 18: En prémer RET
, Dired ens mostra que el directori ja no es troba on era abans.
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:
Figure 20: Sobre el fitxer a copiar.
Cliquem C
12 (atenció: és majúscula) i Dired ens demana el nom de la còpia o el directori on volem crear-la:
Figure 21: Dired ens demana el nom (o la via d’accés) de la còpia.
Escrivim el nom desitjat:
Figure 22: Escrivim el nom de la còpia.
I, en clicar RET
, obtenim el resultat:
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):
Figure 24: Copiant el fitxer a un altre directori.
I observarem que la còpia s’ha creat en el lloc que volíem:
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:
- marcar els fitxers o directoris que volem esborrar i
- 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 d
13. 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 u
14 (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:
Figure 26: La vista original del directori
Figure 27: El fitxers marcats amb la D apareixen en vermell.
Figure 28: En donar l’ordre amb d
, Dired ens demana confirmació.
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:
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 g
16.
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.
Fonts consultades
- Manual del usuario de GNU Emacs: AC. Dired, the Directory Editor
- 30 Dired, the Directory Editor, al manual oficial de The Emacs Editor.
- Emacs: 13. Dired: Edición de directorios
Footnotes:
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.
Equival a l’ordre M-x dired
.
Equival a l’ordre M-x dired-sort-toggle-or-edit
.
Equival a l’ordre M-x dired-view-file
.
Equival a l’ordre M-x quit-window
.
Equival a l’ordre M-x dired-find-file
.
Equival a l’ordre M-x dired-advertised-find-file
.
Equival a l’ordre M-x make-directory
.
Equival a l’ordre M-x dired-do-rename
.
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.
Equival a l’ordre M-x dired-do-copy
.
Equival a l’ordre M-x dired-do-flagged-delete
.
Equival a l’ordre M-x dired-unmark
.
Equival a l’ordre M-x dired-do-flagged-delete
.
Equival a l’ordre M-x revert-buffer
.