Criando uma árvore de diretórios em uma única linha

Iniciado por voyeg3r, 17 de Dezembro de 2006, 10:41

tópico anterior - próximo tópico

voyeg3r

para criar uma árvore de diretórios (ficheiros em portugal) faça:

mkdir -p docs/{img/{fotos/,wallpapers/,icons/},textos/{man/{shel/,vim/}}}

dica adicional - para entrar numa pasta de qualquer maneira faça:

pasta=~/tmp

  [ -d $pasta ] || mkdir $pasta ; cd $pasta


ou "||" pasta ~/tmp existe ou vou cria-la "mkdir ~/tmp" em seguida ";" entre na mesma

Referências você encontra aqui (em inglês)
http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html

candido1212

Estou com problemas em relacao a isso

diretamente pela linha de comando funciona, mas quando é executado em um script sh nao funciona.

exemplo, parte da linha no script:

mkdir -p xinha/{image,lang,plugins,skins,images}



agora se executar a linha acima, diretamente pela linha de comando, funciona, qual ser á o problema?? Alguém saberia dizer o problema.

Me parece que nao esta no mkdir, e sim no ambiente que use esse tipo de sintaxe {}


tentei usar:  #sh script.sh
tentei: #bash script.sh

no topo do arquivo mudei de #!/bin/sh para #!/bin/bash

também nao funcionou

felipeborges

O script sh deve está executando na pasta /bin, ou /sbin, como foi especificado no cabeçalho do shell script, assim ele não tem permissões de criar tais diretórios localmente.

Tente especificar o diretório em que o script trabalhará. Um cd /home/<user>/ antes das demais linhas já leva a execução para este script.
Meu blog sobre GNU/Linux
Debian Lenny e Gentoo.

candido1212

sim eu sei, é que apenas passei uma parte do codigo vou passar mais completo

#!/bin/bash
PATH_TPARTY="/web/tparty"
mkdir -p tparty
cd tparty

Xinha()
{
        # http://xinha.webfactional.com/wiki/DownloadsPage
        mkdir -p xinha/{image,lang,plugins,skins}
}



Este é uma parte mais completa do codigo SH

como eu faço,

vou até a pasta onde desejo, e entao
./caminho_do_script.sh

que é o exemplo acima (conteudo acima)

como disse no post anterior, pela linha de comando, funciona, mas pelo script cria uma pasta "{image,lang,plugins,skins}", ou seja, o ambiente nao interpreta que dentro de {} tem nome de pastas (image, lang, ...)


punish3r

boas,
também não conheço muito de script sh mas ainda hoje também estava com uns problemazitos parecidos em solaris.

Tenta colocar um acento grave antes e depois do comando com o descrito abaixo.

`mkdir -p xinha/{image,lang,plugins,skins}`