Como escrever e usar um arquivo de comando em lotes de texto

3

Como posso escrever e usar depois disso, um arquivo de comando de lote de texto típico?

Estou falando de um arquivo com os seguintes comandos:

sudo -i
sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get check
exit

Eu acho que posso escrever com o Leafpad, mas ...

  1. Onde devo salvá-lo?

  2. Qual formato? Qual nome e extensão?

  3. Como posso usá-lo, depois disso, em uma sessão do LXTerminal, com apenas um pedido (idealmente, se houvesse uma maneira de usá-lo automaticamente toda vez que o sistema fosse iniciado)?

Muito obrigado pelo seu tempo!

    
por Juan 09.11.2015 / 00:58

2 respostas

9

Não há arquivos "batch" no mundo unix-like. Usamos scripts contendo "she-bangs". Para criar um script como este, abra um editor de texto (como o Leafpad) e comece com uma linha como esta:

#!/path/to/interpreter

Onde /path/to/interpreter é a localização do binário que será usado para interpretar seu script. No Linux, normalmente usamos "bash" (Bourne Again SHell), uma "evolução" do bom e velho Bourne Shell. O que o bash faz basicamente é executar binários com argumentos especificados no script a partir de caminhos incluídos na variável de ambiente PATH (geralmente inclui / bin, / sbin, / usr / bin, / usr / sbin e outros).

Mas você também pode usar outros intérpretes, como Python, Perl, Ruby, sh, csh, zsh, dash, ksh, além de muitas opções.

Abaixo da she-bang vem seu roteiro. No seu caso específico, para executar os comandos especificados, podemos usar bash, em um script como este:

#!/bin/bash

# the line above sets bash as the interpreter

# note that "sudo" is not required here because we will run the script as super user later.

apt-get update
# updates APT repositories

apt-get upgrade
# check for software upgrades and upgrade them

apt-get autoremove
# remove obsolete packages

apt-get autoclean
# remove stored .deb files

apt-get check
# update package cache and check for broken dependencies

Agora salve seu arquivo. Não há necessidade de uma extensão, mas por razões simbólicas, nomeie-a com uma extensão .sh. Vamos executar o script como superusuário, por isso não há necessidade de alterar as permissões de arquivo.

Abra um terminal e vá para o caminho onde você salvou seu script. Vamos dizer que você salvou como script.sh. Execute o seguinte comando:

chmod +x script.sh

chmod significa "modo de mudança" e é usado para alterar quem pode fazer o que com o seu script. +x adiciona a permissão de execução para todos os usuários, o que permite que qualquer pessoa execute o script como se fosse qualquer outro programa. Não entrarei em uma lista completa do que todas as permissões diferentes significam, mas esta questão resume-os bastante bem. Depois disso, você pode digitar:

sudo ./script.sh

Não esqueça a parte ./ e não deixe espaços entre o., o / e o s. O comando sudo executará ./script.sh com privilégios de root, então sua senha será necessária (você tem que ser o administrador do sistema, é claro).

    
por Eduardo Cola 09.11.2015 / 02:16
2

O que é chamado no mundo do Windows de um arquivo "batch", é chamado de "script" no mundo * NIX. Na maior parte, os scripts são um arquivo com vários comandos ou comandos organizados de maneiras específicas. Veja algumas coisas que você deve saber:

Estrutura básica

Normalmente, você verá algo assim:

#!/bin/sh
# Comments 
printf "Hello world"

Primeira linha especifica um intérprete (normalmente chamado de shebang line), o segundo é um comentário (qualquer coisa depois de # não ser interpretado, apenas texto simples), o terceiro é um comando real

No terminal, você pode chamar um arquivo sem a linha shebang. Isso fará com que o script seja lido e interpretado pelo seu shell atual (também conhecido como interpretador de comandos). Por exemplo, estou executando mksh shell. Eu especifico o #!/bin/sh que será executado pelo shell padrão do Ubuntu - dash . Cada shell tem alguns detalhes sobre sua sintaxe de comandos, portanto você deve adaptar seu script de acordo.

Escrevendo script

Isso deve ser feito no editor de texto, mas você também pode escrevê-lo no LibreOffice Writer e salvá-lo em texto simples. Pessoalmente, eu uso apenas editores de texto de linha de comando ( nano para a maior parte ou vim ); analogia aqui seria edit em versões anteriores ao Windows 7 do Windows.

Nomes e extensões de arquivos não importam em sistemas * NIX, pois o sistema lê os primeiros bytes do arquivo para determinar seu tipo. Eu entrei no habbit adicionando .sh extension, mas realmente - é desnecessário.

Torne o script executável

Isso é feito usando o comando chmod 755 scriptName.sh . Isso significa read-write-execute permissões para o proprietário (você) read-execute para usuários que estão no grupo do proprietário (por exemplo, o proprietário do arquivo pode ser admin , portanto, se você pertencer a admin group, poderá ler e executar o arquivo) e read-execute para qualquer outra pessoa. Nunca dê permissões de gravação para os outros! Se você tem privilégios de superusuário que podem resultar em algum juju ruim (também é possível ser hackeado, e um usuário mal-intencionado alterará seus scripts para que ele mantenha suas informações pessoais).

Executando scripts

Você sempre pode executar um script navegando até o local do script no terminal e digitando ./scriptName .

Para executar qualquer comando em qualquer lugar, incluindo scripts, eles devem ser armazenados em algum lugar do sistema incluído na variável $PATH . Aqui está o que eu quero dizer:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/xieerqi/bin
A variável

$PATH informa que se um script ou arquivo binário executável estiver localizado em /usr/local/sbin ou /usr/local/bin ou qualquer outro desses diretórios, posso executar esse comando digitando-o no terminal.

Agora, para seus próprios scripts, você deve criar a pasta bin e armazenar os scripts nela. Se você estiver usando bash , seu arquivo de configuração .profile contém as seguintes linhas:

# set PATH so it includes user's private bin if it exists
#if [ -d "$HOME/bin" ] ; then
#    PATH="$HOME/bin:$PATH"
#fi

Se você descomente (remova # ) das três últimas linhas (de if a fi ), sua pasta pessoal bin será incluída na variável $PATH .

    
por Sergiy Kolodyazhnyy 09.11.2015 / 07:29