ホームページ » の仕方 » シェルスクリプティング入門ガイド基本

    シェルスクリプティング入門ガイド基本

    「シェルスクリプト」という用語はLinuxフォーラムで頻繁に言及されていますが、多くのユーザーはそれに慣れていません。この簡単で強力なプログラミング方法を学ぶことは、時間を節約し、コマンドラインをよりよく学び、面倒なファイル管理タスクを追放するのに役立ちます。.

    シェルスクリプトとは?

    Linuxユーザーであるということは、あなたがコマンドラインで遊ぶということです。そうであろうとなかろうと、指し示してクリックすることよりも、このインターフェースを介してはるかに簡単に行われることがいくつかあるだけです。コマンドラインを使い、習得すればするほど、その可能性が見えてきます。さて、コマンドライン自体はプログラム、つまりシェルです。今日のほとんどのLinuxディストリビューションはBashを使用しています、そしてこれはあなたが本当にコマンドを入力しているものです.

    さて、Linuxを使用する前にWindowsを使用したことのある人は、バッチファイルを覚えているかもしれません。これらはあなたが実行するコマンドで満たすことができた小さなテキストファイルであり、Windowsはそれらを順番に実行するでしょう。システムフォルダを開いたりショートカットを作成することができなかったときに高校のコンピュータラボでゲームを実行するなど、いくつかのことを実行するための賢い方法です。 Windowsのバッチファイルは便利ですが、シェルスクリプトの安価な模造品です。.

    シェルスクリプトを使用すると、バッチファイルと同じように、コマンドをチェーンでプログラムし、スクリプトイベントとしてシステムに実行させることができます。また、コマンド置換など、はるかに便利な機能も使用できます。 dateなどのコマンドを起動して、その出力をファイル命名スキームの一部として使用できます。バックアップを自動化することができ、コピーされた各ファイルの名前の末尾に現在の日付を追加することができます。スクリプトも単にコマンドの呼び出しではありません。それらはそれ自体がプログラムです。スクリプトを使用すると、 'for'ループ、if / then / else文などのプログラミング関数を直接オペレーティングシステムのインタフェース内で使用できます。そして、あなたがすでに知っているものを使っているので、あなたは他の言語を学ぶ必要はありません:コマンドライン.

    これこそがスクリプトの力です。ほとんどの主要なプログラミング言語の主食を学びながら、あなたはあなたが既に知っているコマンドでプログラムするようになります。繰り返して退屈なことをする必要がありますか?スクリプトを書く本当に複雑なコマンドのショートカットが必要ですか?スクリプトを書く本当に使いやすいコマンドラインインターフェイスを構築したいですか。スクリプトを書く!

    あなたが始める前に

    一連のスクリプティングを始める前に、いくつかの基本的な情報を説明しましょう。私たちはbashシェルを使っています。これはほとんどのLinuxディストリビューションでネイティブに使われています。 BashはMac OSユーザーとWindows上のCygwinでも利用可能です。それはとても普遍的なので、あなたはあなたのプラットフォームに関係なくスクリプトを書くことができるはずです。さらに、参照されているすべてのコマンドが存在する限り、スクリプトはほとんどまたはまったく調整することなく複数のプラットフォームで動作できます。.

    スクリプトは「管理者」または「スーパーユーザー」特権を簡単に利用できるため、スクリプトを機能させる前にテストすることをお勧めします。スクリプトを実行しようとしているファイルのバックアップがあることを確認するなど、常識も使用してください。対話が必要になるように、rmコマンドの-iのように正しいオプションを使用することも非常に重要です。これはいくつかの厄介な間違いを防ぐことができます。そのため、ダウンロードしたスクリプトを読んで、問題が発生した場合に備えて、持っているデータに注意してください。.

    基本的には、スクリプトは単なるプレーンテキストファイルです。 gedit、emacs、vim、nanoなど、どんなテキストエディタでも書くことができます。このリストは続きます。リッチテキストやWord文書ではなく、プレーンテキストとして保存するようにしてください。 nanoが提供する使いやすさが大好きなので、それを使用します。.

    スクリプトの権限と名前

    スクリプトはプログラムのように実行され、これが起こるためにはスクリプトは適切なパーミッションを持っている必要があります。次のコマンドを実行してスクリプトを実行可能にすることができます。

    chmod + x〜/ somecrazyfolder / script1

    これにより、誰でもその特定のスクリプトを実行できます。使用を自分のユーザーだけに制限したい場合は、代わりにこれを使用できます。

    chmod u + x〜/ somecrazyfolder / script1

    このスクリプトを実行するには、適切なディレクトリにcdしてから次のようにスクリプトを実行する必要があります。

    cd〜/ somecrazyfolder

    ./ script1

    より便利にするために、ホームディレクトリの "bin"フォルダにスクリプトを置くことができます。

    〜/ bin

    最近の多くのディストリビューションでは、このフォルダはデフォルトで作成されなくなりましたが、作成することはできます。これは通常、他のユーザーではなく自分のユーザーに属する実行可能ファイルが格納されている場所です。ここにスクリプトを配置することで、他のコマンドと同じように名前を入力して実行することができます。代わりにcdを使用して「./」プレフィックスを使用する必要はありません。.

    ただし、スクリプトに名前を付ける前に、その名前を使用するプログラムがインストールされているかどうかを確認するには、次のコマンドを実行する必要があります。

    which [コマンド]

    多くの人が初期のスクリプトを「テスト」と名付け、コマンドラインで実行しようとしても何も起こりません。これは、引数なしでは何もしないtestコマンドと競合するためです。スクリプト名がコマンドと競合しないように常に注意してください。!

    スクリプト作成ガイドライン

    前述したように、すべてのスクリプトファイルは基本的にプレーンテキストです。それはあなたがあなたが望むものすべてを書くことができるという意味ではありません、しかし。テキストファイルを実行しようとすると、シェルはそれらがスクリプトであるかどうか、そしてすべてを適切に処理する方法についての手がかりを求めてそれらを解析します。このため、あなたが知る必要があるいくつかのガイドラインがあります。.

    1. すべてのスクリプトには「#!/ bin / bash」を付けます。
    2. すべての新しい行は新しいコマンドです
    3. コメント行は#で始まります
    4. コマンドは()で囲まれています

    ハッシュバングハック

    シェルがテキストファイルを解析するときに、ファイルをスクリプトとして識別する最も直接的な方法は、最初の行を作成することです。

    #!/ bin / bash

    別のシェルを使用している場合は、ここでそのパスを置き換えてください。コメント行はハッシュ(#)で始まりますが、その後にbang(!)とシェルパスを追加すると、このコメント規則を回避し、この行が指すシェルでスクリプトを強制的に実行するような種類のハックになります。.

    改行=新しいコマンド

    すべての新しい行は新しいコマンド、またはより大きなシステムのコンポーネントと見なされるべきです。たとえば、if / then / else文は複数の行を引き継ぎますが、そのシステムの各コンポーネントは新しい行にあります。前のコマンドを切り捨てて次の行にエラーを表示する可能性があるため、コマンドを次の行に流し込まないでください。あなたのテキストエディタがそれをやっているのなら、安全のためにテキストの折り返しをオフにするべきです。 Altキーを押しながらLキーを押しながらナノビットでテキストの折り返しをオフにすることができます。.

    コメント#でよく使われる

    行を#で始めると、その行は無視されます。これによりコメント行になり、前のコマンドの出力が何だったのか、または次のコマンドが何をするのかを思い出すことができます。繰り返しになりますが、テキストの折り返しをオフにするか、コメントを複数の行に分割してください。すべての行はハッシュで始まります。多くのコメントを使用することは、あなたや他の人々があなたのスクリプトをより簡単に微調整することを可能にするので、維持することをお勧めします。唯一の例外は、前述のHash-Bangハックです。 ;-)

    コマンドは括弧で囲まれている

    以前は、コマンド置換は単一の目盛り記号( '、〜キーを共有)で行われていました。まだ触れていませんが、ほとんどの人が基本を学んだ後に行って探索するので、代わりに括弧を使うべきだと言うのはおそらく良い考えです。これは主に、コマンドを他のコマンドの中に入れ子にすると、括弧のほうがうまく機能するためです。.

    あなたの最初のスクリプト

    ファイルをコピーしてファイル名の末尾に日付を追加することを可能にする簡単なスクリプトから始めましょう。それを“ datecp”と呼びましょう。まず、その名前が何かと矛盾していないか確認しましょう。

    whichコマンドの出力がないことがわかりますので、この名前を使用するように設定されています。.

    〜/ binフォルダーに空のファイルを作成しましょう。

    touch〜/ bin / datecp

    そして、忘れてしまう前に、許可を変更しましょう。

    それでは、スクリプトの作成を始めましょう。選択したテキストエディタでそのファイルを開きます。私が言ったように、私はナノのシンプルさが好きです.

    nano〜/ bin / datecp

    それでは、先に進み、前提条件の最初の行と、このスクリプトの動作についてのコメントを入力しましょう。.

    次に、変数を宣言しましょう。あなたが代数を使ったことがあるなら、あなたはおそらくそれが何かということを知っているでしょう。変数を使うと、情報を格納してそれを使って作業を行うことができます。他の場所で参照されると、変数は「展開」できます。つまり、名前を表示する代わりに、保存されている内容を表示します。後で、同じ変数に別の情報を格納するように指示することができます。それ以降に発生した命令は新しい情報を使用します。それは本当に派手なプレースホルダーです.

    変数には何を入れますか?さて、日時を保存しましょう!これを行うには、dateコマンドを呼び出します。.

    dateコマンドの出力を作成する方法については、以下のスクリーンショットを見てください。

    %で始まるさまざまな変数を追加することで、コマンドの出力を必要なものに変更できることがわかります。詳細については、dateコマンドのマニュアルページを見てください。.

    dateコマンドの最後の繰り返しである“ date +%m_%d_%y-%H.%M.%S”を使って、それを私たちのスクリプトで使ってみましょう。.

    このスクリプトを今すぐ保存するとしたら、それを実行すれば、期待どおりにdateコマンドの出力が得られます。

    しかし、違うことをしましょう。このコマンドにdate_formattedのような変数名を付けましょう。これに対する正しい構文は次のとおりです。

    variable = $(コマンドオプション引数)

    そして私たちにとっては、このように構築します。

    date_formatted = $(日付+%m_%d_%y-%H.%M.%S)

    これをコマンド置換と呼びます。我々は本質的にbashに、変数“ date_formatted”が現れるたびに、括弧の中でコマンドを実行するように伝えています。それから、変数の名前“ date_formatted”の代わりに、コマンドが与えるどんな出力でも表示されるべきです。.

    これがスクリプト例とその出力です。

    出力には2つのスペースがあることに注意してください。 echoコマンドの引用符内のスペースと変数の前のスペースの両方が表示されます。表示したくない場合は、スペースを使用しないでください。また、この「echo」行が追加されていないと、スクリプトはまったく何も出力しません。.

    スクリプトに戻りましょう。次にコマンドのコピー部分を追加しましょう.

    cp -iv $ 1 $ 2 $ date_formatted

    これにより、-iオプションと-vオプションを指定してcopyコマンドが呼び出されます。前者はファイルを上書きする前に確認を求め、後者はコマンドラインで何がダウンしているのかを表示します。.

    次に、「$ 1」オプションを追加したのがわかります。スクリプトを作成するときは、ドル記号($)の後に数字を続けると、呼び出されたときのスクリプトの番号付き引数を示します。たとえば、次のコマンドでは、

    cp -iv Trogdor2.mp3 ringtone.mp3

    最初の引数は「Trogdor2.mp3」、2番目の引数は「ringtone.mp3」です。.

    スクリプトを振り返ると、2つの引数を参照していることがわかります。

    つまり、スクリプトを実行するときに、スクリプトを正しく実行するために2つの引数を指定する必要があります。最初の引数$ 1は、コピーされるファイルであり、“ cp -iv”コマンドの最初の引数として代用されます。.

    2番目の引数$ 2は、同じコマンドの出力ファイルとして機能します。しかし、それが違うこともわかります。ピリオドを追加し、上から“ date_formatted”変数を参照しました。これが何をするのかについて興味がある?

    スクリプトが実行されると、次のようになります。

    出力ファイルが、$ 2で入力したもの、ピリオド、dateコマンドの出力の順に表示されていることがわかります。理にかなっている、正しい?

    これで、datecpコマンドを実行すると、このスクリプトが実行され、ファイルを新しい場所にコピーして、ファイル名の末尾に日付と時刻を自動的に追加することができます。アーカイブ用に便利!


    シェルスクリプトは、あなたのOSをあなたのために機能させるための核心です。それを実現するために新しいプログラミング言語を学ぶ必要もありません。自宅でいくつかの基本的なコマンドを使用してスクリプトを作成してみて、これを何に使用できるかについて考え始めてください。.

    あなたは台本を書きますか?初心者のための何かアドバイスがありますか?コメント欄であなたの考えを共有しましょう!このシリーズには他にもあります!