Workshop Gestire i File con Emacs

Preview:

DESCRIPTION

Gestione dei File con EmacsSlides workshop c/o Area Ricerca Banca d'Italia27 Febbraio 2009

Citation preview

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Gestione dei File con Emacs

Emmanuele Sommaemmanuele.somma@bancaditalia.it

Supporto Informatico per l’Area RicercheBanca d’Italia

27 Febbraio 2009

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 1/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Piano della presentazione

1 Operazioni fondamentali

2 Operazioni sui file

3 Ricerche

4 Image-Dired

5 Dired-X

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 2/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Introduzione

La gestione dei file e una delle operazioni piu comuni sulcomputer. E una delle caratteristiche distintive delle differentiinterfacce utente testuali o grafiche. Che, detto in altre parole,significa: e diversa da sistema a sitema, da interfaccia adinterfaccia, da macchina a macchina.Ma... noi conosciamo la soluzione

EMACS

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 3/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Caratteristiche

Il modo Dired Directory Editor di Emacs e un ottimofile-manager per:

Navigazione nelle directory Finestre unica per ogni directory omolteplici directory su un singolo buffer,informazioni visualizzate a scelta dell’utente

Gestione dei file Copiare, cancellare, rinominare/muovere,collegamenti (alias), chmod, chgrp, chown,timestamp, stampare, comprimere, caricare,byte-compilare, visitare, vedere, marcatureesoteriche, ricercare, comparare

Gestione dei file particolari auto-salvataggi, backup,file-spazzatura

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 4/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

...ed anche

Gestione dei processi Esecuzione di comandi di shell

Gestione dei nomi Trasformazioni in maiuscolo, minuscolo,generiche in base ai REGEXP

Gestione delle ricerche sul nome del file, sul contenuto dei file,generiche, sul database dei file

Modifica diretta della directory

Gestione delle immagini vista delle miniature, gestione dei tag,manipolazione dei jpg

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 5/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Storia di Dired

Dired e stato inventato nel 1974 allo Stanford ArtificialIntelligence Laboratory (SAIL) come programma stand-alone daStan Kugell.[1]. Fu in seguito incorporato in Emacs ed ediventato la base per tutti i moderni sistemi di visualizzazionedelle directory dei file basati su finestre [2] (da Wikipedia)

1 Kugell, Stanley G. (1974). SAILDART/2006-06. StanfordArtificial Intelligence Lab DART (Dump and RestoreTechnique) Archive. Retrieved on 2007-11-16.

2 SAILDART/2006-06. Stanford Artificial Intelligence LabDART Archive. Retrieved on 2007-11-16.

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 6/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Operazioni fondamentali

1 Operazioni fondamentali

2 Operazioni sui file

3 Ricerche

4 Image-Dired

5 Dired-X

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 7/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Entrare nel modo Dired

C-x d diredC-x C-f find-fileC-x 4 d dired-other-windowC-x 5 d dired-other-frameC-u C-x C-d

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 8/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Muoversi in Dired

C-n, n, <SPC> next-lineC-p, p prev-linei, C-u i, 0 i dired-maybe-insert-subdirl dired-do-redisplay$ dired-hide-subdirM-$, ESC $ dired-hide-all+ dired-create-directory

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 9/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Muoversi in Dired

C-x [ next-pageC-x ] prev-pageC-M-n dired-next-subdirC-M-p dired-prev-subdirC-M-u dired-tree-upC-M-d dired-tree-down< dired-prev-dirline> dired-next-dirlineC-u k dired-do-kill-lines∧ dired-up-directory

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 10/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Aggiornare il buffer Dired

g revert-bufferl dired-do-redisplayk dired-do-kill-liness dired-sort-toggle-or-editC-u s SWITCHES dired-listing-switchesw dired-copy-filename-as-kill

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 11/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Visitare i file

f, RET,e dired-find-fileVisita il file

o dired-find-file-other-windowVisita il file in un’altra finestra

C-o dired-display-fileVisualizza il file in un’altra finestra

v dired-view-fileVisualizza il file

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 12/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Cancellazione dei file

d dired-flag-file-deletionMarca per la cancellazione

u command dired-unmarkElimina la marcatura

DEL dired-unmark-backwardcome u ma prima si sposta alla riga precedente

x dired-do-flagged-deleteEsegue l’operazionedired-recursive-deletes(t/nil) attiva la cancellazione ricorsiva

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 13/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Marcature generiche e flags

* m dired-markMarca con *

N * m dired-markMarca N file con *

* * dired-mark-executablesMarca i file eseguibili

* @ dired-mark-symlinksMarca i link simbolici

* / dired-mark-directoriesMarca le directory

* . dired-mark-extensionMarca i file con determinate estensioni

* O dired-mark-omittedMarca i file omessi

