Следующее переформатирует даты:
dir -1 backups | awk '/Complete\\ Backup\\ .*\.tar\.bz2/ { gsub(/\\/, ""); sub(/Complete Backup /, ""); sub(/.tar.bz2/, ""); gsub(/-/, " "); print strftime("%c", mktime($0)); }'
И вот способ получить это в выбор:
OIFS="$IFS"; IFS=$'\n'; set -- $(dir -1 backups | awk '/Complete\\ Backup\\ .*\.tar\.bz2/ { gsub(/\\/, ""); sub(/Complete Backup /, ""); sub(/.tar.bz2/, ""); gsub(/-/, " "); print strftime("%c", mktime($0)); }'); IFS="$OIFS"
select date in "$@"; do echo "$date"; done
Вот версия, которая сортирует даты:
OIFS="$IFS"
IFS=$'\n'
set -- $(
dir -1 backups |
awk '/Complete\\ Backup\\ .*\.tar\.bz2/ \
{
gsub(/\\/, "");
sub(/Complete Backup /, "");
sub(/.tar.bz2/, "");
gsub(/-/, " ");
VAL[NR] = mktime($0);
}
END \
{
for ( i = asort(VAL); i > 0; i-- )
{
print strftime("%a %b %d %T %Z %Y", VAL[i]);
}
}'
)
IFS="$OIFS"
select date in "$@"
do
echo "$date"
done
X-сервер не посылает сигнал своим клиентам. В общем, это невозможно, так как клиент и сервер могут даже не работать на одной машине.
Связь между сервером и клиентом проходит через сокет . Когда сервер умирает, его конец сокета закрывается. Решение о том, как на это реагировать, принимает клиентское приложение; большинство из них печатает сообщение об ошибке и завершает работу.
Если клиент является терминальным эмулятором, то, когда он завершает работу, он посылает SIGHUP своему управляющему процессу, который обычно является оболочкой (shell). Оболочка, в свою очередь, отправляет SIGHUP главному процессу каждого задания переднего плана или фона.
.