백슬래시가 표시된 이상한 디렉터리 이름

백슬래시가 표시된 이상한 디렉터리 이름

파일 디렉터리를 복사하여 다른 디렉터리에 붙여넣었습니다.

현재 결과는 이렇습니다 development\ /

그게 무슨 뜻인지 모르겠어요? Linux는 이제 이를 디렉토리로 인식하지도 못합니다.

디렉토리 소유자도 잘못되었습니다. 하지만 이렇게 하려고 하면 chown -R zugul /development결과는 다음과 같습니다.chown: cannot access `/development': No such file or directory

복사한 디렉토리를 붙여넣어보니 뭔가 잘못된 것 같습니다. 이 문제를 어떻게 해결할 수 있나요?

답변1

디렉터리 이름에 공백이 있는 것 같습니다.

따옴표를 사용할 수 있습니다.

chown -R zugul "/development /"

또는 이스케이프 문자를 사용할 수 있습니다.

chown -R zugul /development\ /

답변2

디렉터리 이름은 공백(일반 공백일 수도 있지만 분할할 수 없는 공백과 같은 기타 공백 문자일 수도 있음)으로 끝납니다. 에 전달 ls하는 옵션에 따라 \파일 이름에 있거나 다음 문자가 문자 그대로 파일 이름의 일부로 해석된다는 의미입니다.

디렉터리 이름을 바꿔야 합니다.

mv /development\  /development

(두 개의 연속 공백에 유의하십시오. 첫 번째 공백은 파일 이름의 일부이고 앞의 백슬래시로 인용되며 두 번째 공백은 두 인수를 구분합니다.) 또는

mv '/development ' /development

이라는 디렉터리가 이미 존재하는 경우 파일을 해당 디렉터리 /development밖으로 이동 하고 이름이 잘못된 디렉터리( )를 삭제합니다. 충돌에 유의하십시오(두 가지 모두에 대한 파일이 존재함)./development ​/developmentrmdir '/development '

명명 문제를 해결한 후에는 소유권과 같은 다른 문제를 처리할 수 있습니다.

답변3

chown시도해 보면 파일 이름이 올바르지 않습니다 chown -R zugul development\\\ /.

답변4

문자가 무엇인지 추측하는 대신 특수 문자를 참조하는 것을 사용하세요. 나는 이 접근 방식을 좋아합니다.

ls --quoting-style=shell-escape

이는 실제로 의미하는 바를 보여줍니다( $''ANSII C 이스케이프를 처리하는 bash/ksh 스타일 문자열 사용). 보너스로, 직접 전달할 수 있거나 chown셸에서 수행해야 하는 다른 모든 작업을 전달할 수 있는 미리 인용된 문자열을 제공해야 합니다. 예를 들어, 다음은 이름에 개행 문자가 있는 파일에 대한 ls 출력과 및 ls앞의 따옴표를 사용한 출력입니다.chgrprm

sauer@lightning:/tmp/test> ls -l
total 0
-rw-r--r-- 1 sauer users 0 Aug 14 17:04 a?file
sauer@lightning:/tmp/test> ls -l --quoting-style=shell-escape
total 0
-rw-r--r-- 1 sauer users 0 Aug 14 17:04 'a'$'\n''file'
sauer@lightning:/tmp/test> chgrp docker 'a'$'\n''file'
sauer@lightning:/tmp/test> ls -l --quoting-style=shell-escape
total 0
-rw-r--r-- 1 sauer docker 0 Aug 14 17:04 'a'$'\n''file'
sauer@lightning:/tmp/test> rm -v 'a'$'\n''file'
removed 'a'$'\n''file'

이상한 문자가 없는 이름으로 파일 이름을 바꾸는 것이 좋습니다. :)

sauer@lightning:/tmp/test> ls
a??file
sauer@lightning:/tmp/test> ls --quoting-style=shell-escape
'a'$'\t\033''file'
sauer@lightning:/tmp/test> mv -v 'a'$'\t\033''file' regular_filename
renamed 'a'$'\t\033''file' -> 'regular_filename'

관련 정보