디렉터리 검사 및 생성을 위한 셸 명령

디렉터리 검사 및 생성을 위한 셸 명령

저는 일부를 호출/실행하려는 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

참고: 각 줄 앞에 다음을 입력해야 할 수도 있습니다.sudoRuby 스크립트를 활성화하여 루트 권한으로 셸 명령을 실행하세요. 그러나 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 …

관련 정보