Size: a a a

DC20e6: DEFCON Ульяновск

2018 May 24

MD

Mike 🚀 Dronov in DC20e6: DEFCON Ульяновск
Что делает echo c *, думаю, понятно)
источник

MD

Mike 🚀 Dronov in DC20e6: DEFCON Ульяновск
Roman
ты о чем говоришь? мы тут про то, что echo write arguments to the standard output, а он выводит содержимое дирректории, хотя должен то то вывести то, что есть в передаваемом параметре
Так что echo c * выводит всё правильно.
источник

MB

Mikhail Badin in DC20e6: DEFCON Ульяновск
Roman
я не понимаю почему так работает echo
что за вопросы такие) все же понятно как
источник

R

Roman in DC20e6: DEFCON Ульяновск
Да пачиму он листинг то показывет
источник

MB

Mikhail Badin in DC20e6: DEFCON Ульяновск
ну смотри
источник

MB

Mikhail Badin in DC20e6: DEFCON Ульяновск
echo выводит все, что принимает в качестве аргумента
источник

MB

Mikhail Badin in DC20e6: DEFCON Ульяновск
с другой стороны аргумент формируется в своей атмосфере
источник

MD

Mike 🚀 Dronov in DC20e6: DEFCON Ульяновск
* — успевает интерпретироваться шеллом и выполниться
источник

AE

Alexey Extor in DC20e6: DEFCON Ульяновск
Да, понятно, что * для bash, zsh и прочее == листингу текущей директории.

Вопрос ожидаемое ли это поведение.
источник

MD

Mike 🚀 Dronov in DC20e6: DEFCON Ульяновск
Ожидамое.
источник

MD

Mike 🚀 Dronov in DC20e6: DEFCON Ульяновск
Спецсимволы нужно ж экранировать )
источник

MD

Mike 🚀 Dronov in DC20e6: DEFCON Ульяновск
(и об этом тоже писали выше)
источник

MB

Mikhail Badin in DC20e6: DEFCON Ульяновск
например если сделаешь echo * то
1. выполнится * и вместо него подставит все файлы текущего каталога (если например у тебя в каталоге в котором запускается команда состоит из файла foo.txt и bar.txt то результатом работы * будет foo.txt bar.txt
2. Получаем echo foo.txt bar.txt
3. Реультат работы будет такой foo.txt bar.txt
источник

AE

Alexey Extor in DC20e6: DEFCON Ульяновск
это всё понятно. И про экранирование и про поведение
источник

MD

Mike 🚀 Dronov in DC20e6: DEFCON Ульяновск
Mikhail Badin
например если сделаешь echo * то
1. выполнится * и вместо него подставит все файлы текущего каталога (если например у тебя в каталоге в котором запускается команда состоит из файла foo.txt и bar.txt то результатом работы * будет foo.txt bar.txt
2. Получаем echo foo.txt bar.txt
3. Реультат работы будет такой foo.txt bar.txt
а если сделать
echo /*

, то шелл сначала обработает /* и результат отдаст в echo )
источник

MB

Mikhail Badin in DC20e6: DEFCON Ульяновск
ну да
источник

MB

Mikhail Badin in DC20e6: DEFCON Ульяновск
а если echo '*' то у тебя получится что * будет просто текстом
источник

AE

Alexey Extor in DC20e6: DEFCON Ульяновск
ну да, суть в том, что в echo уже приходит содержимое, потому как shell уже всё сделал и передал в аргументах далеко не  *. Соль не в самом echo, как я грешным делом подумал сначала, а в интерпретации shell.
источник

AE

Alexey Extor in DC20e6: DEFCON Ульяновск
Как и описал @mbadin
источник

MB

Mikhail Badin in DC20e6: DEFCON Ульяновск
источник