To może być proste pytanie, ale jak korzystać z plików zaczynających się od „-” w programach wiersza poleceń?
Na przykład próbuję użyć pdfgrep
pliku o nazwie, -2013-01-01.pdf
ale narzeka, że nie ma zdefiniowanych opcji dla 2, 0, 1, 3 itd.
Zmiana nazwy pliku na coś, co nie zaczyna się od „-”, rozwiązuje go, ale nie jest to możliwe, ponieważ pliki nie są tworzone przeze mnie. Chcę po prostu sprawdzić, czy nadchodzi konkretna zmiana.
command-line
special-characters
filename
Kristoffer
źródło
źródło
grep -i dfv -- -myfile1 -myfile2
.Odpowiedzi:
Bardzo często
--
jest używany w wierszu poleceń, aby zasygnalizować programowi, że nie będą używane żadne dostępne przełączniki poleceń. Jest to szczególnie przydatne, jeśli plik zawiera myślnik, który program próbowałby interpretować jako opcję.Bez tego
--
generowany jest błąd:Przy
--
użyciu mamy udane polecenie:pdfgrep
jest zaprogramowany tak, aby rozumieć,--
że następujące argumenty wiersza polecenia nie są opcjami. Większość programów robi to samo, ale nie wszystkie programy rozumieją--
. W przypadku programów, które tego nie robią, rozwiązaniem jest dodanie nazwy pliku przed./
, tak jak poniżej:Powinno to działać z dowolnym poleceniem, chyba że z jakiegoś powodu polecenie nie może zaakceptować ścieżki, tylko czystą nazwę pliku.
Ogólne wprowadzenie do wiersza poleceń można znaleźć w tym przydatnym pliku PDF .
źródło
--
nie nie działa ze wszystkimi programami wiersza polecenia. Z tego komentarza OP założyłem , żepdfgrep
jest to jeden z nich, który nie rozpoznaje--
. Ale przyjęcie tutaj sugeruje inaczej. W każdym razie program musi zostać zakodowany w celu rozpoznania--
. Wiele programów używa bibliotek do analizowania argumentów, które rozpoznają--
. Ale niektórzy nie, a niektórzy nie są zakodowani do rozpoznania--
.--
zwykłego obejścia, umieszcza się./
przed plikiem:pdfgrep ./-2013-01-01.pdf
./
na pierwszym miejscu to najbardziej przenośne i niezawodne rozwiązanie. Działa w każdym programie, w dowolnej wersji uniksowej.Poprzedzasz nazwę pliku
./
(lub inną działającą względną lub bezwzględną ścieżką). W ten sposób jest przenośny.Przykład:
Użycie
--
znaku końca opcji nie zawsze jest dostępne. Niektóre polecenia to poznają, inne nie. I to się zmieni w różnych systemach. Ostatecznie jest mniej przenośny.źródło