Inserisci Infobox

Gestire file, directory e links

Capire, muoversi e modificare file e directory: /, .., . , cd, ls, cp, mv, rm, rmdir, mkdir. Uso di link e symlink.

File e directory su Linux
Autore: al - Ultimo Aggiornamento: 2009-01-28 18:00:14 - Data di creazione: 2009-01-28 17:23:31
Tipo Infobox: SLIDE - Skill: 1- NOVICE

Linux ha una struttura del file system analoga a quella di ogni Linux.

La "root", radice, indicata con la barra "/" è la directory principale del sistema, ogni altro file o directory è contenuto al suo interno (non esistono volumi come C: D: ecc.).

Struttura delle directory
Tutti i file su Linux sono divisi all'interno di sottodirectory della root con funzione e scopo ben preciso:
/root - Home dell'utente root, da non confondere con la root ( / )
/etc - Contiene file di configurazione
/home - Contiene le home directory degli utenti normali (tutti tranne l'utente root)
/usr - Contiene binari, documentazione, librerie e sorgenti)
/var - Contiene tutti file che hanno informazioni dinamiche, che tendono a modificarsi con il tempo
/sbin - Contiene comandi e programmi riservati a root ( altri comandi sono in /usr/sbin )
/bin - Contiene comandi e programmi base per tutti gli utenti (altri comandi sono in /usr/bin )

Notazioni per indicare un path
Il path è il percorso che indica un file o una directory.
Un path assoluto, inizia con / e indica la poisizione assoluta di un file all'interno della root: Es: /usr/local/bin.
Un path relativo, NON inizia con / e indica un percorso relativo alla directory in cui ci si trova. Es: usr/local/bin
Il carattere . (punto) indica la directory corrente (anche detta directory di lavoro).
I caratteri .. (doppio punto) indicano la directory "madre", Se indicati da soli si riferiscono alla madre della directory corrente.

Comandi comuni
ls - Visualizza il contenuto della directory indicata. Es: "ls /etc"
cd - Cambia la directory corrente. Es: "cd .."
cp - Copia un file. Es: "cp /home/al/fileorigine /tmp/filedestinazione"
mv - Sposta un file. Es: "mv /home/al/fileorigine /tmp/filedestinazione"
rm - Cancella un file. Es: "rm /tmp/filedacancellare"
mkdir - Crea una directory. Es: "mkdir nuovadirectory"
rmdir - Cancella una directory. Es: "rmdir /tmp/directorydacancellare"
ln - Crea un link. Es: "ln /var/tmp/nomefile tmp/nomelink"

Notare che negli argomenti di qualsiasi comando che si aspetta un nome di file o directory si possono usare sia path assoluti che relativi.

Introduzione a file e directory Unix
Autore: al - Ultimo Aggiornamento: 2003-11-28 19:33:54 - Data di creazione: 2003-11-28 19:33:54
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Il file system di un sistema Linux, come ogni Unix, ha una struttura gerarchica: tutti i suoi oggetti (file e directory) sono contenuti all'interno della root ( la directory principale, indicata semplicemente con "/" (barra) ) e lo stesso carattere / viene usato per separare i nomi delle directory ( Ad esempio /usr/bin/ indica la directory bin contenuta nella directory usr contenuta nella root (/).
La root contiente non soltanto TUTTE le altre directory di una partizione ma TUTTI i filesystem eventualmente montati sul sistema (partizioni e hard disk diversi, floppy, cdrom, condivisioni di rete ecc.).
Il principio è radicalmente diverso da quello presente nel mondo Windows, dove ogni device o risorsa ha un suo nome o lettera identificativa (A:, C:, D: ecc) al cui interno si trovano le directory del relativo filesystem.
Su molti Linux, ad esempio, i file contenuti in un floppy disk si trovano in una directory chiamata /mnt/floppy e non in qualcosa chiamato A: come su Windows. Il nome di questa directory, oltretutto, può cambiare ed essere decisa arbitrariamente dall'utente o da chi ha realizzato la distribuzione (ovviamente esistono metodi per sapere in quale directory viene montato qualsiasi dispositivo).

Esistono alcune notazioni standard Unix per indicare la directory corrente, la directory padre, la home directory ecc.
E' opportuno conoscere bene queste convenzioni in quanto sono comunemente utilizzate in attività sistemistiche:
/ Come sopra riferito, indica la root, la directory principale alla base di tutto il filesystem
/bin/ Indica la sottodirectory bin (una arbitraria), alla root
bin/ Indica la sottodirectory bin rispetto alla dir corrente. Notare che se il path inizia con una / indica un path assoluto, che inizia dalla root ( /, appunto). Se non inizia con / indica un path relativo alla directory in cui ci si trova.
. Indica la directory corrente
.. Indica la directory madre di quella in cui ci si trova
../bin/ Indica la sottodirectory bin che si trova allo stesso livello della dir corrente.
~ La home directory dell'utente corrente (coincide di default con /home/login_utente

Un path assoluto, quindi, avrà un simile aspetto: /usr/local/bin e sarà funzionante in qualsiasi directory in cui ci si trova.
Un path relativo ha aspetto simile a local/bin e indica directory diverse a seconda della directory in cui ci si trova. In questo caso local/bin coincide con /usr/local/bin solo se ci si trova in /usr/

