Alternativas de script para scripts de shell Bash

14

Acabei de migrar para uma estação de trabalho UNIX. Minha memória de scripts de shell Bash desapareceu desde a escola e acho que a sintaxe é altamente confusa. Eu estou querendo saber o que outras linguagens de script são usadas para automatizar tarefas. Os dois mais populares que eu ouvi falar são Perl e Python.

  1. Qual linguagem de script é mais usada pelas lojas do mundo real?
  2. Qual linguagem de script mais se assemelha à sintaxe do C / C ++?
  3. Existe outra linguagem de script que eu não conheço?

Obrigado pela sua ajuda,

Scott

    
por Scott Davies 04.09.2009 / 17:34

12 respostas

12

Até certo ponto, é uma questão de preferência pessoal. Perl e Python estão definitivamente lá em termos de popularidade.

Para responder a duas de suas três perguntas:

  1. Eu acho que o bash é mais usado, provavelmente seguido por perl. Apenas adivinhando, não sei se alguém fez uma pesquisa. :)
  2. Existem bilhas de linguagens de script por aí. :)

Minha recomendação é Python embora. É fácil de ler e escrever, imensamente poderoso e há vários recursos úteis na Web para aprendê-lo, sem mencionar o código que você pode copiar e reutilizar.

    
por 04.09.2009 / 17:44
4

Perl e Python são as respostas óbvias; mas cada um deles é usado para completar tarefas diferentes:

  1. Bash - É fácil aprender com as mãos. Com scripts Bash, você executa comandos e manipula a saída.
  2. Python - o segundo mais fácil de aprender. O Python é muito mais útil que o Bash, já que você pode usar o Python para escrever programas completos e é bem suportado pela comunidade. O Python também é extremamente legível e fácil de editar meses depois.
  3. Perl - O melhor dos três (para scripting), mas facilmente a curva de aprendizado mais íngreme. Tem muito bom suporte a expressões regulares (que é a principal razão que ainda está em uso hoje), e você provavelmente vai se deparar com um monte de scripts Perl ao longo do tempo. Os principais problemas com o Perl são a legibilidade do código - meses depois de escrever o código, você não conseguirá descobrir o que ele faz. Então é melhor você comentar bastante.
  4. Awk / Sed - Ambos muito úteis, mas ambos muito difíceis de aprender. Eu sugiro abordar estes últimos, a menos que você seja bom em padrões.

Sobre qual deles aprender agora (já que você provavelmente não conhece nenhum deles), eu aprenderia Python. É o mais simples e útil de saber.

E quanto às respostas às suas perguntas:

Que linguagem de script é mais amplamente usada pelas lojas do mundo real?

Todos eles, mas eu imagino que o Perl tem um pouco de vantagem aqui (sendo que ele está em uso na administração do sistema por muito mais tempo).

Que linguagem de script mais se assemelha à sintaxe do C / C ++?

Perl

Existe outra linguagem de script que eu não conheço?

Ruby, Tcsh / Csh, link

    
por 04.09.2009 / 18:05
3

awk para pequenos trabalhos, python para mais do que oneliners.

O Python (se você não usa APIs específicas e outras coisas dependentes da plataforma) possui uma rica "biblioteca padrão" que está disponível em todas as plataformas onde você obtém a versão do Python em uso. Isso é muito bom, pois você pode reutilizar seus scripts facilmente e significa que seu conhecimento é um bom investimento, mesmo se você mudar de plataforma.

Na nossa empresa, usamos python para todos os scripts, monitoramento, ... e java para o aplicativo, e estamos em um ambiente heterogêneo.

    
por 04.09.2009 / 17:46
1

Eu diria que perl e python são provavelmente as duas melhores alternativas. Você pode fazer muito com sed e awk também.

    
por 04.09.2009 / 17:39
1

Sh (shell de bourne), grep, awk e sed é sempre uma coisa boa para se agarrar novamente. Perl é excelente se você não quiser muito regexing de texto e manutenibilidade não é tão importante (não dizendo que não é possível). Python; se a legibilidade é importante para você. Minha preferência é Python, mas todas essas ferramentas são boas para a maioria das coisas que você joga nele. Você pode querer reconsiderar o seu requisito de sintaxe c / c ++, manter-se preso nele não ajudará a longo prazo.

    
por 04.09.2009 / 17:44
1

Se você está procurando aprender algo do zero, provavelmente é melhor (re) aprender bash.

Além disso, o perl e o python são populares atualmente; Eu sou parcial para perl, mas meu estilo de script perl não mudou muito desde Perl 4 estava fora.

Não tenho conhecimento de nenhuma linguagem de script "c-syntax-like".

    
por 04.09.2009 / 17:49
1

Perl, sem dúvida, apenas pelo incrível recurso do CPAN ( link ). O benefício de usar uma linguagem de script com uma comunidade contribuinte tão grande é que você provavelmente nunca precisará inventar algo.

O Perl também tem o benefício de ser tão complexo quanto você precisa para a situação atual. Você pode tratá-la como uma linguagem de script simples para administração rápida ou scripts de finalidade única, mas pode usar conceitos orientados a objeto ou extensos sistemas de meta objetos quando desejar criar aplicativos maiores e fáceis de manter (como daemons, servidores, clientes). / p>

As diferenças entre as linguagens de script sozinhas não são severas o suficiente para escolher um vencedor claro, mas você deve primeiramente olhar como será fácil encontrar informações sobre tópicos importantes para você.

A sintaxe do Perl também pode ser incrivelmente próxima de C, contanto que você possa contornar a falta de digitação e os sigilos; o uso avançado de perl viria naturalmente quando você eventualmente aprender os pontos strongs da linguagem.

E para pessimistas na frente de legibilidade: você pode escrever muito para ler código em qualquer idioma. Se você olhar para o seu código de 4 meses atrás e não entender, você está fazendo algo errado.

p.s. Este post foi preenchido com links para vários módulos de administração amigáveis no CPAN, mas aparentemente novos usuários podem apenas postar um link, então use esse link CPAN para pesquisar coisas como 'CVS' 'SVN' 'Cron' e 'Moose' (um extenso sistema de objetos)

    
por 04.09.2009 / 18:29
1

[para conselhos gerais sobre scripts, veja as outras respostas]

Esta resposta é sobre o uso de programas de linha de comando e também grandes cadeias deles.

Para a execução de cadeias de programas CLI e talvez muitas cadeias em seqüência, o bash é o mais fácil. Perl pode fazer o mesmo, mas a linguagem é muito mais difícil de aprender e é muito mais complexa, e como muitos apontaram, é fácil escrever Perl inteligível.

Se você estiver iterando sobre arquivos e parâmetros, o bash é mais fácil de obter b / c, você pode criar um protótipo no shell, copiar em um script e adicionar alguns arrays e loops com o mínimo de sobrecarga.

Exemplos do que quero dizer:

$ cat input.dat | numerical_model source_data ${SRC} grid_size ${GRID_SIZE} param1 ${P1} param2 ${P2} | tee ${OUTPUT} | plotter title ${TITLE} ylabel ${YLABEL} xlabel ${XLABEL} > ${OUTPUT_FIG}
$ cat ${OUTPUT} | stats_cmd bin_size ${BINSIZE} dist_type ${DIST_TYPE} | tee ${OUTPUT_STATS} | plotter plot_type ${PLOT_TYPE} title ${TITLE_STATS} > ${OUTPUT_FIG_STATS}

No bash, é fácil para envolver isso em alguns loops em alguns desses parâmetros. No entanto , o código torna-se difícil de ler quando o script é mais do que algumas dezenas de linhas. --- imagine 30 conjuntos de comandos (algumas linhas cada) para trinta diferentes gráficos de dados ---

Perl e Python podem ser melhores para scripts grandes porque eles têm uma sintaxe mais limpa para loops e variáveis, mas os comandos bash devem ser gerados como strings, executados como subprocessos e stdin, stdout capturado. Isso pode ser feito, mas não pode substituir totalmente o ambiente de shell nativo.

Se os shells tivessem uma linguagem melhor, tudo isso seria evitado.

    
por 27.10.2017 / 21:31
0
  1. mais usado: Perl, principalmente por razões históricas. O Python está amplamente disponível em todas as distribuições Linux e BSD (é até instalado no Mac OSX), e é muito mais agradável de aprender / programar. É claro que, uma vez obtida a sintaxe, o Bash é mais simples para quase tudo que você poderia fazer na linha de comando. Afinal, é a linha de comando.

    • Sintaxe C: csh , mas você pode instalar facilmente TCC e use real C como linguagem de script, compilada a partir do código-fonte em menos tempo do que a inicialização de outras linguagens.

    • outras linguagens de script: muito! Lua , Ruby , JavaScript. ..

por 04.09.2009 / 21:37
0

Você deve usar uma combinação de todos os que forem apropriados. Eu realmente não gosto de perl (legibilidade), mas é bom para muitas coisas. O Python, por outro lado, era algo novo para mim em termos de administração do sistema, até que eu tive que gerenciar (e ainda ter) algumas máquinas KVM. Iniciar, parar, salvar, carregar, migrar todas essas máquinas via script tornou-se realidade após 1 hora de mexer nas ligações python da libvirt.

Por último, mas não menos importante, eu não usaria perl ou python se eu tivesse que, digamos, despejar todos os bancos de dados de um servidor mysql toda noite (cada banco de dados em seu próprio arquivo de despejo), tar-los e rsync a algum outro servidor. Por quê ? Porque é mais rápido e mais fácil escrevê-lo no bash:)

No final, você deve usar o idioma que melhor se adequar à sua tarefa atual e não usar apenas uma determinada linguagem de script só porque gosta mais dela.

    
por 04.09.2009 / 21:46
0

Eu gosto de rubi. É simples e fácil de programar. Há um excelente livro sobre administração do sistema utilizando ruby .

O Ruby é usado em vários sistemas de gerenciamento de configuração (capistrano, chef, fantoche) e na última versão do metasploit.

Você pode usar o rush , um substituto para o shell Unix com a sintaxe do ruby e fazer coisas assim:

local = Rush::Box.new('localhost') 
remote = Rush::Box.new('my.remote.server.com')     
local_dir = local['/Users/adam/myproj/']
remote_dir = remote['/home/myproj/app/']

local_dir.copy_to remote_dir
remote_dir['**/.svn/'].each { |d| d.destroy }
    
por 04.09.2009 / 17:54
0
  • Ruby
  • Python
  • Ir - uma linguagem multiplataforma, o script é mencionado como um dos pontos strongs do Go .
  • Node.js - veja Grunt.js, Gulp.js. Muitos projetos agora estão usando o Node.js como uma ferramenta de automação de shell.
  • Perl
por 25.02.2017 / 17:12