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