Isto não é sobre o shell, touch
é um programa externo.
Historicamente, havia duas sintaxes para o argumento de data para touch
:
touch -t CCYYMMDDhhmm.SS # CC or CCYY may be omitted; .SS may be omitted
touch MMDDhhmmYY # YY may be omitted
O comando apareceu em Sétima edição do Unix sem argumento de data. Versões BSD adquiriram a opção -t
(com todos os componentes de data em ordem decrescente) em algum lugar por volta de 4.4BSD . O sistema V (por exemplo, SunOS 4.1.3 ) tinha o straight -Data forma com o ano no final. Na época do Single Unix v2 (baseado em POSIX: 1992) , o formulário do System V era considerado obsoleto e não está mais incluído no Single Unix v3 (POSIX: 2001) .
Eu recomendo usar a sintaxe padrão (BSD) no seu script. Nos sistemas legados que exigem a sintaxe BSD, providencie para ter um touch
compatível. Várias abordagens são possíveis:
- Escreva uma função de wrapper que embaralhe os argumentos se detectar que seu script está sendo executado em um sistema legado.
- Organize para ter um
PATH
que coloque os diretórios compatíveis com o padrão à frente dos diretórios herdados. - (Você pode obter mais conselhos específicos se publicar as variantes e versões legadas exatas que você precisa oferecer suporte.)