Scripts de shell funcionais [fechados]

0

Descobri que, quando quero criar algum script de shell ou comando avançado, sempre me incomodou lembrar os nomes dos comandos e suas opções.

por exemplo,

tr -d '\n' < file | wc -c

Embora nas linguagens de programação eu pudesse escrever algo como

len(replace(str(file), "\n", ""))

O que é mais memorável e há menos probabilidade de pesquisar nas man pages e é mais compreensível para os outros.

Então, por que o shell script é por tantos anos nesta forma críptica? É um esforço deles mudar a sintaxe para ficar claro o que o código faz sem muitas páginas de manual? Existem algumas vantagens desta forma? Como podemos lidar com as desvantagens de obter mais do shell script?

    
por xralf 12.04.2012 / 13:52

2 respostas

3

Quantas linguagens de programação você conhece que permitem abrir um arquivo para leitura, chamar uma função de biblioteca que consome o conteúdo desse arquivo, transmitir a saída dessa função para outra, retornar a saída da segunda função para a usuário, retornar um status de saída e, em seguida, limpar tudo depois, tudo em uma linha muito curta?

O exemplo que você dá deixa de fora muitos dos gubbins de suporte que a maioria dos idiomas precisa.

Quantas linguagens de programação possuem funções de biblioteca que aceitam números arbitrários de entradas, funcionam em vários modos e possuem uma interface simples?

printf , talvez, mas a maioria das bibliotecas tem uma gama completa de funções com diferentes nomes e diferentes parâmetros que você precisa aprender. Eu não vejo a diferença.

Além disso, a maioria dos idiomas chamaria as funções em série. Scripts Shell os executam em paralelo e podem transmitir quantidades arbitrárias de dados através do pipeline sem consumir muita memória, e (se a fonte de dados é o teclado, ou um soquete de rede, ou algo assim) tudo é feito com avaliação preguiçosa, como e quando os dados chegam. Sua linguagem favorita faz isso?

Existem muitas linguagens que podem fazer o trabalho mais rapidamente, ou de forma mais eficiente, ou podem selecionar os números com mais precisão, mas não subestime o poder do script de shell!

Quanto à sintaxe? Bem, isso funciona. Você teria que aprender, não importa agora, parecia. O que mais você quer?

    
por 12.04.2012 / 14:15
2

Teste pbs - combinando ferramentas de linha de comando com o Python - por exemplo, assim:

# sort this directory by biggest file
print sort(du(glob("*"), "-sb"), "-rn")

# print the number of folders and files in /etc
print wc(ls("/etc", "-1"), "-l")
    
por 12.04.2012 / 14:26