Nota: - $ USER imprimirá os nomes de usuário dos usuários de login atuais.
Se você está curioso para saber qual versão do bash shell está instalada no sistema, podemos verificá-la usando o seguinte comando.
$ bash --versionSaída da versão Bash.
Criação e execução de script Bash
Vamos começar criando um arquivo simples usando qualquer editor de sua escolha. Para mim, o editor vi é mais confortável. Para tornar o arquivo executável, precisamos adicionar shebang (!#) e localização do interpretador bash no início do script. Eu criei um texto.arquivo txt e adicioná-lo ao diretório bash_demo no meu diretório inicial que contém algum texto para fins de demonstração.
$ touch bash_demo.sh$ vi bash_demo.sh
Adicione as seguintes linhas em seu editor de texto para um exemplo de demonstração após criar um arquivo; se você não tiver, o editor irá criar um novo arquivo ao escrever e sair.
#!/ bin / bashtexto cp.txt / tmp /
echo “Arquivo copiado.”
Podemos executar o script usando ./ antes do arquivo de script, que determina o arquivo dir atual.
$ ./ bash_demo.shQuando executamos o script, o seguinte erro será lançado em nosso terminal.
Execução inicial do arquivo bash.
Quando criamos um arquivo por padrão, o usuário não tem permissão de execução para o arquivo. Para fornecer permissão de execução ao usuário, o seguinte comando deve ser executado.
$ chmod + x bash_demo.shSaída após permissão concedida.
Copie apenas arquivos de um diretório específico
Para obter todos os arquivos e diretórios de um caminho específico, usaremos o loop for no script e, em seguida, filtraremos o único arquivo usando a condição if. No exemplo abaixo, executamos o comando cp executado apenas se o iterador for um arquivo que é determinado -f flag.
#!/ bin / bashdpath = / var / log / nginx / *
para FILE em $ dpath
Faz
se [[-f $ FILE]]
então
cp $ FILE / home / $ USER /
senão
echo “Não há arquivos no caminho fornecido.”
fi
feito
Copie todos os arquivos de extensões específicas
Neste exemplo, copiaremos todos os arquivos com o .extensão de log. Precisamos adicionar *.logar no caminho para que itere o único arquivo com .extensão de log apenas para loop.
#!/ bin / bashpara FILE em / var / log / nginx / *.registro
Faz
cp $ FILE / home / $ USER /
feito
Copiar todos os arquivos, incluindo o diretório
Neste exemplo, iremos copiar todos os arquivos, incluindo diretórios, recursivamente. Para isso, simplesmente precisamos adicionar o comando -R cp, onde -R determina a busca recursiva do diretório.
#!/ bin / bashpara FILE em / var / log / *
Faz
cp -R $ ARQUIVO / home / $ USUÁRIO /
feito
Copie os arquivos do caminho especificado pelo usuário
Neste exemplo, vamos copiar os arquivos do diretório especificado pelo usuário. Para fazer isso, usaremos o comando read para solicitar o caminho do usuário e, em seguida, verificar se o usuário fornece o caminho para dir ou não, o que é feito pelo sinalizador -d na condição. Depois de verificar o dir, usaremos um loop for para iterar todos os arquivos e o dir dentro do caminho fornecido e, novamente, filtrar os únicos arquivos usando a condição if. Se a condição corresponder, o seguinte comando cp será executado.
#!/ bin / bashecho “Forneça um caminho para dir.”
caminho de leitura
if [[-d $ path]]
então
para FILE em $ path / *
Faz
se [[-f $ FILE]]
então
cp $ FILE / home / $ USER /
senão
echo “Não há arquivos no caminho fornecido.”
fi
feito
senão
echo “Caminho para dir é obrigatório”
fi
No meu diretório inicial, tenho os seguintes arquivos e diretório.
Saída ao fornecer o caminho para um arquivo.
Saída ao fornecer caminho de localização dir.
Depois de executar o arquivo de script, podemos verificar a saída no diretório predefinido no script. No meu caso, copiei o arquivo no meu diretório inicial, e o seguinte é o resultado.
Conclusão
Neste artigo, aprendemos como copiar arquivos usando script bash. Podemos usar muitas outras operações como um loop, if-else, etc. O script Bash é mais eficaz ao trabalhar com vários comandos para realizar tarefas específicas. Espero que goste deste artigo sobre como copiar arquivos usando um script bash.