Se si emette il ls -all
comando alcuni file o directory hanno l'anno e alcuni hanno il tempo? Perché alcuni mostrano l'anno, mentre altri mostrano l'ora? Il tempo è rappresentativo dell'ora in cui il file è stato creato?
Se si emette il ls -all
comando alcuni file o directory hanno l'anno e alcuni hanno il tempo? Perché alcuni mostrano l'anno, mentre altri mostrano l'ora? Il tempo è rappresentativo dell'ora in cui il file è stato creato?
Risposte:
Per impostazione predefinita, i timestamp dei file sono elencati in forma abbreviata, utilizzando una data come "30 marzo 2002" per i timestamp non recenti e una data senza anno e l'ora come "30 mar 23:45" per i timestamp recenti. Questo formato può cambiare in base alle impostazioni internazionali correnti, come indicato di seguito.
Un timestamp è considerato recente se ha meno di sei mesi e non è datato in futuro. Se un timestamp datato oggi non è elencato in forma recente, il timestamp è in futuro, il che significa che probabilmente hai problemi di inclinazione dell'orologio che potrebbero interrompere i programmi come fare affidamento sui timestamp dei file.
Fonte: http://www.gnu.org/software/coreutils/manual/coreutils.html#Formatting-file-timestamps
Illustrare:
$ for i in {1..7}; do touch -d "$i months ago" file$i; done
$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Sep 21 02:38 file1
-rw-r--r-- 1 terdon terdon 0 Aug 21 02:38 file2
-rw-r--r-- 1 terdon terdon 0 Jul 21 02:38 file3
-rw-r--r-- 1 terdon terdon 0 Jun 21 02:38 file4
-rw-r--r-- 1 terdon terdon 0 May 21 02:38 file5
-rw-r--r-- 1 terdon terdon 0 Apr 21 2015 file6
-rw-r--r-- 1 terdon terdon 0 Mar 21 2015 file7
Il tempo rappresentato è il tempo di modifica. Si noti che ls -all
è la stessa cosa ls -l -a
, che è diversa da ls --all
. Non c'è motivo di usare double l
nel tuo esempio. Se vuoi vedere il tempo di modifica per ogni file, puoi usare ls -al --full-time
.
ls
per un uso normale --time-style=long-iso
potrebbe essere più utile. --full-time
mostra i secondi tra cui nove cifre (!) dopo il punto decimale che normalmente non è necessario.
--full-time
implica -l
, quindi potresti semplicemente usare ls -a --full-time
.
Se la data / ora che sta tentando di visualizzare è negli ultimi sei mesi,
ls
visualizza la data e l'ora. Se è più lungo di sei mesi - o se è in futuro - ls
visualizza la data e l'anno.
Come indicato nelle altre risposte,
ls -ll
è equivalente a ls -l
, els -all
è equivalente a ls -al
, che è equivalente a ls -a -l
, ls -l -a
e ls -la
.Con l' -l
opzione, ls
visualizza la data / ora di modifica dei file (comprese le directory, poiché "tutto è un file"), a meno che
-c
è anche specificato, nel qual caso visualizza l'ora di cambio, oppure-u
è anche specificato, nel qual caso visualizza il tempo di accesso.Vedi ls (1) per maggiori informazioni.
Questo output è ottimizzato per il massimo contenuto di informazioni: quando il tempo è "abbastanza vicino" all'ora corrente (non del tutto sicuro, ma suppongo che entro sei mesi) l'anno viene eliso e viene invece mostrata l'ora del giorno. Altrimenti, viene mostrato l'anno. Questo è il valore predefinito principalmente perché probabilmente non ti interessa molto del momento esatto in cui qualcosa è stato modificato, se quel tempo è stato anni fa. I coreutils GNU ls
hanno la --time-style
possibilità di controllarlo esplicitamente.
Hai realizzato qualcosa? Apparirà solo l'ora del 20 ottobre, che è oggi, ciò significa che mostrerà l'ultima volta che hai modificato il file, ma, in altri giorni che non lo sono oggi, mostrerà solo la data senza l'ora.
Si scopre che non è questo, come ha risposto Thomas. Ho appena provato a usare il metodo della detrazione, non ho la certezza di avere una conclusione corretta dopo tutto.
Aug 6 19:50 .config
, Aug 6 19:48 VNCHOWTO
.
-all
. Nota che l'ultima L è superflua, perchéall
non sta per la parola "tutto" ma per-a
(mostra tutti i file) e-l
(formato elenco lungo). Tutti insieme,ls -al
è lo stesso di quello che stai usando.