Estou escrevendo um script de shell para executar no KornShell (ksh) no AIX. Eu gostaria de usar o mkdir
comando para criar um diretório. Mas o diretório já pode existir, caso em que eu não quero fazer nada. Então, eu quero testar para ver se o diretório não existe ou suprimir o erro "O arquivo existe" que é mkdir
lançado quando ele tenta criar um diretório existente.
Alguma idéia sobre a melhor forma de fazer isso?
mkdir
sistemas tipo Unix, não sobre Windows.-p
é necessário para conformidade com a especificação POSIX / Single Unix, portanto tudo o que pretenda cumprir com essas especificações será suportado-p
. O Windows é totalmente diferente, a menos que você use uma camada de emulação POSIX como Cygwin ou MSYS.mkdir -p
, você pode usar colchetes!{}
para criar uma árvore de diretórios "complexa" em um comando. Veja aqui: technosophos.com/2010/04/15/…||
vez de,&&
porque então toda a linha tem o status de saída correto. Importante se o seu shell é executado comerrexit
ou se essa linha é a última de uma função, caso de comutação, qualquer que seja.mkdir
; o shell expande essa expressão para uma lista discreta de argumentos que são passados paramkdir
.Isso deve funcionar:
ou:
que criará o diretório se ele não existir, mas avisará se o nome do diretório que você está tentando criar já está sendo usado por algo que não seja um diretório.
fonte
Use o sinalizador -p.
fonte
Definindo árvores de diretório complexas com um comando
fonte
mkdir
si, mas o shell que executa o comando. É chamado de expansão entre chaves - AFAIK, apenas Bash, ksh, zsh e o shell C o suportam.folder name
o que você precisa para usofolder\ name
)Se você não deseja mostrar nenhuma mensagem de erro:
Se você deseja mostrar sua própria mensagem de erro:
fonte
O velho experimentado e verdadeiro
fará o que quiser com nenhuma das condições de corrida que muitas das outras soluções possuem.
Às vezes, as soluções mais simples (e mais feias) são as melhores.
fonte
mkdir foo
funciona mesmo se o diretório existir. Para fazê-lo funcionar apenas se o diretório chamado "foo" não existir, tente usar o-p
sinalizador.Exemplo: -
Isso criará o diretório chamado "foo" somente se ele não existir. :)
fonte
fonte
Ou se você deseja verificar a existência primeiro:
-e é o teste existente para o shell korn.
Você também pode tentar pesquisar no manual do shell korn.
fonte
O mkdir não suporta mais a opção -p nos sistemas Windows 8+.
Você pode usar isto:
fonte
Referindo-se à página de manual
man mkdir
para a opção -p
que criará todos os diretórios em um determinado caminho, se existir, não gera erro; caso contrário, cria todos os diretórios da esquerda para a direita no caminho especificado. Experimente o comando abaixo. os diretórios
newdir
eanotherdir
não existe antes de emitir este comandoModo de usar correto
mkdir -p /tmp/newdir/anotherdir
Depois de executar o comando, você pode ver
newdir
eanotherdir
criar em / tmp. Você pode emitir esse comando quantas vezes quiser, o comando sempre o fezexit(0)
. Devido a esse motivo, a maioria das pessoas usa esse comando em scripts de shell antes de usar esses caminhos reais.fonte
Você pode usar o loop if para verificar se o diretório existe ou não, se ele não sair, crie o diretório.
1) dir = / home / dir_name
2) Você pode usar o diretório mkdir com a opção -p para criar um diretório. Ele verificará se o diretório não está disponível.
O mkdir -p também permite criar a estrutura em árvore do diretório. Se você deseja criar os diretórios pai e filho usando o mesmo comando, pode optar por mkdir -p
fonte
Esta é uma função simples (bash shell) que permite criar um diretório se ele não existir.
Você pode chamar a função acima como:
O exemplo acima cria fooDir e BarDir se eles não existirem. Observe a opção "-p" no comando mkdir, que cria diretórios recursivamente. Espero que isto ajude.
fonte
fonte
fonte