ls *.pdf가 불평합니다: ls: 잘못된 옵션 -- '_'

ls *.pdf가 불평합니다: ls: 잘못된 옵션 -- '_'

나는 Linux Mint에서처럼 'ls'를 사용하는 데 익숙합니다(예: 'ls *.pdf'). 하지만 이 데비안 변형에서는 'ls.pdf'가 불평합니다. 나는 'find -maxlength 1 -type f -name " 길이를 사용하고 있습니다..pdf" -print' 대신 사용하세요.

이것을 읽으면:너 이상하게 일하잖아별로 도움이 되지 않았습니다. 나는 bash_completions 패키지를 가지고 있고 '~/.bashrc' 파일에 'ls'에 대한 이상한 별칭이 없습니다. 나는 '/etc/profile'이나 전역 프로필이 어디에 있든 절대 편집하지 않습니다.

추측만 해도 연결된 질문에 솔루션을 적용했지만 작동하지 않았습니다. 나는 '완료'를 완전히 이해하지 못합니다. 'readline'의 일부인 것 같습니다. 따라서 간단한 설명도 도움이 될 것입니다('man' 페이지가 없습니다).

그래도 작동합니다: 'complete -p ls *.pdf', 'complete --help'는 다음과 같이 말합니다.

 -p        print existing completion specifications in a reusable format

그래서 이 '규칙'을 영구적으로 적용해야 하는지 궁금합니다. '-D' 플래그를 사용하는 중...?

편집하다

이 문제도 발견되었습니다.

for f in *.pdf; do mv "$f" "BOOK - $F"; done

mv: invalid option -- 'R'

편집 2

위의 두 명령을 시도했는데 내 OS 파티션에서 제대로 작동했습니다. 문제는 작동 중인 Linux Mint와 수정하려는 PDF 파일이 있는 다른 파티션으로 이동할 때 이러한 명령이 실패한다는 것입니다. 두 파티션 모두 ext4이고 사용자 이름, 호스트 이름, UID/GID, 권한 등이 동일합니다.

답변1

대시가 앞에 붙은 파일 이름이 있는 것 같으 -므로 다음을 사용하십시오.

for f in *.pdf; do mv -- "$f" "BOOK - $F"; done

에서 man bash:

A는 --옵션의 끝을 알리고 추가 옵션 처리를 비활성화합니다. -- 뒤의 모든 인수는 파일 이름 및 인수로 처리됩니다. - 인수는 --와 동일합니다.

답변2

-(빼기 또는 하이픈) 으로 시작하는 파일 이름이 있으면 많은 프로그램에서 이를 옵션으로 해석합니다.

./이를 피하기 위해 경로 앞에 추가할 수 있습니다 .

ls ./*.pdf

--많은 프로그램에서는 옵션 끝을 알리기 위해 파일 이름 인수 앞에 삽입할 수도 있습니다 .

ls -- *.pdf

물론 사용자에게 권장되는 접근 방식은 파일 이름을 바꾸는 것입니다.

관련 정보