문자는 다국어 문자 일 수 있으므로 en_US 문자 세트에서 제어 코드로 표시 될 가능성이 높으므로 ls가 물음표로 표시합니다.
이는 전역 프로파일에서 기본적으로 분배에서 별명 l을 선택했기 때문일 수 있습니다. 예를 들면 다음과 같습니다.
alias ls='ls -q'
쉘에 입력하면 배포판이 그렇게되었는지 확인할 수 있습니다.
alias ls
다음과 같은 내용이 인쇄됩니다.
$ alias ls
alias ls='ls --color=auto'
아래 링크 된 페이지는 "ls -b"를 수행하면 8 진 제어 코드가 표시되어 적어도 어떤 문자가 사용되고 있는지 알 수 있습니다.
http://www.arsc.edu/arsc/support/howtos/nonprintingchars/
그것이 효과가 없다고 가정하면 다른 옵션이 바닥에 더 가깝다고 언급했습니다.
지금까지 몰랐던 도구 인 OctalDump (Debian-/ usr / bin / od)
$ ls | od -b
제어 코드의 8 진 형식을 보여줍니다.
$ ls | od -c
끝에있을 수있는 숨겨진 추가 공백을 포함하여 문자를 표시합니다 (예에서 끝에 공백이 있음에 유의하십시오)
어떤 제어 문자가 사용 중인지와 추가 숨겨진 공백이 있는지 알면 제어 문자를 이스케이프 처리하여 디렉토리로 cd하는 방법을 찾을 수 있습니다. 실패하면 디렉토리 이름을 바꾸는 몇 가지 옵션이 있습니다.
위의 페이지에는 편리하게도 mv 명령을 통해 제어 문자를 제거하는 빠르고 더러운 방법이 있습니다.이 명령은 공백을 피하고 DONT는 물음표를 피합니다 (따라서 단일 문자로 만듭니다) 이 불량 디렉토리가있는 디렉토리에 다른 것이 존재하지 않는 한. 이러한 명시 적 요구 사항의 이유는 와일드 카드 문자와 단일 공백 만 사용하기 때문에 와일드 카드가 다른 파일이나 디렉토리와 실수로 일치하지 않기 때문입니다.
위의 방법으로 문제가 해결되지 않으면 다른 방법으로 언급 한 찾기 방법을 다른 방식으로 사용할 수 있습니다. 시도한 inode 번호를 사용하여 디렉토리로 cd하려고 시도하는 대신 inode 번호를 사용하여 이름을 바꿀 수 있습니다. 위의 페이지에서 해당 명령 하나에 대해 전체 3 줄 세트를 모두 복사하십시오 (단, 이름을 바꾸려는 실제 이름으로 "원하는 이름"부분을 바꾸십시오).
디렉토리 이름이 변경되면 디렉토리에 액세스 할 수 있어야합니다. 이름에 제어 코드가있는 파일도 포함하지 않기를 바랄 수도 있고 방금 이름을 바꾼 디렉토리의 모든 파일 (및 / 또는 하위 디렉토리)에 대해 헹구고 반복해야합니다.이 시점에서 for 루프는 아마도 1에서 증가하여 모든 파일의 이름을 숫자로 지정하는 것이 좋습니다. :-)
cd */
가있을 수 있습니다.*
쉘이 이해할 수있는 디렉토리 설명을 확장해야하며cd
추가 인수는 무시합니다. 다른 방법은 그래픽 파일 관리자 (터미널 기반 MC 포함) 또는 내장 파일 트리 탐색기 (예 : Vim)를 사용하는 것입니다. 또한 실험 할 수-exec
로 전환find, not with
하지만 예와 (내장 쉘입니다) 직접 cd`ls
및 기타 도구.