Добрый день. Заметил некоторую странность при выводе ls -l. В отдельных строках она пишет месяц, дату и время, а в других месяц, дату и год(как в первой строке). Кто сталкивался с подобным?
-rw-rw-r-- 1 alex alex 247 окт 8 2023 6_01.S
-rw-rw-r-- 1 alex alex 307 ноя 14 13:44 alert_number.s
-rw-rw-r-- 1 alex alex 2077 ноя 14 13:45 binsearch.s
-rw-rw-r-- 1 alex alex 3318 ноя 18 10:27 collatz02.s
-rw-rw-r-- 1 alex alex 3080 ноя 18 10:21 collatz03.s
-rw-rw-r-- 1 alex alex 992 ноя 18 10:23 collatz.s
Это не только ls, а все coreutils, и даже в логах такое. Я не разбирался детально, но на первый взгляд кажется, что это зависит от давности. Например, до полугода пишет подробно, а дальше менее.
Раньше к примеру(лет так 15 назад) я не замечал такого.
Это просто вы не замечали. Такое поведение требуется стандартом. Для старых файлов показывается год, но если файл достаточно новый, чтобы год был очевиден (6 месяцев или менее), вместо него показывается время.
Но погодите, у меня в выводе все файлы прошлого года(2023), а не текущего(ноябрь еще не наступил), но год указывается только для одного из них...это противоречит вашей логике
Повторяю: возраст 6 месяцев или менее. Ноябрь начался как раз 6 месяцев назад.
Такое поведение требуется стандартом. Для старых файлов показывается год, но если файл достаточно новый, чтобы год был очевиден (6 месяцев или менее), вместо него показывается время.
И все же(спасибо уже сказал), где вы это прочитали, - я о стандарте и про 6 месяцев, не кинете ссылочку?
The <date and time> field shall contain the appropriate date and timestamp of when the file was last modified. In the POSIX locale, the field shall be the equivalent of the output of the following date command:
date "+%b %e %H:%M"
if the file has been modified in the last six months, or:
date "+%b %e %Y"
(where two <space> characters are used between %e and %Y) if the file has not been modified in the last six months or if the modification date is in the future, except that, in both cases, the final <newline> produced by date shall not be included and the output shall be as if the date command were executed at the time of the last modification date of the file rather than the current time. When the LC_TIME locale category is not set to the POSIX locale, a different format and order of presentation of this field may be used.