Pagina inicial » como » O Guia do Iniciante ao Shell Scripting The Basics

    O Guia do Iniciante ao Shell Scripting The Basics

    O termo “shell script” é mencionado frequentemente em fóruns Linux, mas muitos usuários não estão familiarizados com isso. Aprender este método de programação fácil e poderoso pode ajudá-lo a economizar tempo, aprender melhor a linha de comando e banir tarefas tediosas de gerenciamento de arquivos.

    O que é o shell de script?

    Ser um usuário do Linux significa brincar com a linha de comando. Goste ou não, há apenas algumas coisas que são feitas muito mais facilmente através desta interface do que apontando e clicando. Quanto mais você usa e aprende a linha de comando, mais você vê seu potencial. Bem, a linha de comando em si é um programa: o shell. A maioria das distribuições Linux hoje usa Bash, e é isso que você está realmente inserindo comandos em.

    Agora, alguns de vocês que usaram o Windows antes de usar o Linux podem lembrar de arquivos em lote. Estes eram pequenos arquivos de texto que você poderia preencher com comandos para executar e o Windows os executaria por sua vez. Era uma maneira inteligente e organizada de fazer algumas coisas, como rodar jogos no laboratório de informática do ensino médio quando você não conseguia abrir pastas do sistema ou criar atalhos. Arquivos em lote no Windows, embora úteis, são uma imitação barata de scripts de shell.

    Scripts Shell nos permitem programar comandos em cadeias e fazer com que o sistema os execute como um evento com script, assim como os arquivos em lote. Eles também permitem funções muito mais úteis, como a substituição de comandos. Você pode invocar um comando, como date, e usá-lo como parte de um esquema de nomenclatura de arquivos. Você pode automatizar backups e cada arquivo copiado pode ter a data atual anexada ao final de seu nome. Scripts não são apenas invocações de comandos. Eles são programas por direito próprio. Scripting permite usar funções de programação - como 'for' loops, if / then / else, e assim por diante - diretamente na interface do seu sistema operacional. E você não precisa aprender outro idioma porque está usando o que já sabe: a linha de comando.

    Esse é realmente o poder do script, eu acho. Você pode programar com comandos que você já conhece, enquanto aprende os grampos da maioria das linguagens de programação. Precisa fazer algo repetitivo e tedioso? Script isso! Precisa de um atalho para um comando realmente complicado? Script isso! Quer construir um realmente fácil de usar interface de linha de comando para algo? Escreve!

    Antes de você começar

    Antes de começarmos nossa série de scripts, vamos cobrir algumas informações básicas. Nós estaremos usando o shell bash, que a maioria das distribuições Linux usa nativamente. O Bash está disponível para usuários do Mac OS e o Cygwin no Windows também. Como é tão universal, você deve ser capaz de criar scripts independentemente da sua plataforma. Além disso, desde que todos os comandos mencionados existam, os scripts podem funcionar em várias plataformas com pouco ou nenhum ajuste necessário.

    Os scripts podem facilmente usar privilégios de "administrador" ou "superusuário", por isso é melhor testar os scripts antes de colocá-los em funcionamento. Use também o bom senso, como garantir que você tenha backups dos arquivos nos quais você está prestes a executar um script. Também é muito importante usar as opções corretas, como -i para o comando rm, para que sua interação seja necessária. Isso pode evitar alguns erros desagradáveis. Como tal, leia os scripts que transfere e tenha cuidado com os dados que possui, apenas no caso de as coisas correrem mal.

    Em seu núcleo, os scripts são apenas arquivos de texto simples. Você pode usar qualquer editor de texto para escrevê-los: gedit, emacs, vim, nano ... Esta lista continua. Apenas certifique-se de salvá-lo como texto simples, não como rich text ou como um documento do Word. Desde que eu amo a facilidade de uso que nano fornece, eu vou estar usando isso.

    Permissões e nomes de script

    Scripts são executados como programas e, para que isso aconteça, eles precisam ter as permissões apropriadas. Você pode tornar os scripts executáveis ​​executando o seguinte comando:

    chmod + x ~ / somecrazyfolder / script1

    Isso permitirá que qualquer pessoa execute esse script em particular. Se você quiser restringir seu uso apenas ao seu usuário, você pode usar isto:

    chmod u + x ~ / somecrazyfolder / script1

    Para executar este script, você teria que fazer o cd no diretório correto e então executar o script da seguinte forma:

    cd ~ / somecrazyfolder

    ./ script1

    Para tornar as coisas mais convenientes, você pode colocar scripts em uma pasta “bin” em seu diretório inicial:

    ~ / bin

    Em muitas distros modernas, essa pasta não é mais criada por padrão, mas você pode criá-la. Geralmente, é onde os arquivos executáveis ​​são armazenados que pertencem ao seu usuário e não a outros usuários. Ao colocar scripts aqui, você pode simplesmente executá-los digitando o nome deles, assim como os outros comandos, em vez de ter que usar cd e usar o prefixo './'.

    Antes de nomear um script, no entanto, você deve usar o seguinte comando para verificar se você tem um programa instalado que usa esse nome:

    qual [comando]

    Muitas pessoas nomeiam seus primeiros scripts como "teste" e, quando tentam executá-lo na linha de comando, nada acontece. Isso ocorre porque está em conflito com o comando test, que não faz nada sem argumentos. Sempre certifique-se de que os nomes dos seus scripts não entrem em conflito com os comandos, caso contrário você poderá se ver fazendo coisas que não pretende fazer.!

    Diretrizes de script

    Como mencionei antes, todo arquivo de script é essencialmente texto simples. Isso não significa que você pode escrever o que você quer, quer queira quer não. Quando um arquivo de texto é tentado a ser executado, os shells irão analisá-los em busca de pistas sobre se eles são scripts ou não, e como lidar com tudo corretamente. Por causa disso, existem algumas diretrizes que você precisa saber.

    1. Todo script deve estar com “#! / Bin / bash”
    2. Cada nova linha é um novo comando
    3. Linhas de comentário começam com #
    4. Comandos estão rodeados por ()

    O hack do hack-bang

    Quando um shell é analisado por um arquivo de texto, a maneira mais direta de identificar o arquivo como um script é fazer sua primeira linha:

    #! / bin / bash

    Se você usar outro shell, substitua seu caminho aqui. As linhas de comentário começam com hashes (#), mas adicionando o estrondo (!) E o caminho do shell depois é uma espécie de hack que ignorará essa regra de comentário e forçará o script a executar com o shell para o qual essa linha aponta.

    Nova linha = novo comando

    Cada nova linha deve ser considerada um novo comando ou um componente de um sistema maior. Se / then / else instruções, por exemplo, assumirá várias linhas, mas cada componente desse sistema está em uma nova linha. Não deixe que um comando passe para a próxima linha, pois isso pode truncar o comando anterior e gerar um erro na próxima linha. Se o seu editor de texto estiver fazendo isso, você deve desativar a quebra de texto para estar no lado seguro. Você pode desativar a quebra de texto em nano bits pressionando ALT + L.

    Comentário frequentemente com #s

    Se você iniciar uma linha com um #, a linha será ignorada. Isso o transforma em uma linha de comentário, onde você pode se lembrar de qual foi a saída do comando anterior ou qual será o próximo comando. Novamente, desative a quebra de texto ou quebre seu comentário em várias linhas que começam com um hash. Usar muitos comentários é uma boa prática, pois permite que você e outras pessoas ajustem seus scripts com mais facilidade. A única exceção é o hack Hash-Bang mencionado anteriormente, então não siga #s com! S. ;-)

    Comandos são cercados por parênteses

    Antigamente, as substituições de comandos eram feitas com marcas de escala única (', compartilha a tecla ~). Nós não vamos tocar nisso ainda, mas como a maioria das pessoas explora depois de aprender o básico, é provavelmente uma boa ideia mencionar que você deve usar parênteses. Isto é principalmente porque quando você aninha - coloca comandos dentro de outros comandos - parênteses funcionam melhor.

    Seu primeiro script

    Vamos começar com um script simples que permite copiar arquivos e acrescentar datas ao final do nome do arquivo. Vamos chamá-lo de "datecp". Primeiro, vamos verificar se esse nome está em conflito com algo:

    Você pode ver que não há saída do comando which, então estamos prontos para usar esse nome.

    Vamos criar um arquivo em branco na pasta ~ / bin:

    toque em ~ / bin / datecp

    E vamos mudar a permissão agora, antes de esquecermos:

    Vamos começar a construir nosso script então. Abra esse arquivo no seu editor de texto de sua escolha. Como eu disse, eu gosto da simplicidade do nano.

    nano ~ / bin / datecp

    E, vamos em frente e colocar na primeira linha de pré-requisito, e um comentário sobre o que este script faz.

    Em seguida, vamos declarar uma variável. Se você já usou álgebra, provavelmente sabe o que é isso. Uma variável nos permite armazenar informações e fazer coisas com elas. Variáveis ​​podem “expandir” quando referenciadas em outro lugar. Ou seja, em vez de exibir seu nome, eles exibirão seus conteúdos armazenados. Mais tarde, você pode informar essa mesma variável para armazenar informações diferentes e qualquer instrução que ocorrer depois disso usará as novas informações. É um espaço reservado realmente extravagante.

    O que vamos colocar em variável? Bem, vamos armazenar a data e a hora! Para fazer isso, vamos chamar o comando date.

    Dê uma olhada na imagem abaixo para saber como criar a saída do comando date:

    Você pode ver que, adicionando diferentes variáveis ​​que começam com%, você pode alterar a saída do comando para o que você deseja. Para mais informações, você pode olhar a página de manual para o comando date.

    Vamos usar a última iteração do comando date, “date +% m_% d_% y-% H.% M.% S”, e use isso no nosso script.

    Se tivéssemos que salvar este script agora, poderíamos executá-lo e nos daria a saída do comando de data como esperávamos:

    Mas vamos fazer algo diferente. Vamos dar um nome de variável, como date_formatted para este comando. A sintaxe apropriada para isso é a seguinte:

    variável = $ (comando -options argumentos)

    E para nós, nós construiríamos assim:

    date_formatted = $ (data +% m_% d_% y% H.% M.% S)

    Isso é o que chamamos de substituição de comando. Basicamente, estamos dizendo que sempre que a variável “date_formatted” aparecer, execute o comando dentro dos parênteses. Então, qualquer saída que os comandos forneçam deve ser exibida em vez do nome da variável, “date_formatted”.

    Aqui está um script de exemplo e sua saída:

    Note que existem dois espaços na saída. O espaço entre aspas do comando echo e o espaço na frente da variável são exibidos. Não use espaços se você não quiser que eles apareçam. Observe também que sem essa linha "echo" adicionada, o script não forneceria absolutamente nenhum resultado.

    Vamos voltar ao nosso roteiro. Vamos em seguida adicionar a parte de cópia do comando.

    cp -iv $ 1 $ 2. $ date_formatted

    Isso chamará o comando copy, com as opções -i e -v. O primeiro pedirá a verificação antes de sobrescrever um arquivo, e o segundo exibirá o que está sendo desativado na linha de comando.

    Em seguida, você pode ver que eu adicionei a opção "$ 1". Quando o script, um sinal de dólar ($) seguido por um número irá denotar esse argumento numerado do script quando ele foi chamado. Por exemplo, no seguinte comando:

    cp -iv Trogdor2.mp3 toque.mp3

    O primeiro argumento é "Trogdor2.mp3" e o segundo argumento é "ringtone.mp3".

    Olhando para o nosso script, podemos ver que estamos nos referindo a dois argumentos:

    Isso significa que, quando executarmos o script, precisaremos fornecer dois argumentos para o script ser executado corretamente. O primeiro argumento, $ 1, é o arquivo que será copiado e é substituído pelo primeiro argumento do comando “cp -iv”..

    O segundo argumento, $ 2, atuará como o arquivo de saída para o mesmo comando. Mas você também pode ver que é diferente. Adicionamos um período e fizemos referência à variável "data_formatada" acima. Curioso sobre o que isso faz?

    Veja o que acontece quando o script é executado:

    Você pode ver que o arquivo de saída está listado como o que eu digitei por $ 2, seguido por um período, então a saída do comando date! Faz sentido, certo?

    Agora, quando eu executar o comando datecp, ele executará esse script e permitirá que eu copie qualquer arquivo para um novo local e adicione automaticamente a data e a hora ao final do nome do arquivo. Útil para arquivar coisas!


    O script do shell está no centro de fazer seu sistema operacional funcionar para você. Você não precisa aprender uma nova linguagem de programação para fazer isso acontecer. Tente criar scripts com alguns comandos básicos em casa e comece a pensar no que você pode usar para.

    Você faz script? Tem algum conselho para iniciantes? Compartilhe seus pensamentos nos comentários! Há mais para vir nesta série!