Entonces, cuando ejecuto esto en Fedora, veo esto:
$ 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
Pero cuando ejecuto Ubuntu (mismos datos) no obtengo ningún resultado del 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'
¿Alguna idea de lo que podría estar pasando? ¿Cómo puedo llegar a algo que funcione igual en ambos sistemas?
ls *-ref.alleles
?Respuestas:
es equivalente a:
(ninguno de los caracteres entre los apóstrofes son metacaracteres de shell, por lo que citarlos no tiene ningún efecto).
Esto es a su vez equivalente a:
mediante el análisis normal de las
-
opciones con prefijo. La-e
opción toma un argumento, pero-F
y-r
no.Como no especificó ningún archivo para grep, el comportamiento predeterminado es actuar en stdin ... excepto que la
-r
opción no tiene sentido, por lo que el valor predeterminado es buscar.
(el directorio actual) de forma recursiva e ignora stdin. En algunas versionesDebe usar el
--
indicador "no hay más opciones" antes de una expresión regular que comience-
como enRastreé el punto donde
-r
cambió el comportamiento de sin argumentos de archivo. Fue en la versión 2.11, lanzada el 2 de marzo de 2012. Vea el anuncio de lanzamiento.Los git commits que afectaron el comportamiento son este y este .
Si ejecuta
grep --version
en sus dos máquinas, estoy seguro de que encontrará que una de ellas está en el lado equivocado de 2.11fuente
El principal
-
es el problema. Para obtener los mismos resultados, agregue--
:De
man bash
:fuente
--
la propia línea de comando de bash, que es independiente de la comprensión de grep--
. Funcionan de la misma manera porque es una convención común, pero en general la página de manual de su shell no le dice nada sobre el significado de los argumentos de otros programas.Verifique .bashrc si hay algún alias en su comando grep que anule su comportamiento. Tal vez sea el problema. Pruebe también grep sin el parámetro "-F".
fuente