명령 인수로 대시“-”로 시작하는 파일 이름을 어떻게 사용합니까? 간단한 질문이지만 명령 줄 프로그램에서 “-“로

이것은 간단한 질문이지만 명령 줄 프로그램에서 “-“로 시작하는 파일을 어떻게 사용합니까?

예를 들어, pdfgrep이름이 지정된 파일 에서 사용하려고하는데 -2013-01-01.pdf2, 0, 1, 3 등에 대해 정의 된 옵션이 없다고 불평합니다.

파일 이름을 “-“로 시작하지 않는 파일 이름으로 변경하면 파일 이름이 해결되지만 파일을 직접 만들지 않으므로 옵션이 아닙니다. 내가 알고있는 특정 변경 사항을 확인하고 싶습니다.



답변

--사용 가능한 명령 스위치가 더 이상 사용되지 않음을 프로그램에 알리기 위해 명령 줄에서 매우 자주 사용됩니다. 이 옵션은 파일에 대시가 포함 된 경우 프로그램에서 옵션으로 해석하려고 할 때 특히 유용합니다.

  1. 이 없으면 --오류가 생성됩니다.

    $ pdfgrep -i posix -find.pdf -xorg.pdf
    
    pdfgrep: invalid option -- 'f'
    pdfgrep: invalid option -- 'd'
    pdfgrep: invalid option -- '.'
    pdfgrep: invalid option -- 'p'
    pdfgrep: invalid option -- 'd'
    pdfgrep: invalid option -- 'f'
    
  2. 사용하면 --성공적인 명령이 있습니다.

    $ pdfgrep -i posix -- -find.pdf -xorg.pdf
    
    -find.pdf: on the command line. Currently-implemented types are emacs (this is the default), posix-awk,
    -find.pdf: posix-basic, posix-egrep and posix-extended.
    -find.pdf: posix-basic, posix-egrep and posix-extended.
    -find.pdf: posix-basic, posix-egrep and posix-extended.
    
  3. pdfgrep--다음 명령 줄 인수가 옵션이 아님 을 이해 하도록 프로그래밍되었습니다 . 대부분의 프로그램은 동일하지만 모든 프로그램이 이해하는-- 것은 아닙니다 . 그렇지 않은 프로그램의 경우 해결책은 ./다음과 같이 파일 이름 앞에을 추가하는 것입니다.

     pdfgrep -i posix ./-find.pdf ./-xorg.pdf
    

    어떤 이유로 명령이 경로를 허용 할 수없고 순수한 파일 이름 만 허용하지 않는 한 모든 명령에서 작동합니다.

명령 행에 대한 일반적인 소개는 이 유용한 PDF를 참조하십시오 .


답변

파일 이름 앞에 ./(또는 다른 상대 또는 절대 경로)를 추가하십시오. 이런 식으로 휴대가 편리합니다.

예:

for zefile in ./*.tmp
do
   rm -f "$zefile"
done

의 사용 --옵션의 끝을 나타 내기 위해 항상 사용할 수 없습니다. 어떤 명령은 그것을 알고 일부는 알지 못합니다. 그리고 이것은 다른 시스템에 따라 변할 것입니다. 결국 휴대 성이 떨어집니다.