Come utilizzare il comando ls per elencare file e directory su Linux

Come utilizzare il comando ls per elencare file e directory su Linux

Punti chiave

  • Il comando ls è un potente strumento che può essere utilizzato per elencare file e directory.
  • Esistono molte opzioni e parametri utili per ls che possono migliorarne la funzionalità e renderlo più comodo da usare.
  • ls -la è un buon comando da usare se vuoi vedere tutto in una cartella.

Usiamo il lscomando Linux ogni giorno senza pensarci. È un peccato. Prestagli un po’ di attenzione e troverai molte opzioni utili, incluse alcune che dovresti aggiungere al tuo arsenale da riga di comando.

ls Elenca file e directory

Il lscomando è probabilmente il primo che incontra la maggior parte degli utenti Linux. Quelli di noi che frequentano la riga di comando la usano giorno dopo giorno senza nemmeno pensarci. Ciò potrebbe spiegare perché in questo comando c’è di più di quanto la maggior parte degli utenti creda. Elenchiamo i file con esso per vedere cosa c’è in una directory. Elenchiamo i file in formato lungo quando vogliamo esaminare le autorizzazioni su un file. Oltre a ciò, riceve poca considerazione.

Il lscomando è uno di quei comandi con una ricchezza di opzioni. Forse questo è parte del problema. Ci sono così tante opzioni, come selezionarle per trovare quelle utili? E dopo averli trovati, come li ricordi?

Utili permutazioni del lscomando con le relative stringhe di opzioni e parametri sono i candidati perfetti per gli alias . In effetti, nella maggior parte delle distribuzioni, quello che consideri il lscomando “nudo” è in realtà un alias. Tra l’altro il tipo lstype command can be used to show the underlying definition of aliases. Let's look at the definition of ls:

digitare ls in una finestra di terminale

I --color=auto parametri vengono inclusi automaticamente ogni volta che si utilizza il lscomando. Questo è ciò che fornisce i diversi colori per i diversi tipi di file negli elenchi.

Elenchi ls semplici

Tutti coloro che hanno trascorso un po’ di tempo utilizzando il terminale Linux sanno che, per impostazione predefinita, lselenca i file e le directory nella directory corrente.

ls

ls in una finestra di terminale

Se desideri che la tua inserzione venga prodotta in un’unica colonna, utilizza l’ -1opzione (un file per riga):

ls -1

ls -1 in una finestra di terminale

Discuteremo di quel nome di file dall’aspetto strano in cima all’elenco tra un minuto.

Utilizzo di ls su directory diverse

Per lselencare i file in una directory diversa da quella corrente, passare il percorso della directory a lssulla riga di comando. Puoi anche passare più di una directory a lse averle elencate una dopo l’altra. Qui chiediamo lsdi elencare i file in due directory, una chiamata “Help” e l’altra chiamata “gc_help”.

ls Help gc_help

ls Help gc_help in una finestra di terminale

Dopo lsaver elencato il contenuto della prima directory elenca il contenuto della seconda. Stampa il nome di ciascuna directory mentre le elabora:

Nome della directory visualizzata da ls prima che i contenuti vengano elencati.

Utilizzo di modelli di file

Per elencare selettivamente un insieme di file, utilizzare la corrispondenza dei modelli. Il punto interrogativo “ ?“rappresenterà qualsiasi singolo carattere e l’asterisco “ *“rappresenterà qualsiasi stringa di caratteri. Per elencare file o directory i cui nomi iniziano con “ip_” utilizzare questo formato:

ls ip_*

ls ip_* in una finestra di terminale

Per elencare i file con estensione “.c”, utilizzare questo formato:

ls *.c

ls *.c in una finestra di terminale

È inoltre possibile utilizzare lscon grepe utilizzare le funzionalità di corrispondenzagrep dei modelli di . Cerchiamo eventuali file che hanno la stringa “_pin_” nel nome:

ls | grep _pin_

ls |  grep _pin_ in una finestra di terminale

È quasi come usarlo lsda solo, con due caratteri jolly:

ls | grep _pin_ ls *_pin_*

ls |  grep _pin_ in una finestra di terminale

Perché quasi lo stesso? Nota i diversi layout. grepforza l’output a un singolo nome file per formato riga.

Caratteri non stampabili

È possibile ritrovarsi con un nome file che contiene un carattere non stampabile o di controllo . In genere questo può accadere quando espandi un archivio che hai scaricato dal web o recuperi un repository git e l’autore originale ha commesso un errore durante la creazione di un file ma non lo ha individuato.

Il nostro strano file è uno di questi:

Nome file con carattere di controllo in una finestra di terminale

Se lo guardiamo nel browser dei file e premiamo “F2″ per rinominarlo, i caratteri non stampabili sono rappresentati da uno strano simbolo.

