Буквально воспринимая ваш вопрос, если вы просто хотите получить строку даты на 7 часов позже текущего времени в текущей зоне, это легко:
date -d "7 hours" "+%Y-%m-%d %H:%M:%S"
Однако, если вы действительно хотите получить локальную дату/время в каком-либо другом часовом поясе, вам лучше следовать советам в некоторых других ответах.
Необходимо знать, какая команда выполняет вывод в stderr, и убедиться, что перенаправление связано с этой командой.
Вы можете думать о каналах как о()вокруг команд
Итак,
a | b | c
можно рассматривать как
( a ) | ( b ) | (c )
(Это работает не в буквальном смысле, а в ментальной модели ).
А внутри скобок происходит перенаправление.
Итак, ясно, что
( a ) | ( b ) | ( c 2>/dev/null )
не перенаправляет сообщение об ошибке с "а"
но
( a 2>/dev/null) | ( b ) | ( c )
делает
Итак, ваша команда перенаправила ошибку с команды awk
. Вы действительно хотите перенаправить ошибку из ldapsearch
.
Так
$ ldapsearch -Y GSSAPI -b "cn=users,cn=accounts,dc=example,dc=com" "uid=foo" 2>/dev/null | grep krbPasswordExpiration | tail -n1 | awk '{print $2}'