Basta adicionar um sinal de menos:
TZ=ZZZ0 touch -t "$(TZ=ZZZ-0:30 date +%Y%m%d%H%M.%S)" $HOME/reference
Ou inverta o truque de fuso horário:
TZ=ZZZ0:30 touch -t "$(TZ=ZZZ0 date +%Y%m%d%H%M.%S)" $HOME/reference
Se você precisar ir além do intervalo de deslocamentos de fuso horário, os utilitários de shell padrão notoriamente não têm uma maneira de manipular a data. Várias pessoas fizeram o trabalho de implementar cálculos de data no shell Bourne, portanto, uma opção é fazer o download de um desses (alguns estão listados em aritmética de data em scripts de shell Unix ). Outra opção é instalar o GNU coreutils, especificamente o seu date
command que permite escrever datas como now + 30 minutes
. Você também pode instalar um ambiente de script mais sofisticado como o Perl e usar suas bibliotecas de manipulação de data.