一部のシェルスクリプトや高度なコマンドを作成するときは、コマンドとそのスイッチの名前を覚えておくのは常に難しいことがわかりました。
例えば
tr -d '\n' < file | wc -c
プログラミング言語では次のようなものを書くことができますが、
len(replace(str(file), "\n", ""))
どちらも覚えやすく、マニュアルページで検索される可能性が少なく、他の人が理解しやすくなります。
それでは、シェルスクリプトがなぜ長年にわたって不思議な形で残っていたのでしょうか?数多くのマニュアルページを研究することなく、コードの機能を明確に知ることができるように構文を変更しようとしましたか?この形式には利点がありますか?これらの欠点をどのように克服し、シェルスクリプトを最大限に活用しますか?
答え1
読み込むためにファイルを開き、ファイルの内容を使用するライブラリ関数を呼び出し、その関数の出力を別の関数にストリーミングし、2番目の関数の出力をユーザー、戻り値、終了ステータスをすべて整理してから、短い行ですべてものを整理しますか?
あなたが提供した例には、ほとんどの言語に必要な多くのサポートgubbinがありません。
必要な数の入力を受け入れ、複数のモードで動作し、シンプルなインターフェースを持つライブラリ機能を備えたプログラミング言語はいくつですか?
printf
しかし、ほとんどのライブラリは、学ぶ必要がある他の名前とは異なるパラメータを持つ一連の関数で終わります。私は違いを見ることができません。
さらに、ほとんどの言語はこれらの関数をシリアルに呼び出します。シェルスクリプトはそれを並列に実行し、あまりにも多くのメモリを消費せずに必要な量のデータをパイプすることができます(データソースがキーボード、ネットワークソケット、または他のものである場合)、データが到着すると遅延評価によってすべて実行されます。あなたが好きな言語はこれを行うことができますか?
作業をより迅速かつ効率的に実行したり、数値をより正確に計算したりする言語はたくさんありますが、シェルスクリプトの力を過小評価しないでください。
文法は?まあ、動作します。今はどんな姿でも学ばなければなりません。何がもっと欲しいですか?
答え2
努力するpbs
- コマンドラインツールをPythonと組み合わせます。 - たとえば、次のようになります。
# 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")