Essa pode ser uma pergunta simples, mas como posso usar arquivos começando com "-" nos programas de linha de comando?
Por exemplo, estou tentando usar pdfgrep
em um arquivo chamado, -2013-01-01.pdf
mas ele reclama que não há opções definidas para 2, 0, 1, 3 e assim por diante.
Alterar o nome do arquivo para algo que não comece com "-" resolve, mas isso não é uma opção, pois os arquivos não são criados por mim. Eu simplesmente quero verificar uma alteração específica que eu sei que está por vir.
command-line
special-characters
filename
Kristoffer
fonte
fonte
grep -i dfv -- -myfile1 -myfile2
.Respostas:
Com muita freqüência
--
é usado na linha de comando para sinalizar para um programa que nenhuma outra opção de comando disponível será usada. Isso é particularmente útil se um arquivo contiver um traço, que o programa tentaria interpretar como uma opção.Sem o
--
, ocorre um erro:Com o
--
usado, temos um comando bem-sucedido:pdfgrep
está programado para entender--
que os seguintes argumentos da linha de comando não são opções. A maioria dos programas faz o mesmo, mas nem todos os programas entendem--
. Para programas que não o fazem, a solução é incluir o nome do arquivo com o seguinte nome./
:Isso deve funcionar com qualquer comando, a menos que, por algum motivo, o comando não possa aceitar um caminho, apenas um nome de arquivo puro.
Para uma introdução geral à linha de comando, consulte este PDF útil .
fonte
--
não não funcionar com todos os programas de linha de comando. Eu assumi a partir desse comentário do OP quepdfgrep
é um deles que não reconhece--
. Mas a aceitação aqui sugere o contrário. Em qualquer caso, um programa deve ser codificado para reconhecer--
. Muitos programas usam bibliotecas para analisar seus argumentos, que reconhecem--
. Mas alguns não, e desses, alguns não são codificados para reconhecer--
.--
a solução usual é colocar./
na frente do arquivo:pdfgrep ./-2013-01-01.pdf
./
na frente é a solução mais portátil e robusta. Funciona em qualquer programa, em qualquer versão unix.Você precede o nome do arquivo com
./
(ou outro caminho relativo ou absoluto que funcione). Desta forma, é portátil.Exemplo:
O uso de
--
para indicar o final das opções nem sempre está disponível. Alguns comandos sabem disso, outros não. E isso mudará em diferentes sistemas. Então, no final, é menos portátil.fonte