Поэтому, когда я запускаю это в Fedora, я вижу следующее:
$ ls hmm_data/indivA12_AATAAG/refs/par1/
2R-orths.alleles 2R-ref.alleles
$ ls hmm_data/indivA12_AATAAG/refs/par1/ | grep -F '-ref.alleles'
2R-ref.alleles
Но когда я запускаю Ubuntu (те же данные), я не получаю никаких результатов от grep:
$ ls hmm_data/indivA12_AATAAG/refs/par1/
2R-orths.alleles 2R-ref.alleles
$ ls hmm_data/indivA12_AATAAG/refs/par1/ | grep -F '-ref.alleles'
Есть идеи, что может происходить? Как я могу придумать что-то, что будет одинаково работать в обеих системах?
grep -F '-ref.alleles'
эквивалентно:
grep -F -ref.alleles
(ни один из символов между апострофами не является метасимволами оболочки, поэтому их цитирование не имеет никакого эффекта.)
Это, в свою очередь, эквивалентно:
grep -F -r -e f.alleles
обычным анализом -
префиксные параметры. В -e
опция принимает аргумент, но -F
и -r
не надо.
Поскольку вы не указали какие-либо файлы для grep, поведение по умолчанию - действовать на stdin ... за исключением того, что -r
опция не имеет смысла, поэтому по умолчанию используется поиск .
(текущий каталог) вместо этого рекурсивно и игнорирует stdin. В некоторых версиях.
Вам нужно использовать --
индикатор "больше нет параметров" перед регулярным выражением, которое начинается с -
как в
grep -F -- -ref.alleles
Я отследил точку, в которой поведение -r
без изменения аргументов файла. Это была версия 2.11, выпущенная 2 марта 2012 года. См. Объявление о выпуске.
Коммиты git, которые повлияли на поведение: вот этот и вот этот.
Если ты бежишь grep --version
на ваших двух машинах, я уверен, вы обнаружите, что одна из них находится не на той стороне 2.11
Ведущий -
это проблема. Чтобы получить такие же результаты, добавьте --
:
grep -F -- '-ref.alleles'
Из man bash
:
A -- signals the end of options and disables further option
processing. Any arguments after the -- are treated as filenames
and arguments.
Проверьте .bashrc, есть ли в вашей команде grep псевдонимы, которые переопределяют ее поведение. Может, проблема в этом. Также попробуйте grep без параметра "-F".