This may be a simple question, but how do I use files starting with "-" with command line programs?
For example, I am trying to use pdfgrep
on a file named -2013-01-01.pdf
but it complains that there are no options defined for 2, 0, 1, 3 and so on.
Changing the filename to something that does not start with "-" solves it, but this is not an option since the files aren't created by me. I simply want to check for a specific change I know is coming.
Best Answer
Very frequently
--
is used on the command-line to signal to a program that no more available command switches are going to be used. This is particularly useful if a file contains a dash, which the program would try to interpret as an option.Without the
--
, there is an error generated:With the
--
used we have a successful command:pdfgrep
is programmed to understand--
to mean that the following command-line arguments are not options. Most programs do the same, but not all programs understand--
. For programs that don't, the solution is to prepend the filename with./
, like this:This should work with any command, unless for some reason the command cannot accept a path, only a pure filename.
For a general introduction to the command-line, see this useful PDF.