추가 읽기

추가 읽기

bash 스크립트에서 현재 디렉터리의 일부 파일을 복사하려고 하는데 문제는 해당 cp명령이 현재 디렉터리에서 작동하지 않는다는 것입니다. Backtrack 5(Ubuntu 기반)에서는 문제 없이 다음 명령을 사용할 수 있지만 Kali Linux(Debian 기반)에서는 사용할 수 없습니다.

cp -f -v *.{html,txt,php} /var/www/

먼저 디렉터리를 해당 파일이 있는 디렉터리로 변경하여 터미널에서 직접 이 명령을 실행할 수 있습니다. 하지만 스크립트를 사용할 때 다음 오류가 발생합니다.

cp -f -v *.{html,txt,php} /var/www/
cp: cannot stat `*.{html,txt,php}': No such file or directory

Ubuntu를 사용할 때 스크립트에서 이 명령을 다시 사용하는 데 문제가 없습니다.

답변1

중괄호 /bin/sh목록을 확장하는 시스템에서는 Bourne Again 쉘을 로 사용합니다 /bin/sh. 중괄호를 일반(메타가 아닌) 문자로 처리하고 와일드카드가 일치하지 않는다고 불평하는 시스템에서는 Debian The Almquist 쉘을 사용합니다. /bin/sh대화형 로그인 셸은 /bin/bash두 시스템 모두에서 거의 확실합니다 .

스크립트에서 POSIX 쉘 언어에 대한 이러한 확장을 사용하려면 스크립트 해석기를 이를 지원하는 쉘의 실제 이름으로 설정해야 합니다. 반대로, /bin/sh다른 시스템에서 스크립트 해석기로 사용하는 경우 POSIX 호환 셸 구문을 엄격히 준수해야 합니다.

추가 읽기

답변2

cannot stat `*.{html,txt,php}'상태의 오류 메시지는 다음과 같습니다 cp.

  • 일치하는 파일이 없거나
  • 사용 중인 쉘은 중괄호 확장을 수행하지 않습니다.

명령이 실패한 시스템에서 어떤 쉘을 사용하고 있습니까? bash 대신 sh 또는 dash라면 이는 여러분이 보고 있는 내용을 설명할 것입니다. *.html *.txt *.php중괄호 패턴 대신 명령을 내려볼 수 있습니다 .

관련 정보