Внутри токена, который не заключен в кавычки, раскрытие будет выполнять ваша оболочка, а не команда, которую вы выполняете.
Это означает, что при вводе find. -name "* .txt" -print
, тогда
find получает литерал *. txt
в качестве одного из своих параметров и использует
этот шаблон в качестве аргумента на его параметр -name
, который будет сопоставлять
имена файлов, найденных для него перед применением -print
.
С другой стороны, при вводе найти. -name * .txt -print
, оболочка
передает расширенную версию *. txt
для поиска. Возможны несколько случаев
:
В текущем каталоге нет файлов, соответствующих *. Txt
: find
получает литерал *. Txt
(предполагая настройки bash по умолчанию);
в текущем каталоге
есть ровно один файл, соответствующий *. txt
; допустим, это a.txt
: find получает это имя файла,
и сопоставляет все файлы с именем a.txt
, найденные, начиная с текущего каталога
;
несколько файлов соответствуют *. Txt
в текущем каталоге (это похоже на
в вашем случае): -name
получает первый в качестве параметра,
и другие - это дополнительные параметры пути, которые необходимо найти, в котором
сообщается о том, что перед выражением не указаны все пути.
Это ожидаемое поведение.
Предположим следующую иерархию файлов:
.
├── a.txt
├── b.txt
├── c.txt
└── foo
├── a.txt
├── b.txt
└── c.txt
Фактические параметры, которые find получает в случае eah, можно просмотреть
, заменив вызов find на printf '% s \ n'
, который напечатает
каждый расширенный аргумент в отдельной строке:
$ printf '%s\n' . -name "*.txt" -print
.
-name
*.txt
-print
$ printf '%s\n' . -name *.txt -print
.
-name
a.txt
b.txt
c.txt
-print
Как видите, второй опубликованный вами вызов эквивалентен
с учетом существующих файлов find. -name a.txt b.txt c.txt -print
.
Если вы проверите свой файл репо для CentOS 6 Base в /etc/yum.repo.d/, вы найдете там такие строки:
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Переменная $releasever в CentOS 7 всегда равна семи, поэтому если вы хотите установить что-то из этого репо, вам следует изменить эту переменную на 6.