* s dired-mark-subdir-filesMarca tutto (tranne . e ..)

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 14/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Marcature generiche e flags

DEL, * DEL dired-unmark-backwardRimuove una marca

* !, U dired-unmark-all-marksRimuove tutte le marche

* ? CHAR, M-DEL dired-unmark-all-filesRimuove le marche di CHAR1 * ? D

* C-n dired-next-marked-filePassa al prossimo file marcato

* C-p dired-prev-marked-filePassa al precedente file marcato

t, * t dired-toggle-marksScambia i file marcati

* c OLD NEW dired-change-marksScambia le marche* c D t * c SPC D * c t SPC

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 15/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Marcature multiple

# dired-flag-auto-save-filesMarca gli auto-save

∼ dired-flag-backup-filesMarca i file di backup

& dired-flag-garbage-filesMarca i file-spazzaturadired-garbage-files-regexpDefinisce i nomi dei file-spazzatura

. dired-clean-directoryMarca i backup numerici

% d REGEXP dired-flag-files-regexpMarca i file secondo il REGEXP

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 16/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Marcature multiple

% m dired-mark-files-regexp* % dired-mark-files-regexp

Marca i file definiti dal REGEXP% d dired-flag-files-regexp

Marca per la cancellazione% g dired-mark-files-containing-regexp

Marca i file secondo il contenuto

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 17/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Espressioni Regolari

Le espressioni regolari (regular expressions) sono descrizioniastratte di stringhe di caratteri.Ad esempio, la espressione regolare

\([ao]+\)\1

descrive una classe infinita di stringhe quali:

aa, aoao, oooo, aaoaao, oaoaoaaooaoaoaao, ...

ovvero una qualsiasi stringa contenente a o o, immediatamenteseguita da una ripetizione di se stessa.

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 18/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Sintassi delle espressioni regolari

Semplice match helloCaratteri speciali $ ^ . ∗ + ? [ ] \Insieme di caratteri [...] [^...]Ripetizioni \{N\}, \{N,M\}Raggruppamenti \( \)Riferimento \1 \2 \3 ...Alternative \|Gruppi timidi \(?: ... \)Stringa vuota \‘ \’ \= \b \B \< \>Costituenti \w \W \sC \SC C=... \cC \CC

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 19/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Esercizi sulle espressioni regolari

Trovare in un testo “un” o “uno” o “una”un\(\|o\|a\)Trovare in un testo le parole “Luna” o “luna”.\(L\|l\)unaTrovare parole con tre consonanti di fila p.es. “scrivere”,“aspro” [bcdfghjklmnpqrstvwxyz]{3}Trovare parole con tre consonanti all’inizio di parola.\b[^aeiou]{3}Cercare parole con vocali identiche ripetute (p.es. “aree”,“portaauto”)\([aeiou]\)\1Trovare parole palindrome di lunghezza 4 o 5 (p.es.“abba”, “radar”) \b\(.\)\(.\).?\2\1\bTrovare parole ripetute (p.es. “alto alto”)\(\b\w+\b\)\s\1

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 20/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Operazioni sui file

1 Operazioni fondamentali

2 Operazioni sui file

3 Ricerche

4 Image-Dired

5 Dired-X

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 21/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Come specificare i file

1 Con un argomento prefisso

2 Tutti i file marcati con *

3 sul file corrente

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 22/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Come specificare la destinazione

Nelle operazioni sui file la directory di destinazione e la stessadi quella di partenzaA meno che non venga definita la variabile:

M-x set-variable dired-dwin-target t

In questo modo se esistono due dired la directory didestinazione e quella dell’altro dired.In questo modo e possibile realizzare un file-commander

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 23/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Operazioni sui file/directory

C NEW dired-do-copy cpdired-copy-preserve-time cp -pdired-recursive-copies cp -r

D dired-do-delete rmR NEW dired-do-rename mvH NEW dired-do-hardlink lnS NEW dired-do-symlink ln -sM SPEC dired-do-chmod chmodG GRP dired-do-chgrp chgrpO OWN dired-do-chown chown

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 24/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Operazioni sui file/directory

T STAMP dired-do-touch touchP CMD dired-do-print lpr

lpr-commandlpr-switches

Z dired-do-compress gzipL dired-do-loadB dired-do-byte-compileA REGEXP dired-do-searchQ REGEXP TO

query-replace-regrexp

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 25/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Comandi di shell

!, X(dired-do-shell-command)! wc -l *! wc -l! cp * /tmp! grep pippo *! for file in * ; do uuencode \"$file" "$file" >"$file".uu; done

g

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 26/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Trasformazione dei nomi