Comandi comuni
I comandi di gestione dei file su Unix sono paragonabili agli equivalenti di altri sistemi operativi a riga di comando come DOS. Tutti questi comandi, come tradizione Unix, hanno varie opzioni che possono ampliare notevolmente le potenzialità del comando stesso.
ls Visualizza il contenuto di una directory (equivale a dir su Dos e in alcuni Linux esiste anche un alia di ls che si chiama proprio dir);
cd Cambia la directory corrente. Corrisponde all'omonimo cd su DOS.
cp Esegue la copia di uno o più file. Corrisponde al copy di DOS.
mv Esegue lo spostamente o la rinomicanzione di un file. Corrisponde a move e rename su DOS.
rm Cancella uno o più file (fare attenzione: su molti Unix e Linux non è previsto l'equivalente di un cestino: se un file viene cancellato risulta poi piuttosto complesso recuperarlo). Corrisponde al del di DOS.
mkdir e rmdir Rispettivamente vengono usati per creare e cancellare una directory vuota.
ln Viene usato per create un link, hard o soft (con l'opzione ln -s).

La struttura delle directory su Linux (Unix)
Autore: al - Ultimo Aggiornamento: 2003-11-24 20:55:36 - Data di creazione: 2003-11-24 20:55:36
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

La struttura delle directory in un sistema Linux ha molte caratteristiche comuni a quella di altri sistemi Unix.
Sotto vengono riportare le directory principale e più comuni su Unix diversi, altre directory possono avere nomi o funzionalità diverse in Unix diversi (e anche in distribuzioni Linux diverse).

/ Radice (root). La directory principale che contiene tutte le altre.
/root Home dell'utente root, da non confondere con la root ( / ), che è la directory principale e non una directory che si chiama /root
/boot Contiene tutte le immagini del kernel e file indispensabili al bootstrap del sistema
/etc Contiene i file di configurazione del sistema e dei programmi installati
/home Contiene le home directory degli utenti normali (tutti tranne l'utente root)
/usr Contiene binari, documentazione, librerie e sorgenti della maggior parte dei programmi (e i sorgenti del kernel)
/var Contiene tutti file che hanno informazioni dinamiche, che tendono a modificarsi con il tempo: log, file di pid e lock dei processi in esecuzione, directory di spool (stampa, mail...) ecc.
/proc File system virtuale, generato in tempo reale dal kernel. Contiene, come se fossero file e directory, dati dinamici sul sistema e sui processi
/dev Contiene file speciali, che corrispondono a dispositivi hardware o a funzionalità particolari. Tramite di essi si può accedere al relativo device hardware.
/sbin Contiene comandi e programmi riservati a root ( altri comandi sono in /usr/sbin/ )
/bin Contiene comandi e programmi base per tutti gli utenti (altri comandi sono in /usr/bin/ )
SWAP Non è una directory ma una partizione speciale, utilizzata come memoria virtuale.

Hard link e Symbolic link
Autore: al - Ultimo Aggiornamento: 2003-11-24 23:04:40 - Data di creazione: 2003-11-24 23:04:40
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

I sistemi Unix fanno largo uso di link: dei file speciali che sono semplici collegamenti o alias di file esistenti.
Servono per identificare lo stesso file o directory con nomi diversi, avendo anche path diversi.
Su Unix esistono due tipi di link: Hard link e Symbolic link.
L'effetto che hanno è lo stesso, ma la loro natura è diversa e si adattano a diversi utilizzi.
L'utilità dei link è varia:
- Se si devono modificare diversi file uguali, in diverse directory, con l'uso di link la modifica fatta su un file diventa immediatamente effettiva anche sugli altri file (link) (Es: la struttura  di /etc/rc.* ) .
- Se si devono poter gestire contemporaneamente diversi ambienti o programmi con diverse versioni, si può cambiare solo il puntamento del link usato per accedere a questi ambienti per poter switchare rapidamente da uno all'altro (es: /usr/src/linux )
- Se si devono gestire diverse alternative dello stesso comando, si può usare un link per referenziare il comando con un nome fisso e poi cambiare il puntamento per valutare in tempi brevi le diverse alternative (ex: Directory /etc/alternatives in RedHat Linux).

Hard Link
Sono di fatto una copia di una voce di directory, hanno nomi diversi ma puntano allo stesso inode e quindi condividono esattamente lo stesso dato (oltre agli stessi permessi, data di modifica, owner ecc.).
Dal momento che originale e link sono indistinguibili e condividono lo stesso inode, non si possono fare hard link fra file system diversi e, in genere su Unix, su directory (su Linux è possibile creare un hard link ad una directory tramite l'opzione speciale -d).
Pur essendo la gestione dei link comunque molto rapida da parte del kernel, gli hard link sono leggermente più "economici" in quanto risparmiano più spazio su disco (stesso i-node, stessi dati) e richiedono una lettura in meno sul file system (i symlink hanno i-node diverso e puntatore, che va letto, ad un altro file).

Symbolic Link o Symlink
Sono dei piccoli file che contengono un puntamento ad altri file o directory. Questi file hanno i-node autonomo e possono puntare a file di altri file system (sia locali, che di rete). Si possono facilmente visualizzare con un normale ls -l e se viene cancellato o spostato il file a cui puntano rimangono "stale": continuano ad esistere ma puntano a qualcosa che non esiste.
I symlink sono generalmente molto più utilizzati nell'amministrazione di sistemi Unix e corrispondono come concetto e come implementazione ai collegamenti (shortcut) del mondo Windows.
Un symlink appare come avente tutti i permessi aperti a tutti gli utenti, di fatto è trasparente rispetto a permessi e ownership e riflette quelli del file o directory a cui punta.

I file system Unix
Autore: al - Ultimo Aggiornamento: 2003-11-24 22:25:58 - Data di creazione: 2003-11-24 22:25:58
Tipo Infobox: DESCRIPTION - Skill: 3- INTERMEDIATE

La logica del file system Unix è semplice, elegante e potente, alcune sue caratteristiche sono comuni al DOS, altre all'antico MULTICS, altre sono uniche.
Le directory, a livello di sistema, sono trattate come dei file che invece di contenere dei dati contengono altri file o directory; per il sistema sono tutti i-node, che hanno in due parti separati il loro descriptor (nome, attributi, permessi ecc) dal contenuto (il dato presente nel file, o, nel caso di una directory, l'elenco dei file che contiene).

I file possono avere qualsiasi carattere (escluso NUL) nel nome, anche caratteri speciali per la shell o spazi e CR (Carriage Return).
Le estensioni non hanno nessuno specifico significato: sono usate per comodità da alcuni comandi ma non sono indispensabili e, a livello del file system, nemmeno identificative del tipo di file.

Una tipica partizione Unix contiene un file system così organizzato:
- Blocco 0, non usato da Unix, a volte usato per il boot del sistema (è l'MBR se si trova sul device primario);
- Blocco 1 o superblock, contiene informazioni critiche sulla struttura del file system (numero di i-node, numero di blocchi del disco ecc);
- Elenco degli I-node, numerati da 1 a un numero finito, che contengono le informazioni sui singoli file presenti nel file system e sulla posizione dei rispettivi dati;
- Blocchi dei dati, con i dati effettivi contenuti nel file.

Gli i-node contengono informazioni quali: tipo di file, permessi, data di creazione, modifica, ultimo accesso, utente e gruppo proprietari, posizione e dimensione del file ecc.
Tramite l'uso di link è possibile fare in modo che lo stesso i-node sia condiviso di diversi oggetti nel filesystem.

Linux di default supporta il file-system ext2 che ha molte caratteristiche in comune con un tipico file system Unix System V. Il kernel di Linux comunque permette l'uso di molti altri file system come ext3, reiserFS, jfs (file system giornalistici, che tengono un log di tutte le operazioni di scrittura per permettere un recupero dei dati più agevole in caso di guasti), i file system di Windows (fat, fat32, ntfs) e quelli di molti altri sistemi operativi (BeOs, AmigaOs, Mac, ecc), oltre a file system di rete come NFS, SMB, Novell.

Rinominare file multipli
Autore: kbonasia - Ultimo Aggiornamento: 2006-10-16 12:22:31 - Data di creazione: 2006-10-16 11:44:35
Tipo Infobox: TIPS - Skill: 3- INTERMEDIATE

Per risolvere il problema di rinominare numerosi file con la stessa estensione, si può utilizzare il comando mmv di Linux.

Supponiamo ad esempio di dover rinominare tutti i file *.tiff in *.jpeg. Come possiamo fare? Una soluzione sarebbe quella di utilizzare la riga comando:

for i in *.tiff;
do mv $i $(basename $i .tiff).jpeg;
done


oppure utilizzare lo script
for file in *.tiff; do;
mv $file ${file%.tiff}.jpeg
done


È però più comodo usare mmv (Multiple Move), che serve a spostare, copiare, appendere, linkare file multipli, e che possano essere raggruppati con un wildcard (carattere jolly).

Questa azione viene effettuata in modo sicuro, ovvero non ci sono cancellazioni di file inaspettate dovute a collisioni dei nomi dei file di destinazione con nomi di file già esistenti. Inoltre non ci sono problemi nel caso in cui i nomi dei file contengano spazi.
La sintassi è:
mmv 'Ambito*291?' 'pinco#1pallino#2'
che significa che verranno rinominati tutti i file contenenti le stringe “Ambito”, “291″ e terminanti con un carattere e verrà dato il nome “pinco” + ciò che l’asterisco trova + “pallino” + ciò che il punto di domanda trova.

L’azione di sopra diventa ora:
mmv '*.tiff' '#1.jpeg'
verranno quindi rinominati tutti i file da Tiff (.tiff) a Jpeg (.jpeg).

ls
Autore: al - Ultimo Aggiornamento: 2003-11-24 23:57:24 - Data di creazione: 2003-11-24 23:57:24
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Visualizza il contenuto di una directory. Corrisponde al "dir" di Windows.
Comando comune in tutti gli Unix, a volte con opzioni diverse.
Se non viene specificata alcuna directory, indica i file nella directory corrente.

ls [opzioni] [file]
-a Visualizza tutti i file, anche quelli nascosti (che iniziano con un punto: .)
-l (--format=long) Visualizza informazioni aggiuntive quali data di modifica, permessi, owner e group
-i (--inode) Visualizza anche l'inode dei file
-f Non esegue alcun ordinamento di file e li visualizza nell'ordine con cui sono stati memorizzati (di default ls fa un elenco in ordine alfabetico)
-t (--sort=time) Ordina l'elenco dei file secondo la data di modifica
-u (--time=access) Ordina l'elenco dei file secondo la data di ultimo accesso
-S (--tsort=size) Ordina l'elenco dei file secondo la dimensione
-r (--reverse) Ordina in senso inverso l'output dei file (da usare con -t, -u, -S ecc.)
-X (----sort=extension) Ordina i file per estensione
-R (--recursive) Elenca ricorsivamente tutte le sottodirectory e i file ivi contenuti, rispetto alla directory specificata (o corrente)
-I pattern (--ignore pattern) Non visualizza i file che matchano il pattern specificato

Esempi
ls -lS /var/spool/mail Esegue un listing esteso dei file contenuti in /var/spool/mail ordinandoli secondo dimensioni dal più grande al più piccolo.
ls -ltr /var/log Elenca i file contenuti nella directory /var/log secondo data di modifica inversa: dal più vecchio al più recente.
ls -a ~ Elenca tutti i file (anche quelli nascosti, preceduti da un .) presenti nella propria home directory.

cd
Autore: al - Ultimo Aggiornamento: 2004-05-23 15:43:07 - Data di creazione: 2004-05-23 15:43:07
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

E' il comando per cambiare la directory corrente, cioè, in pratica, per spostarsi in una directory diversa da quella in cui ci si trova (usare il comando pwd er visualizzare la directory corrente).
E' presente in tutti gli Unix e non è un comando a se stante (non è possibile trovarne il file binario) in quanto incorporato nella shell (BUILT IN COMMAND).

cd [directory]
Si aspetta come argomento il nome di una directory in cui spostarsi, se non ne viene specificata alcuna, entra, di default, nella home directory dell'utente.

Esempi
cd / Cambia la directory corrente nella root.
cd ../ Si sposta nella directory padre di quella in cui ci si trova.
cd bin Si sposta nella sottodirectory bin rispetto alla directory corrente.

cp
Autore: al - Ultimo Aggiornamento: 2003-11-25 14:52:03 - Data di creazione: 2003-11-25 14:52:03
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Copia file e directory. Comando flessibile che permette di copiare sia un file su una destinazione data, sia un numero arbitrario di file su una directory d'arrivo. Può essere utile anche come strumento di backup e in script.
E' comune in tutti gli Unix ma alcuni parametri possono variare.

cp [opzioni] sorgente destinazione
cp [opzioni] sorgenti... directory_destinazione


OPZIONI POSIX (Valide in tutti gli Unix)
-f (--force) Forza la copia, rimuovendo i file di destinazione preesistenti, se esistenti.
-i (--interactive) Chiede conferma prima di sovrascrivere i file di destinazione (il cp su linux è solitamente un alias di cp -i, per cui di default viene chiesta la conferma alla sovrascrittura)
-p (--preserve) Preserva gli attributi dei file copiati (owner, group, permessi, data di ultima modifica e data di ultimo accesso).
-R (--recursive) Copia le directory ricorsivamente (include file e sottodirectory) rispettando l'integrità di file speciali.

OPZIONI GNU (Tipiche di Linux e altri Unix che usano la versione GNU di cp)
-a (--archive) Corrisponde a cp -dpR e conserva nella copia quanto possibile la struttura e gli attributi dei file originali. Da usare quando si intende fare il backup di directory e file.
-d (--no-dereference) Copia link simbolici come link simbolici piuttosto che copiare i file da essi puntati, e conserva la relazione di hard link tra i file originali anche nelle copie.
-s (--symbolic-link) Crea un link simbolico invece della copia vera e propria dei file o directory.
-u (--update) Nel caso il file di destinazione esiste già, lo sovrascrive solo se ha data di modifica più vecchia.
-v (--verbose) Stampa il nome di ogni file prima di copiarlo.
-b (--backup) Crea copie di backup dei file che stanno per essere sovrascritti o rimossi.
-S SUFFISSO Aggiunge il SUFFISSO specificato a tutti file di backup.

Esempi
cp -a /etc /backup/ Copia tutta la directory /etc e i suoi contenuti nella directory /backup. Mantiene i link simbolici e i permessi inalterati.
cp /etc/grub.conf /tmp/ Copia il file /etc/grub.conf nella directory /tmp. Se /etc/grub.conf è un symlink, in /tmp/ si ritrova una copia del file a cui il link punta e non un symlink.

rm
Autore: al - Ultimo Aggiornamento: 2003-11-25 15:11:10 - Data di creazione: 2003-11-25 15:11:10
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Cancella file o directory.
E' comune in tutti gli Unix ma alcuni parametri possono variare.
ATTENZIONE: IN UNIX NON ESISTE IL "CESTINO", QUANDO UN FILE VIENE CANCELLATO NON E' POSSIBILE RECUPERARLO FACILMENTE! (Ci sono comunque dei metodi per recuperare dei file cancellati, ma non sono semplicissimi).
Per poter cancellare un file è necessario avere permessi in scrittura sulla directory che lo contiene, ma NON E' NECESSARIO AVERLI SUL FILE stesso (se non si hanno permessi di scrittura sul file che si vuole cancellare, e che si trova in una directory dove si può scrivere, viene semplicemente richiesta una conferma prima della cancellazione).
Se si vuole cancellare un file in modo definitivo, rendendo impossibile un suo recupero, utilizzare il comando shred.

rm [opzioni] file

-f (--force) Forza la rimozione senza richiesta di conferma.
-i (--interactive) Chiede conferma prima di cancellare i file
-R (-r , --recursive) Se viene indicata una directory la cancella con tutto il suo contenuto (USARE CON CAUTELA)

ATTENZIONE a usare certe opzioni di rm, un comando come rm -rf /* se eseguito come root cancella brutalmente tutto il file system (in realtà ad un certo punto la cancellazione si blocca perchè vengono cancellati alcuni file vitali al funzionamento corrente del sistema, ma il risultato è comunque catastrofico e irreparabile).

Esempi
rm -rf /tmp Cancella tutta la directory /tmp
rm -rf /tmp/* Cancella tutti i file contenuti nella directory /tmp (la directroy rimane vuota)

mv
Autore: al - Ultimo Aggiornamento: 2003-11-25 15:05:33 - Data di creazione: 2003-11-25 15:05:33
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Sposta o rinomina un file o una directory.
E' un comando comune a tutti gli Unix (con opzioni che possono variare). Notare che su Unix non esiste il corrispondente del comando "rename" di Windows. Il cambiamento di nome di un file viene fatto semplicemente "spostandolo" in un file con nome diverso.

mv [opzioni] sorgente destinazione
mv [opzioni] sorgenti... directory_destinazione


-f (--force) Forza lo spostamento, sovrascrivendo i file di destinazione preesistenti, se esistono.
-i (--interactive) Chiede conferma prima di sovrascrivere i file di destinazione (il mv su Linux è solitamente un alias di mv -i, per cui di default viene chiesta la conferma alla sovrascrittura)
-u (--update) Nel caso il file di destinazione esiste già, lo sovrascrive solo se ha data di modifica più vecchia.
-v (--verbose) Stampa il nome di ogni file prima di spostarlo.
-b (--backup) Crea copie di backup dei file che stanno per essere sovrascritti o rimossi.
-S SUFFISSO Aggiunge il SUFFISSO specificato a tutti file di backup.

Esempi
Il comportamento di mv varia a seconda della natura di sorgente e destinazione, seguono alcuni esempi generici, se risultano poco chiari fare pratica sul proprio sistema, è sempre il metodo migliore:
mv /directory/file /directory/file_nuovo (Rinomina file in file_nuovo)
mv /directory/file /directory/file_esistente (Sovrascrive file_esistente con file)
mv /directory/file /directory/subdirectory_esistente (Sposta file all'interno di subdirectory_esistente)
mv /directory/subdirectory /directory/subdirectory_nuova (Rinomina subdirectory)
mv /directory/subdirectory /subdirectory_nuova (Sposta, e rinomina, subdirectory)
mv /directory/subdirectory /directory/subdirectory_esistente (Sposta subdirectory all'interno di subdirectory_esistente)

mkdir
Autore: al - Ultimo Aggiornamento: 2003-11-27 11:36:22 - Data di creazione: 2003-11-27 11:36:22
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Crea una o più directory. E' necessario avere permessi di scrittura nella directory in cui si vogliono creare nuove sotto directory. Comune in tutti gli Unix.

mkdir [opzioni] directory
-m ### (--mode ###) Specifica i permessi della directiry creata (di default sono 777).
-p (--parent) Crea le directory padre intermedie, nel caso non esistano. (es: mkdir -p /usr/local/test/my/dire crea la directory dire e anche le directory my, test, local, usr nel caso non esistano)

Esempi
mkdir -p temp/test/prova/nuova Crea tutte le directory e sottodirectory indicate (anche se non esistono) rispetto alla posizione corrente. Senza l'opzione -p la directory "nuova" si poteva creare se esistevano già tutte le precedenti.
mkdir /tmp/nuova Crea la directory "nuova" all'interno di /tmp.

rmdir
Autore: al - Ultimo Aggiornamento: 2003-11-27 11:46:08 - Data di creazione: 2003-11-27 11:46:08
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Rimuove directory (ma non il loro contenuto).
Comando comune a tutti gli Unix.
Non cancella directory non vuote, per il quale è necessario un comando tipo rm -R

rmdir [opzioni] directory
-p (--parents) Rimuove la directory specificata e ogni directory genitore che dovesse essere rimasta vuota.
--verbose Modalità verbosa: per ogni directory rimossa stampa un messaggio

Esempi
rmdir /tmp/nuova Rimuove la sottodirectory "nuova" all'interno di /tmp (ma solo se nuova non contiene file.

ln
Autore: al - Ultimo Aggiornamento: 2003-11-24 23:51:21 - Data di creazione: 2003-11-24 23:51:21
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Crea un link al file specificato. Il link è un alias, uno pseudonimo, un secondo nome con cui un file può essere richiamato, oltre che con il suo nome principale.
ln è un comando comune in tutti gli Unix, la differenza fra hard e soft link è presente in tutti gli Unix.

ln [opzioni] nome_file_puntato [nome_link]
ln [opzioni] nomi sorgente directory destinazione

Nel primo caso se nome_file_puntato è un file, viene riscritto, se non viene specificato, viene creato nella directory corrente un link con il nome_sorgente (senza path).
Nel secondo caso è possibile specificare più file sorgenti e una directory di destinazione in cui vengono creati altrettanti alias con lo stesso nome.
-s (--symbolic) Crea un link simbolico e non un hard-link. Opzione molto utilizzata.
-b (--backup) Esegue una copia di backup dei file di destinazione, prima di cancellarli (se esistono).

Esempi
ln -s /usr/sbin/sendmail.postfix /usr/sbin/sendmail Crea un link simbolico chiamato /usr/sbin/sendmail che punta al file /usr/sbin/sendmail.postfix
ln -s /etc/passwd Crea, nella directory corrente, un link simbolico chiamato passwd che punta al file /etc/passwd
ln /etc/passwd /etc/shadow /etc/group /backup/ Crea 3 hardlink chiamati passwd, shadow e group nella directory /backup/ che puntano ai rispettivi file nella directory etc.

stat
Autore: neo - ( Revisione: al ) - Ultimo Aggiornamento: 2004-05-23 15:43:42 - Data di creazione: 2004-05-23 15:43:42
Tipo Infobox: COMMANDS - Skill: 3- INTERMEDIATE

E' un comando che permette di visualizzare informazioni utili sui file come dimensione, permessi, inode, owner, data di ultimo accesso, di creazione e di modifica. In pratica tutto quello che è necessario conoscere di un file.
Ha opzioni, inoltre, che forniscono informazioni sul file system che contiene il file e che permettono di esportare i dati in modo sequenziale e poco user friendly ma comodo per essere gestiti all'interno di script.

stat [-l] [-f] [-v] [-t] file-name [file-name]...
-l Flag da utilizzare per i links
-f Visualizza le informazioni del file system che contiene il file
-t Visualizza lo stdout in modo tale da essere processato da un secondo programma o comando

Esempi
stat /etc/rc.local Fornisce informazioni, in formato "human readable" sul file /etc/rc.local (nel nostro caso un link simbolico)
stat -l /etc/rc.local Fornisce informazioni sul file a cui punta il link simbolico /etc/rc.local
stat -t /etc/group Fornisce informazioni su /etc/group dando solo l'elenco dei risultati senza specificarne la natura, utile per "passare" il risultato ad un altro comando all'interno di uno script.

tree
Autore: al - Ultimo Aggiornamento: 2003-11-27 11:50:38 - Data di creazione: 2003-11-27 11:50:38
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Visualizza ricorsivamente l'elenco dei file e delle sottodirectory rispetto alla directory indicata (quella corrente, se non viene specificata).
L'output è ad albero e indica chiaramente la gerarchia delle directory.

tree [opzioni] [directory]
-a Visualizza tutti i file, anche quelli nascosti.
-d Visualizza solo le directory
-s Visualizza anche le dimensioni di ogni file
-p Visualizza anche i permessi di ogni file
-D Visualizza anche la data di modifica di ogni file
-u Visualizza anche l'owner di ogni file

Esempi
tree Visualizza l'albero delle directory a partire dalla directory corrente.
tree -ap /etc Visualizza l'albero delle directory all'interno di /etc includendo tutti i file nascosti ed evidenziando i permessi di ogni file
tree -ud / Visualizza l'elenco di tutte le directiry (escludendo quindii file) e il rispettivo owner all'interno di tutto il filesystem

touch
Autore: al - Ultimo Aggiornamento: 2003-11-27 11:28:06 - Data di creazione: 2003-11-27 11:28:06
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Cambia il tempo di accesso e modifica di un file, di fatto fa quello che dice: "tocca un file senza modificarne i contenuti.
Se il file non esiste ne crea uno nuovo di dimensioni zero.
Comando comune a tutti gli Unix.

touch [opzioni] [data] files
data La data è quella corrente se non specificata, altrimenti va inserita nel formato mmddhhmm[yy]
-a Aggiorna solamente l'access time.
-m Aggiorna solamente il modify time.

Esempi
touch /tmp/nuovo Crea un file chiamato /tmp/nuovo di 0 byte e data di modifica e ultimo accesso attuale
touch /etc/group Cambia la data di modifica e ultimo accesso a quella attuale.

Principali comandi da shell - 2°parte
Autore: fra - Ultimo Aggiornamento: 2005-07-06 10:57:35 - Data di creazione: 2005-07-05 17:54:54
Tipo Infobox: SLIDE - Skill:

descrizione principali comandi da shell.

stat: E' un comando che permette di visualizzare informazioni utili sui file come dimensione, permessi, inode, owner, data di ultimo accesso, di creazione e di modifica. Eccone la sintassi: stat [-l] [-f] [-v] [-t] file-name [file-name]...
tree: Visualizza ricorsivamente l'elenco dei file e delle sottodirectory rispetto alla directory indicata (quella corrente, se non viene specificata). Sintassi: tree [opzioni] [directory]
mkdir: Crea una o più directory. E' necessario avere permessi di scrittura nella directory in cui si vogliono creare nuove sotto directory. Sintassi:  mkdir [opzioni] directory.
rmdir: Rimuove directory (ma non il loro contenuto), non cancella directory non vuote per le quali occorre aggiungere l'opzione -R. Con l'opzione -p cancelleremo anche eventuali directory genitore rimaste vuote.
touch : Cambia il tempo di accesso e modifica di un file, Se il file non esiste ne crea uno nuovo di dimensioni zero. sintassi: touch [opzioni] [data] files.
find: Trova in tutto il file system i file con l'inode specificato, è utile per identificare gli hard link ad un file.

Principali comandi da shell - 1°parte.
Autore: fra - Ultimo Aggiornamento: 2005-07-06 10:43:39 - Data di creazione: 2005-07-05 16:20:13
Tipo Infobox: SLIDE - Skill:

Vengono qui riportati i comandi più importanti e descritte le diverse funzioni che ciascuno di essi può assumere.

cd : E' il comando per spostarsi in una directory diversa da quella in cui ci si trova. la sintassi è cd [directory]. Se non viene specificata la directory si ritornerà automaticamente nella home directory dell'utente.
ls: Visualizza il contenuto di una directory. Se non viene specificata alcuna directory, indica i file nella directory corrente.
cp: Copia file e directory, permette di copiare sia un file su una destinazione data, sia un numero arbitrario di file su una directory d'arrivo. Può essere utile anche come strumento di backup e in script.
ln: Crea un link al file specificato, cioè un secondo nome con cui un file può essere richiamato, oltre che con il suo nome principale.
mv: Sposta o rinomina un file o una directory, Il cambiamento di nome di un file viene fatto semplicemente "spostandolo" in un file con nome diverso.
rm: Cancella file o directory. Per poter cancellare un file è necessario avere permessi in scrittura sulla directory che lo contiene.

Descrizione dei link
Autore: fra - Ultimo Aggiornamento: 2005-07-06 10:55:41 - Data di creazione: 2005-07-05 16:05:48
Tipo Infobox: SLIDE - Skill:

Vengono qui descritti i 2 tipi di link esistenti con Linux: Hard link e symbolic link

I link sono semplici collegamenti o alias di file esistenti. Essi possono servire per:
- modificare diversi file uguali in diverse directory, di modo che la modifica fatta su un file venga prontamente applicata anche a tutti gli altri.
- Se si devono poter gestire contemporaneamente diversi ambienti o programmi con diverse versioni, per poter switchare rapidamente da uno all'altro.
- Se si devono gestire diverse alternative dello stesso comando, si può usare un link per referenziare il comando con un nome fisso e poi cambiare il puntamento per valutare in tempi brevi le diverse alternative. Esistono due tipi di link: gli Hard link ed i symbolic link.
Gli Hard Link Sono di fatto una copia di una voce di directory, hanno nomi diversi ma puntano allo stesso inode e quindi condividono esattamente lo stesso dato.Dal momento che originale e link sono indistinguibili e condividono lo stesso inode, non si possono fare hard link fra file system diversi.
i Symbolic link sono dei piccoli file che contengono un puntamento ad altri file o directory. Questi file hanno i-node autonomo e possono puntare a file di altri file system (sia locali, che di rete). Si possono facilmente visualizzare con un normale ls -l.

Quanto spazio ho sul disco?
Autore: kbonasia - Ultimo Aggiornamento: 2006-10-20 17:11:49 - Data di creazione: 2006-10-20 17:03:39
Tipo Infobox: TIPS - Skill:

Alcuni esempi sul comando df

Il comando df visualizza l'utilizzo dello spazio disco dei filesystem montati. L'opzione -T indica il tipo di filesystem. La misurazione avviene in maniera predefinita in blocchi da 1K, ma potrebbe non essere subito comprensibile, per cui è meglio utilizzare lo switch -h.
  
$ df -h -T
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/hda6     ext3     20G  9.3G  9.1G  51% /
/dev/hda7 reiserfs     13G  2.1G   11G  17% /mnt/suse
/dev/sda1     vfat    241M  152M   90M  63% /media/usbdisk


du permette, invece, di determinare l'occupazione di spazio da parte delle singole directory o dei singoli file. Per misurare la dimensione di una directory particolare, ad esempio, si può scrivere:

$ du -h /home/miadir/spammersdapunire

Anche in questo caso il formato predefinito è la visualizzazione in Kilobytes. L'opzione -c stampa il valore della dimensione totale della directory (alla fine), mentre -s visualizza un riepilogo senza visualizzare le eventuali sottodirectory.

Un esempio pratico dell'uso di du:

$ du -ch | grep total

visualizza in un'unica linea la dimensione totale della directory corrente. Con il parametro --exclude=type si può escludere un particolare tipo di file dal conteggio. Per ottenere invece un elenco dei file ordinati per dimensione, si può scrivere:

$ du -ah | sort -n

Introduzione a file system
Autore: fra - Ultimo Aggiornamento: 2005-07-06 10:31:25 - Data di creazione: 2005-07-05 12:33:13
Tipo Infobox: SLIDE - Skill:

Breve spiegazione del file system e della struttura delle cartelle.

l file system di un sistema Linux, come ogni Unix, ha una struttura gerarchica: tutti i suoi oggetti (file e directory) sono contenuti all'interno della root, la directory principale, indicata semplicemente con "/". Inoltre sappiamo che:
/bin/ Indica la sottodirectory bin
bin/ Indica la sottodirectory bin rispetto alla dir corrente.
. Indica la directory corrente
. . Indica la directory madre in cui ci si trova
. . /bin/ Indica la sottodirectory bin che si trova allo stesso livello della dir corrente
Anche se ne può supporta altri, i file system principali di linux sono ext2 ed ext3.

Le directory principali di linux
Autore: fra - Ultimo Aggiornamento: 2005-07-06 10:27:24 - Data di creazione: 2005-07-06 10:26:50
Tipo Infobox: SLIDE - Skill:

Descrizione contenuto delle cartelle principali.

/root  Home dell'utente root, da non confondere con la root (/), che è la directory principale e non una directory che si chiama /root
/boot  Contiene tutte le immagini del kernell e file indispensabili al bootstrap del sistema
/etc  Contiene i file di configurazione del sistema e dei programmi installati
/home  Contiene la home directory degli utenti normali, tutti tranne  l'utente root.
/usr  Contiene binari, documentazione, librerie e sorgenti della maggior parte dei programmi (e i sorgenti del kernel)
/var  Contiene tutti file che hanno informazioni dinamiche, che tendono a modificarsi con il tempo: log, file di pid e lock dei processi in esecuzione, directory di spool (stampa, mail...) ecc.
/proc  File system virtuale, generato in tempo reale dal kernel. Contiene, come se fossero file e directory, dati dinamici sul sistema e sui processi.
/dev  Contiene file speciali, che corrispondono a dispositivi hardware o a funzionalità particolari. Tramite di essi si può accedere al relativo device hardware.
/sbin  Contiene comandi e programmi riservati a root ( altri comandi sono in /usr/sbin/ )
/bin  Contiene comandi e programmi base per tutti gli utenti (altri comandi sono in /usr/bin/ )
SWAP  Non è una directory ma una partizione speciale, utilizzata come memoria virtuale.

Stele di Rosetta e comandi su diversi OS
Autore: al - Ultimo Aggiornamento: 2003-11-24 23:25:30 - Data di creazione: 2003-11-24 23:25:30
Tipo Infobox: ETCETERA - Skill: 3- INTERMEDIATE

Molte comandi Unix eseguono funzioni comuni ad analoghi comandi su altri sistemi operativi. Per chi conosce bene un sistema operativo e vuole velocemente sapere gli equivalenti dei comandi su un nuovo OS, esistono in rete varie "Stele di Rosetta" o comunque tavole comparative.
Alcune di queste si riferiscono ai diversi dialetti Unix, che pur avendo radice comune, in certi comandi e naming convention differiscono fra loro.

Nei link associati a questo INFOBOX ci sono alcune di queste preziose risorse.

find / -inum #inode
Autore: al - ( Revisione: al ) - Ultimo Aggiornamento: 2004-05-23 15:44:30 - Data di creazione: 2004-05-23 15:44:30
Tipo Infobox: BOFH - Skill: 3- INTERMEDIATE

Trova in tutto il file system i file con l'inode specificato.
E' utile per identificare gli hard link ad un file.
Nell'esempio sotto si visualizza l'inode di un file che si è visto avere 3 nomi associati (il 3 nella terza colonna dell'output di ls -li) e si cerca in tutto il file sysyem tutti i file che hanno stesso inode.

[root@trinity root]# ls -li /usr/bin/zgrep
301759 -rwxr-xr-x    3 root     root         1461 Aug 24  2001 /usr/bin/zgrep
[root@trinity root]# find / -inum 301759
/usr/bin/zfgrep
/usr/bin/zgrep
/usr/bin/zegrep

for a in `ls -1`; do  mv $a  `echo $a | tr '[:upper:]' '[:lower:]'`  ; done
Autore: neo - ( Revisione: al ) - Ultimo Aggiornamento: 2004-05-23 15:45:02 - Data di creazione: 2004-05-23 15:45:02
Tipo Infobox: BOFH - Skill: 4- ADVANCED

Script in una riga che trasforma il nome di file nella directory corrente in caratteri minuscoli.

E' possibile invertire il risultato, cioe' trasformare tutto in maiuscolo, invertendo di posto
[:upper:]' '[:lower:]'

La struttura delle directory su Solaris
Autore: al - Ultimo Aggiornamento: 2004-05-23 15:45:33 - Data di creazione: 2004-05-23 15:45:33
Tipo Infobox: ETCETERA - Skill: 2- JUNIOR

La struttura dell'albero delle directory su sistemi Sun Solaris è simile a quella di tutti gli Unix ma presenta alcune singolarità che val la pena analizzare.

/ La directory principale al cui interno è presente tutto il file system.
/bin/ E' un symlink a /usr/bin dove risiedono comandi standard ddestinati ad essere usati da tutti gli utenti
/dev/ Contiene i device files del sistema. Sono tutti symlink a file in /devices/. Fra questi si segnalano le seguenti directory:
/dev/dsk Block disk device, quali hard disk IDE o SWCSI
/dev/pts Pseudo Terminali (usati , per esempio, in sessioni telnet)
/etc/ File di configurazione dell'host. Si segnalano le seguenti subdirectory:
/etc/acct Configurazioni sull'accounting
/etc/cron.d Informazioni sulla configurazione del cron
/etc/default Informazioni di default per il sistema e alcuni programmi
/etc/inet File di configurazione per servizi di network
/etc/init.d Gli script di start e stop dei singoli servizi. Invocati da rc nei vari runlevel.
/etc/opt File di configurazione per pacchetti opzionali
/etc/skel Script e file di configurazione di default per i nuovi utenti
/export Directory di default per file system comunemente condivisi via rete
/home Directory che di default contiene le home degli utenti
/kernel Il kernel e i moduli platform independent
/opt Directory di default dove vengono installati pacchetti opzionali
/sbin Comandi essenziali usati per system recovery o durante il boot
/tmp Directory per file temporanei. Viene mountata sul swpa file system e perde il suo contenuto al reboot
/usr Acronimo di Unix System Resources. Directory molto vasta con varie sottodirectory, fra cui:
/usr/bin Posizione standard per i comandi di sistema
/usr/include Header files per programmi in C
/usr/java Contiene programmi e librerie per l'ambiente Java
/usr/lib Librerie e binari
/usr/openwin Contiene i programmi che fanno parte di OpenWindows
/var Contiene file variabili come log, spool ecc.

Risolvere problemi di spazio su disco con i symlink
Autore: al - Ultimo Aggiornamento: 2003-11-24 23:07:30 - Data di creazione: 2003-11-24 23:07:30
Tipo Infobox: TIPS - Skill: 2- JUNIOR

Può capitare di avere un sistema installato su più partizioni di un hard disk e ritrovarsi con un utilizzo non omogeneo dello spazio su disco libero.
In tempi rapidi, usando dei symlink, si possono mettere delle rapide "pezze" senza dover ridimensionare le partizioni o aggiungere hard disk.

Analizziamo questo esempio:
[root@socrate al]# df -k
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/hda5              1682664   1254556    342632  79% /
/dev/hda1                19487      6793     11688  37% /boot
none                    258400         0    258400   0% /dev/shm
/dev/hda2              1512000     74880   1360312   6% /var

Ipotizziamo di dover copiare da un CDROM in /home/bigdata di questo sistema una grande quantità di dati, più di quanto possa essere contenuto nella /, che si trova nella stessa partizione ormai piena al 79%.
Una rapida soluzione può essere copiare i dati in un'altra partizione e mantenere lo stesso path in /home con un link simbolico:
mkdir /var/bigdata
cp -r /mnt/cdrom/* /var/bigdata
ln -s /var/bigdata /home/bigdata

In questo modo esiste sempre la directory /home/bigdata e il fatto che in realtà sia un link simbolico a /var/bigdata è trasparente, per il sistema.

Questo è solo un esempio, non perfettamente calzante (la directory /var, contenendo log e file mutevoli, è destinata a riempirsi) che comunque da l'idea di come con un semplice link si possono spostare intere directory e distribuire meglio lo spazio disponibile su partizioni diverse.

mc: Midnight Commander
Autore: homer - ( Revisione: al ) - Ultimo Aggiornamento: 2004-03-06 02:01:55 - Data di creazione: 2004-03-06 02:01:55
Tipo Infobox: DESCRIPTION - Skill: 1- NOVICE

Midnight Commander è un file manager definito anche una Visual Shell per sistemi Unix, utile sui server dove spesso X non viene utilizzato. Ha una logica e un aspetto molto simile al vecchio Norton Commander per DOS.

E' possibile lanciare Midnight Commander in una shell tramite il comando mc. Questo software una volta avviato presenta un pannello di controllo diviso in quattro parti. Due pannelli più grandi in cui vengono visualizzati i file contenuti nella directory in cui ci si trova al momento dell'esecuzione, la linea di comando, e dei menu richiamabili tramite tasti funzione F1-F10.

Il programma può essere utilizzato anche mediante i menu a tendina, e con l'ausilio del mouse, quest'ultimo non solo in locale ma anche in remoto tramite connessioni via telnet o ssh.

Tra le caratteristiche di questo file manager, la possibilita' di montare directory FTP, visualizzare file tar, DEB ed RPM con possibilita' di estrarne singoli file, ed infine eseguire l'undeleting di file su partizioni di tipo EXT2.

fuser
Autore: neo - Ultimo Aggiornamento: 2013-03-22 17:00:45 - Data di creazione: 2013-03-22 17:00:45
Tipo Infobox: COMMANDS - Skill: 3- INTERMEDIATE

Permette di individuare i PID dei processi che utilizzano un certo file, socket o filesystem ed eventualmente eseguirne il kill.

fuser [opzioni] [nome file|socket|FS]

Opzioni principali:
-k: Esegue il kill del processo
-u: Mostra l'owner del processo
-v: Abilita la modalità verbosa e mostra l'output in modalità ps.

Privacy Policy