Как создать пустой файл?

По-классике touch filename.

touch filename.

Однако, такое использование не целевое1 для этой программы.

В Программном окружении Unix увидел такой вот простой пример создания пустого файла:

$ >filename

Но есть нюанс.

Приведенный выше способ нормально работает в sh, и dash. А вот в zsh - каретка переводится на новую строку и ждет ввода. Потыкавшись, я понял - что терминал переходит в режим ожидания ввода, а потом всё введенное сохраняет в файл.

% >junk
asdf
qwer^D
% cat junk
asdf
qwer
%

Почему?

Об этом есть целый пункт в рукодстве Зиша.

Кратко: Если есть оператор перенаправления, но нет команды, оболочка берет её из NULLCMD. Если там нет ничего, то Зиш использует cat. А cat вызванный без аргументов, будет передавать дальше вывод с stdin, т.е. ввод пользователя в терминал.

Поэтому, для Зиш надо указывать перенаправление ввода из ничего. И в Зише есть свой оператор для ничего - :.

С ним команда должна быть такой:

% : >filename
  1. Задача этой утилитки - просто изменить время редактирования файла на текущее. Чтобы, например, спровоцировать make-задачи