é
[ -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.