私はawkとsedという用語に触れました。 awkはすべてのラインを通過し、ラインが特定の条件を満たすときにアクションを実行し、sedはもはや出力される前に入力ストリームで動作します。私は個人的にそれらを使用する目的が何であるかわかりませんが、それは強力でさえ神聖な命令と呼ばれることに気づきました。これら2つに加えて、これらの状態を持つ他のコマンド/アプリケーションは何ですか?
答え1
いくつかの「古い」コマンドを分類する1つの方法(「より強力な」コマンドではない)は、組み込みコマンドです。つまり、シェルから呼び出されたコマンドまたは機能は、外部ではなくシェル自体内で直接実行されます。実行シェル実行可能プログラムをロードして実行します。
例には、ログアウト、CD、エコー、履歴などがあります。
そのコマンドが組み込みコマンドであることを確認できます。
builtin [command]
例えば
builtin echo
出力がないということは組み込まれていることを意味します(Unix哲学を使用すると何も問題ありません)。
コマンドがlsなどの組み込みコマンドではない場合
builtin ls
戻りエラー-bash builtin: cp: not a shell builtin
sed
そして、そのような「最も強力な」命令については、非常に主観的でawk
明確な主張を提示する可能性がほとんどないので、実際に質問から取り除きます。
答え2
「強力な」コマンドを定義するには、まずその意味が何であるかを判断する必要があります。
最初の要件は普遍性です。いくつかのツールは1つに焦点を当てていますが、非常に広範な問題を解決することができます。gnuplot
使いやすく、科学界でも他のものがほとんど必要ない、非常に基本的な描画ツールです。正規表現を処理できるツールをほぼすべての目的に使用できるsed
理由があります。フォーマット間変換、データ抽出、解析、検索、置換など、想像できるほとんどすべての作業を実行できます。awk
非常に似ていますが、非常に異なります。構造化データに適しており、パターンに基づいて1行ずつ解析され、より伝統的なプログラミング言語(より多くの制御フローなど)に近いです。これらのツールを理解したら、それを使用してすべての問題を解決できます。どちらも Turing 完全であり、文字列処理に関係なく、原則としてすべての問題を解決できます。一般性は最高レベルの力です。何でもできます。 。しかし、それを試してプレイするには「欲しい」必要があります。ここでは、次の要件があります。
2番目のコンポーネントはレガシーと伝統です。 40年間存在しており、その後に巨大なコードベースを持つコマンドも最も信頼性が高く(長期的な開発)、最も信頼性があります(開発を中断できない、または機能を変更できない理由は次のとおりです。40年の歴史)スクリプトはクラッシュします。そして驚くべきことができる多数のマスターがあります。これは、多くの人々が広く知って好むツールが必ずしも始めるのに最適なツールではなく、むしろ「固定」するツールであることを意味します。しかし、多くの人が使うなら悪くないでしょう。もちろん、ある点ではより良いかもしれません。ここでは年齢が重要です。python
言語としては非常に強力ですが、まだ古いツールキットの状態に達していませんgnu
。それでも斬新なように感じます。bash
直感的で強力なだけでなく、ほぼすべての場所でネイティブシェルとして使用でき、誰もが使用するので最高の標準です。
ここでカルトの地位は非常に重要です。人々は特定のオタクサブカルチャーの一部であることを誇りに思っています。私が直接言うことができるのは、私がマスターしたとき:emacs
についてlatex
本当に素敵な感じを受け、vi
ほとんどすぐに憎しみが生じたということです。部分的にはそれが個人的に私にとって直感的なインターフェースではなかったからですが、もちろん、他の人がこの感覚を強化すると、この感覚は強化されます。同じ感じ。私が言うことは、強力なツールは社会的にも強力であるということです。よく知られていないか、正しく設計されていないツールは、人々にそのような強い感情を引き起こすことはできません(否定的か肯定的であろうと - ただミミトするだけです)。私が言及したツールの中には、Star Trekに匹敵する機能があります。これはソフトウェアとしては悪い成果ではありません。awk
これはPythonの全身と見なすことができperl
、perl
確かに以下の特徴を持っています。ほとんどの人は、Python がperl
読みやすく、無視できる特徴が多いことに同意します。それはまた最も強力な文字列中心の言語ですが、カルト的地位がなければ、ほとんどの人はおそらくいたずらを打ち、世界を救い、Aを噛むような道具で調理しようとするよりも早く諦めます。 Webページの束。
最後に、人々は一貫性、優雅さ、個性が好きです。ツールは強力ですが、適切ではないと感じるため、誰も使用したくありません。強力なツールは、少なくともそれを楽しんで使用する人にとっては直感的でなければなりません。ここで戦いを始めようとするわけではありませんが、ほとんどの読者は間違いなく自分自身の不幸と不器用なデザインの例を見つけるでしょう。
簡単に言うと、明確な目的、汎用性、大きな遺産と信者、そして…「魂」のためにうまく設計されています。それが私の定義です。