[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]


68. File manager: Midnight Commander

Il gestore di file, o file manager, è quel tipo di programma che facilita la gestione di file e directory e spesso incorpora anche le funzionalità di una shell. Il programma più importante di questo genere è Midnight Commander, che corrisponde all'eseguibile `mc'.

Midnight Commander, è un ottimo gestore di file per i terminali a caratteri. Il nome richiama chiaramente la sua origine: si tratta di un programma molto simile al noto Norton Commander (software proprietario nato per il Dos).

Non si può dire che si tratti di un programma essenziale, dal momento che gli strumenti a disposizione con GNU/Linux, e in generale con Unix, sono più che sufficienti. Ma uno strumento del genere può facilitare di molto l'attività dell'utente comune o dell'amministratore del sistema.

68.1 Funzionamento

Lo scopo principale di questo programma è quello di permettere la visione e la gestione simultanea di due directory di lavoro.

40.jpg

Figura 68.1: Midnight Commander.

A questo proposito, si può suddividere lo schermo gestito da Midnight Commander in quattro parti:

  1. la superficie più grande, nella parte centrale, è utilizzata da due pannelli contenenti l'elenco di due directory;

  2. la penultima riga dello schermo viene usata per l'inserimento di comandi di shell;

  3. l'ultima riga in basso mostra i riferimenti ai tasti funzionali;

  4. la prima riga, in alto, è utilizzata per la barra del menu, e può restare eventualmente invisibile fino a che il menù non viene richiamato.

Dei due pannelli, uno è quello attivo, e di conseguenza è quella la directory corrente. Il pannello attivo è evidenziato dalla presenza della barra di selezione. La maggior parte delle operazioni hanno effetto sul pannello attivo e quando l'operazione richiede un riferimento a una destinazione, si fa riferimento alla directory dell'altro pannello.

La presenza di una riga di comando permette di inserire ed eseguire comandi di shell nel modo solito. Così, come una shell, è possibile terminare la sua esecuzione attraverso un semplice comando `exit', anche se questo non è il modo consueto: di solito si usa il tasto [F10].

68.1.1 Avvio di Midnight Commander

mc [<opzioni>] [<directory1> [<directory2>]]

L'eseguibile `mc' viene avviato normalmente senza alcun argomento. Eventualmente, se si indicano una o due directory, il contenuto di queste viene visualizzato inizialmente.

Alcune opzioni

-b

Forza Midnight Commander a funzionare in modo monocromatico.

-d

Disabilita l'uso del mouse.

68.1.2 Uso del mouse

L'uso del mouse, quando la piattaforma lo consente, è abbastanza intuitivo:

68.1.3 Tastiera

Midnight Commander potrebbe essere utilizzato anche in situazioni non ottimali come lo è invece una console di GNU/Linux. In questi casi, il mouse potrebbe mancare e la tastiera potrebbe non rispondere nel modo consueto, come quando si sta utilizzando una connessione Telnet. Esistono quindi diversi modi per fare le stesse cose e un minimo di nozioni può risparmiare molto tempo.

Il programma fornisce dei suggerimenti e una guida interna, e in queste situazioni viene usata una notazione per le combinazioni di tasti, tipica di Emacs. In pratica, `C-a' rappresenta la combinazione [Ctrl+a], mentre `M-a' rappresenta la combinazione [Meta+a] ([Alt+a] negli elaboratori i386).

In particolare, dal momento che non tutte le tastiere hanno un tasto [Meta], oppure alcune connessioni Telnet non ne permettono l'uso, in sua sostituzione si può utilizzare la sequenza [Esc][tasto]. Si tratta quindi di premere [Esc], rilasciarlo e premere subito dopo il tasto successivo. *1*

Anche i tasti funzionali possono creare dei problemi. In tal caso si può utilizzare la combinazione [Meta+n], dove il 10 corrisponde allo zero. Per esempio, al posto del tasto [F1] si può utilizzare la combinazione [Meta+1], mentre per [F10] si può usare [Meta+0].

Il tasto [Invio] ha diversi utilizzi a seconda del contesto:

Il funzionamento di altri tasti e combinazioni di tasti viene riassunto nella tabella 68.1. Quello che è importante tenere presente è che non sono sempre disponibili tutti in ogni situazione.