% u dired-upcase% l dired-downcase% R FROM TO dired-do-rename-regexp% C FROM TO dired-do-copy-regexp% H FROM TO dired-do-hardlink-regexp% S FROM TO dired-do-symlink-regexp

\&, \1. . .\nEsempi:

% R ^.*$\ <RET> x-\& <RET>% R ^x-\(.*\)$ <RET> \1 <RET>0 % R% m FROM <RET> % R <RET> TO <RET>

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 27/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Comparazione dei file

= dired-diffM-= dired-backup-diff

dired-compare-directories(> mtime1 mtime2)

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 28/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Ricerche

1 Operazioni fondamentali

2 Operazioni sui file

3 Ricerche

4 Image-Dired

5 Dired-X

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 29/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Ricerche dentro Dired

M-x find-name-dired DIR <RET> WILDCARD <RET>~/ <RET> *.txt <RET>

M-x find-grep-dired DIR <RET> REGEXP <RET>~/ <RET> .*corn <RET>

M-x grep-find DIR <RET> REGEXP <RET>~/ <RET> .*corn <RET>

% g REGEXP~/ <RET> .*corn <RET>

M-x find-dired?!?

M-x set-variable find-ls-option -ld?!?

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 30/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Ricerche dentro Dired con locate

M-x locate STRING <RET>txt

M-x locate-with-filter STRING <RET> FILTER <RET>txt <RET> exedre <RET>

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 31/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Editing del buffer Dired

[Immediate]→[File Names]M-x wdired-change-to-wdired-mode

C-c C-c (wdired-finish-edit)M-x set-variable

wdired-allow-to-change-permission t

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 32/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Image-Dired

1 Operazioni fondamentali

2 Operazioni sui file

3 Ricerche

4 Image-Dired

5 Dired-X

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 33/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Image-Dired

C-t d (image-dired-display-thumbs)C-t t (image-dired-tag-files)<RET> (image-dired-flag-thumb-original-file)<SPC> (image-dired-display-next-thumbnail-original)<DEL> (image-dired-display-previous-thumbnail-original)C-<RET> (image-dired-thumbnail-display-external)

M-x set-variable image-dired-external-viewerd (image-dired-flag-thumb-original-file)C-d (image-dired-delete-char)

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 34/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Image-Dired: Tags

M-x set-variable image-dired-db-file~/.emacs.d/image-dired/.image-dired_dbC-t t (image-dired-tag-files)C-t f (image-dired-mark-tagged-files)C-t d (image-dired-display-thumbs)C-t c (image-dired-dired-comment-files)t t (image-dired-tag-thumbnail)t r (image-dired-tag-thumbnail-remove)

Manipolazioni JPG:L (image-dired-rotate-original-left)R (image-dired-rotate-original-right)

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 35/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Dired-X

1 Operazioni fondamentali

2 Operazioni sui file

3 Ricerche

4 Image-Dired

5 Dired-X

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 36/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Dired-X: Omissione dei file

Agisce sui file e non sulle directory

Prendere o lasciare, o c’e o non c’e

Puo essere attivata automaticamente

I file marcati NON possono essere omessi

M-o, dired-omit-mode* O, dired-mark-omittedM-x set-variable dired-omit-mode nil/1

Local Variables:dired-omit-mode: tEnd:

dired-omit-here-alwaysdired-omit-files: "^#\\|\\.$"dired-omit-localp, no-dir, nil, tdired-omit-marker-char, (C-o)

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 37/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Dired-X: Variabili locali per le directory Dired

dired-local-variables-file (default: .dired )Local Variables:dired-actual-switches: "-lat"dired-omit-mode: tEnd:

dired-enable-local-variables (t)

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 38/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Dired-X: Shell

(setq dired-guess-shell-alist-user(list(list "\\.foo$" "FOO-COMMAND");; fixed rule;; possibly more rules...(list "\\.bar$";; rule with condition test

’(if CONDITION"BAR-COMMAND-1"

"BAR-COMMAND-2"))))

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 39/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Dired-X: Dired Virtuale

(setq auto-mode-alist (cons ’("[^/]\\.dired$" .dired-virtual-mode)auto-mode-alist))

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 40/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Dired-X:

F, dired-do-find-marked-filesdired-mark-extensiondired-flag-extension

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 41/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Dired-X: M-( dired-mark-sexp

inode, s, mode, nlink, uid, gid, size, time,name, sym

Es:(equal 0 size)(not (file-exists-p (concat name "c")))

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 42/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-X

Dired-X: Dired Jump

C-x C-j (dired-jump)C-x 4 C-j (dired-jump-other-window)

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 43/44

WEDI 2009

E. Somma

Operazionifondamentali

Operazioni suifile

Ricerche

Image-Dired

Dired-XGrazie dell’attenzione

E. Somma (SIA-BdI) WEDI 2009 27/02/2009 44/44