Esta puede ser una pregunta simple, pero ¿cómo uso archivos que comienzan con "-" con programas de línea de comandos?
Por ejemplo, estoy tratando de usar pdfgrep
un archivo llamado -2013-01-01.pdf
pero se queja de que no hay opciones definidas para 2, 0, 1, 3, etc.
Cambiar el nombre del archivo a algo que no comience con "-" lo resuelve, pero esta no es una opción ya que los archivos no son creados por mí. Simplemente quiero verificar si hay un cambio específico que sé que se avecina.
command-line
special-characters
filename
Kristoffer
fuente
fuente
grep -i dfv -- -myfile1 -myfile2
,.Respuestas:
Con mucha frecuencia
--
se usa en la línea de comandos para indicar a un programa que no se usarán más interruptores de comando disponibles. Esto es particularmente útil si un archivo contiene un guión, que el programa intentaría interpretar como una opción.Sin el
--
, se genera un error:Con el
--
usado tenemos un comando exitoso:pdfgrep
está programado para entender--
que los siguientes argumentos de la línea de comandos no son opciones. La mayoría de los programas hacen lo mismo, pero no todos los programas entienden--
. Para los programas que no lo hacen, la solución es anteponer el nombre del archivo de./
esta manera:Esto debería funcionar con cualquier comando, a menos que por alguna razón el comando no pueda aceptar una ruta, solo un nombre de archivo puro.
Para una introducción general a la línea de comandos, vea este útil PDF .
fuente
--
no no trabajar con todos los programas de línea de comandos. Asumí por ese comentario del OP quepdfgrep
es uno de ellos que no reconoce--
. Pero la aceptación aquí sugiere lo contrario. En cualquier caso, un programa debe estar codificado para reconocer--
. Muchos programas usan bibliotecas para analizar sus argumentos, que sí reconocen--
. Pero algunos no lo hacen, y de ellos, algunos no están codificados para reconocer--
.--
la solución habitual es poner./
delante del archivo:pdfgrep ./-2013-01-01.pdf
./
delante es la solución más portátil y robusta. Funciona en cualquier programa, en cualquier versión de Unix.Antepone el nombre del archivo con
./
(u otra ruta relativa o absoluta que funcione). De esta manera es portátil.Ejemplo:
El uso de
--
para indicar el final de las opciones no siempre está disponible. Algunos comandos lo sabrán, otros no. Y esto cambiará en diferentes sistemas. Entonces, al final, es menos portátil.fuente