Comando Alternativa Descrizione
Meta+Esc Esc Esc Annulla l'ultima operazione o conclude qualcosa.
Ctrl+l Ridisegna l'immagine dello schermo o della finestra.
Ctrl+r Rilegge il contenuto della directory aggiornando il pannello attivo.
Ctrl+s Meta+s Inizia la ricerca di un file nel pannello attivo.
Meta+t Passa alla modalità successiva di visualizzazione del pannello attivo.
+ Seleziona un gruppo di file, attraverso l'uso di metacaratteri.
- \ Deseleziona un gruppo di file, attraverso l'uso di metacaratteri.
Tab Ctrl+i Seleziona l'altro pannello.
Ins Ctrl+t Marca o toglie la marcatura dal file selezionato.
freccia su Ctrl+p Sposta la barra di selezione in alto di una posizione.
freccia giù Ctrl+n Sposta la barra di selezione in basso di una posizione.
pagina su Meta+v Sposta la barra di selezione in alto di una pagina.
pagina giù Ctrl+v Sposta la barra di selezione in basso di una pagina.
Meta+Invio Copia il nome del file selezionato nella riga di comando.
Meta+Tab Tenta di completare il nome iniziato nella riga di comando.
Ctrl+q x Inserisce x nella riga di comando evitando interpretazioni diverse.
Meta+p Recupera il comando precedente accumulato nello storico dei comandi.
Meta+n Recupera il comando successivo accumulato nello storico dei comandi.
freccia sinistra Ctrl+b Sposta il cursore a sinistra in una qualunque riga di comando.
freccia destra Ctrl+f Sposta il cursore a destra in una qualunque riga di comando.
Backspace Ctrl+h Cancella il carattere precedente.
Canc Ctrl+d Cancella il carattere successivo.

Tabella 68.1: Alcuni tasti e combinazioni di tasti utili per il controllo di Midnight Commander.

Utilizzando Midnight Commander, occorre fare attenzione all'uso del tasto [Esc]. Dal momento che serve a generare delle combinazioni (o meglio delle sequenze), come nel caso in cui si vogliono emulare i tasti funzionali, la semplice pressione di [Esc] non genera nulla, fino a che non si preme un altro tasto. Se la sequenza che si genera, [Esc][tasto], non è conosciuta da Midnight Commander, ciò che si ottiene è l'equivalente di [Meta+Esc], cioè l'annullamento o la conclusione di qualcosa.

68.1.4 Menu

Il funzionamento della barra del menu è abbastanza intuitivo. In particolare va ricordato che, per attivarlo quando non si dispone del mouse, si usa il tasto [F9].

A fianco delle voci contenute nelle tendine dei menu sono annotate le combinazioni della tastiera che possono essere usate come scorciatoia per la funzione relativa.

68.2 Configurazione

Midnight Commander può essere configurato a vari livelli. Il più semplice è la scelta del modo in cui devono essere usati i pannelli. Per questo si trovano i menu {Left} e {Right}, identici, ma riferiti ai pannelli rispettivi.

A livello globale, è possibile definire la configurazione di Midnight Commander attraverso il menu {Options}. In particolare è da ricordare che occorre salvare la configurazione, se si vuole che sia mantenuta. Il salvataggio di questa genera il file `~/.mc/ini'.

68.2.1 Pannelli

La figura 68.2 mostra il menu {Left}, attraverso il quale configurare il comportamento del pannello sinistro. Le stesse voci appaiono nel menu {Right}.

41.jpg

Figura 68.2: Il menu {Left} di Midnight Commander.

68.2.1.1 Listing mode

La funzione {Listing mode} è molto utile per configurare l'aspetto dell'elenco di file del pannello sinistro e destro. La figura 68.3 mostra un esempio della maschera che viene ottenuta attraverso la sua selezione.

+----------- Listing mode ------------+
|                                     |
| (*) full file list       [< Ok >]   |
| ( ) brief file list      [ Cancel ] |
| ( ) long file list                  |
| ( ) user defined:                   |
|     half type,name,|,size,|,perm    |
|                                     |
| [ ] user mini status                |
|     half type,name,|,owner,|,group  |
|                                     |
+-------------------------------------+

Figura 68.3: La maschera a cui si accede attraverso la voce {Listing mode}.

È probabile che sia preferibile attivare la modalità `Full file list' (come si vede nell'esempio), oppure chi è più esperto può trovare utile la possibilità di configurare gli elementi da visualizzare nell'elenco, attraverso la voce `User defined'. In questo caso, occorre compilare il campo successivo, con l'indicazione delle colonne da includere. La prima parola chiave serve a stabilire la dimensione dell'elenco:

Le parole successive rappresentano le colonne, separate da una virgola:

È possibile attivare anche la voce `user Mini status' per visualizzare sul fondo della finestra altre caratteristiche del file evidenziato dal cursore. Gli elementi da visualizzare sono indicati attraverso una sintassi analoga a quanto appena descritto sopra.

68.2.2 Opzioni

Il menu opzioni ({Options}) è quello che permette di configurare il funzionamento di Midnight Commander in modo globale, indipendentemente dalle caratteristiche di una finestra particolare. La funzione più importante è appunto {Configuration}, anche se in realtà, tutte le altre voci del menu riguardano la configurazione di questo programma.

La configurazione di Midnight Commander, sia per ciò che riguarda questo menu, che per quanto accessibile attraverso i menu {Left} e {Right}, viene memorizzata nel file `~/.mc/ini'. Per ottenere questo, occorre però che tale configurazione sia salvata attraverso la funzione {Save setup}, alla fine del menu delle opzioni.

68.2.2.1 Configuration

La funzione {Configuration} permette di modificare alcuni comportamenti importanti di Midnight Commander. Per esempio è possibile includere o escludere i file «nascosti» e quelli che rappresentano le copie di sicurezza di versioni precedenti. Inoltre, le versioni recenti di Midnight Commander permettono di utilizzare un programma interno per la gestione dei file di testo. Questo, a differenza dei comuni programmi del genere che funzionano su uno schermo a celle di caratteri, si avvicina molto ai programmi simili utilizzati in ambiente Dos. La figura 68.4 mostra un esempio della maschera di configurazione generale delle opzioni.

+----------------- Configure options ------------------+
| + Panel options --------+ + Other options ---------+ |
| | [x] show backup files | | [x] verbose operation  | |
| | [x] show hidden files | | [x] shell Patterns     | |
| | [x] mark moves down   | | [ ] auto save setup    | |
| | [ ] drop down menus   | | [ ] auto menus         | |
| | [ ] mix all files     | | [x] use internal edit  | |
| | [ ] fast dir reload   | | [x] use internal view  | |
| +-----------------------+ | [x] complete: show all | |
|                           | [x] rotating dash      | |
| + Pause after run... ---+ | [ ] lynx-like motion   | |
| | ( ) never             | | [ ] advanced chown     | |
| | (*) on dumb terminals | | [x] cd follows links   | |
| | ( ) always            | | [ ] safe delete        | |
| +-----------------------+ +------------------------+ |
|        [< Ok >]       [ Save ]       [ Cancel ]      |
+------------------------------------------------------+

Figura 68.4: Menu opzioni: configurazione.

68.3 Filesystem virtuali

Uno dei vantaggi principali nell'utilizzo di questo programma sta nella facilità con cui è possibile accedere al contenuto di file compressi o a dei servizi FTP. È sufficiente premere [Invio] su un archivio, anche compresso, per accedere al suo contenuto (in sola lettura). Anche i pacchetti RPM (Red Hat) e Debian sono accessibili facilmente, purché siano presenti i programmi `rpm' e `dpkg'.

42.jpg

Figura 68.5: Midnight Commander permette di accedere facilmente anche al contenuto di archivi compressi.

43.jpg

Figura 68.6: Gli archivi RPM vengono gestiti come archivi compressi.

Nello stesso modo è possibile accedere a un servizio FTP, come se si trattasse di un filesystem normale.

Queste funzionalità sono disponibili tramite il menu, ma si può usare una forma particolare nella riga di comando. Nel caso di FTP, si usa la forma seguente:

ftp://[<utente>@]<host>[<directory-remota>]

Per esempio, per accedere alla directory `/pub/' del servizio FTP anonimo presso `dinkel.brot.dg', si può utilizzare il comando seguente:

