it-swarm-pt.tech

Qual linguagem de script é melhor?

Para escrever scripts para automatização de processos na plataforma Linux, qual linguagem de script será melhor? Shell script, Perl ou Python ou há mais alguma coisa? Eu sou novo em todos eles. Então, estou apenas pensando em qual deles escolher?

17
Sreenath

A resposta é: o que melhor se encaixa no trabalho!

Minha regra de ouro;

Bash - para um script curto que pode precisar de um loop for para fazer algo repetidamente.

Perl - qualquer coisa a ver com algum tipo de processamento de texto ou arquivo, especialmente se for um caso único. Basta fazer um script Perl desagradável e acabar com ele

Python - Se é algo que você pode querer fazer novamente ou algo muito parecido. Então, pelo menos, você tem a chance de reutilizar o script.

37
Simon Peverett

Vá para os três, comece com bash/awk/sed mais fileutils (grep, find e assim por diante) e, em seguida, suba a hierarquia de abstração com Perl e python.

Dessa forma, você poderá decidir por si mesmo qual deles atende melhor às suas necessidades. Eu digo que comece com bash e amigos porque eles são onipresentes, algumas máquinas não terão Perl ou python instalado e você se sentirá desamparado lá, especialmente na terra unix tradicional (ou seja, não no linux)

9
Vinko Vrsalovic

Ao escolher uma linguagem de script para ajudar a automatizar seu ambiente linux/unix, a coisa mais importante na minha opinião é ... sua substituição :-)

Com o que quero dizer os próximos/outros administradores de sistemas que talvez precisem manter seus scripts. Atualmente, estou trabalhando em um ambiente em que o líder do Unix é um verdadeiro chefe de script, mas ele se restringiu principalmente ao uso do bash, com alguns Perl e vbscript do Windows lançados para dar sorte. Pelo menos, me forçou a retocar meu Perl.

Ao concordar com os outros comentários aqui, minha sugestão seria dominar o bash - sempre que possível, faça o máximo possível no bash, como a maioria das pessoas o conhece, e pode mantê-lo/depurá-lo. E será mais portátil. O uso com o sed & awk é particularmente poderoso.

Quando você domina isso, pode voltar aqui e perguntar "Qual linguagem de script devo aprender após o bash?" :-)

JB

8
Jonathan Bourke
4
Sev

Eu acho que depende da complexidade das tarefas que você deseja automatizar. Pessoalmente, eu sempre fui com Shell-scripts, que permite chamar awk, sed, grep, find, ls, cat etc. que podem ser combinados para fazer praticamente qualquer coisa que você possa obter usando Perl ou python. Por outro lado, se os processos que você deseja automatizar forem complexos (por exemplo, não apenas uma sequência linear de etapas), você provavelmente descobrirá que escrevendo os scripts em Perl ou python (ou mesmo Ruby!) é muito mais rápido e facilita a manutenção.

4
Ben

Eu uso o Perl para qualquer coisa além de scripts extremamente simples.

Eu também 'use warnings', 'use strict', Evito backticks, chamo o sistema como 'system($command, @and_args)'. E porque eu gosto de ser sustentável: IPC :: Run (para pipes), File :: Fu (para nomes de arquivos, arquivos temporários, etc), YAML (para configurações ou dados diversos) e Getopt :: Útil (para que eu possa lembrar quais eram as opções)

4
Eric Wilhelm

Depende da complexidade e do domínio do problema da tarefa em questão.

Os scripts Bash são rápidos e sujos para tarefas simples de automação do sistema. Para coisas mais complexas do que mover arquivos e executar comandos, eu diria pessoalmente que o Perl é o próximo na fila como a ferramenta de automação defacto sys-admin goto. Para obter mais foco na reutilização do código e legibilidade/manutenção, eu gostaria de aumentar para Python ou Ruby.

O PHP também pode ser usado para automatizar tarefas, no entanto, não é amplamente aceito para esse fim na minha experiência.

Realmente se resume a qual idioma você está mais interessado em aprender, a maioria pode ser usada para automação, além de muitas outras coisas.

3
ctcherry

Prefiro scripts Shell apenas para tarefas muito pequenas. Escrever scripts Shell robustos requer muito conhecimento sobre possíveis armadilhas, que você só aprende fazendo. Mas aprender até o básico aumentará muito sua produtividade!

