Jump to content 日本-日本語

製品  >  ソフトウェア  >  HP-UX   >  Knowledge-on-Demand  >  UNIXの教科書 基礎編

UNIXの教科書
〜はじめよう! WindowsとLinuxからのステップアップ〜

3日目:シェルの基本を知る

HP-UX/Integrityサーバー お問い合せ
コンテンツに進む
第3日目:シェルの基本を知る
UNIXでは、ユーザが入力したコマンドの解釈/実行や実行中のプログラムの制御は、ユーザとシステムの仲介役である「シェル」というプログラムが担当します。UNIXのシェルは、単なるユーザインターフェースとして存在するだけではなく、プログラミング言語としての機能もあります。今回はシェル入門ということで、シェルの概要と基本的な操作を説明しましょう。
UNIXの教科書〜はじめよう! WindowsとLinuxからのステップアップ〜 3日目
シェルの基本を知る
ワイルドカードを知る
2008年1月
大津 真

登場人物紹介

マリー先生 四色君 タックス君
マリー先生
HP-UXのエキスパート。
HP-UXのことなら何でもお任せ!
HP-UX普及のため世界を飛び回るスーパーウーマン。
四色君
これまで使ったことのあるパソコンはWindowsのみ。ただし、コマンドプロンプトは未経験。
タックス君
Windows、Linux、Macの経験あり。ただし、操作はGUI でやることが多く、コマンドラインはほとんど使ったことがない。
※これらは架空の人物であり、実在する人物とは一切関係ありません。


マリー先生
マリー先生:
さあみなさん、今回はコマンドラインの心臓部分といえる「シェル」の基本操作について学んでいきましょう。その前に、前回の説明に関してなにか質問ありますか?
四色君:
lsコマンドを実行するとファイルもディレクトリも同じように表示されて、ファイルの種類がわかりにくいんですけど……。
四色君
マリー先生
マリー先生:
lsコマンドに「-F」オプションを指定すると、ディレクトリの場合には最後に「/ (スラッシュ)」、シンボリックリンクの場合には「@」といった記号を表示してくれるので、ファイルの種類が一目でわかるわよ。

$ ls -F 【Enter】
Documents/    Readme.txt    ok.txt@       profile.txt   sample.png
Pictures/     bkup/         original/     public_html/  samples/

lsにはこれ以外にもいろいろと便利なオプションがあるから、「man ls」を実行してマニュアルを見ておいてね。たとえば、デフォルトでは一覧はファイル名の順に表示されるけど、「-t」オプションを指定すると、修正日時の順に並び替えて表示してくれるわ。

また、lsには、それぞれ以下の省略形式のコマンドが用意されています。

lsf  =  ls -F
ll   =  ls -l
lsx  =  ls -x
lsr  =  ls -R

今日の時間割 シェルの基本操作 ワイルドカードを知る 練習問題

1時間目:シェルの基本操作

ユーザがターミナルで打ち込んだコマンドは、「シェル」というプログラムが解釈して、システムの中心部分であるカーネルに伝えます。“シェル(shell)”とは日本語では“貝殻”といった意味になります。カーネルを貝殻のように包み込んでユーザとの橋渡しをする存在といったイメージで考えてください。

シェルはカーネルとユーザとの橋渡しをする
図1:シェルはカーネルとユーザとの橋渡しをする

「シェル」はUNIXにおける名称で、一般的には「コマンドインタプリタ」などと呼ばれる種類のプログラムです。現在ではさまざまな種類のシェルが存在しますが、HP-UXではPOSIX SHELL(sh)が標準シェルとして使用されています。

現在使用されているシェルを確認するには次のように実行します。

$ echo $SHELL 【Enter】
/sbin/sh

四色君:
シェルはWindowsのコマンドプロンプトみたいなものですか?
四色君
マリー先生
マリー先生:
広い意味ではそうね。だけどUNIXのシェルのほうが遙かに高機能で使い勝手も上よ。
タックス君:
シェルもプログラムファイルとしてどこかに保存されているのですか?
タックス君
マリー先生
マリー先生:
システム的にはシェルもひとつのプログラムファイルにすぎないの。たとえばPOSIX SHELLのパスは「/sbin/sh」よ。

シェルの履歴機能

POSIX SHELLには、コマンドラインの編集機能が用意されています。これを使用すると、たとえば以前に実行したコマンドを呼び出すことが可能です。なお、UNIXにはviとemacsという二大エディタがありますが、シェルの編集機能では、キーアサインをそのいずれかのエディタのものに設定可能です。本稿では、viエディタのキーアサインを基本に説明します。

コマンドラインでescキーを押すと編集モード(viのコマンドモード)に入ります。編集モードとは、ユーザがタイプした文字がカーソル位置に挿入されるのではなく、コマンドとして認識されるモードです。

