




Оболочки расширяют *. touch * - это touch every nonhidden file in the current directory. Если вы хотите создать файл с буквальным именем *, вам нужно указать его в кавычках: touch \* (или touch '*', или touch "*" и эквивалент для других команд, таких как rm).
@codeforester Спасибо за информацию, которую я, наверное, должен был включить. У меня есть сейчас.
Согласно man touch, touch изменяет временную метку файла. Если файл не существует, он создает его пустым, если не указаны параметры -c или -h.
В Bash * - это символ подстановки, который распространяется на каждый не скрытый файл и каталог в текущем каталоге. Это означает, что touch * изменит метку времени каждого файла и каталога в текущем каталоге, если таковые имеются, на текущие дату и время.
Вы должны найти unix "globbing".
Оболочка будет смотреть на команду и заменять * каждым файлом (не начинающимся с '.' Или скрытым), если вы не экранируете этот специальный символ * или не поместите его в одинарные кавычки '*'
Вы можете использовать это, чтобы применить команду ко многим файлам, не перечисляя их вручную.
Если вы хотите увидеть, что * расширяется и как от него избавиться, вы можете выполнить следующие команды:
echo *
echo '*'
echo \*
Вы также можете использовать это с более конкретным шаблоном, например
<command> a* # run the command on the list of file starting with a
Если вы хотите увидеть, что фактически выполнял терминал, когда вы запускали touch * run:
echo touch *
Команда touch, как объяснялось ранее, либо создаст пустой файл, если имя файла не существует, либо обновит последнюю измененную метку времени в существующих файлах. Итак, вы только что обновили последние измененные временные метки каждого не скрытого файла в каталоге, в котором вы выполняли команду.
Обратите внимание, что это происходит до того, как ваша команда будет вызвана. И если список файлов ОЧЕНЬ большой (миллионы), вы получите сообщение об ошибке, так как список файлов будет слишком большим, чтобы поместиться в буфер команд (иначе говоря, строка вашей расширенной команды будет слишком большой)
Дополнительная литература: https://www.linuxjournal.com/content/bash-extended-globbing
Или
touch '*'илиtouch "*", поскольку шары не раскрываются внутри кавычек. Чтобы удалить файл с именем*, используйтеrm '*',rm \*илиrm "*".