Donc quand je lance ça dans Fedora, je vois ça:
$ 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
Mais quand je cours sur Ubuntu (mêmes données) je n'obtiens aucun résultat du 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'
Des idées sur ce qui pourrait se passer? Comment puis-je trouver quelque chose qui fonctionnera de la même manière sur les deux systèmes?
ls *-ref.alleles
?Réponses:
est équivalent à:
(aucun des caractères entre les apostrophes n'est un métacaractère shell, donc les citer n'a aucun effet.)
Cela équivaut à son tour à:
par analyse normale des
-
options préfixées. L'-e
option prend un argument, mais-F
et-r
non.Comme vous n'avez spécifié aucun fichier à grep, le comportement par défaut consiste à agir sur stdin ... sauf que l'
-r
option n'a aucun sens, elle est par défaut.
récursive (le répertoire courant) à la place et ignore stdin. Dans certaines versions.Vous devez utiliser l'
--
indicateur "no more options" avant une expression rationnelle qui commence par-
comme dansJ'ai retrouvé le point où le comportement de
-r
sans arguments de fichier a changé. Il était dans la version 2.11, publiée le 2 mars 2012. Voir l'annonce de sortie.Les commits git qui ont affecté le comportement sont celui-ci et celui-ci .
Si vous exécutez
grep --version
sur vos deux machines, je suis sûr que vous constaterez que l'une d'elles est du mauvais côté de la 2.11la source
Le principal
-
est le problème. Pour obtenir les mêmes résultats, ajoutez--
:De
man bash
:la source
--
la propre ligne de commande de bash, qui est indépendante de la compréhension de grep--
. Ils fonctionnent de la même manière car c'est une convention courante, mais en général la page de manuel de votre shell ne vous dit rien sur la signification des arguments des autres programmes.Vérifiez .bashrc s'il existe des alias sur votre commande grep qui remplacent son comportement. C'est peut-être le problème. Essayez également grep sans le paramètre "-F".
la source