たとえば、編集モードで「k」をタイプすると過去に実行したコマンドをひとつずつ遡って表示します。行き過ぎてしまった場合には「j」で戻ります。目的のコマンドが見つかったらEnterキーを押すと実行されます。

なお、編集モードを抜け、カーソル位置にテキストを入力していく入力モードに戻るには「i」をタイプします。

タックス君:
あれ? escキーを押してもだめなんですけど……。
タックス君
マリー先生
マリー先生:
デフォルトのエディタを示すEDITOR環境変数という変数が設定されていないのかもね。次のように実行してviに設定すればいいわ。

$ export EDITOR=vi

シェルの環境設定ファイルはホームディレクトリの下の「.profile」なので、このファイルに「export EDITOR=vi」を追加しておけば、次回のログインからは自動的に設定されるわよ。

編集モードのキー操作

編集モードではviエディタのさまざまなキー操作が使用できます。viエディタの使い方については次の機会に説明するとして、ここではもっとも基本的なキー操作を説明しましょう。たとえば、カーソルの前後の移動は「h」と「l」に割り当てられています。

echo Hallo UNIX
       ←h   l→

また、カーソル位置の文字を削除するには「x」をタイプします。表1に、基本的なキーアサインをまとめておきます。

<表1:viの基本的なキーアサイン>

h 1文字左に移動
j 1つ後に実行したコマンドを呼び出す
k 1つ前に実行したコマンドを呼び出す
l 1文字右に移動
x カーソル位置の文字を削除
D カーソル位置から最後までを削除
$ 最後の文字に移動
^ 最初の文字に移動

四色君:
UNIXのコマンドはどこに保存されているのですか?
四色君
マリー先生
マリー先生:
基本的なコマンドは/bin、/usr/bin/、/sbin、/usr/sbinといったディレクトリに保存されているわ。主に/binと/usr/binディレクトリはユーザコマンド、/sbinと/usr/sbinディレクトリは管理コマンドというように分類されているの。

たとえば、/binディレクトリをlsコマンドで表示してみると、数多くのコマンドが用意されていることがわかるわ。

$ ls /bin 【Enter】
Uutry              expr               mm                showaudio
X11                factor             model             showexternal
acl_edit           false              more              shownonascii
adb                fastmail           mpsched           showpicture
〜中略〜
evmwatch           mkstr              sh                zcat
ex                 mktemp             shar              zcmp
expand             mkuupath           shl               zdiff

シェルが、ユーザが入力したコマンドを探しにいくディレクトリのことを「コマンド検索パス」と呼ぶのだけど、コマンド検索パスに保存されていて、かつ実行権限が与えられたファイルは、ファイル名つまりコマンド名で実行できるわけ。
四色君:
UNIXのコマンドはすべてファイルとして存在するのですか?
四色君
マリー先生
マリー先生:
それだけじゃなくて、あらかじめシェルに内蔵されているコマンドもあるの。それらのコマンドのことをシェルの「組み込みコマンド」と呼ぶの。たとえばディレクトリを移動するcdコマンドやpwd、echoといったコマンドは組み込みコマンドね。

よく使うディレクトリを表す特別な記号

シェルには、ホームディレクトリや1つ上のディレクトリといった、頻繁にアクセスするディレクトリに関して、次のような記号が割り付けられ、簡単に指定できるようになっています。

<表2:ディレクトリを表す記号>

~ ホームディレクトリ
.. 1つ上のディレクトリ
. カレントディレクトリ

これらの3つは、シェルを活用していくうえで欠かせない表記なので、確実に覚えるようにしてください。

たとえば、「.. (ピリオド2つ)」は、カレントディレクトリの1つ上のディレクトリを表します。現在ホームディレクトリにいるときに、1つ上のディレクトリ、つまり/homeディレクトリの一覧を表示するには次のようにします。

$ ls .. 【Enter】
iwww        lost+found  naoko       o2          owww        sfmdb       taro

これらの記号は通常のパスの指定と同じく、ディレクトリの区切りを示す「/」と組み合わせて使えます。たとえば、現在ホームディレクトリにいるときに、2つ上のディレクトリの下にあるlibディレクトリの一覧を表示するには次のようにします。

$ ls ../../lib 【Enter】
Motif1.1                       libcext.1                      libomp.sl
Motif1.2                       libcext.sl                     libpam.1
Motif1.2_R6                    libcl.0                        libpam.sl
Motif2.1                       libcl.1                        libpsm.1
X11                            libcl.2                        libpsm.sl
X11R4                          libcl.sl                       libpthread.1
〜以下略〜

