スクリプトスクリプト


bashスクリプトは強力なツールです.Unixベースのシステムで作業していたなら、かなりの時間が経つにつれて、単純性、効率性、スケーラビリティのために存在していることを理解しているので、それで作業を終了します.

One program's output shall be another one's input.


それは、物事がどのように行われ、どのようにあまりにもそれらを考える必要があります.bashスクリプトで何か空想をしたいと思う前に、すでにあなたの生産性を高めるツールがたくさんあります.
その記事の目的は、いくつかの非常に有用なトリックを表示し、うまくいけば、そのトピックにさらに行くに興味をいくつかを通過することです.

ブレス拡大


ブレース展開は“物事”のリストを操作する非常に便利なツールです.ほとんどの場合、リストを生成するために使用され、冗長な命名などのファイルなど.このツールを使用すると、それらのリストを生成するために多くを入力する必要はありませんので、時間を節約し、間違いを避けることができます.
bashスクリプトについて注意する価値のあるものは、bashシェルが実際にコマンドを実行する前に、コマンドにどんな置換を実行する必要があるかをチェックするという事実です.変数を使用するか、以前にエイリアスを使用したのでしょう.ブレース展開は、bashによってサポートされている複数の拡張フォームの一つです.それらの展開は古いシェルでは利用できません.しかし、現在のdistrosのほとんどは、それらを使用することができます.
ブレース展開は一対の{} ブレース.それらの内部はコンマ区切りの項目または範囲指定子です.
最も一般的な例は以下のようにします.
echo {1,2,3,4,5}
これはブラケット内の値を出力します.どこに行くのか、どのように使用することができますか?まだ?今回はこの例を見てください.
# Will output all numbers from 1 to 10
echo {1..10}
# Will output all characters from A to Z and a to z
echo {A..z}
今、同じ名前で10のファイルを作成する必要があると想像しますが、特定の区切り文字で
touch filename{1..10}.txt
現在、1つのコマンドラインで10ファイルを作成することができます.

グレープ


便利なツールは、特定のパターンのファイルを検索することができますgrepと呼ばれる.
簡単な例を見て、簡単なログファイルを作りましょう.
ping google.com > /your/destination/output-logfile.log
そのコマンドを数秒間実行し、プロセスをkillします.いくつかの行を持つファイルを残しておくべきです.
もしあなたがファイルを読みたければ、実行します
cat /your/destination/output-logfile.log
しかし、それはすべてを印刷します.あなたが欲しいものは、統計が表示される線を見るだけです.ここでgrepはこのような方法で便利になります.
cat /your/destination/output-logfile.log | grep packets
単語のパケットが1行に含まれている単語が表示される場所です.出力は以下のようになります:7 packets transmitted, 7 received, 0% packet loss, time 6009ms現在、これは我々に全ラインを出力します、しかし、我々は実際に我々に興味があることを示すだけで出力をフォーマットすることができます.
私が送信されたパケットの数を見たいだけだとしましょう.これは、grep . また、grepを使ってファイルを作成する代わりにgrepを実行します.
ping -c 1 google.com | grep 'packets' | cut -d , -f 1
このコマンドで
  • pingを一度Google.COMと詳細を与える
  • その中のワードパケットで行を表示するだけです
  • 最初の区切り文字の後にすべてを切ってください.1 packets transmitted
  • スクリプトファイルのコマンドの保存


    現在、これらのシェルツールはすべて役に立ちますが、時には長くなることができます.ほとんどの場合、これらの有用なスクリプトを再利用したい.

    ファイルの作成


    ほとんどのスクリプトファイルが良い通知を開始する#!/bin/bash . これをshe-bang(shabang) どちらがトークンシャープの連結から派生します.この行はスクリプトを解釈するシェルが定義されているのでかなり重要です./bin/bash は通常、シェルがシステムのデフォルトシェルであることを示すシンボリックリンクとして実装される.
    おそらく、あなたのスクリプトについては、いくつかの小さなドキュメントでもshabang
    #!/bin/bash
    # This is a script to list apples
    
    いつでもあなたのスクリプトに戻ってくることができ、実際にそれをコードを読むことなく何を意味していた理解しています.
    今私たちの非常に単純なスクリプトを起動します
    #!/bin/bash
    # This is a script to list apples
    
    echo "I have 3 apples"
    
    ないスーパーエキサイティングですか?
    よく我々は変数を追加しようとすることができます
    #!/bin/bash
    # This is a script to list apples
    a=Hello
    b="Good Morning"
    c=19
    echo $a
    echo $b
    echo $c
    
    echo "$b! I have $c apples"
    
    ここでは、スクリプトを使用して再利用することができる3つの変数が定義されています$ 変数名の前に署名します.
    では、pingとgrepコマンドを使用してください.
    #!/bin/bash
    # This is a script to ping and view packets transmitted
    a=$(ping -c 1 google.com | grep 'packets' | cut -d , -f 1)
    echo $a
    
    2では、スクリプト内の子スクリプトを実行し、変数に値を格納し、変数をエコーします.
    これらの例の全ては、既存のLinuxツールでどのように物事ができるかを説明するのではなく、シェルを強力にする方法を示すことです.より深く掘りたいならば、あなたは常にタイプman your tool そして、あなたは完全なドキュメントやリンクをどこにあなたのツールを使用する方法についての情報を見つけることができる場所にプロンプトが表示されます.