원격 스크립트에서 실행할 때 find가 작동하지 않습니다.

원격 스크립트에서 실행할 때 find가 작동하지 않습니다.

스크립트에 다음 줄이 있습니다.

find ~ Templates -maxdepth 0 -type d -empty

예상대로 잘 작동합니다. 그러나 스크립트를 삼바 공유에 복사하고 거기에서 실행하면( bash myscript.sh) find디렉터리를 찾을 수 없습니다.

find: ‘Templates’: No such file or directory 

$PATH 변수는 동일하며 strace에서 이유를 찾을 수 없습니다.

find가 왜 이렇게 동작하는지 아는 사람이 있나요? 이것은 버그입니까, 아니면 find명령을 예상대로 사용하지 않습니까?

Ubuntu 19.10 및 bash 5.0 사용

답변1

find: ‘Templates’: No such file or directory템플릿 하위 디렉터리가 없기 때문에 이 메시지를 받았습니다.

  • 둘 중 하나 - 스크립트를 실행하는 순간부터
  • cd또는 - 스크립트에 언급되지 않은 부분이 전환된 디렉토리

이것이 모두 오타인지, 무슨 뜻인지 궁금합니다 ~/Templates. 어느 쪽이든 ~스크립트에서 사용 하지 말고 를 사용 "$HOME"하면 생성된 경로는 가 됩니다 "$HOME/Templates".

답변2

"아니요. 템플릿은 '~'에서 검색하는 디렉터리이거나 사용자의 홈 디렉터리이기 때문입니다."

find ~ -maxdepth 0 -type d -empty -name Templates

답변3

삼바가 리눅스와 동일한 환경 변수를 가지고 있다고 믿게 만드는 이유는 무엇입니까?

검색하려는 디렉토리에 대한 실제/전체 경로를 사용하십시오. 이는 ~디렉토리가 아니므로 비어 있을 수 있습니다. 이것이 바로 find가 이를 검색 패턴( ) Templates이 아닌 경로 로 취급하는 이유입니다.find: ‘Templates’: No such file or directory

삼바 디렉토리에서 쉘을 시작하고 그 내용을 볼 수 있습니까 $ pwd? 다음 명령을 사용하여 전체 환경을 확인할 수도 있습니다 $ set.

Samba 책 변수 사용 장홈 디렉토리가 가 %H아니라고 말합니다 ~.

소규모 실험:

$ ls -l | grep -E '^d'  # to show there is 1 directory (tmp), which is not empty but doesnt have `Templates`
drwxr-xr-x 2  user  group  24576 Mar 16 16:16 tmp
$ find Templates -maxdepth 0 -type d -empty  # as if <path> (`~`) was empty
find: Templates: No such file or directory

$ find tmp Templates -maxdepth 0 -type d -empty  # as if `~` was `tmp`
find: Templates: No such file or directory

비어 있거나 ~(첫 번째는 "빈" 경로) find ...검색 경로에 없습니다(두 번째).Templatesfind

$ touch Templates
$ find tmp Templates -maxdepth 0 -type d -empty  # as if `~` was `tmp`

$ rm Templates; mkdir Templates
$ find tmp Templates -maxdepth 0 -type d -empty  # as if `~` was `tmp`
Templates

만약에

템플릿은 "~" 또는 사용자의 홈 디렉터리에서 검색하는 디렉터리입니다.

그 다음에

$ find ~ -maxdepth 1 -type d -empty -name Templates
~/Templates

문제를 해결해야합니다.

-maxdepth 0명령줄 매개변수에만 테스트와 작업을 적용합니다(다음에 따라).사람들이 발견했습니다;또한 확인하세요이 답변)

관련 정보