Если вы выполните 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
это то же самое, что вы используете.