Как изменить формат отображения даты в утилитах командной строки Linux на 31.XII.23?

Как настроить командную строку Linux для печати даты в формате "число.римский-месяц.год" в программах, использующих локаль, таких как ls, watch и date? И как можно упростить эту настройку, используя экспорт переменной среды LC_TIME или создание собственной локали?
  • 7 декабря 2023 г. 12:09
Ответы на вопрос 2
Чтобы изменить формат отображения даты в утилитах командной строки Linux на "число.римский-месяц.год", вам нужно настроить локальную переменную LC_TIME на нужное значение формата даты. 

Первый способ - это использование экспорта переменной среды LC_TIME. Вы можете выполнить следующую команду в терминале Linux: 

```
export LC_TIME=ru_RU.UTF-8
```

После этого, утилиты командной строки будут использовать формат даты, заданный в локали ru_RU.UTF-8. Теперь, когда вы выполните команды ls, watch или date, вы увидите дату в формате "число.римский-месяц.год".

Однако, если вы хотите создать собственную локаль с нужным форматом даты, вам нужно будет изменить файлы локалей в системе Linux.

1. Создайте каталог для своей локали. Например:

```
sudo mkdir /usr/share/locale/ru_RU_myformat
```

2. Скопируйте файл локали по умолчанию в созданный каталог:

```
sudo cp /usr/share/i18n/locales/ru_RU /usr/share/locale/ru_RU_myformat
```

3. Откройте скопированный файл в редакторе:

```
sudo nano /usr/share/locale/ru_RU_myformat
```

4. Найдите и отредактируйте строку, которая содержит формат даты. Например:

```
d_t_fmt "<ваш формат даты>"
```

5. Сохраните изменения и закройте файл.

6. Сгенерируйте локальные данные для своей локали:

```
sudo localedef -f UTF-8 -i /usr/share/locale/ru_RU_myformat ru_RU_myformat.UTF-8
```

7. Экспортируйте переменную LC_TIME для использования вашей новой локали:

```
export LC_TIME=ru_RU_myformat.UTF-8
```

Теперь утилиты командной строки будут использовать формат даты из вашей собственной локали. Вы сможете увидеть даты в нужном вам формате, выполнив команды ls, watch или date.
изменить строчку в /usr/share/i18n/locales/ru_RU в соответствии с man date (но изменения затрутся при обновлении пакета локалей)либо сделать копию, изменить в ней и поменять локалку в системе.d_t_fmt   "%a %d %b %Y %T"date_fmt  "%a %d %b %Y %T %Z"d_fmt     "%d.%m.%Y"t_fmt     "%T"
Похожие вопросы