cd ftp://dinkel.brot.dg/pub[Invio]

Midnight Commander, così come molti altri programmi cliente FTP, consente anche di inserire il nominativo-utente assieme alla password. Tuttavia, questa è sempre una pratica sconsigliabile, perché potrebbe risultare visibile nella riga di comando memorizzata nel sistema di gestione dei processi.

44.jpg

Figura 68.7: Midnight Commander incorpora le funzionalità di un cliente FTP.

Per Midnight Commander, nel concetto di filesystem virtuale, rientra anche l'analisi di un filesystem Second-extended allo scopo di recuperare i file cancellati. A questa funzione si accede attraverso il menu {Command} e la voce {Undelete files}. La figura 68.8 mostra l'elenco di inode recuperabili nella quarta partizione del secondo disco.

45.jpg

Figura 68.8: Midnight Commander permette di recuperare facilmente i file cancellati in un filesystem Second-extended.

68.4 Cooledit: programma integrato per la gestione dei file di testo

Un altro degli aspetti importanti di Midnight Commander è il sistema integrato di gestione dei file di testo, Cooledit, giunto ormai a un ottimo livello di maturazione. Infatti, uno dei problemi maggiori che incontra chi si avvicina a GNU/Linux, o a un altro sistema Unix, è la difficoltà nell'uso dei programmi tradizionali per la creazione e la modifica di file di testo. Questi richiedono la conoscenza di comandi espressi attraverso combinazioni di tasti, senza avere a disposizione un menu e senza poter usare i tasti funzionali.

Cooledit risolve parzialmente questo problema, offrendo un funzionamento intuitivo per l'utente che proviene dall'esperienza Dos, quando si ha a disposizione un terminale adeguatamente raffinato, come una console virtuale di GNU/Linux.

Cooledit può funzionare anche se si utilizza un terminale poco dotato, ma in tal caso si ritorna a dover usare le solite combinazioni di tasti che annoiano alcuni utenti.

68.4.1 Avvio

