Общий вопрос о создании файлов см. в:Почему нет команды оболочки для создания файлов?
Как с > file
, так и с echo >> file
оболочка создает файл, если он еще не существует.
С помощью > file
файл усекается, если он уже существовал. Команда не указана, поэтому в файл ничего не записывается, и файл будет пустым.
echo
без аргументов выводит пустую строку. Таким образом, вывод содержит символ конца строки, обычно перевод строки (LF,\n
):
% echo | od -c
0000000 \n
0000001
Таким образом, с помощью echo >> file
в файл записывается один байт. Если бы файл уже существовал, то к нему был бы добавлен один байт, потому что вы использовали>>
(append )вместо>
(overwrite ).
touch
создает файл, если он еще не существует, и обновляет временные метки в противном случае. touch
не изменяет содержимое файла, поэтому, если он уже существует и содержит какое-то содержимое, после touch
содержимое останется прежним.
То, что вы хотите использовать, зависит от того, какой эффект вы хотите.