Поэтому, когда я запускаю это в 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'
Есть идеи, что может происходить? Как я могу придумать что-то, что будет работать одинаково в обеих системах?
ls *-ref.alleles
?Ответы:
эквивалентно:
(ни один из символов между апострофами не является метасимволами оболочки, поэтому цитирование их не имеет никакого эффекта.)
Это в свою очередь эквивалентно:
путем обычного разбора
-
префиксных опций.-e
Параметр принимает аргумент, но-F
и-r
этого не делают.Поскольку вы не указали никаких файлов для grep, поведение по умолчанию - работать с stdin ... за исключением того, что этот
-r
параметр не имеет смысла, поэтому.
вместо этого он по умолчанию рекурсивно ищет (текущий каталог) и игнорирует stdin. В некоторых версиях.Вам нужно не использовать
--
«нет больше вариантов» индикатора перед регулярным выражением , которое начинается с-
как вЯ отследил точку, где
-r
изменилось поведение без аргументов файла. Это было в версии 2.11, выпущенной 2 марта 2012 года. См. Объявление о выпуске.Git коммитов, которые повлияли на поведение, это этот и этот .
Если вы работаете
grep --version
на своих двух машинах, я уверен, вы обнаружите, что одна из них находится на неправильной стороне 2.11источник
Ведущая
-
проблема. Чтобы получить те же результаты, добавьте--
:От
man bash
:источник
--
собственной командной строки bash, которая не зависит от понимания grep--
. Они работают одинаково, потому что это общее соглашение, но в целом страница руководства вашей оболочки ничего не говорит вам о значении аргументов для других программ.Проверьте .bashrc, есть ли в вашей команде grep псевдонимы, которые переопределяют ее поведение. Может быть, это проблема. Также попробуйте grep без параметра "-F".
источник