Если вы выполните ls -allкоманду, у некоторых файлов или каталогов будет год, а у других - время? Почему одни показывают год, а другие показывают время? Является ли время представителем времени создания файла?
Если вы выполните ls -allкоманду, у некоторых файлов или каталогов будет год, а у других - время? Почему одни показывают год, а другие показывают время? Является ли время представителем времени создания файла?
Ответы:
По умолчанию временные метки файлов перечислены в сокращенной форме с использованием даты, например «30 марта 2002 года», для не недавних отметок времени, а также даты без года и времени, например «30 марта 23:45», для последних отметок времени. Этот формат может меняться в зависимости от текущей локали, как описано ниже.
Отметка времени считается недавней, если ей менее шести месяцев, и она не датирована в будущем. Если отметка времени, датированная сегодня, не указана в последней форме, отметка времени будет в будущем, что означает, что у вас, вероятно, есть проблемы с перекосом часов, которые могут привести к поломке программ, например make, использующих отметки времени файла.
Источник: http://www.gnu.org/software/coreutils/manual/coreutils.html#Formatting-file-timestamps.
Проиллюстрировать:
$ 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
Представленное время является временем модификации. Обратите внимание, что ls -allэто то же самое ls -l -a, что отличается от ls --all. В lвашем примере нет причин использовать double . Если вы хотите увидеть время модификации для каждого файла, вы можете использовать ls -al --full-time.
lsдля обычного использования --time-style=long-isoможет быть более полезным. --full-timeпоказывает секунды, включая девять цифр (!) после десятичной точки, которая обычно не нужна.
--full-timeподразумевает -l, так что вы можете просто использовать ls -a --full-time.
Если дата / время, которое он пытается отобразить, произошли за последние шесть месяцев,
lsотображаются дата и время. Если это больше, чем шесть месяцев назад или в будущем, lsотображается дата и год.
Как указано в других ответах,
ls -llэквивалентно ls -l, иls -allэквивалентно ls -al, что эквивалентно ls -a -l, ls -l -aи ls -la.При -lвыборе этой опции lsотображается дата / время изменения файлов (включая каталоги, поскольку «все является файлом»), если только
-c также указывается, в этом случае он отображает время изменения, или-u также указывается, в этом случае он отображает время доступа.См. Ls (1) для получения дополнительной информации.
Эти выходные данные настроены на максимальное информационное содержание: когда время «достаточно близко» к текущему времени (не совсем точно, но я предполагаю, что в течение шести месяцев) год будет исключен, а вместо этого будет показано время дня. В противном случае год показан. Это значение по умолчанию в основном потому, что вы, вероятно, не слишком заботитесь о точном времени суток, когда что-то было изменено, если это время было много лет назад. В GNU coreutils lsесть --time-styleвозможность явно контролировать это.
Ты что-то понял? Это просто время в часах 20 октября, то есть сегодня, это означает, что оно покажет последний раз, когда вы изменили файл, но в другие дни, которые не являются сегодня, будет отображаться только дата без времени.
Оказывается, это не так, как ответил Томас. Я просто пытался использовать метод дедукции, не уверен, что в конце концов получу правильное заключение.
Aug 6 19:50 .config, Aug 6 19:48 VNCHOWTO.
-all. Обратите внимание, что последняя буква L является излишней, потому что онаallозначает не «все», а «-a(показать все файлы)» и-l(формат длинного списка). Все вместе,ls -alэто то же самое, что вы используете.