Это также происходит в текущей ветке разработчика ( 9cc2407
). Причина этого заключается в том, что когда стандартный ввод является каналом, ack пытается быть полезным и предполагает, что вы пытаетесь найти этот поток ввода. Мы не видели такого поведения раньше, поэтому я включил его в список рассылки разработчиков. В то же время, вы можете использовать, --nofilter
чтобы переопределить поведение Ack по умолчанию.
Гну параллельно и акк не играет красиво из-за stdin, труба
Я пытаюсь использовать parallel
и ack
вместе, чтобы сделать поиск параллельно. Тем не менее, ack
кажется, настаивает на использовании, stdin
если он оказывается в трубе, даже если вы даете ему файлы для поиска:
$ echo hello > test.txt $ ack hello test.txt hello $ echo test.txt | xargs ack hello hello $ echo test.txt | parallel ack hello {} # ack thinks it should be searching stdin: $ echo test.txt | parallel ack -f {} - # even though parallel is indeed passing test.txt: $ echo test.txt | parallel --dry-run ack hello {} ack hello test.txt
Что мне нужно сделать, чтобы получить ack
и parallel
хорошо играть?
3 ответа на вопрос
Проблема связана с этой строкой в ack
:
$is_filter_mode = -p STDIN;
Таким образом, эти две ситуации рассматриваются по-разному в ack
:
cat file | ack ... ack < file ...
Обходной путь для вас, кажется, заключается в добавлении cat
:
echo test.txt | parallel cat {} \| ack hello
Это работает в ack
2.12.
Я думаю, что ack болен: его поведение не является детерминированным, но время от времени он производит разные результаты. Здесь я запускаю одну и ту же команду 100 раз. 54 из них дают "привет: нет такого файла или каталога". Примечание ack
выполняется bash
GNU Parallel.
$ seq 100 | parallel -N0 echo ack hello test.txt > test.sh $ bash test.sh 2>&1 | sort | uniq -c 54 hello: No such file or directory 100 hi
Я могу воспроизвести это поведение, когда запускаю это вручную 100 раз:
$ ack hello test.txt <<Sometimes:>> hello: No such file or directory hi
Похожие вопросы
-
2
.profile в Mac OS X?
-
1
Приостановить все, кроме x задач, интенсивно использующих процессор
-
10
Как я могу найти в истории bash и повторно запустить команду?
-
-
2
Можно ли передать выходные данные одной команды двум другим командам?
-
8
Переименуйте группу файлов одной командой
-
2
Почему мой путь не обновляется * сейчас *?
-
5
Как удалить символическую ссылку на каталог?
-
8
Спаси меня от бессмысленного терминала
-
9
Как можно добавить номер строки и табуляцию к каждой строке текстового файла?
-
1
Когда я должен положить конфигурации в .bashrc против. .bash_profile?