저는 일부를 호출/실행하려는 Ruby 스크립트를 작성 중입니다.쉘 명령.
내가 실행하려는 쉘 명령은 '라는 이름의 디렉토리를 확인해야 합니다.tmp' /var/lib/mysql/
그것이 존재하는가?
있는 경우 내부의 모든 파일(하위 디렉터리 및 파일 포함)을 삭제합니다
/var/lib/mysql/tmp/
.존재하지 않는 경우 작성하십시오.
(폴리스티렌루트 사용자만 접근 가능 /var/lib/mysql/
)
디렉토리가 생성될 것이라는 것은 알고 있지만 mkdir
확실하지 않습니다.명령을 사용하여 디렉토리가 존재하는지 확인하는 방법.
전반적으로 위 시나리오를 구현하기 위해 몇 가지 셸 명령이 필요합니다.접근 방식이 우아할수록 좋습니다., Ruby 스크립트 내에서 쉘 명령을 실행할 것이기 때문입니다.
누구든지 나를 도와줄 수 있나요?
답변1
예
[ -d /var/lib/mysql/tmp ] || mkdir /var/lib/mysql/tmp
무엇을 찾고 계신가요? man test
자세히보다.
또는 두 가지 목표를 모두 달성하세요.
_DIR=/var/lib/mysql/tmp
[ -d ${_DIR} ] && rm -rf ${_DIR}
mkdir ${_DIR}
답변2
다음 두 가지 셸 명령으로 이 문제를 해결할 수 있습니다.
mkdir -p /var/lib/mysql/tmp/ # create directories (that don't exist, yet)
rm -rf /var/lib/mysql/tmp/* # delete all files and sub-directories
참고: 각 줄 앞에 다음을 입력해야 할 수도 있습니다.sudo
Ruby 스크립트를 활성화하여 루트 권한으로 셸 명령을 실행하세요. 그러나 sudo를 올바르게 설정하는 것은 까다로울 수 있습니다.
이것-p 옵션을 mkdir에 추가디렉토리가 존재하는지 테스트할 필요가 없습니다.
-p 필요에 따라 중간 디렉토리를 만듭니다. 만약 이 옵션이 지정되지 않았습니다. 각 피연산자의 전체 경로 접두사는 다음과 같아야 합니다. 존재하다. 반면에 이 옵션을 지정하면 오류가 발생하지 않습니다. 디렉토리가 피연산자로 제공된 경우 보고됩니다. 존재하다. 중간 디렉터리는 권한을 통해 생성됩니다. 현재 umask에 의해 수정된 "rwxrwxrwx"(0777) 비트, 또한 소유자에 대한 쓰기 및 검색 권한도 있습니다.
답변3
당신이 사용할 수있는
test -d /var/lib/mysql/tmp && rm -rf /var/lib/mysql/tmp/* || mkdir /var/lib/mysql/tmp
하지만 Ruby 자체 내장 함수를 사용하여 디렉토리가 존재하는지 확인한 다음 rm …
테스트 결과에 따라 or 를 호출하는 것이 좋습니다.mkdir …