支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • これで分かるLinux入門~shel

はじめに

ITエンジニアとして、Linuxについての知識は持ち合わせておいた方が色々便利です。最近ではLinuxを使っている企業も多く、仕事獲得に繋がる要因の一つに成り得るでしょう。私もインフラ系エンジニアというわけではないのですが、Linuxについて学習したりします。そこで今回は、Linuxにおいてかなり重要なプログラムであるshellについて解説していきます。

shellとは

では、冒頭でお話しした通り早速解説していきます。shellとは、簡単に言うとユーザーからの要求をLinuxの中核部分(カーネルという)へ伝達する役割を持ったプログラムです。例えば、Aというファイルをコピーして、新しくBというファイルを作成したい場合、直接カーネルへコピーしてくれと要求することはできません。もっと別の言い方をすると、カーネルはユーザーと直接やり取りすることができないのです。そこで必要になってくるのが、ユーザーからの要求を受け付け、その要求を翻訳しカーネルへ伝達してくれる仲介役の存在です。shellが間に入ってくれることで、ユーザーはコマンドを用いて要求し、望む処理結果を得られるというわけです。現実世界で例えるなら、通訳のような仕事に近いですね。
shellという名前の由来は、皆さんもお察しの通り「殻」からきています。カーネルという心臓部をすっぽり囲む「殻」のようなポジションだからです。

shellの機能

さて、shellがどういうものか分かったところで、次は主な機能面について見ていきましょう。

コマンドの解釈、実行

shellの最も基本的な機能として、コマンドインタプリタという機能があります。この機能については、先ほど解説したユーザーからのコマンドを用いての要求を解釈するという機能の他に、そのコマンド入力をするためのプロンプトを表示させます。そして、入力されたコマンドの名前を基に該当するプログラムを探し出します。

入力したコマンドの記録

shellは一度入力したコマンドを記録してくれる機能を持っています。これはどういう利点があるかというと、過去に長い名前のファイル名を含むコマンドを使用していて、後に同じコマンドを使用したくなった場合、矢印キーを操作するだけで再度そのコマンドを使用できるようになります。非常に便利ですのでLinuxを扱う際はぜひ活用してみてください。

コマンドの補完

コマンド入力の際、コマンド名やファイル名などを途中まで入力している場合に、tabキーを入力すると残りの文字列が自動で補完されます。ただ、コマンド補完の注意点として、途中まで入力している文字列が何を入力しようとしているかをshellが特定できる場合に限ります。この機能を上手く使いこなせるようになれば、作業効率は格段に上がるでしょう。

aliasを使用したコマンドの別名定義

aliasコマンドを使用すれば、元々あるコマンドの入力をさらに簡単にできたり、複数あるコマンドを組み合わせたものを一度で呼び出せたりできます。頻繁に使用するコマンドやオプションの組み合わせを別名として定義することで、それらの処理を実現できます。例えば、カレントディレクトリのファイルやディレクトリを一覧化して詳細を表示する「ls -l」というコマンドを、「ll」という風に定義すると、「ll」と入力するだけで「ls -l」コマンドと同様の操作が実行されます。

これらは、shellのほんの一部の機能です。この他にも便利な機能はたくさんあるので、興味のある方はぜひ調べてみてください。

shellの種類

実は、shellには複数の種類があり、大きく分けると、sh系とcsh系の2種類に分類することができます。現在、Linuxディストリビューションで標準的に使用されているのは、sh系に含まれるbashというshellです。shellが異なれば制御構文や内部コマンド、変数の扱いなどが変わってきます。
ここでは広く使用されている2つのshellを紹介します。

sh

別名「Bshell」とも呼ばれており、bash同様に広く使用されているshellです。コンパイル不要、変数などが利用できるようになったのはBshellが初めてです。Bshell登場以前のshellと比較すると、より多くのプログラミング要素を取り入れており使いやすくなりました。

bash

bashはBshellをベースにして様々な機能が拡張したshellです。Bshellをベースにしているので当然互換性はありますが、Bshellと比較してより高度なコマンドを実行できます。

まとめ

shellはLinuxを扱う上で避けては通れない技術です。今回を機に、より深く学習することをおすすめします。
最後に、この記事の内容を簡単にまとめると、「ユーザーとLinuxのカーネルを繋ぐインターフェイスの役割を果たしているのがshell」となります。とても重要なプログラムの1つだということが、この記事を読むことで分かっていただけたと思います。「shellを制す者はLinuxを制す」という気持ちで学習に励んでください。