シェルスクリプトの初心者向けガイド3:その他の基本的なコマンドとチェーン

目次:

シェルスクリプトの初心者向けガイド3:その他の基本的なコマンドとチェーン - ブログ 2023
シェルスクリプトの初心者向けガイド3:その他の基本的なコマンドとチェーン - ブログ 2023
Anonim
スクリプトを作成し、引数を使用し、forループを作成する方法を学びました。ここでは、より基本的なコマンド、テキストファイルの操作、入力と出力をファイルやその他のコマンドにリダイレクトする方法を見ていきましょう。
スクリプトを作成し、引数を使用し、forループを作成する方法を学びました。ここでは、より基本的なコマンド、テキストファイルの操作、入力と出力をファイルやその他のコマンドにリダイレクトする方法を見ていきましょう。

いくつかの基本的な便利なコマンド

シェルスクリプトの基本的な解説とforループの例を紹介しましたが、今までシェルスクリプトガイドが見当たらなかった場合は、それらの記事を必ずチェックしてください。

コマンドラインは多くの理由から素晴らしいですし、リダイレクトは最も顕著なものの1つです。あなたがさらなる行動を取るために、または何かのためにそれを使用するために、すべてのコマンドの出力を書き留めて再現しなければならない場合、私たちはずっと前に狂っていました。リダイレクションでは、その出力を使用して保存したり、すぐに別のコマンドの入力として使用したりできます。また、ファイルを他のコマンドの入力として使用することもできます。

先に進む前に、さまざまな場所で使用できるいくつかの基本コマンドについて説明します。

エコー - このコマンドは、引数の全体を出力としてコマンド行に出力(表示)するだけです

echo argument with spaces

ご覧のように、特殊文字は「エスケープ」されているため、通常扱われる必要があります。これは、文字の前にバックスラッシュ()を使用して行います。引用符を使用する方が良い考えです。 echoコマンドは変数でも動作します。
ご覧のように、特殊文字は「エスケープ」されているため、通常扱われる必要があります。これは、文字の前にバックスラッシュ()を使用して行います。引用符を使用する方が良い考えです。 echoコマンドは変数でも動作します。
ご覧のとおり、一重引用符と二重引用符は異なる動作をします。詳細は、Bashシェルのシングルクォートとダブルクォートの違いは何ですか?
ご覧のとおり、一重引用符と二重引用符は異なる動作をします。詳細は、Bashシェルのシングルクォートとダブルクォートの違いは何ですか?

ネコ - このコマンドは、テキストファイルの内容を出力として表示します。

cat file_to_be_read

このテキストファイルをnanoで作成したとしましょう:

ファイル上でcatコマンドを使用すると、出力が表示されます。
ファイル上でcatコマンドを使用すると、出力が表示されます。
grep - これは、Linuxで利用できる最も強力で便利なコマンドの1つです。グローバル/レギュラー式印刷の略です。ファイルを調べ、特定のパターンに一致する行を出力します。このパターンは「正規表現」に基づいているため、簡略化された行は一致する多数のパターンを生成できます。そうではないにしても、あなたは検索のために第三者に入ることができます。
grep - これは、Linuxで利用できる最も強力で便利なコマンドの1つです。グローバル/レギュラー式印刷の略です。ファイルを調べ、特定のパターンに一致する行を出力します。このパターンは「正規表現」に基づいているため、簡略化された行は一致する多数のパターンを生成できます。そうではないにしても、あなたは検索のために第三者に入ることができます。

grep pattern file

私はあなたに保証します、grepはもっとやることができますが、今はもっと簡単なものに固執しましょう。
私はあなたに保証します、grepはもっとやることができますが、今はもっと簡単なものに固執しましょう。

出力のリダイレクト

コマンドの出力をファイルにリダイレクトするには、特殊文字である大なり記号(>)を使用します。

私たちのリストを変更しようか?次のコマンドを入力します。

echo pepperoni > list

エコーはもはや行を表示しないことがわかります。そして、 "list"ファイルの内容を見ると、そこにエコーされたものが見えます。
エコーはもはや行を表示しないことがわかります。そして、 "list"ファイルの内容を見ると、そこにエコーされたものが見えます。

また、 "list"の以前の内容が削除されていることにも注意してください。もう一度やってみる:

これは、ファイルを再利用したい場合に便利ですが、既存のファイルに追加したいだけの場合があります。このために、2つの連続する大なり記号を使用します。
これは、ファイルを再利用したい場合に便利ですが、既存のファイルに追加したいだけの場合があります。このために、2つの連続する大なり記号を使用します。

echo yellow peppers >> list

簡単!このコマンドを使って大きなリストを作成しましょうか?
簡単!このコマンドを使って大きなリストを作成しましょうか?
Image
Image

そこに行く。私はあなたが非常に多くのオタクがコマンドラインを使ってリストやそのようなことをする理由を知ることができると思うが、それはさらに良くなる。

コマンドの出力を取り出してファイルに入れてみましょう:

ls –al / > ~/rootlist

ファイルのリストを作成し、それらを編集し、あなたが望むものでコマンドを実行することは今までにない簡単な方法です。また、コマンドラインでこれらの基本機能を実行している間も、スクリプトでもうまく機能します。
ファイルのリストを作成し、それらを編集し、あなたが望むものでコマンドを実行することは今までにない簡単な方法です。また、コマンドラインでこれらの基本機能を実行している間も、スクリプトでもうまく機能します。

配管、または連鎖

パイプはパイプを使用しているのでその名前が付けられます(ほとんどのキーボードでは |キーと共有されます)。基本的には、1つのコマンドの出力を受け取り、それを別のコマンドに直接送ります。このように、非常に特殊な出力を得るために長いコマンドチェーンを作成することができ、grepのようなコマンドには非常に便利です。

複数回連鎖することができ、その効果はテキストファイルを通過する必要がないという点でより一般的です。
複数回連鎖することができ、その効果はテキストファイルを通過する必要がないという点でより一般的です。

ご覧のとおり、grepでは大文字と小文字が区別されます。大文字小文字を無視するために、 "-i"フラグを使用することができます。

Image
Image

入力のリダイレクト

小文字の記号(<)を使用すると、コマンドのファイルから入力を取得することもできます。

cat < list

"それは議論を使うこととまったく同じことではない!"と言うかもしれません。この場合、あなたは正しいでしょう。入力のリダイレクトが実際に便利になるのは、コマンドを連鎖させることです。
"それは議論を使うこととまったく同じことではない!"と言うかもしれません。この場合、あなたは正しいでしょう。入力のリダイレクトが実際に便利になるのは、コマンドを連鎖させることです。

現在の "list"ファイルから "pep"を含む単語を "revisions"という新しいファイルにフィルタリングしたいとしましょう。

grep pep < list > revisions

このコマンドをやり直し、ソートを追加しましょう。
このコマンドをやり直し、ソートを追加しましょう。

grep pep < list | sort > revisions

これは、入力ファイル "list"からの検索語として "pep"を使用し、アルファベット順に並べ替え(大文字と小文字のすべての用語を続けて)、 "改訂"ファイルに出力します。
これは、入力ファイル "list"からの検索語として "pep"を使用し、アルファベット順に並べ替え(大文字と小文字のすべての用語を続けて)、 "改訂"ファイルに出力します。

sortコマンドを説明するために、次の例を見てみましょう:

ご覧のように、 "-f"フラグをsortコマンドに追加すると、大文字小文字を無視できます。これにより、テキストファイルの行をアルファベット順に並べ替えたり、大文字と小文字を区別しなくても大文字小文字を無視したりすることが容易になります。
ご覧のように、 "-f"フラグをsortコマンドに追加すると、大文字小文字を無視できます。これにより、テキストファイルの行をアルファベット順に並べ替えたり、大文字と小文字を区別しなくても大文字小文字を無視したりすることが容易になります。

シンプルなスクリプト

次の形式のスクリプトを作成しましょう:

script searchterm listfile

この用語は、grepを使ってリストファイルを検索し、結果をソートして別のファイルに出力します。

スクリプトをテストするディレクトリは次のとおりです:
スクリプトをテストするディレクトリは次のとおりです:
そして、ここで何のリストを作成してからスクリプトを実行することができます。
そして、ここで何のリストを作成してからスクリプトを実行することができます。
Image
Image

そこに行く!正規表現の規則を学ぶほど、より正確に検索コマンドをまとめることができます。そして、引用符で妥当なものは、あなたの最初の引数と置き換えることができます!

並べ替えが行われる限り、アルファベット順で並べ替える以上のことができます。次のコマンドのいくつかのマニュアルページを見てください:

  • tsort - より高度なトポロジカルソート機能
  • tr - 特定の文字を他の文字にマッピングし、それらの間で転記することができます。
  • uniq - ユニークでない(読み取り:複製)
  • awk - ファイル名のフィールドを区切るために使用できる本当に高度なテキスト処理言語/関数
  • cut、paste / join - コマンドを使ってテキストファイルからフィールドを分離し、新しいデータをカラムに追加するのに便利です。
  • look - grepのような検索は行いますが、ルックアップには辞書ファイル(ユーザ指定可能)を使用します
  • wc - 単語数、行数、文字数などを得ることができます

スクリプトのようにコマンドライン上で役に立つことができる今日の基本を少し見てきました。テキストベースのデータは、私たちが毎日使っているものの中心にあることが多いため、それを扱い、検索し、操作することが重要です。

あなたの好きなスクリプトは何ですか?テキストベースのファイル用の特別なスクリプトはありますか?あなたがコメントで知っていることを共有してください!

人気のあるトピック

専門家の助言