Почему результаты разные?
touch a aa bb ccc
echo *
a aa bb ccc // Я понял, * означает совпадения ноль или более
*
аа бб ссс // Я в замешательстве.
echo ?
хорошо
?
ааа бб ссс // снова запутался.
*?
аа бб ссс // очень запутался
* *
а аа аа бб бб ссс ссс // очень очень запутался
Интересно, в чем разница между использованием эха и его отсутствием.
решение1
Каждая написанная вами строка должна содержать команду, обычно это первое слово.
Чтобы что-то распечатать, используется обычная команда echo
.
Если pwd (текущий рабочий каталог) содержит файлы a
, aa
, bb
, и ccc
.
Тогда эта команда выведет все файлы в каталоге:
$ echo *
a aa bb ccc
А эта команда выведет все файлы в pwd, содержащие один символ:
$ echo ?
a
Однако если вы не укажете команду, первое «слово» (чаще всего: до первого пробела) будет считаться командой.
Если указать только звездочку *
, то в качестве команды для выполнения будет использовано первое слово, полученное в результате раскрытия звездочки.
Если команда a
не существует, будет выведена ошибка:
$ *
bash: a: command not found
Если вызвана команда a
, она будет вызвана с тремя аргументами aa bb ccc
.
Поскольку вы не предоставили больше подробностей, мы можем только гадать, какая команда выполняется с таким именем a
(это не команда по умолчанию). Также мы не знаем, какую оболочку вы используете.
Но все ваши примеры показывают, что первого a
не хватает:
$ *
aa bb ccc ### missing first `a`.
$ *?
aa bb ccc ### missing first `a`.
$ * *
a aa aa bb bb ccc ccc ### missing first `a`.
За исключением:
$ ?
a aa bb ccc
Из этого трудно сделать какой-либо вывод, поскольку мы не знаем, что это за команда a
.