L'avvio del sistema di gestione dei file di testo si ottiene semplicemente puntando il file desiderato con la barra di selezione di Midnight Commander e premendo il tasto [F4], oppure avviando il binario di Midnight Commander utilizzando il nome `mcedit' (si tratta normalmente di un collegamento simbolico a `mc').

Ci si inserisce in questo modo in un ambiente differente (anche se uniforme) per la modifica del file. In basso si notano alcuni riferimenti a tasti funzionali,

1Help 2Save 3Mark 4Replac 5Copy 6Move 7Search 8Delete 9PullDn 10Quit

e in alto si vede una riga di stato, dalla quale si conosce il nome del file aperto, lo stato del file, la colonna su cui si trova il cursore, il numero della prima riga che appare sullo schermo, il numero della riga relativa allo schermo, la riga assoluta in cui si trova il cursore, il numero totale di righe del file, e altre informazioni, come si vede nella figura 68.9.

al-04201.sgml       [BMRO] 27:50184+14=50198/133060 - *1890086/5033862b= 10
 |                   ||||  |   |    |   |     |         |       |        | 
 |   ----------------++++  |   |    |   |     |         |       |    codice
 |   stato:                |   |    |   |   dimensione  |       |    del
 |   B blocco evidenziato  |   |    |   |   totale in   |       |    carattere
 |   M file modificato     |   |    |   |   righe       |       |
 |   R registratore macro  |   |    |   |               |       dimensione
 |   O sovrascrittura      |   |    |   riga corrente   |       in byte
 |                         |   |    |                   |
 |                         |   |    riga del cursore    posizione del
nome del file              |   |    sullo schermo       cursore in byte
                           |   |
         colonna del cursore   prima riga sullo schermo

Figura 68.9: La riga di stato del sistema di gestione dei file di testo di Midnight Commander.

Premendo il tasto [F9] (o una delle sue varianti), oppure [Meta+f] (in quanto la «f» è l'iniziale di «file»), la riga di stato viene sostituita da un menu a tendina che si può utilizzare in modo semplice e intuitivo.

68.4.2 Configurazione

La configurazione del sistema di gestione dei file di testo è accessibile attraverso il menu {Options}, in particolare merita attenzione la funzione {General}, come si vede in figura 68.10.

+------------------------- Editor Options -------------------------+
|                                                                  |
| Key emulation                    [x] fake half tab               |
|  (*) Intuitive                   [ ] backspace through tabs      |
|  ( ) Emacs                       [x] return does autoindent      |
|                                  [ ] fill tabs with spaces       |
|                                  [x] confirm before saving       |
| Wrap mode                        [x] syntax highlighting         |
|  (*) None                                                        |
|  ( ) Dynamic paragraphing       Tab spacing :           8        |
|  ( ) Type writer wrap           Word wrap line length : 72       |
|           [< Ok >]                     [ Cancel ]                |
+------------------------------------------------------------------+

Figura 68.10: La maschera di configurazione generale.

Il significato delle varie opzioni dovrebbe essere evidente. In particolare, nel seguito verrà mostrato l'uso della tastiera secondo l'emulazione «intuitiva».

Merita un po' di attenzione la gestione del carattere di tabulazione. Dal momento che lo standard generale prevede che la tabulazione dei file di testo sia ogni otto colonne, è opportuno che questa dimensione non venga alterata, mentre diviene conveniente l'opzione `fake half tab'. Questa permette di utilizzare il tasto [Tab] per inserire spaziature ridotte (di quattro caratteri) che poi vengono tradotte in pratica con tanti caratteri spazio (<SP>) quanti servono. Se però l'utente usa più volte la tabulazione, dove possibile viene utilizzato il carattere di tabulazione orizzontale (<HT>).

68.4.3 Comandi comuni

Cooledit è «intuitivo», in quanto si può usare senza dovere ricordare delle combinazioni di tasti. Quando serve qualcosa di più basta chiamare il menu e cercare tra le varie voci disponibili. Tuttavia, quando si utilizza attraverso un terminale non sufficientemente raffinato, si rischia di perdere l'uso di alcuni tasti di uso comune, per cui si deve ripiegare sul solito sistema di combinazioni. La tabella 68.2 mostra l'elenco di alcuni comandi utili per lo spostamento del cursore e per la modifica del testo.

Comando Alternativa Descrizione
Meta+Esc Esc Esc Termina l'attività sul file.
Caratteri normali Inseriscono il testo corrispondente.
Tab Ctrl+i A seconda della configurazione, inserisce una tabulazione.
Tasti freccia Spostano il cursore nella direzione della freccia.
Tasti pagina Spostano il cursore di una schermata in avanti o indietro.
Ctrl+pagina-su Sposta il cursore all'inizio del file.
Ctrl+pagina-giù Sposta il cursore alla fine del file.
Backspace Ctrl+h Cancella il carattere a sinistra del cursore.
Canc Ctrl+d Cancella il carattere in corrispondenza del cursore.
Invio Ctrl+j Inserisce un'interruzione di riga.
Ctrl+y Elimina la riga su cui si trova il cursore.
Ctrl+l Ridisegna lo schermo.
Ins Scambia tra sovrascrittura e inserimento del testo digitato.
Ctrl+u Annulla l'ultimo comando (compresa la singola digitazione).

Tabella 68.2: Alcuni comandi per la navigazione e la modifica del testo.

68.4.4 Blocchi di testo e le funzionalità di taglia-copia-incolla

I blocchi di testo possono essere evidenziati, copiati, tagliati e incollati nello stesso modo utilizzato comunemente dai programmi fatti per il sistema Dos. Questo significa che tenendo premuto il tasto [Shift] e utilizzando i tasti freccia, si ottiene la selezione del testo con trascinamento, fino a quando si rilascia nuovamente il tasto [Shift]; la combinazione [Ctrl+Ins] copia la selezione corrente, deselezionandola; la combinazione [Shift+Ins] incolla la selezione copiata precedentemente, nella posizione del cursore.

Tutto questo però, vale solo se si sta usando una console virtuale GNU/Linux; se si sta lavorando da un terminale differente, o una connessione remota, si usa il tasto [F3] (con le varianti eventuali dei tasti funzionali, già descritte per Midnight Commander) per segnalare l'inizio di una zona da marcare, quindi si sposta il cursore e infine si preme nuovamente [F3] per concludere la zona evidenziata.

In entrambi i casi, si potrebbe evitare la copia della zona selezionata, premendo semplicemente il tasto [F5] per incollare nella posizione del cursore, senza nemmeno perdere la selezione.

Per ritagliare l'area selezionata, si utilizza la combinazione [Shift+Canc]; poi si può incollare quanto ritagliato nel solito modo: [Shift+Ins].

Ciò che viene ritagliato, o copiato, viene inserito in un file temporaneo nella directory personale dell'utente: `~/.cedit/cooledit.clip'. L'estensione del file suggerisce che si tratti di una clipboard. Questo meccanismo è molto importante, in quanto permette di incollare testo copiato o ritagliato con un'altra sessione di lavoro di Cooledit (attraverso Midnight Commander), purché appartenga allo stesso utente.

Cooledit consente anche l'utilizzo del mouse per delimitare un blocco di testo, e questo anche quando si utilizza il programma all'interno di una finestra di terminale, all'interno del sistema grafico X.

Comando Alternativa Descrizione
Shift+frecce F3 ... F3 Delimita un blocco di testo.
F5 Incolla una copia del testo evidenziato.
F6 Sposta il blocco evidenziato in corrispondenza del cursore.
F8 Cancella il blocco evidenziato.
Ctrl+Ins Copia la zona evidenziata nell'area temporanea, togliendo l'evidenziamento.
Shift+Canc Ritaglia la zona evidenziata inserendola nell'area temporanea.
Shift+Ins Incolla il contenuto dell'area temporanea nella posizione del cursore.

Tabella 68.3: Taglia, copia e incolla.

Infine, per eliminare un blocco di testo evidenziato, senza inserirlo nell'area temporanea, basta usare il tasto [F8].

68.4.5 Formattazione del testo

Attraverso la configurazione di Cooledit, è possibile stabilire se si intende fare in modo che il testo sia mandato a capo automaticamente o meno. Per questo è anche necessario fissare la dimensione massima di colonne del testo.

In generale, dovrebbe essere conveniente evitare che Cooledit provveda da solo a dividere le righe mentre si digita il testo. Quando si vuole riallineare un paragrafo, cioè un blocco di righe di testo preceduto e seguito da una riga vuota, basta usare il comando [Meta+p], oppure si può richiamare la voce corrispondente del menu {Edit}.

68.4.6 Macro

Attraverso la combinazione [Ctrl+r], si inizia e si conclude la registrazione della pressione di una sequenza di tasti. Al termine viene richiesto di indicare un carattere; successivamente, per riprodurre quella sequenza, basterà utilizzare la sequenza [Meta+a][tasto], dove l'ultimo tasto è appunto il carattere specificato in precedenza per memorizzare la macro.

68.4.7 Collegamento mcedit

Si è accennato al fatto che si può ottenere immediatamente l'avvio di Cooledit avviando Midnight Commander con il nome `mcedit'. In tal caso sono valide la maggior parte delle opzioni che si potrebbero dare a `mc', con la differenza che si può aggiungere l'indicazione di un nome di file nella stessa riga di comando, così da poter creare o accedere immediatamente a un file di testo.

mcedit [<opzioni>] [<file>]

Se si apprezzano le caratteristiche di Cooledit, la presenza di questo collegamento permette di utilizzarlo anche al di fuori del funzionamento normale di Midnight Commander, e di indicarlo come programma predefinito per la creazione e la modifica di file di testo.

---------------------------

Appunti Linux 2000.04.12 --- Copyright © 1997-2000 Daniele Giacomini --  daniele @ pluto.linux.it


1.) Data la funzione particolare che ha il tasto [Esc], come sostituto del tasto [Meta], si può comprenedere il motivo per il quale, spesso, per annullare un'operazione occorre premere due volte il tasto [Esc].

2.) Le finestre di dialogo contengono diversi tipi di elementi e la conferma o l'annullamento si ottengono selezionando una voce che riproduce una sorta di tasto virtuale.


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]