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?
linuxscripting
17
16 de set. de 2008 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
16 de set. de 2008 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
16 de set. de 2008 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
16 de set. de 2008 Jonathan Bourke
Eu recomendo bash, awk e sed.
bash - http://tldp.org/LDP/abs/html/
awk - http://www.uga.edu/~ucns/wsg/unix/awk/
http://www.grymoire.com/Unix/Awk.html
sed - http://www.ce.berkeley.edu/~kayyum/unix_tips/sedtips.html
http://www.grymoire.com/Unix/Sed.html
Apenas algumas idéias.
4
16 de set. de 2008 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
16 de set. de 2008 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
16 de set. de 2008 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
16 de set. de 2008 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
16 de set. de 2008 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
16 de set. de 2008 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
16 de set. de 2008 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
16 de set. de 2008 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
16 de set. de 2008 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
19 de fev. de 2010 0x69
Como contar linhas em um documento?
Como o "cat << EOF" funciona no bash?
O que o `set -x` faz?
comando eval no Bash e seus usos típicos
Como fazer um "alias" para um caminho longo?
Como faço para escrever uma resposta "sim" para instalar programas?
Diferença entre $ {} e $ () no Bash
Encontrando vários arquivos recursivamente e renomeando no linux
unix - cabeça E cauda do arquivo
garfo e exec em bash
Se o arquivo existe e não está vazio. Sempre me dá o valor falso
no terminal linux, como mostro a data da última modificação da pasta, levando em consideração seu conteúdo?
DIR = "$ (cd" $ (nome do diretório "$ {BASH_SOURCE [0]}") "&& pwd)" Como isso funciona?
scripting shell do Linux: cadeia hexadecimal para bytes
Atribuir resultado AWK à variável
Atalho Shell / Bash para renomear em massa arquivos em uma pasta
Script Bash para inserir valores no MySQL
Use grep para encontrar conteúdo nos arquivos e movê-los se eles corresponderem
Como posso ler um arquivo e redirecioná-lo para uma variável?
bash: mata silenciosamente o processo da função em segundo plano
Content dated before 2011-04-08 (UTC) is licensed under CC BY-SA 2.5. Content dated from 2011-04-08 up to but not including 2018-05-02 (UTC) is licensed under CC BY-SA 3.0. Content dated on or after 2018-05-02 (UTC) is licensed under CC BY-SA 4.0. | Privacy