マリー先生
マリー先生:
「..」と「.」の2つは実際にはファイルで、lsコマンドの一覧で見ることもできるの。
タックス君:
あれ? 「ls 【Enter】」を実行しても見えないんですけど……。 。
タックス君
マリー先生
マリー先生:
「..」と「.」はファイル名の先頭が「.」で始まるから隠しファイルなの。「-a」オプションをつけて実行すれば見えるわよ。
$ ls -a  【Enter】
.                 .cshrc            .login            .xjim_onlud
..                .dt               .mozilla          Documents
.ICEauthority     .dtprofile        .profile          Pictures
.TTauthority      .dtprofile.org    .sh_history       Readme.txt
.Xauthority       .exrc             .xjim_defaults    original
.atokx            .firefox-license  .xjim_keybind     profile.txt
.bash_history     .fonts.cache-1    .xjim_learn       samples
四色君:
あっ、ほんとだ。でも「..」と「.」は普通のファイルとしては使わないから、ちょっとじゃまですね。
四色君
マリー先生
マリー先生:
それだったら「-a」の代わりに「-A」オプションを指定すれば、「..」と「.」は表示されなくなるわよ。

$ ls -A  【Enter】
.ICEauthority     .dtprofile        .profile          Pictures
.TTauthority      .dtprofile.org    .sh_history       Readme.txt
.Xauthority       .exrc             .xjim_defaults    original
.atokx            .firefox-license  .xjim_keybind     profile.txt
.bash_history     .fonts.cache-1    .xjim_learn       samples
.cshrc            .login            .xjim_onlud
.dt               .mozilla          Documents

「~(チルダ)」は自分のホームディレクトリを表します。たとえば、任意のディレクトリにいるときに、ホームディレクトリの下にあるDocumentsディレクトリに移動するには次のようにします。

$ cd ~/Documents

四色君:
「ls」とか「cd」といったように、UNIXのコマンドはアルファベット2文字とかか3文字のものが多いのですか?
四色君
マリー先生
マリー先生:
そうね、たとえば「cd」は「Change Directory」の頭文字といったように、英語の単語を略したものが多いの。コマンドを作った人たちは、少しでもタイプする量を少なくしたかったのかもね。

休み時間:いろいろなシェル

現在ではUNIX系OSで動作する多くのシェルがあり、使い勝手や機能はさまざまです。使い慣れた日本語入力システム文書がすらすら作成できるようにに、自分に合ったシェルを使うとコマンドラインの作業効率も向上します。

HP-UXの標準シェルであるPOSIX SHELLは、kshをもとにPOSIXに準拠させたものです。シェルはBourneシェルを起源とするBシェル系と、cshを起源とするCシェル系に分類されることがあります。以下に、主なシェルについてまとめておきましょう。
  • sh - Bourneシェル
    UNIXの黎明期に開発された標準的なシェルです。対話機能がとぼしいことから現在ではログインシェルとして使用されることはほとんどありませんが、シェルスクリプト(シェルで記述したプログラム)のリファレンス的シェルとして使用されています。なお、システムによっては、他のシェルが「sh」という名前でインストールされています。たとえばHP-UXではPOSIX SHELLが/sbn/shとして、LinuxやMac OS Xではbashが/bin/shとしてインストールされています。

  • ksh - Kornシェル
    Bourneシェルを機能強化し、コマンドラインの編集機能やヒストリ機能といった対話機能を備えたシェルです。

  • bash - Bourne Again Shell
    GNUプロジェクトによるBourneシェルの機能強化版です。「生まれ変わったBourneシェル」という意味で、bash(Bourne Again SHell)と名付けられています。Bourneシェルに比べて特に対話機能が強化されており、Linuxでは標準シェルとして採用されています。

  • csh - Cシェル
    BSD(カリフォルニア大学バークレー校)で開発されたCシェル系の元祖で、if文やwhile文といったC言語の文体に似た制御構造が用意されています。

  • tcsh - TENEX Cシェル
    cshの機能拡張版です。ファイル名補完機能やコマンドライン編集の機能が強化され、Cシェル系としてはもっとも広く使用されています。フリーのUNIXとしてLinuxと並ぶ人気のFreeBSDでの標準シェルです。

  • zsh - Zシェル
    Bシェル系とCシェル系のメリットを併せ持つ、現在もっとも多機能なシェルです。
POSIX SHELL以外のシェルを使いたいのであれば、bash、tcsh、zshのいずれかがお勧めです。いずれもPorting And Archive Centre for HP-UXよりHP-UX 11i v3用のパッケージがダウンロードできます。インストールにはスーパーユーザの権限が必要ですので、システムの管理者にインストールしてもらってください。

連載記事一覧 1  |  2 次のページへ

本ページの内容は執筆時の情報に基づいており、異なる場合があります。

お問い合わせ

ご購入前のお問い合わせ


ご購入後のお問い合わせ

HPEサポートセンター
製品の標準保証でご利用いただける無償のサービスです。

ショールーム

ショールーム 導入をご検討のお客様へ
業務アプリケーションの継続・標準化・開発性とシステム担当者様、システム開発者様が抱える悩み・疑問に対する解決策実体験して頂けます。
印刷用画面へ
プライバシー ご利用条件・免責事項