cp: fts_open: 해당 파일이나 디렉터리가 없습니다. 오류

cp: fts_open: 해당 파일이나 디렉터리가 없습니다. 오류

이 스크립트가 있습니다.

    #!/bin/sh -x

    /bin/echo "Drag folder into Terminal and hit return ->"
    /usr/bin/read folderLocation

    /bin/cp -R "$folderLocation" /Users/my/Desktop/

그리고 그것은 다음을 반환합니다:

+ /bin/cp -R '' /Users/my/Desktop/
cp: fts_open: No such file or directory

왜 그런지 아시나요?

통찰력을 가져 주셔서 감사합니다!

답변1

Debian Gnu/Linux에서 이 작업을 수행했습니다.

#!/bin/sh -x

/bin/echo "Drag folder into Terminal and hit return ->"
read folderLocation

eval "cp -R  -t '/home/my/Desktop' $folderLocation"

읽을 경로를 삭제했습니다(읽을 필요는 없을 수도 있습니다(read는 bash에 내장되어 있으며 /usr/bin또는 에서 찾을 수 없음 /bin).

중요한 변경 사항은 마지막 줄에 있습니다:

  • -t 옵션 뒤에 대상 디렉토리가 오면 cp가 더욱 강력해집니다.
  • 읽기에 의한 반환 값 주위에 따옴표가 있기 때문에 eval이 필요합니다.

왜 ''(읽기에서 빈 문자열)을 얻습니까? 드래그 앤 드롭이 작동하지 않기 때문인 것 같습니다. 이는 셸의 기능이 아니라 터미널 및 파일 관리자의 기능입니다. 어떤 터미널 프로그램을 사용하고 있습니까?

관련 정보