Как описано в man touch
:
Строка аргумента FILE - - обрабатывается специально и вызывает прикосновение, чтобы изменить время файла, связанного со стандартным выводом.
Чтобы создать файл с таким именем, используйте более длинный путь, например:
touch ./-
Чтобы увидеть разницу, попробуйте
( echo a ; sleep 2; ) > file ; date ; stat file
против
( echo a ; sleep 2; touch - ) > file ; date ; stat file
В первом случае время модификации будет за 2 секунды до фактического времени. Во втором случае он будет почти идентичен ему.