Nome del file con un carattere di controllo al suo interno, nella finestra di dialogo di ridenominazione

Puoi usare l’ -bopzione (escape) per permetterti di vedere cosa contiene effettivamente il nome del file. Questa opzione fa sì lsche vengano utilizzate le sequenze di escape del linguaggio di programmazione C per rappresentare i caratteri di controllo.

ls -b a*

ls -ba* in una finestra di terminale

Si scopre che il personaggio misterioso è un carattere di nuova riga, rappresentato in C come “\n”.

Ignorare i file

Per omettere alcuni file da un elenco, utilizzare l’ --hideopzione. Supponiamo che tu non voglia vedere i file di backup “.bak” nell’elenco. Potresti usare questo comando:

ls ls --hide=*.bak

ls --hide=*.bak in una finestra di terminale

I file “.bak” non sono inclusi nel secondo elenco.

L’elenco in formato lungo

L’ -lopzione (elenco lungo) consente lsdi fornire informazioni dettagliate su ciascun file.

ls -l

ls -l in una finestra di terminale

Ci sono molte informazioni qui, quindi esaminiamole.

La prima cosa lsche viene visualizzata è la dimensione totale di tutti i file nell’elenco. Quindi ogni file o directory viene visualizzato su una riga da sola.

La prima serie di dieci lettere e trattini indica il tipo di file, il proprietario, il gruppo e altre autorizzazioni del file.

Il primo carattere rappresenta il tipo di file. Sarà uno di:

  • : un file normale.
  • b : un file speciale a blocchi.
  • c : un file di caratteri speciali.
  • d : una directory.
  • l : un collegamento simbolico.
  • n : un file di rete.
  • p : una pipe con nome.
  • s : una presa.

I successivi nove caratteri sono tre gruppi di tre caratteri visualizzati in modo contiguo. Ciascun gruppo di tre rappresenta le autorizzazioni di lettura, scrittura ed esecuzione, in questo ordine. Se l’autorizzazione viene concessa, sarà presente un r, w, o x. Se l’autorizzazione non viene concessa, -viene visualizzato un trattino.

Il primo set di tre caratteri rappresenta le autorizzazioni per il proprietario del file. Il secondo set di tre autorizzazioni è riservato ai membri del gruppo, mentre l’ultimo set di tre autorizzazioni riguarda gli altri.

A volte il permesso di esecuzione per il proprietario è rappresentato da un file s. Questa è la parte setuid . Se è presente, significa che il file viene eseguito con i privilegi del proprietario del file, non dell’utente che esegue il file.

Il permesso di esecuzione per il gruppo può anche essere un file s. Questo è il bit setgid . Quando viene applicato a un file, significa che il file verrà eseguito con i privilegi del gruppo dell’autore. Se utilizzato con una directory, tutti i file creati al suo interno prenderanno i permessi di gruppo dalla directory in cui vengono creati, non dall’utente che sta creando il file.

Il permesso di esecuzione per gli altri a volte può essere rappresentato da un file t. Questa è la parte appiccicosa . Di solito viene applicato alle directory. Se viene impostato, indipendentemente dai privilegi di scrittura ed eseguibili impostati sui file nella directory, solo il proprietario del file, il proprietario della directory o l’utente root può rinominare o eliminare i file nella directory.

Un uso comune dello sticky bit è su cartelle come “/tmp”. Questo può essere scritto da tutti gli utenti del computer. La parte permanente della directory garantisce che gli utenti e i processi avviati dagli utenti possano solo rinominare o eliminare i propri file temporanei.

Possiamo vedere la parte appiccicosa nella directory “/tmp”. Notare l’uso dell’opzione -d(directory). Ciò fa sì lsche vengano riportati i dettagli della directory. Senza questa opzione, lsriporterà i file all’interno della directory.

ls -l -d /tmp

ls -l -d /tmp in una finestra di terminale

Il numero che segue le autorizzazioni è il numero di collegamenti fisici al file o alla directory. Per un file, di solito è uno, ma se vengono creati altri collegamenti reali, questo numero aumenterà. Una directory in genere ha almeno due collegamenti reali. Uno è un collegamento a se stesso e l’altro è la voce nella directory principale.

Successivamente vengono visualizzati il ​​nome del proprietario e del gruppo. Sono seguiti dalla dimensione del file e dalla data dell’ultima modifica del file. Infine viene fornito il nome del file.

Dimensioni dei file leggibili dall’uomo

Avere le dimensioni dei file in byte non è sempre conveniente. Per visualizzare le dimensioni dei file nelle unità più appropriate (kilobyte, megabyte, ecc.) utilizzare l’ -hopzione (leggibile dall’uomo):

ls -l -h

ls -l -h in una finestra di terminale

Visualizzazione dei file nascosti

Per vedere i file nascosti, usa l’ -aopzione (tutti):