Se eu preciso ter uma lógica complexa, geralmente uso o Python. Por complexo, quero dizer qualquer coisa que tenha mais de dois if -statements =)

Perl é bom para seu propósito original, mas esteja avisado de que muitos dos perlismos que você aprende não são aplicáveis ​​em nenhum outro lugar.

Python e Ruby são aproximadamente equivalentes. Eu recomendo que você aprenda um deles bem e confira um tutorial no outro. Eu prefiro Python mas realmente se resume à preferência pessoal.

Para resumir: Aprenda noções básicas sobre scripts do Shell. Aprenda pelo menos Python ou Ruby well.

2
Antti Rasinen

Eu tenho recebido Python recomendado o tempo todo. Supõe-se que você faça qualquer coisa. Para as pequenas tarefas, eu uso os scripts do Shell.

1
Vargen

Eu normalmente diria o que você conhece melhor, que pode alcançar os resultados desejados. Como todas as guerras religiosas, e depois de aprender um grande número de idiomas, você percebe que pode fazer a maioria das coisas na maioria dos idiomas (note que eu disse mais). Eu uso Perl. Talvez não seja tão atualizado quanto Python ou Ruby, mas ele possui um suporte massivo de bibliotecas do CPAN. E ainda não encontrei nada que não possa fazer nele. Quando o faço Examinarei outras línguas para descobrir qual delas pode preencher essa lacuna.

Se eu estivesse começando hoje, talvez eu escolheria Python ou Ruby, mas não sei o suficiente sobre eles para fazer um julgamento). Algum de seus amigos/colegas conhece a linguagem de script. poderia ajudá-lo massivamente, pois o suporte ao aprender um novo idioma é muito importante.

Boa sorte

1
Xetius

Bem, é assim:

O Perl não é a linguagem de script mais amigável para o usuário, mas possui o CPAN (Rede de arquivamento abrangente de Perl), que contém milhares de bibliotecas que implementam quase tudo o que você imagina, e o Perl é realmente poderoso quando se trata de processamento de texto. A desvantagem seria que o código Perl é meio difícil de manter (se você não o conhece muito bem).

Python é uma linguagem de script que está se tornando cada vez mais popular entre os scripts. Ainda não possui uma comunidade como a CPAN, mas é mais legível e mais fácil de manter. É tão rápido quanto Perl.

Ruby é a mais nova tendência nas linguagens de script. Ruby está cheio OOP, o que significa que tudo é um objeto. Sua vantagem é que o código é muito legível e é muito fácil de aprender, se você é iniciante. A principal desvantagem é sua velocidade de execução, que meio que s * x.

1
Vhaerun

Isso depende de qual tipo de automação você está executando, como se estivesse testando a auto-mutação. O Perl é sugerido porque o Perl é muito poderoso nos módulos de extensão via CPAN, um inventário on-line do módulo Perl. Se você precisar apenas de uma ferramenta útil para concluir um arquivo de origem simples, o awk é muito conveniente. Se você planeja usar os scripts para automatizar um grande projeto, o Perl é uma escolha melhor com mais recursos. Novamente Python foi projetado desde o início como uma linguagem orientada a objetos. O Perl 5 tem alguns recursos de o-o adicionados, mas parece-me um retrofit estranho. Python possui recursos bem implementados para herança múltipla, polimorfismo e encapsulamento. Em resumo, parece-me que Python domina o Perl na maioria dos aplicativos, exceto para tipos de scripts de shell bastante curtos de aplicativos e são comparáveis.

0
GustyWind

Se você deseja uma solução minimalista, compacta e rápida (mais rápida que Python/Ruby), então vá para a linguagem de script LUA :-) No entanto, a velocidade da Lua e a compactação de código são alcançadas pelo pequeno núcleo da linguagem Lua, portanto, se você quiser "baterias incluídas" (também conhecidas como bibliotecas "padrão" muito grandes), então Lua não é para você. Caso contrário, os caras que vêm do mundo C/C++ gostam muito da velocidade da Lua :-)

p.s.

Lua vs Ruby 1.9 (você pode procurar também Lua Vs Python 3)):

http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=lua&lang2=yarv

0
0x69