Программирование оболочки: как использовать find в рыбе?

Посмотрите следующую команду, выполненную в fish, а затем в bash:

tmp ) touch file1 file2 file3 file4
tmp ) find . -exec echo {} \;





tmp ) bash
^_^ ~/tmp > find . -exec echo {} \;
.
./file3
./file2
./file1
./file4

Почему рыба не понимает echo {} \;?


person Community    schedule 06.05.2013    source источник
comment
{} - это синтаксис find, а не синтаксис оболочки. Делает ли fish что-то особенное с ним? Вы пробовали убежать от него?   -  person Carl Norum    schedule 06.05.2013
comment
Aarrrgh и я был удивлен wtf .. Спасибо!   -  person Nils    schedule 18.02.2015


Ответы (2)


Спасибо Карлу.

{ и } имеют особое значение для рыб. Их нужно экранировать, чтобы работать с find, например:

find . -exec echo \{\} \;

person Community    schedule 06.05.2013
comment
Вы также можете использовать найти . -exec эхо {} \; - person Harald; 20.10.2015

Из следующего отчета об ошибке также можно использовать '{}', что, на мой взгляд, является более аккуратным синтаксисом.

Таким образом, вы получите find . -exec echo '{}' \;

https://github.com/fish-shell/fish-shell/issues/95

person simotek    schedule 02.04.2015