é
[ -d /var/lib/mysql/tmp ] || mkdir /var/lib/mysql/tmp
o que você está procurando? Veja man test para detalhes.
Ou para alcançar seus objetivos:
_DIR=/var/lib/mysql/tmp
[ -d ${_DIR} ] && rm -rf ${_DIR}
mkdir ${_DIR}
Eu estou escrevendo um script Ruby dentro do qual eu gostaria de invocar / executar alguns comandos shell .
Os comandos do shell que gostaria de executar devem verificar se existe um diretório chamado ' tmp ' em /var/lib/mysql/ ou não.
se existir, remova todos os arquivos (incluindo sub-dirs & arquivos) dentro de /var/lib/mysql/tmp/ .
Se não existir, basta criá-lo.
( P.S. apenas usuário root pode acessar /var/lib/mysql/ )
Eu sei que mkdir criará o diretório, mas não tenho certeza como fazer um comando para verificar se o diretório existe ou não .
Como um todo, eu gostaria de ter alguns comandos shell para alcançar o cenário descrito acima, e a maneira mais elegante, melhor , já que eu rodaria os comandos do shell em um script ruby. / p>
Alguém pode me ajudar?
é
[ -d /var/lib/mysql/tmp ] || mkdir /var/lib/mysql/tmp
o que você está procurando? Veja man test para detalhes.
Ou para alcançar seus objetivos:
_DIR=/var/lib/mysql/tmp
[ -d ${_DIR} ] && rm -rf ${_DIR}
mkdir ${_DIR}
Os dois comandos shell a seguir farão o seguinte:
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
Observação: você pode precisar preceder cada linha com sudo para permitir que seu script Ruby seja carregado os comandos shell com privilégios de root. No entanto, pode ser complicado configurar o sudo corretamente.
A opção -p para mkdir elimina a necessidade para testar a existência de um diretório:
-p Create intermediate directories as required. If this option is
not specified, the full path prefix of each operand must already
exist. On the other hand, with this option specified, no error
will be reported if a directory given as an operand already
exists. Intermediate directories are created with permission
bits of ''rwxrwxrwx'' (0777) as modified by the current umask,
plus write and search permission for the owner.
Você poderia usar
test -d /var/lib/mysql/tmp && rm -rf /var/lib/mysql/tmp/* || mkdir /var/lib/mysql/tmp
mas sugiro que você use os próprios recursos internos do ruby para verificar se o diretório existe e, em seguida, chame rm … ou mkdir … dependendo do resultado do teste.