Como eu crio um arquivo de script para comandos do terminal?

99

No Windows, posso escrever um arquivo contendo comandos para cmd (geralmente .cmd ou .bat files). Quando clico nesses arquivos, ele abre cmd.exe e executa os comandos que o arquivo contém.

Como eu faria isso no Ubuntu?

Tenho certeza de que esta é uma duplicata, mas não consigo encontrar minha resposta.
É semelhante a essas perguntas, mas elas não respondem à pergunta:

Armazene comandos de terminal freqüentemente usados em um arquivo

Emulador CMD.exe no Ubuntu para ser executado. arquivo cmd / .bat

    
por Seth 30.11.2012 / 03:56

3 respostas

129

Existem dois métodos.

Primeiro, o mais comum é escrever um arquivo, verifique se a primeira linha é

#!/bin/bash

Em seguida, salve o arquivo. Em seguida, marque-o como executável usando chmod +x file

Então, quando você clica (ou executa o arquivo a partir do terminal), os comandos serão executados. Por convenção, esses arquivos geralmente não têm extensão, mas você pode fazê-los terminar em .sh ou de qualquer outra forma.

Algumas notas:

  • Qualquer arquivo (e eu quero dizer qualquer) pode ser executado no Linux desde que a primeira linha seja um caminho para o programa que deve interpretar o arquivo. Exemplos comuns incluem /bin/python , /bin/sh , /bin/dash , mas até mesmo coisas estranhas funcionam como /bin/mysql
  • Bash é uma linguagem completa. É muito mais complexo que o cmd.exe no Windows. Tem uma strong linguagem de programação que suporta funções, loops, condicionais, operações com strings, etc.
  • Estes documentos podem ajudar se você tiver problemas.
  • Se você não deseja tornar o arquivo executável, pode executá-lo passando-o como um argumento para bash: bash file/to/run.sh

Um exemplo simples de bash

#!/bin/bash  
echo "This is a shell script"  
ls -lah  
echo "I am done running ls"  
SOMEVAR='text stuff'  
echo "$SOMEVAR"

O segundo método é gravar comandos usando script . Execute script e depois faça apenas coisas. Quando terminar de digitar, digite exit e o script gerará um arquivo para você com todas as "coisas" que você fez. Isso é menos usado, mas funciona muito bem para fazer coisas como macros. man script para mais informações.

    
por coteyr 30.11.2012 / 04:18
14

O equivalente aos arquivos de lote do Windows são scripts de shell, e um excelente guia de primeiros passos é Bash Scripting .

Na maior parte, os comandos que você pode inserir na linha de comando podem ser colocados em um script de shell.

Algumas coisas que são diferentes dos arquivos em lote do Windows:

  • Existem diferentes interpretadores de comandos, chamados shells. O padrão é bash, mas se você estiver interessado, há outros, como zsh, ksh, traço, perl, python, etc.

  • Para executar um script de shell, você precisa tornar o arquivo executável, o que pode ser feito com chmod +x <filename>

  • No Ubuntu, o diretório atual não é o caminho de pesquisa do programa, portanto, você precisa executar ./<filename> , não <filename>

  • Os nomes das variáveis são $<varname> , não %<varname>%

  • Os comandos em um script de shell não são impressos por padrão, como em um arquivo em lotes.

  • A extensão do nome do arquivo pode ser .sh ou (mais comum) você não precisa usar uma extensão. Coloque #!/bin/bash na primeira linha do arquivo , que informa ao Ubuntu que programa usar para executar o arquivo.

  • Os comentários começam com # , não rem .

Espero que isso ajude e divirta-se com scripts!

    
por iBelieve 30.11.2012 / 04:14
13

Você quer dizer escrever em um arquivo usando um script de shell? Aqui estão algumas maneiras:

touch file

Este método irá simplesmente criar um arquivo, mas se o arquivo já existir, ele simplesmente altera a data de modificação para a hora em que você usou aquele comando.

echo "text" > file

Esse método substitui o conteúdo de file a text . Se você quiser limpar um arquivo, basta fazer isso:

echo "" > file

Digamos que você queira escrever mais de uma linha, e você não quer usar milhares de echo de comandos, você usaria este comando:

cat << EOF > file
test
test1
foo
bar
EOF

Isso permite que você escreva várias linhas em um comando. O conteúdo de file seria então este:

test
test1
foo
bar

Se você quiser anexar a um arquivo, substitua > por >> .

Espero que isso ajude!

EDIT : Ah, eu vejo, então você escreveria o arquivo no gedit, usando a extensão .sh (opcional, mas é uma boa ideia), e então em um gerenciador de arquivos, certo clique no arquivo, selecione Propriedades- > Permissões e verifique Allow executing file as program . Então você pode dar um duplo clique nele e ele irá rodar :). Além disso, se você quiser fazer isso no terminal, você pode executar este comando para torná-lo executável (você pode querer preceder sudo se ele não pertencer a você):

chmod +x file

E para executar:

./file
    
por MiJyn 30.11.2012 / 04:00