More Hard Is More Fun  Bad Penguin | Antonio Gallo Atom Feed Bad Penguin | Antonio Gallo RSS 2.0 Feed

Il File System Linux


Prima di spiegare i comandi per l'utilizzo del file system è necessarrio introdurre prima i concetti sui quali si basa il file sistem Unix rispetto al classico DOS.

Nello scrivere un percorso (path) si usa la slash "/" (come quando scrivete un indirizzo internet) e non la back-slash "" sotto DOS i nomi dei file sono nella forma 8.3 ( PROVATES.TXT ); in Linux si possono usare nomi di file lunghi più di 255 caratteri e con più caratteri punto "." all'interno del nome. Es: Questo_e.un.nome-di.file-molto_lungo caratteri maiuscoli e minuscoli rendono due file differenti anche se hanno lo stesso nome. Quindi NOMEFILE.tar.gz è nomefile.tar.gz sono differenti. i nomi dei file non sono collegati in alcun modo ad estensioni particolari. Ad esempio un file eseguibile non deve avere estensione .COM, .EXE o .BAT ma per essere eseguito deve avere solo le giuste "permission". In Linux i file eseguiti sono marcati con un asterisco "*" dai programmi che visualizzano l'elenco di una directory. Sotto DOS i file di backup terminano con l'estensione .BAK, in Linux invece terminano con una tilde "~". In Linux un nome di file che inizia con un punto "." é considerato "hidden" (nascosto/invisibile). Il passaggio dei parametri in DOS avviene mediante l'uso della slash "/" mentre in linux si usa il segno meno "-" singolo o doppio "--". E da notare che alcuni famosi programmi DOS (PKZIP e ARJ) usano già questa sintassi Unix.

Struttura delle directory

Il dos/windows automaticamente monta tutte le unità (floppy, hard-disk, cd-rom) usando le lettere dell'alfabeto come c:, d:, ecc. In Linux il disco principale contenente il "ROOT FileSystem" viene "montato" sotto la root directory, cioe "/". Gli altri file system, come cdrom e connessioni di rete possono essere "montati" in qualsiasi parte dello stesso, anche se lo standard dice che dovrebbero stare in una sottocartella del percorso "/mnt".

Guardando sotto "/" noterete una serie di cartelle di difficile interpretazione, tutto però ha una logica ben precisa. Linux è uno Unix ed è stato quindi creato come sistema multiutente. Le directory di primo livello /bin, /sbin, /root contengono i programmi necessari all avvio del sistema in modalita singola utente (solo amministratore). Le directory di secondo livello /usr/bin, /usr/sbin contengono tutti i programmi che possono essere eseguiti dagli utenti dalla macchina e non solo dall'amministratore. Gli utenti hanno una loro cartella personale sotto il percorso /home dove possono fare tutto quello che vogliono. Infatti l'utente "pluto" può compilare ed usare una sua versione dei programmi in /home/pluto/bin da /home/pluto/src. Infine /usr/local / e usata per preparare software da usare localmente.

Gestione delle Directory

Questi sono alcuni dei comandi per la gestione delle directory:

  • ls - elenca i file contenuti in una directory, cioè DIR
  • cd - come in DOS serve a cambiare la directory corrente
  • md - crea una sottodirectory, come MKDIR in DOS
  • rd - rimuove una sottodirectory, come RMDIR in DOS
  • cp - copia file o sottodirectory, come COPY in DOS
  • mv - muove o rinomina una sottodirectory, come MOVE in DOS
  • rm - rimuove file o sottodirectory, come DEL in DOS
  • pwd - restituisce il nome della directory corrente
  • du - dà indicazione sullo spazio usato dai file
  • df - dà indicazione sullo spazio libero sui dischi

Ecco alcune delle wildcard usate nei comandi Linux che manipolano files o directory:

  • ";" Permette di inserire più comandi in successione sulla stessa riga. Esempiop: ls /bin ; ls /sbin ; ls /tmp
  • "&" Esegue un comando in background. Esempio: httpd &
  • "|" pipe
  • "#" commento
  • "" indica alla shell che il comando che si sta scrivendo continua alla riga successiva.
  • "$" indica una variabile di sistema. Esempio: $PATH=/bin:/sbin
  • "?" wildcard (un carattere qualsiasi ma solo in quella posizione) Esempio: /bin/c?t
  • "*" wildcard (qualsiasi carattere tranne i file nascosti) Esempi: "ls gcc*" o "ls *.rpm" o "ls lib*.so.*"
  • ".*" wildcard (come '*' ma include anche i file nascosti)
  • "" wildcard (solo i caratteri specificati ed in quella posizione) Esempio: "ls Ccat", cerca per i files "Cat" e "cat"

Il comando "ls" ha la seguente sintassi: ls "opzioni" "percorso" Le opzioni principali sono:

  • "-a" elenca tutti i file includendo sottodirectory e file nascosti
  • "-d" mostra solo le directory
  • "-k" mostra le dimensioni in kilobyte
  • "-l" visualizza informazioni addizionali come le permission, le dimensioni e le date
  • "-o" utilizza colori diversi per i file e le directory
  • "-R" recurse subdirectory, come DIR /S in DOS
  • "-S" ordina i file secondo le dimensioni
  • "-t" ordina i file secondo la data di modifica
  • "-X" ordina i file per estensione

Se il risultato del comando "ls" supera le dimensioni dello schermo, è possibile usare la sintassi (equivalente a DIR /P in DOS): "ls | more" per visualizzare il risultato una pagina alla volta.

Il comando cd funziona come in DOS, tranne che in Linux si hanno due possibilità di utilizzo particolari:

  • "cd -", annulla l'ultimo comando "cd" ritornando alla precedente directory !
  • "cd ~", posiziona la shell nella home directory dell'utente attuale.

Completamento automatico del Path

Se la shell che state utilizzando è bash vi potrà tornare molto utile la feature del "completamento automatico del path" (Path Completion). In pratica mentre nella shell si sta digitando il nome di un percorso o di un file, la pressione del tasto TAB provoca il completamento automatico. Se ciò non è possibile perchè il nome digidato corrisponde a più di una combinazione verrà emesso un segnale di beep dopodichè un'ulteriore pressione del tasto TAB provoca la visualizzazione di tutti i file che corrispondono alla stringa sinora digidata. Molto spesso l'autore utilizza questa feature per visualizzare il contenuto di una directory. Ad esempio se sto cercando di visualizzare un file di cui non ricordo il nome nella mia home directory. Posso digitare: cat /home/agx e quindi premere due volte TAB per ottenere tutti i file della directory senza dover richiamare prima il comando ls. Posso poi digitare il nome del file desiderato senza dover riscrivere il comando "cat".

Il comando md è usato per creare directory. La sintassi è md /directory.

Il comando rd (o rmdir) , invece, rimuove una directory che deve essere già stata svuotata da tutti i file. La sintassi è rm /directory.

Il comando du visualizza lo spazio usato dalla directory, non quanto spazio è libero. La sintassi è : du {-a} {-s} {-m}

  • "-a" visualizza l'uso dello spazio per tutti i file del percorso specificato
  • "-s" visualizza l'uso dello spazio totale solo per il percorso specificato
  • "-m" visualizza le informazioni in Megabytes

Il comando df visualizza lo spazio libero sui dischi del sistema. Esempio: df -h


« previous↑ back» forward »