`date' без параметров печатает текущее время и дату, с
формате директивы `%c' (описанной ниже). Синтаксис:
date [ПАРАМЕТР]... [+ФОРМАТ]
date [-u|--utc|--universal] [ MMDDHHMM[[CC]YY][.SS] ]
Если дан аргумент, начинающийся с `+', `date' печатает текущее
время и дату (или время и дату указанные параметром `--date', см. ниже)
в формате, определяемом этим аргументом, который такой же как в функции
`strftime'. Исключая директивы, начинающиеся с `%', символы в строке
формата печатаются без изменений. Диретивы описаны ниже.
секунды с начала эпохи, т.е. 1 января 1970 00:00:00 UTC (расширение
GNU). Заметьте, что это значение -- число секунд между началом эпохи и
текущей датой, определенной системным вызовом localtime. Оно не меняется
параметром `--date'.
`%S'
секунды (00...61)
`%T'
время, 24-часовое (чч:мм:сс)
`%X'
местное представление времени (%Ч:%М:%С)
`%z'
числовой часовой пояс в стиле RFC-822 (т.е. -0600 или +0100), или
ничего, если чясовой пояс неопределим. Это значение отражает текущий
часовой пояс. Оно не изменяется параметром `--date'.
`%Z'
часовой пояс или ничего, если часовой пояс неопределим. Заметьте,
что это значение отражает текущий часовой пояс. Оно не изменяется параметром
`--date'.
местное полное название дня недели, переменная длина (Sunday...Saturday)
`%b'
местное сокращение для месяца (Jan...Dec)
`%B'
местое полное название месяца, переменная длина (January...December)
`%c'
местная дата и время (Sat Nov 04 12:02:33 EST 1989)
`%d'
день месяца (01...31)
`%D'
дата (мм/дд/гг)
`%h'
тоже самое, что и %b
`%j'
день года (001...366)
`%m'
месяц (01...12)
`%U'
номер недели в году, считая воскресенье первым днем недели, (00...53).
Дни в году предшествующие первому воскресенью относятся к нулевой неделе.
`%V'
номер недели в году, считая воскресенье первым днем недели, (00...53).
Если неделя содержащая 1 января имеет 4 или более дней в новом году,
то она считается первой; иначе это 53 неделя прошлого года, следующая
неделя считается первой. (См. стандарт ISO 8601: 1988.)
`%w'
день недели (0...6) с 0 соответветсвующим воскресенью
`%W'
номер недели в году, считая понедельник первым днем недели, (00...53).
Дни в году предшествующие первому воскресенью относятся к нулевой неделе.
По умолчанию `date' набивает числовые поля нулями, так, что, например,
номера месяцев всегда выводятся двуми цифрами. GNU `date' распознает
следующие числовые модификаторы между `%' и директивой.
`-'
(перенос, черточка) не набивать поле; полезна если вывод предназначается
для использования людьми.
`_'
(подчеркивание) набивать поле пробелами; полезна если Вам нужно фиксированное
число символов в выводе, но нули слишком мешаются.
Это расширения GNU.
Вот пример иллюстрирующий различия:
date +%d/%m -d "Feb 1"
=> 01/02
date +%-d/%-m -d "Feb 1"
=> 1/2
date +%_d/%_m -d "Feb 1"
=> 1/ 2
Если передан аргумент, не начинающийся с `+', `date' устанавливает
системные часы на дату и время, указанные этим аргументом (как описано
ниже). Вы должны иметь соответсвующие права для установки системного
времени. Параметры `--date' и `--set' не могут быть использованы с таким
аргументом. Параметр `--universal' может быть использован с таким аргументом
для обозначения того, что указанное время и дата относительны к Coordinated
Universal Time, на не кмесному часовому поясу.
Аргумент должен состоять только из цифр, имеющих следующее
значение:
`ММ'
месяц
`ДД'
день месяца
`ЧЧ'
часы
`ММ'
минуты
`ВВ'
первые две цифры года (необязательные)
`ГГ'
последние две цифры года (необязательные)
`СС'
секунды (необязательные)
Параметр `--set' также устанавливает системные часы; см. следующий
раздел.
Программа понимает следующие параметры. См. также раздел 2. Общие параметры.
`-d СТРОКА-ДАТЫ'
`--date=СТРОКА-ДАТЫ'
Вывести дату и время, указанные в СТРОКЕ-ДАТЫ, вместо текущей даты
и времени. СТРОКА-ДАТЫ может быть почти любого обычного формата.
Она может сожержать названия месяцев, часлвых поясов, `am' и `pm',
`yesterday', `ago', `next', и т.д. раздел 3. Форматы ввода даты.
`-f ФАЙЛ-ДАТЫ'
`--file=ФАЙЛ-ДАТЫ'
Анализировать каждую строку и ФАЙЛЕ-ДАТЫ, как с `-d', и вывести результирующее
время и дату. если ФАЙЛ-ДАТЫ это `-', использоюется стандартный ввод.
Это полезно, когда нужно обрабоать много дат, поскольку замедление системы
при многократном запуске `date' может быть существенным.
`-I[СПЕЦИФИКАЦИЯ-ВРЕМЕНИ]'
`--iso-8601[=СПЕЦИФИКАЦИЯ-ВРЕМЕНИ]'
Вывести дату используя формат ISO 8601, `%Г-%м-%д'
Необязательный аргумент СПЕЦИФИКАЦИЯ-ВРЕМЕНИ указывает количесвто
дополнительно включаемых термов. Может быть одним из:
`auto'
Стандартное поведение: вывести только дату.
`hours'
Добавить час дня к дате.
`minutes'
Добавить часы и минуты.
`seconds'
Добавить часы, минуты и секунды.
Если выводятся любые термы времени, чавой пояс включается, используя
формат `%z'. Если `--utc' также указано, вместо `%z' используется `%Z'.
`-R'
`--rfc-822'
Вывести время и дату используя формат, определенный RFC-822, `%a,
%_d %b %Y %H:%M:%S %z'. Если `--utc' также указано, вместо `%z' используется
`GMT'.
`-r ФАЙЛ'
`--reference=ФАЙЛ'
Вывести время и дату последней модификации ФАЙЛА, вместо текущего
времени и даты.
`-s СТРОКА-ДАТЫ'
`--set=СТРОКА-ДАТЫ'
Установить время и дату к СТРОКЕ-ДАТЫ, см `-d' выше.
`-u'
`--utc'
`--universal'
Вывести или установить время и дату в Universal Coordinated Time,
вместо местного времени.
Вот несколько примеров. См. также описание параметра `-d' в предудущем разделе.
Чтобы напечатать дату позавчерашнего дня:
date --date='2 days ago'
Чтобы напечатать дату дня через три месяца и день:
date --date='3 months 1 day'
Чтобы напечатаеть день года Рождества в текущем году:
date --date='25 Dec' +%j
Чтобы напечатать полное название текущего месяца и день месяца:
date '+%B %d'
Но это может быть не то, что Вы хотите, потому что для первых девяти дней
месяца `-d' расширяет нулями до двух цифр, например `date -d 1may '+%B %d"
напечатает `May 01'.
Чтобы напечатать дату без начального нуля для одноцифровых дней
месяца, Вы можете использовать (расширение GNU) модификатор `-' для
подавления набивки поля.
date -d=1may '+%B %-d'
Чтобы напечатать текущее время и дату в формате, требуемом многими
не-GNU версиями `date' при установке системных часов:
date +%m%d%H%M%Y.%S
Чтобы установить системные часы на две минуты вперед:
date --set='+2 minutes'
Чтобы напечатать даьу в формате, определенном RFC-822, используйте
`date --frc'. Я только что сделал это и увидел:
Вск, 15 Апр 2001 15:15:10 +0400
Чтобы преобразовать строку даты в число секунд с начала эпохи
(т.е. 1970-01-01 00:00:00 UTC), используйте параметр `--date'с форматом
`%s'. Это может быть полезно при сортировке и/или построении графиков
и/или сравнении данных по дате. Следующая команда выводит количество
секунд с начала эпохи для времени на одну секунду позже, в часовом поясе,
отличающемся на пять часов (Кембридж, Массачусеттс), т.о. общее время
пять часов и одна секунда с начала эпохи.
date --date='1970-01-01 00:00:01 UTC +5 hours' +%s
18001
Допустим Вы не указали часовой пояс в этом примере. Тогда `date'
будет использовать мысль Вашего компьютера о часовом поясе при интерпретации
строки. Вот, что Вы получите, если бы Вы были в Гринвиче, Англия:
# local time zone used
date --date='1970-01-01 00:00:01' +%s
1
Если Вы сортируете или строите графики датированных данных, Ваши
необработанные значения даты могут быть преобразованы в количество секунд
с начала эпохи. Но тольно несколько человек посмотрев на дату `9446684800'
заметят: "О, это первая секунда 2000 года".
date --date='2000-01-01 UTC' +%s
946684800
Чтобы преобразовать такое громозкое число секунд обратно в более
читабельный вид, используйте команду как эта:
date -d '1970-01-01 946684800 sec' +"%Y-%m-%d %T %z"
2000-01-01 00:00:00 +0000
`uname' печатает информацию о машине и операционной системе, под которой
она работает. Если параметры не указаны, `uname' днйствует как если бы был
указан параметр `-s'. Синтаксис:
uname [ПАРАМЕТР]...
Если указаны несколько парметров или `-a', выбранная информация
печатается в следующем порядке:
ИМЯ-СИСТЕМЫ ИМЯ-УЗЛА РЕЛИЗ ВЕРСИЯ-ОС МАШИНА
ВЕРСИЯ-ОС, по крайней мере, может состоять из нескольких слов. Например:
uname -a
=> Linux appolohost 2.2.15-4mdk #1 Wed May 10 15:31:30 CEST 2000 i586 unknown
Программа понимает следующие параметры. См. также раздел 2. Общие параметры.
Без аргументов `hostname' печатает имя текущей системы-хоста. С одним
аргументом она устанавливает текущее имя системы-хоста равное указанной
строке. Вы должны иметь соответсвующие привилегии для установки имени
системы-хоста. Синтаксис:
hostname [ИМЯ]
Параметрами являются `--help' и `--version'. См. раздел 2. Общие параметры.