Dlaczego „ls-all” pokazuje czas dla niektórych plików, a tylko rok dla innych?
32
Jeśli wydasz ls -allpolecenie, niektóre pliki lub katalogi mają rok, a niektóre mają czas? Dlaczego jedni pokazują rok, a inni czas? Czy czas jest reprezentatywny dla czasu utworzenia pliku?
Używasz -all. Zauważ, że ostatnie L jest zbędne, ponieważ allnie oznacza słowa „wszystkie”, ale oznacza -a(pokaż wszystkie pliki) i -l(format długiej listy). Wszystko razem ls -aljest takie samo jak to, czego używasz.
fedorqui
Odpowiedzi:
35
Domyślnie znaczniki czasu plików są wymienione w formie skróconej, przy użyciu daty takiej jak „30 marca 2002 r.” W przypadku nieaktualnych znaczników czasu oraz daty bez roku i godziny jak „30 marca 23:45” w przypadku ostatnich znaczników czasu. Ten format może się zmienić w zależności od bieżących ustawień regionalnych, jak opisano poniżej.
Znacznik czasu uważa się za najnowszy, jeśli ma mniej niż sześć miesięcy i nie jest datowany w przyszłości. Jeśli znacznik czasu z dnia dzisiejszego nie jest wymieniony w najnowszej formie, znacznik czasu jest w przyszłości, co oznacza, że prawdopodobnie masz problemy z przesunięciem zegara, które mogą zepsuć programy, takie jak uzależnienie plików od znaczników czasu.
Warto zauważyć, że czasy w przyszłości pokażą także rok, a nie czas. Może się to zdarzyć, jeśli wymienisz pliki między hostami, na których zegar nie jest zsynchronizowany.
kasperd
24
Przedstawiony czas to czas modyfikacji. Pamiętaj, że ls -allto to samo ls -l -a, co różni się od ls --all. W ltwoim przykładzie nie ma powodu, aby używać podwójnego . Jeśli chcesz zobaczyć czas modyfikacji każdego pliku, możesz użyć ls -al --full-time.
W GNU lsdo normalnego użytku --time-style=long-isomoże być bardziej przydatne. --full-timepokazuje sekundy, w tym dziewięć cyfr (!) po kropce dziesiętnej, co zwykle nie jest potrzebne.
pabouk
1
--full-timeoznacza -l, że możesz po prostu użyć ls -a --full-time.
kasperd
6
Jeśli data / godzina, którą próbuje wyświetlić, przypadają w ciągu ostatnich sześciu miesięcy,
lswyświetla datę i godzinę. Jeśli minęło więcej niż sześć miesięcy - lub jeśli będzie w przyszłości - lswyświetla datę i rok.
Jak stwierdzono w innych odpowiedziach,
ls -lljest równoważne z ls -li
ls -alljest równa ls -al, co jest równoważne ls -a -l, ls -l -ai ls -la.
Z tą -lopcją lswyświetla datę / godzinę modyfikacji plików (w tym katalogów, ponieważ „wszystko jest plikiem”), chyba że
-c jest również określony, w którym to przypadku wyświetla czas zmiany, lub
-u jest również określony, w którym to przypadku wyświetla czas dostępu.
To wyjście jest dostrojone pod kątem maksymalnej zawartości informacji: kiedy czas jest „wystarczająco blisko” do aktualnego czasu (nie do końca pewny, ale zgaduję w ciągu sześciu miesięcy), rok upływa, a zamiast tego pokazywana jest pora dnia. W przeciwnym razie wyświetlany jest rok. Jest to ustawienie domyślne, ponieważ prawdopodobnie nie przejmujesz się zbytnio dokładną porą dnia, kiedy coś zostało zmodyfikowane, jeśli to lata temu. Coreutils GNU lsma --time-styleopcję, aby to jawnie kontrolować.
Czy zdałeś sobie sprawę z czegoś? Pojawia się godzina 20 października, czyli dzisiaj, oznacza to, że pokaże ostatnią modyfikację pliku, ale w inne dni, które nie są dzisiaj, pokaże tylko datę bez godziny.
Okazuje się, że tak nie jest, jak odpowiedział Thomas. Po prostu próbowałem zastosować metodę dedukcyjną, nie mając jednak pewności, że wyciągam prawidłowe wnioski.
-all
. Zauważ, że ostatnie L jest zbędne, ponieważall
nie oznacza słowa „wszystkie”, ale oznacza-a
(pokaż wszystkie pliki) i-l
(format długiej listy). Wszystko razemls -al
jest takie samo jak to, czego używasz.Odpowiedzi:
Źródło: http://www.gnu.org/software/coreutils/manual/coreutils.html#Formatting-file-timestamps
Ilustrować:
źródło
Przedstawiony czas to czas modyfikacji. Pamiętaj, że
ls -all
to to samols -l -a
, co różni się odls --all
. Wl
twoim przykładzie nie ma powodu, aby używać podwójnego . Jeśli chcesz zobaczyć czas modyfikacji każdego pliku, możesz użyćls -al --full-time
.źródło
ls
do normalnego użytku--time-style=long-iso
może być bardziej przydatne.--full-time
pokazuje sekundy, w tym dziewięć cyfr (!) po kropce dziesiętnej, co zwykle nie jest potrzebne.--full-time
oznacza-l
, że możesz po prostu użyćls -a --full-time
.Jeśli data / godzina, którą próbuje wyświetlić, przypadają w ciągu ostatnich sześciu miesięcy,
ls
wyświetla datę i godzinę. Jeśli minęło więcej niż sześć miesięcy - lub jeśli będzie w przyszłości -ls
wyświetla datę i rok.Jak stwierdzono w innych odpowiedziach,
ls -ll
jest równoważne zls -l
ils -all
jest równals -al
, co jest równoważnels -a -l
,ls -l -a
ils -la
.Z tą
-l
opcjąls
wyświetla datę / godzinę modyfikacji plików (w tym katalogów, ponieważ „wszystko jest plikiem”), chyba że-c
jest również określony, w którym to przypadku wyświetla czas zmiany, lub-u
jest również określony, w którym to przypadku wyświetla czas dostępu.Aby uzyskać więcej informacji, zobacz ls (1) .
źródło
To wyjście jest dostrojone pod kątem maksymalnej zawartości informacji: kiedy czas jest „wystarczająco blisko” do aktualnego czasu (nie do końca pewny, ale zgaduję w ciągu sześciu miesięcy), rok upływa, a zamiast tego pokazywana jest pora dnia. W przeciwnym razie wyświetlany jest rok. Jest to ustawienie domyślne, ponieważ prawdopodobnie nie przejmujesz się zbytnio dokładną porą dnia, kiedy coś zostało zmodyfikowane, jeśli to lata temu. Coreutils GNU
ls
ma--time-style
opcję, aby to jawnie kontrolować.źródło
Czy zdałeś sobie sprawę z czegoś? Pojawia się godzina 20 października, czyli dzisiaj, oznacza to, że pokaże ostatnią modyfikację pliku, ale w inne dni, które nie są dzisiaj, pokaże tylko datę bez godziny.
Okazuje się, że tak nie jest, jak odpowiedział Thomas. Po prostu próbowałem zastosować metodę dedukcyjną, nie mając jednak pewności, że wyciągam prawidłowe wnioski.
źródło
Aug 6 19:50 .config
,Aug 6 19:48 VNCHOWTO
.