ls -l -a

ls -l -a in una finestra di terminale

Le due voci “.”e “..”rappresentano rispettivamente la directory corrente e la directory principale. Un file chiamato “.base_settings” è ora visibile per la prima volta.

Omettendo. E. . dagli elenchi

Se non vuoi che la tua lista sia ingombrata dalle voci “.” e “..”, ma vuoi vedere i file nascosti, usa l’ -Aopzione (quasi tutte):

ls -l -A

ls -l -A in una finestra di terminale

Il file nascosto è ancora elencato, ma le voci “.” e “..” vengono soppresse.

Elencare le directory in modo ricorsivo

Per lselencare i file in tutte le sottodirectory utilizzare l’ -Ropzione (ricorsiva).

ls -l -R

ls -l -R in una finestra di terminale

lssi fa strada attraverso l’intero albero delle directory sotto la directory iniziale ed elenca i file in ciascuna sottodirectory.

output di ls che elenca ricorsivamente le directory

Visualizzazione dell’UID e del GID

Per visualizzare l’ID utente e l’ID gruppo invece del nome utente e del gruppo, utilizzare l’ -nopzione (uid e gid numerici).

ls -n

ls -n in una finestra di terminale

Ordinamento degli elenchi

Puoi ordinare l’elenco per estensione, dimensione del file o ora di modifica. Non è necessario utilizzare queste opzioni con il formato di elenco lungo, ma di solito ha senso farlo. Se stai ordinando per dimensione del file, è opportuno vedere le dimensioni del file nell’elenco. Quando ordini per tipo di estensione, il formato dell’elenco lungo non è così importante.

Per ordinare per estensione, utilizzare l’ -Xopzione (ordina per estensione).

ls -X -1

ls -X -1 in una finestra di terminale

Le directory vengono elencate per prime (nessuna estensione), poi seguono le altre in ordine alfabetico, in base alle estensioni.

Per ordinare in base alla dimensione del file, utilizzare l’ -Sopzione (ordina per dimensione del file).

ls -l -h -S

ls -l -h -S in una finestra di terminale

L’ordinamento va dal più grande al più piccolo.

Per ordinare l’elenco in base all’ora di modifica, utilizza l’ -topzione (ordina per ora di modifica).

ls -l -t

ls -l -t in una finestra di terminale

L’elenco è ordinato in base all’ora di modifica.

Se l’ora di modifica del file rientra nell’anno corrente, le informazioni visualizzate sono il mese, il giorno e l’ora. Se la data di modifica non rientra nell’anno corrente, le informazioni visualizzate sono il mese, il giorno e l’anno.

Un modo rapido per ottenere i file più recenti e quelli più vecchi in una directory è utilizzare lsi comandi heade .tail

Per ottenere il file o la directory più recente, utilizzare questo comando:

ls -t | head -1

Per ottenere il file o la directory più vecchi, utilizzare questo comando:

ls -t | tail -1

ls -t |  head -1 in una finestra di terminale

Per invertire l’ordinamento

Per invertire uno qualsiasi degli ordinamenti, utilizzare l’ -ropzione (inversa).

ls -l -h -S -r

ls -l -h -S -r in una finestra di terminale

L’elenco è ora ordinato dal file più piccolo a quello più grande.

E c’è di più

Controlla la pagina man di ls, ci sono molte altre opzioni . Alcuni di essi soddisfano casi d’uso un po’ oscuri, ma di tanto in tanto sarai felice di conoscerli.

Hai bisogno di vedere i timestamp dei file con la massima precisione che Linux può fornire? Utilizza l’opzione a tempo pieno:

ls --full-time

Forse vuoi vedere il numero di inode dei file? Usa l’opzione inode:

ls -i

Stai lavorando su uno schermo monocromatico e vuoi eliminare ogni rischio di confondere file con directory e collegamenti? Utilizza l’opzione di classificazione e lsaggiungerà uno di questi a ciascuna voce dell’elenco:

  • / : una directory.
  • @ : Un collegamento simbolico.
  • | : Una pipa con nome.
  • = : Una presa.
  • * : un file eseguibile

ls -F

Scava un po’. Scoprirai che lsè una vena ricca e continuerai a scovare gemme.

Comandi di Linux

File

tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · guarda · stringhe · digita · rinomina · zip · decomprimi · monta · umount · installa · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · converti · rclone · shred · srm · scp · gzip · chattr · taglia · trova · umask · wc · tr

Processi

alias · schermo · top · nice · renice · progresso · strace · systemd · tmux · chsh · cronologia · at · batch · gratuito · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · mignolo · lsof · vmstat · timeout · wall · · kill · sleep · sudo · su · time · groupadd · usermod · gruppi · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · data · bg · fg · pidof · nohup · pmap

Rete

netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *