シェルスクリプトとは何ですか。なぜそれを使用する必要があるのですか。

シェルスクリプトとは何ですか。なぜそれを使用する必要があるのですか。

シェルは、LinuxまたはUnixオペレーティングシステム内のプログラムであり、システムで実行するコマンドを入力できます。 Linuxコンピュータでターミナルウィンドウを開くと、コマンドを入力するためのインターフェイスを提供するシェルプログラムが起動します。このインターフェイスは、コマンドラインインターフェイスと呼ばれます。コマンドを入力すると、シェルによって実行され、出力が画面に表示されます。





シェルは、コマンドをインタラクティブに受け入れて実行できるだけでなく、ファイルに保存されているコマンドを実行することもできます。この実行モードは、 シェルスクリプト 、およびこの記事では、シェルスクリプトの基本について説明します。





1.シェルの歴史

1970年代のUnixから、シェルプログラムがありました。 V6シェル ケントムソンによって開発されました。これはインタラクティブなシェルであり、スクリプト機能が不足していました。





その後に ボーンシェル 1977年に、現在もデフォルトのシェルとして使用されています。 アカウント。このシェルは、スクリプト機能を追加しました。これは、長年にわたって実際に非常に役立つことが証明されています。

1980年代にシェルがさらに開発された結果、多くの人気のあるシェルバリアントが生まれましたが、その中で最も人気があったのは Cシェル そしてその Korn Shell 。これらのシェルはそれぞれ独自の構文を持っていましたが、場合によっては、元のシェルとは大幅に異なっていました。



今日最も人気のあるシェルの1つは バッシュシェル 。 Bashはの略です Bourne-Again-Shell オリジナルのBourneShellの大幅に改良されたバリアントです。

フラッシュプレーヤーを必要としないゲーム

この記事では、次のシェルスクリプトについて説明します。 バッシュシェル





2.シェルスクリプトの実行

シェルスクリプトをどのように実行しますか?単純。スクリプトパスを引数としてシェルに渡すだけです。

サンプルシェルスクリプト:





echo 'hello world'

次のように実行します。

$ bash hello.sh
# prints
hello world

ノート: シェルでは、行をLF文字で終了する必要があります(Line-Feed)。 Windowsでシェルスクリプトを記述し、それをLinuxシステムで直接実行しようとすると、エラーが発生する可能性があります。 Windowsは、回線の終了にCR-LFの組み合わせ(Carriage-Return-Line-Feed)を使用します。これはLFのみに変換する必要があります。これを行う方法については、Windowsエディターを確認してください。

シェルスクリプトをコマンドとして直接実行する別の方法があります。次の行を挿入します( シバン 宣言)シェルスクリプトの最初の行として。

Facebookアプリで私をフォローしているのは誰ですか
#!/bin/bash

この変更により、単純なシェルスクリプトは次のようになります。

#!/bin/bash
echo 'hello world'

次に、スクリプトファイルを次のように実行可能にする必要があります。

$ chmod +x hello.sh

この時点で、シェルを明示的に参照しなくても、スクリプトファイルを直接実行できます。

$ hello.sh
# prints
hello world

ここで、シェルスクリプトを使用することのいくつかの利点を見てみましょう。

3.タスクの自動化

シェルスクリプトを使用する最初の利点は、頻繁に実行されるタスクを自動化することです。毎日実行する必要のあるタスクがあるとします。 Linuxシステムで毎日複数のコマンドを実行する必要がある場合は、これらのコマンドをファイルに保存してスクリプトを実行できます。例は次のとおりです。

  • ファイルまたはフォルダを毎日アーカイブしてアップロードします クラウドストレージ施設 S3など。
  • 毎日大きくなる傾向があるログファイルを圧縮します。
  • 株価を取得し、取得したデータを解析し、特定の条件(高すぎるまたは低すぎる価格)が満たされたときに電子メールまたはSMSをトリガーします。

4.複数のコマンドを組み合わせる

頻繁なタスクを自動化することに加えて、コマンドの複数のシーケンスを1つのコマンドに組み合わせることができると便利な場合もあります。単一のコマンドを覚えておくことは、実行する必要のある順序は言うまでもなく、複数のコマンドよりもはるかに簡単です。

例としては、Linuxオペレーティングシステム自体の起動シーケンスがあります。起動の一部として、OSはシステムを適切な状態にするためにいくつかのコマンドを実行します。これらのコマンドは、実際には、 /NS ディレクトリ。これらのシェルスクリプトの1つを見ると、システムの起動の複雑さに気付くでしょう。これは、シェルスクリプトがない場合は手動で実行する必要があったかもしれません。

以下は、サンプルのシェルスクリプトです。 / etc / profile 、ユーザーがログインするたびに実行されます。これらのコマンドを手動で入力することを想像してみてください。

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ '$PS1' ]; then
if [ '$BASH' ] && [ '$BASH' != '/bin/sh' ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='h:w$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ '`id -u`' -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi

5.開発が容易

C / C ++で記述された通常のプログラム内でシェルスクリプトと同じアクションを実行することが可能です。ただし、C / C ++プログラムよりも、シェルスクリプトを記述してデバッグする方がはるかに簡単です。特に、外部コマンドの実行、ファイルとディレクトリの作成と削除、出力のリダイレクトなどを含むシステム管理タスクの場合。

C / C ++プログラムは、システムコールの呼び出し、データ構造の操作など、はるかに低いレベルの操作に適しています。

6.透明性

シェルスクリプトは、テキストファイルであるため、実行しているアクションを確認するために簡単に表示できます。対照的に、C / C ++などの言語で記述された(そして実行可能ファイルにコンパイルされた)プログラムが何をしているのかを知る唯一の方法は、それが通知することを選択したかどうか、またはソースコードにアクセスできるかどうかです。たとえば、シェルスクリプトがファイルを削除しているかどうかを確認し、それらのファイルが必要な場合は、別の場所にコピーできます。

また、ソースコードを確認できるため、通常のプログラムよりもシェルスクリプトの問題を診断する方がはるかに簡単です。ディレクトリが存在しないため、そのスクリプトは失敗しますか?スクリプトコードを調べてディレクトリを作成できます(ただし、正常に動作するシェルスクリプトは、このようなエラーを回避するためにチェックして作成する必要があります)。

7.ポータブル

シェルスクリプト 他のUnixおよびUnixライクなオペレーティングシステムに転送して実行できます(シェル自体が存在する場合)。 x86、MIPS、Sparcなどのさまざまなアーキテクチャからシェルスクリプトを転送する場合でも、シェルスクリプトはC / C ++プログラムよりもはるかに移植性があります。

C / C ++プログラムを転送して別のシステムで使用できる唯一の方法は、ソースコードをコピーしてプログラムをビルドし、実行を試みることです。それでも、アーキテクチャ固有のコードを使用すると、期待どおりに機能しない場合があります。

シェルスクリプトとは何か、そしてそれらの多くの利点がわかったので、それらをタスクに使用しませんか?それらを使用するときにどのような問題に直面しましたか?以下のコメントでお知らせください。

PCでInstagramのメッセージを確認する方法
共有 共有 つぶやき Eメール VirtualBoxLinuxマシンを過給するための5つのヒント

仮想マシンによって提供されるパフォーマンスの低下にうんざりしていませんか? VirtualBoxのパフォーマンスを向上させるためにすべきことは次のとおりです。

次を読む
関連トピック
  • プログラミング
  • Linux Bash Shell
著者について ジェイ・スリダール(17の記事が公開されました) JaySridharのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください