logo

Linux シェルとシェル スクリプトの概要

主要なオペレーティング システムを使用している場合、間接的に シェル 。 Ubuntu、Linux Mint、またはその他の Linux ディストリビューションを実行している間、ターミナルを使用してシェルと対話します。この記事では、Linux シェルとシェル スクリプトについて説明するため、シェル スクリプトを理解する前に、次の用語に慣れておく必要があります。

  • カーネル
  • シェル
  • ターミナル

目次

カーネルとは何ですか?

カーネルは、コンピュータのオペレーティング システムの中核となるコンピュータ プログラムであり、システム内のすべてを完全に制御します。 Linux システムの次のリソースを管理します。



  • ファイル管理
  • プロセス管理
  • I/O管理
  • メモリ管理
  • デバイス管理など

Linus Torvalds が Linux OS を開発したとよく誤解されますが、実際には Linux カーネルの開発のみを担当しています。

完全な Linux システム = カーネル + GNU システム ユーティリティとライブラリ + その他の管理スクリプト + インストール スクリプト。

シェルとは何ですか?

シェルは、ユーザーがオペレーティング システム サービスを使用するためのインターフェイスを提供する特別なユーザー プログラムです。シェルはユーザーから人間が判読できるコマンドを受け取り、それをカーネルが理解できるものに変換します。これは、キーボードなどの入力デバイスまたはファイルから読み取られたコマンドを実行するコマンド言語インタープリターです。シェルは、ユーザーがログインするかターミナルを起動すると開始されます。

ブラク・オズシビット
Linux シェル

Linux シェル

シェルは大きく 2 つのカテゴリに分類されます。

  • コマンドラインシェル
  • グラフィカルシェル

コマンドラインシェル

ユーザーはコマンド ライン インターフェイスを使用してシェルにアクセスできます。 Linux/macOS ではターミナル、Windows OS ではコマンド プロンプトと呼ばれる特別なプログラムが提供されており、cat、ls などの人間が読めるコマンドを入力して実行されます。結果は端末上でユーザーに表示されます。 Ubuntu 16.4 システムのターミナルは次のようになります –

Linuxコマンドライン

Linuxコマンドライン

上のスクリーンショットでは ls とのコマンド -l オプションが実行されます。現在の作業ディレクトリ内のすべてのファイルが長いリスト形式で一覧表示されます。
初心者にとって、コマンド ライン シェルを使用するのは少し難しいです。多くのコマンドを覚えるのは難しいからです。それは非常に強力です。これにより、ユーザーはコマンドをファイルに保存し、それらを一緒に実行できるようになります。このようにして、反復的なタスクを簡単に自動化できます。これらのファイルは通常、Windows ではバッチ ファイルと呼ばれ、 シェル Linux/macOS システムのスクリプト。

グラフィカルシェル

グラフィカル シェルは、ウィンドウの開閉、移動、サイズ変更、ウィンドウ間のフォーカスの切り替えなどの操作を可能にすることで、グラフィカル ユーザー インターフェイス (GUI) に基づいてプログラムを操作する手段を提供します。 Windows OS または Ubuntu OS は、プログラムと対話するための GUI をユーザーに提供する良い例と考えることができます。ユーザーは、アクションごとにコマンドを入力する必要はありません。 Ubuntu システムの典型的な GUI –

GUIシェル

GUIシェル

Javaで自動配線されるものは何ですか

Linux システムでは次のようないくつかのシェルが利用可能です。

  • BASH (Bourne Again SHell) – Linux システムで最も広く使用されているシェルです。これは、Linux システムおよび macOS のデフォルトのログイン シェルとして使用されます。 Windows OSにもインストールできます。
  • CSH (C SHell) – C シェルの構文とその使用法は、C プログラミング言語に非常に似ています。
  • KSH (Korn SHell) – Korn Shell は、POSIX Shell 標準仕様などのベースでもありました。

各シェルは同じ仕事をしますが、異なるコマンドを理解し、異なる組み込み関数を提供します。

端末とは何ですか?

ユーザーがシェルにアクセスできるようにインターフェースを提供するプログラム。基本的に、ユーザーはコマンドを入力し、テキストベースのインターフェイスでそれらのコマンドの出力を確認できます。複雑なタスクを自動化して実行するために作成された大規模なスクリプトは、ターミナルで実行されます。

Javaの更新


ターミナルにアクセスするには、検索ボックスで「ターミナル」を検索し、ダブルクリックするだけです。

オープンターミナル

ここでは Red Hat Linux のターミナルがどのように見えるかを確認できます。

ターミナル

シェルスクリプト

通常、シェルは対話型です。つまり、ユーザーからの入力としてコマンドを受け入れ、実行します。ただし、大量のコマンドを定期的に実行したい場合があるため、毎回ターミナルにすべてのコマンドを入力する必要があります。

シェルはファイルからの入力としてコマンドを受け取ることもできるため、これらのコマンドをファイルに記述し、シェルで実行することで、この繰り返しの作業を回避できます。これらのファイルは次のように呼ばれます シェルスクリプト または シェルプログラム 。シェル スクリプトは MS-DOS のバッチ ファイルに似ています。各シェルスクリプトは次のように保存されます。 `.sh` ファイル拡張子 例: myscript.sh。

シェル スクリプトの構文は、他のプログラミング言語と同じです。 Python、C/C++ などのプログラミング言語の使用経験がある場合は、非常に簡単に始めることができます。

シェル スクリプトは次の要素で構成されます。

  • シェルのキーワード – if、else、break など。
  • シェルコマンド – cd、ls、echo、pwd、touch など。
  • 機能
  • 制御フロー – if..then..else、case ループ、シェル ループなど。

なぜシェルスクリプトが必要なのでしょうか?

シェル スクリプトを作成する理由はたくさんあります。

  • 繰り返しの作業と自動化を避けるため
  • システム管理者は、定期的なバックアップにシェル スクリプトを使用します。
  • システム監視
  • シェルに新しい機能を追加するなど。

シェルスクリプトの利点

  • コマンドと構文はコマンド ラインに直接入力したものとまったく同じであるため、プログラマはまったく異なる構文に切り替える必要はありません。
  • シェルスクリプトの作成がはるかに速くなります
  • クイックスタート
  • インタラクティブなデバッグなど

シェルスクリプトのいくつかの欠点

  • コストのかかるエラーが発生しやすく、たった 1 つの間違いでコマンドが変更され、それが有害になる可能性があります。
  • 実行速度が遅い
  • 言語構文または実装内の設計上の欠陥
  • 大規模で複雑なタスクにはあまり適していません
  • 他のスクリプト言語とは異なり、最小限のデータ構造を提供します。等

Bash Shell を使用したシェル スクリプトの簡単なデモ

ターミナルで作業している場合は、ディレクトリの奥深くまで移動します。次に、パス上にいくつかのディレクトリがある場合、以下に示すように、Python ディレクトリにアクセスするために次のようなコマンドを実行する必要があります。

123映画
Python ディレクトリに移動します。

Python ディレクトリに移動します。

それは非常にイライラするので、ディレクトリの名前を入力するだけで、実行せずにそのディレクトリに直接ジャンプできるユーティリティを用意できないのはなぜでしょうか。 CD ../ 何度も何度も命令する。スクリプトを次の名前で保存します ジャンプ.sh

バッシュ
# !/bin/bash # A simple bash script to move up to desired directory level directly function jump() {  # original value of Internal Field Separator  OLDIFS=$IFS  # setting field separator to '/'  IFS=/  # converting working path into array of directories in path  # eg. /my/path/is/like/this  # into [, my, path, is, like, this]  path_arr=($PWD)  # setting IFS to original value  IFS=$OLDIFS  local pos=-1  # ${path_arr[@]} gives all the values in path_arr  for dir in '${path_arr[@]}'  do  # find the number of directories to move up to  # reach at target directory  pos=$[$pos+1]  if [ '' = '$dir' ];then  # length of the path_arr  dir_in_path=${#path_arr[@]}  #current working directory  cwd=$PWD  limit=$[$dir_in_path-$pos-1]  for ((i=0; i; i++))  do  cwd=$cwd/..  done  cd $cwd  break  fi  done }>

現時点では、シェル スクリプトには権限がないため、実行できません。次のコマンドを入力して実行可能にする必要があります –

$ chmod +x パス/to/our/file/jump.sh

これをすべての端末セッションで利用できるようにするには、これを .bashrc ファイル。

.bashrc は、Bash シェルが対話的に起動されるたびに実行されるシェル スクリプトです。 .bashrc ファイルの目的は、変数、関数、エイリアスを設定し、プロンプトを定義し、新しいターミナル ウィンドウを開くときに使用するその他の設定を定義できる場所を提供することです。

次に、ターミナルを開いて次のコマンドを入力します。

文字列を int Java としてキャストする

$ エコーソース ~/path/to/our/file/jump.sh>> ~/.bashrc

ここでターミナルを開き、次のコマンドを入力して新しいジャンプ機能を試してください。

$ ジャンプディレクトリ名

以下のスクリーンショットのように:

ジャンプディレクトリ名

ジャンプディレクトリ名

結論

この記事では、Linux システムの重要な部分、つまりすべてを制御するカーネル、オペレーティング システムと対話できるシェル、コマンドを与えるためのインターフェイスであるターミナルについて学びました。私たちはコマンド ラインと BASH などのグラフィカル シェルを調査し、ターミナルがコマンドを入力する場所であることを理解しました。この記事では、単純なスクリプトを使用してタスクを自動化する方法であるシェル スクリプトを紹介し、それらを使用する利点と欠点について説明しました。実際の例では、ディレクトリを素早く移動するためのスクリプトの作成を示しました。最後に、スクリプトを動作させ、すべてのターミナル セッションでアクセスできるようにする方法を確認しました。この記事は、Linux シェルとシェル スクリプトを理解して使用するための初心者向けのガイドです。Linux は優れた言語であり、Linux 言語で書かれています。