removido
(usa Nenhuma)
Enviado em 26/01/2015 - 00:40h
Neto_volk escreveu:
Olá pessoal do viva o Linux sou iniciante no Linux e estou com uma dúvida sobre o comando "touch" eu sei que para criar um arquivo vazio basta o comando # touch nome-do-arquivo e para criar um arquivo vazio dentro de um diretório basta o comando # touch /caminho/nome-do-arquivo. Beleza o que estou tentando fazer é criar 1000 ou vários arquivos vazios de uma vez dentro de um diretório. Não estou conseguindo de forma alguma, como não tenho muito conhecimentos de programação fica difícil mas mesmo assim tentei fazer alguns scripts mais nenhum funcionou. vou enviar o código q fiz para que vcs possam me mostrar onde está o erro. Obrigado.
#!/bin/bash
while ( $# != 1001 ); do
if [ "$1" = "create-file" ]; then
touch /home/neto/Área de Trabalho/script
fi
done
A função do comando 'touch' é a modificar os timestamps de uma arquivo já existente através da manipulação dos mesmos nos metadados do filesystem (quando o filesystem suporta estas operações). Quando o arquivo não existe, ele é criado caso as opções '-c' or '-h' não são passadas como argumento. Salvo algumas exceções, é uma má prática de programação utilizar o 'touch' para criar arquivos. Os redirecionamentos do shell são a forma correta de criar arquivos vazios e também de "zerar" arquivos:
> arquivo_vazio.txt
Em alguns shells é necessário preceder o '>' com o comando nulo ':' para que ele não fique esperando por input, ficando:
:> arquivo_vazio.txt
Quanto ao seu script, não consegui entender _como_ pretende criar os arquivos. Parece que passará por linha de comando, 1000, argumentos ... Seria até melhor guardar os argumentos em arquivo, se for este o caso, e corrigir erros semânticos também. Ainda no script, o nome de diretório que você tem é "pouco educado" por conter caracteres fora do intervalo [0-9A-Za-z_], isto obriga o programador a trabalhar bem mais para manipulá-los, há ainda outros aspectos negativos que é o de backup/restauração, de recuperação de arquivos apagados acidentalmente, muitas ferramentas tem dificuldade ou sequer trabalham com estes nomes de arquivo/diretório, e por último, problemas com encoding.
Meu chute é que você tem mil usuários com o diretório "Área de Trabalho" e pretende criar o arquivo "script" dentro destre diretório, segue simples solução para a hipótese apresentada:
find /home/ -type d -name 'Área de Trabalho' -exec bash -c '>"{}"/script' \;