スクリプトの作成方法、引数の使用方法、for ループの構築方法を学習しました。ここで、より基本的なコマンド、テキスト ファイルの操作、ファイルやその他のコマンドへの入出力のリダイレクトを見てみましょう。
いくつかの基本的な便利なコマンド
シェル スクリプトの基本的な内訳 と for ループの例ベースの概要については すでに説明しましたが、これまでのシェル スクリプト ガイドを見逃していた場合は、必ずこれらの記事をチェックしてください。
コマンドラインは多くの理由で優れていますが、リダイレクトは最も顕著な理由の 1 つです。さらなるアクションを実行したり、それを何か他のことに使用したりするために、すべてのコマンドの出力をメモして再現する必要があるとしたら、私たちはずっと昔に気が狂っていたでしょう。リダイレクトを使用すると、その出力を使用して保存したり、別のコマンドの入力としてすぐに使用したりできます。ファイルを他のコマンドの入力として使用することもできます。
先に進む前に、さまざまな場所で使用できる基本的なコマンドについて説明しましょう。
echo — このコマンドは、引数全体をコマンドラインに出力として出力 (表示) するだけです。
スペースを含む引数をエコーする
ご覧のとおり、特殊文字は通常どおりに扱われるように「エスケープ」する必要があります。これを行うには、文字の前にバックスラッシュ (\) を使用します。引用符を使用することをお勧めします。 echo コマンドは変数でも機能します。
ご覧のとおり、一重引用符と二重引用符は異なる動作をします。詳細については、 「Bash シェルにおける一重引用符と二重引用符の違いは何ですか?」 を参照してください。
cat — このコマンドは、テキスト ファイルの内容を出力として表示します。
猫ファイル_これから読む
このテキスト ファイルを nano で作成するとします。
ファイルに対して cat コマンドを使用すると、その出力が表示されます。
grep — これは、Linux で使用できる最も強力で便利なコマンドの 1 つです。 Global/ Regular Expression Print の略です。ファイルを調べて、特定のパターンに一致する行を出力します。このパターンは「正規表現」に基づいているため、簡潔な行から一致する多数のパターンが生成される可能性があります。ただし、そうでない場合は、「アジサシ」と入力して検索できます。
grepパターンファイル
grep ではさらに多くのことができることを保証しますが、今のところは簡単な作業にとどめましょう。
出力のリダイレクト
コマンドの出力をファイルにリダイレクトするには、特殊文字である大なり記号 (>) を使用します。
リストを変更しましょう。次のコマンドを入力します。
エコー・ペパロニ > リスト
echo ではその行が表示されなくなっていることがわかります。また、「list」ファイルの内容を見ると、そこにエコーした内容が表示されます。
また、「list」の以前の内容が削除されていることにも注意してください。もう一回やってみよう:
これは、ファイルを再利用したい場合に便利ですが、多くの場合、既存のファイルに追加したいだけです。このために、2 つの連続した大なり記号を使用します。
エコーイエローピーマン >> 一覧
簡単!このコマンドを使用して、より大きなリストを作成しましょう。
それでは行きます。多くのオタクが To Do リストなどを作成するためにコマンドラインを使用する理由がわかると思いますが、コマンドラインはさらに優れています。
コマンドの出力を取得してファイルに入れてみましょう。
ls –al / > ~/rootlist
ファイルのリストを作成し、編集して、必要なファイルに対してコマンドを実行することが、かつてないほど簡単になりました。これらの基本的な機能はコマンドラインで実行していますが、スクリプトでも適切に機能します。
配管またはチェーン
パイピングは、パイプ (| ; ほとんどのキーボードの \ キーと共有) を使用するため、そのように名付けられました。基本的に、あるコマンドの出力を取得し、それを別のコマンドに直接送ります。この方法で、長いコマンド チェーンを作成して、非常に具体的な目的の出力を取得できます。これは、grep などのコマンドにとって非常に便利です。
これは “>” とよく似ていますが、複数回連鎖させることができ、その効果はテキスト ファイルを経由する必要がないという点でより一般的です。
ご覧のとおり、grep では大文字と小文字が区別されます。 「-i」フラグを使用すると、大文字と小文字を区別しないようにできます。
入力のリダイレクト
小なり記号 (<) を使用して、ファイルからコマンドの入力を取得することもできます。
猫 < リスト
「それは引数を使うのと何ら変わりません!」と言うかもしれません。まあ、この場合はあなたが正しいでしょう。入力のリダイレクトが本当に役立つのは、コマンドを連鎖させる場合です。
現在の「リスト」ファイルから「pep」を含む単語をフィルタリングして、「revisions」という新しいファイルに入れたいとします。
grep pep <リスト>リビジョン
このコマンドをやり直して、並べ替えを追加してみましょう。
grep pep < リスト |並べ替え > リビジョン
これは、入力ファイル「list」からの検索語として「pep」を使用し、それをアルファベット順にソートし(すべて大文字の語の後にすべて小文字の語が続く)、「revisions」ファイルに出力します。
sort コマンドを説明するために、次の例を見てみましょう。
ご覧のとおり、sort コマンドに「-f」フラグを追加すると、大文字と小文字を区別することができます。これにより、テキスト ファイル内の行をアルファベット順に並べたり、重要でない場合は大文字の区別を無視したりすることが簡単になります。
単純なスクリプト
次の形式のスクリプトを作成してみましょう。
スクリプト検索用語リストファイル
用語を取得し、grep を使用してリスト ファイルを検索し、結果を並べ替えて、別のファイルに出力します。
スクリプトをテストするディレクトリは次のとおりです。
そして、ここに含まれる内容のリストを作成して、スクリプトを実行します。
さあ!正規表現のルールを学べば学ぶほど、より正確に検索コマンドを組み立てることができます。また、引用符で囲まれた有効なものはすべて最初の引数に置き換えることができます。
並べ替えに関しては、アルファベット順に並べ替えるだけではありません。次のコマンドのいくつかについては、man ページを参照してください。
- tsort — より高度なトポロジカルソート関数
- tr — 特定の文字を他の文字にマップし、それらの間で転記できます。
- uniq — 一意でないもの (重複) を削除します。
- awk — ファイル名のフィールドを区切るために使用できる、非常に高度なテキスト処理言語/関数
- 切り取り、貼り付け、結合 — テキスト ファイルからフィールドを分離したり、新しいデータを列に追加したりするのに役立つコマンド
- look — grep と同様に検索しますが、検索には辞書ファイル (ユーザー指定可能) を使用します。
- wc — 単語数、行数、文字数などを取得できます。
今日は、コマンドラインでもスクリプトと同様に役立つ基本をさらにいくつか見ていきました。テキストベースのデータは、私たちが日常的に使用するものの中心であることが多いため、テキストベースのデータを操作、検索、操作できることが重要です。
お気に入りの脚本は何ですか?テキストベースのファイル用の特別な用途のスクリプトはありますか?コメントであなたが知っていることを共有してください!





