
Descobri que quando quero criar algum script de shell ou comando avançado, sempre tenho dificuldade em lembrar os nomes dos comandos e suas opções.
por exemplo
tr -d '\n' < file | wc -c
Embora em linguagens de programação eu pudesse escrever algo como
len(substituir(str(arquivo), "\n", ""))
O que é mais memorável e há menos probabilidade de pesquisar nas páginas de manual e é mais compreensível para os outros.
Então, por que o shell script está há tantos anos nesta forma enigmática? É um esforço para alterar a sintaxe para deixar claro o que o código faz sem estudar muitas páginas de manual? Existem algumas vantagens deste formulário? Como podemos lidar com as desvantagens para aproveitar ao máximo o script de shell?
Responder1
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 ao usuário, retornar um status de saída e depois limpar tudo, 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 acaba tendo uma grande variedade de funções com nomes e parâmetros diferentes que você precisa aprender. Eu não vejo a diferença.
Além disso, a maioria das linguagens chamaria as funções em série. Os 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 for o teclado, ou um soquete de rede, ou algo assim) tudo é feito com avaliação lenta, como e quando os dados chegam. Sua linguagem favorita faz isso?
Existem muitas linguagens que podem fazer o trabalho mais rapidamente, ou com mais eficiência, ou podem processar números com mais precisão, mas não subestime o poder do shell script!
Quanto à sintaxe? Bem, funciona. Você teria que aprender, não importa o que parecesse. O que mais você quer?
Responder2
Tentarpbs
-- combinando ferramentas de linha de comando com 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")