Как работает этот подстановочный знак " *. *"

Я только что удалил Firefox, и Google Chrome стал браузером по умолчанию.

-1
05.05.2021, 19:13
2 ответа

Это два отдельных шарика. Первый, *соответствует всему, кроме скрытых файлов, поэтому выводятся file1.txt, file2.txtи file3.txt. Второй, .*соответствует скрытым файлам и каталогам только :тем, имя которых начинается с ., поэтому выводятся .и ...

Если вы хотите распечатать имена файлов/каталогов только с пробелом, за которым следует точка, вам нужно будет экранировать пробел, чтобы он не рассматривался как разделитель:

$ ls
 file1.txt  'file2.txt'
$ echo *\.*
file2.txt

Наконец, я, вероятно, должен упомянуть, что *.*не означает «соответствовать всем». В отличие от систем Windows, *nix-системы не требуют расширения имен файлов (за очень немногими исключениями, расширения являются полностью необязательными и произвольными ). В системах *nix глобус *.*будет печатать только имена файлов с .в их имени:

$ ls
 file   file1.txt  'file2.txt'
$ echo *.*
file1.txt file2.txt

Для печати всех файлов используйте один*:

$ echo *
file file1.txt file2.txt
8
28.07.2021, 11:34

Параметры команд разделяются пробелами, если они не заключены в кавычки.

 echo *.*

соответствует именам файлов с «любыми символами» (*), за которыми следует точка (.), за которой следует «любые символы»(*).

 echo *.*

Первый шаблон сопоставляет имена файлов с «любыми символами»(*). Второй шаблон (".*" )соответствует именам файлов, которые начинаются с точки (.), за которой следуют "любые символы"(*). Эти «точечные файлы» НЕ соответствуют *, поэтому их часто называют «скрытыми» файлами.

Две записи, которые вы видите (" ." и " .." ), являются обязательными ссылками на текущий и родительский каталоги.

Работа с именами файлов, содержащими пробелы и другие «забавные» символы (только NUL 0x00и косая черта /запрещены в именах файлов )являются сложными (Чтениеman find xargs)и их следует по возможности избегать.

Существует несколько способов заключать в кавычки пробел в имени файла, каждый из которых имеет несколько разные детали:

echo *\.*
echo *"."*
1
28.07.2021, 11:34

Теги

Похожие вопросы