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 pdfgrepun archivo llamado -2013-01-01.pdfpero 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:pdfgrepestá 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 quepdfgrepes 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