Guida comandi Linux: gestire i files

Guida comandi Linux: gestire i files

di Pubblicato: 29 luglio 2017 0 commenti

Passiamo a vedere come gestire i file attraverso la linea di comando.

Il più conosciuto è sicuramente il comando ls, acronimo di list. Tra le opzioni sicuramente la più utilizzata è

ls -al

dove -a significa mostra i file nascosti ( quelli con il punto davanti, tipo .htaccess );
mentre -l significa mostra i file in modalità lista, o formato lungo.

In molte distribuzioni esiste un comando di tipo alias, che fa le veci di ls -al ed è

ll

Esistono molte opzioni di ls, alcune anche interessanti, l’elenco completo:


-a, --all                  non nasconde le voci che iniziano con .
-A, --almost-all           non elenca le voci . e ..
--author               con -l stampa l'autore di ogni file
-b, --escape               stampa escape in stile C per i caratteri non grafici
--block-size=SIZE      scale sizes by SIZE before printing them; e.g.,
'--block-size=M' prints sizes in units of
1,048,576 bytes; see SIZE format below
-B, --ignore-backups       do not list implied entries ending with ~
-c                         with -lt: sort by, and show, ctime (time of last
modification of file status information);
with -l: show ctime and sort by name;
otherwise: sort by ctime, newest first
-C                         list entries by columns
--color[=WHEN]         colorize the output; WHEN can be 'always' (default
if omitted), 'auto', or 'never'; more info below
-d, --directory            list directories themselves, not their contents
-D, --dired                generate output designed for Emacs' dired mode
-f                         do not sort, enable -aU, disable -ls --color
-F, --classify             append indicator (one of */=>@|) to entries
--file-type            likewise, except do not append '*'
--format=WORD          across -x, commas -m, horizontal -x, long -l,
single-column -1, verbose -l, vertical -C
--full-time            like -l --time-style=full-iso
-g                         come -l, ma non elenca il proprietario
--group-directories-first
group directories before files;
can be augmented with a --sort option, but any
use of --sort=none (-U) disables grouping
-G, --no-group             in a long listing, don't print group names
-h, --human-readable       with -l and/or -s, print human readable sizes
(e.g., 1K 234M 2G)
--si                   likewise, but use powers of 1000 not 1024
-H, --dereference-command-line
follow symbolic links listed on the command line
--dereference-command-line-symlink-to-dir
follow each command line symbolic link
that points to a directory
--hide=PATTERN         do not list implied entries matching shell PATTERN
(overridden by -a or -A)
--indicator-style=WORD  append indicator with style WORD to entry names:
none (default), slash (-p),
file-type (--file-type), classify (-F)
-i, --inode                print the index number of each file
-I, --ignore=PATTERN       do not list implied entries matching shell PATTERN
-k, --kibibytes            default to 1024-byte blocks for disk usage
-l                         usa un formato di elenco lungo
-L, --dereference          quando mostra le informazioni su un collegamento,
simbolico, mostra le informazioni sul file a cui si
riferisce invece che sul collegamento stesso
-m                         elenca le voci separandole con virgole
-n, --numeric-uid-gid      come -l, ma elenca gli id utente e di gruppo
-N, --literal              stampa i nomi grezzi (es.: non tratta in modo
speciale i caratteri di controllo)
-o                         come -l, ma non elenca le informazioni sul gruppo
-p, --indicator-style=slash
appende / come indicatore alle directory
-q, --hide-control-chars   print ? instead of nongraphic characters
--show-control-chars   show nongraphic characters as-is (the default,
unless program is 'ls' and output is a terminal)
-Q, --quote-name           enclose entry names in double quotes
--quoting-style=WORD   use quoting style WORD for entry names:
literal, locale, shell, shell-always,
shell-escape, shell-escape-always, c, escape
-r, --reverse              inverte il senso dell'ordinamento
-R, --recursive            elenca ricorsivamente le sottodirectory
-s, --size                 stampa la dimensione allocata in blocchi di ogni file
-S                         sort by file size, largest first
--sort=WORD            sort by WORD instead of name: none (-U), size (-S),
time (-t), version (-v), extension (-X)
--time=WORD            with -l, show time as WORD instead of default
modification time: atime or access or use (-u);
ctime or status (-c); also use specified time
as sort key if --sort=time (newest first)
--time-style=STYLE     with -l, show times using style STYLE:
full-iso, long-iso, iso, locale, or +FORMAT;
FORMAT is interpreted like in 'date'; if FORMAT
is FORMAT1<newline>FORMAT2, then FORMAT1 applies
to non-recent files and FORMAT2 to recent files;
if STYLE is prefixed with 'posix-', STYLE
takes effect only outside the POSIX locale
-t                         ordina secondo l'orario di modifica, prima il più recente
-T, --tabsize=COL          assume che le tabulazioni siano ad ogni COL invece di 8
-u                         with -lt: sort by, and show, access time;
with -l: show access time and sort by name;
otherwise: sort by access time, newest first
-U                         do not sort; list entries in directory order
-v                         natural sort of (version) numbers within text
-w, --width=COLS           set output width to COLS.  0 means no limit
-x                         list entries by lines instead of by columns
-X                         sort alphabetically by entry extension
-Z, --context              print any security context of each file
-1                         list one file per line.  Avoid '\n' with -q or -b
--help     mostra questo aiuto ed esce
--version  stampa le informazioni sulla versione ed esce

Conoscere la path

oramai gran parte delle shell mostrano dopo l’utente loggato e il nome macchina, la cartella partendo dalla propria home directory. Tuttavia talvolta è bene ricordare, o per esigenze di programmazione, trovare la path completa di una cartella. Per questo esiste il comando:

pwd

Creare

Passiamo a parti più creative, ovvero come creare file e cartelle. Partiamo dalle seconde che è più semplice.

mkdir nomecartella

andremo a creare, all’interno della cartella corrente una sottocartella, con i diritti di utenza definita dalla configurazione della bash e con i permessi utente che stiamo detenendo in quel momento. Quindi se stiamo impersonando root, e creiamo una cartella dentro la home directory di un utente, quello non riuscirà a cancellarla poiché non avrà i diritti per farlo. La gestione dei diritti e dei permessi sarà oggetto di un articolo specifico.

Abbiamo visto come creare una cartella / directory, per creare i file ci sono vari modi. Utilizzando touch:

touch prova.txt

questo comando crea il file se non esiste, altrimenti ne effettua un aggiornamento. Ad esempio apponendo l’opzione -m aggiornerà solo la data e ora del file, senza toccare il contenuto.

Un altro esempio:


echo " " > prova2.txt

In questo caso si utilizza una echo, dove potremo anche direttamente scrivere qualcosa, da poi apporre all’interno del file prova2.txt. Quella mostrata sopra è anche una tecnica per svuotare l’interno di un file già compilato.

Utilizzare editor, come vi, nano o midnight commander. Ma ve ne sono moltissimi altri. E’ il caso più comune poiché spesso i file vanno modificati, e proprio utilizzando quello di maggiore preferenza lo utilizzeremo per creare o modificare . L’editor più semplice è sicuramente nano. Se presente nel vostro sistema operativo sarà:

nano prova3.txt

sul fondo dello schermo saranno presenti i vari comandi per salvare, e/o uscire dal programma.

Distruggere.

Dopo la creazione la distruzione, il comando più utilizzato è sicuramente:

rm prova3.txt

Nel caso di una directory il comando sarà:

rm -frd nomecartella

dove -f forza la cancellazione anche se la cartella contiene dei file;
l’opzione -r è recursiva, cancella in modo recursivo il suo interno;
l’opzione -d indica che vogliamo cancellare una directory.

La cancellazione può anche avvalersi delle espressioni regolari, ad esempio se vogliamo cancellare tutti i file che iniziano per prov scriveremo:

rm prov*

altre opzioni di rm sono:


Uso: rm [OPZIONE]... [FILE]...
Remove (unlink) the FILE(s).

-f, --force           ignore nonexistent files and arguments, never prompt
-i                    prompt before every removal
-I                    prompt once before removing more than three files, or
when removing recursively; less intrusive than -i,
while still giving protection against most mistakes
--interactive[=WHEN]  prompt according to WHEN: never, once (-I), or
always (-i); without WHEN, prompt always
--one-file-system  quando rimuove ricorsivamente una gerarchia, salta ogni
directory che è su un file system differente da quello
indicato dall'argomento corrispondente della riga di comando
--no-preserve-root  do not treat '/' specially
--preserve-root   do not remove '/' (default)
-r, -R, --recursive   remove directories and their contents recursively
-d, --dir             remove empty directories
-v, --verbose         explain what is being done
--help     mostra questo aiuto ed esce
--version  stampa le informazioni sulla versione ed esce

Copiare e muovere.

Vediamo come copiare/clonare o muovere file e cartelle. Il comando più noto sicuramente è :

 cp prova.txt prova2.txt

Dove appunto diamo il comando con il file sorgente e destinazione. Possiamo per entrambi, o solo per uno, indicare la path qual'ora non si trovi nella posizione in cui siamo. CP è utilizzato per copiare anche le directory

cp -R /root/dirprova /usr/share/dirprova

oppure se sta nella stessa posizione

cp -R dirprova/ dirprova2/

l’opzione -R indica la recursività del contenuto, anche se esso è vuoto.

Altre opzioni di cp sono:


Uso: cp [OPZIONE]... [-T] ORIGINE DESTINAZIONE
o: cp [OPZIONE]... ORIGINE... DIRECTORY
o: cp [OPZIONE]... -t DIRECTORY ORIGINE...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

Mandatory arguments to long options are mandatory for short options too.
-a, --archive                come -dR --preserve=all
--attributes-only        non copia i dati del file, solo gli attributi
--backup[=TIPO]          fa il backup di ogni file di destinazione esistente
-b                           come --backup ma non accetta un argomento
--copy-contents          quando agisce ricorsivamente copia il contenuto dei file speciali
-d                           come --no-dereference --preserve=links
-f, --force                  if an existing destination file cannot be
opened, remove it and try again (this option
is ignored when the -n option is also used)
-i, --interactive            prompt before overwrite (overrides a previous -n
option)
-H                           follow command-line symbolic links in SOURCE
-l, --link                   crea i collegamenti fisici dei file invece di copiarli
-L, --dereference            segue sempre i collegamenti simbolici in ORIGINE
-n, --no-clobber             non sovrascrive un file esistente (prevale su
una precedente opzione -i)
-P, --no-dereference         non segue mai i collegamenti simbolici in ORIGINE
-p                           come --preserve=mode,ownership,timestamps
--preserve[=ELENCO_ATTR] preserva gli attributi specificati (predefinito:
mode,ownership,timestamps), se possibile
gli attributi addizionali: context, links, xattr, all
--no-preserve=ELENCO_ATTR non conserva gli attributi specificati
--parents                utilizza il nome completo della sorgente sotto DIRECTORY
-R, -r, --recursive          copia le directory ricorsivamente
--reflink[=WHEN]         controlla le copie clone/CoW copies. Consultare in basso
--remove-destination     rimuove ogni file di destinazione esistente
prima di cercare di aprirlo (al contrario
con --force)
--sparse=WHEN            controlla la creazione di file sparsi. Consultare in basso
--strip-trailing-slashes  rimuove i caratteri "/" alla fine di ogni parametro
ORIGINE
-s, --symbolic-link          crea collegamenti simbolici invece di copiare
-S, --suffix=SUFFISSO        prevale sul normale suffisso dei backup
--target-directory=DIRECTORY  copia ogni ORIGINE in DIRECTORY
-T, --no-target-directory    tratta DEST come un file normale
-u, --update                 copia solo quando ORIGINE è più recente del
file di destinazione o questo è mancante
-v, --verbose                spiega cosa sta facendo
-x, --one-file-system        rimane su questo file system
-Z                           set SELinux security context of destination
file to default type
--context[=CTX]          like -Z, or if CTX is specified then set the
SELinux or SMACK security context to CTX
--help     mostra questo aiuto ed esce
--version  stampa le informazioni sulla versione ed esce

Per muovere un file invece andremo ad utilizzare il comando:

mv prova.txt prova2.txt

in questo caso, non avendo indicato nessuna path di destinazione, il comando muovi ha l’effetto della funzione rinomina che vedremo più avanti nell’articolo. Generalmente muovi viene seguito dalla path di destinazione:

mv prova.txt /usr/share/prova.txt

il comando muovi funziona anche per le directory se utilizzato con l’opzione -t. Altre opzioni del comando mv sono:


Uso: mv [OPZIONE]... [-T] ORIGINE DESTINAZIONE
o: mv [OPZIONE]... ORIGINE... DIRECTORY
o: mv [OPZIONE]... -t DIRECTORY ORIGINE...
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

Mandatory arguments to long options are mandatory for short options too.
--backup=[CONTROL]       fa un backup di ogni file di destinazione esistente
-b                           come --backup ma non accetta argomenti
-f, --force                  sovrascrive le destinazioni esistenti senza chiedere
-i, --interactive            chiede prima di sovrascrivere
-n, --no-clobber             non sovrascrive un file esistente
Se viene specificato più di uno tra -i, -f, -n, solo l'ultimo ha effetto.
--strip-trailing-slashes  rimuove gli slash dalla fine di ogni argomento
ORIGINE
-S, --suffix=SUFFISSO        cambia il normale suffisso dei backup
-t, --target-directory=DIRECTORY  move all SOURCE arguments into DIRECTORY
-T, --no-target-directory    treat DEST as a normal file
-u, --update                 move only when the SOURCE file is newer
than the destination file or when the
destination file is missing
-v, --verbose                explain what is being done
-Z, --context                set SELinux security context of destination
file to default type
--help     mostra questo aiuto ed esce
--version  stampa le informazioni sulla versione ed esce

 

 

 

 

 

Guida comandi Linux - Sommario

Ti è stato utile questo articolo?
Considera una piccola donazione: Bitcoin 35CGcJ2NzV9oUHmJwGzBp8QVRoWcaDdCiz oppure Paypal

Vuoi dire o aggiungere qualcosa?

sezione commenti aperta al pubblico

Non ci sono ancora commenti!

Puoi essere il primo a commentare.

Rispondi