Jump to content 日本-日本語

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

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

第6日目:シェルの環境設定

HP-UX/Integrityサーバー お問い合せ
コンテンツに進む
第6日目:シェルの環境設定
たいぶシェルを使いこなせるようになってきたでしょうか。今回は、使いやすいようにシェルの環境設定をカスタマイズする方法がテーマです。まず1時間目では、シェルの環境設定において重要な役割を果たすエイリアスと変数の取り扱いについて説明します。2時間目では、ログインするたびに同じようにカスタマイズした環境を使えるようにする、シェルの環境設定ファイルの取り扱いについて学んでいきましょう。
UNIXの教科書 応用編〜はじめよう!WindowsとLinuxからのステップアップ〜 6日目
エイリアスと変数
シェルの環境設定ファイル
2009年2月
大津 真

UNIXの教科書:登場人物紹介 このリンクをクリックすると、新しいウィンドウが開きます

マリー先生
マリー先生:
シェルは、使いやすいように必要に応じて環境をカスタマイズすることができるの。今回はシェルの環境設定に関する機能について説明しましょう。その前に、前回のジョブとプロセスの操作についてなにか質問ありますか?
タックス君:
デスクトップで暴走状態にあるGUIアプリケーションを強制終了するためには、その都度psコマンドでプロセス番号を調べて、killコマンドでSIGKILLシグナルを送る必要があるのですか?
タックス君
マリー先生
マリー先生:
それでもいいけれど、X Window Systemには「xkill」という、Xアプリケーションを強制終了させる専用のプログラムが用意されているの。「xkill 【Enter】」を実行すると、端末に「Select the window whose client you wish to kill with button 1....」と表示されるので、目的のアプリケーションのウィンドウをマウスでクリックしてね。これで、そのアプリケーションが強制終了されるわ。

今日の時間割 エイリアスと変数 シェルの環境設定ファイル 練習問題

1時間目:エイリアスと変数

1時間目では、シェルに用意されている機能であるエイリアスと、シェル変数の取り扱いについて説明しましょう。なお、現在ではさまざまなシェルがあり、機能や使い方が少しずつ異なりますが、ここではHP-UXのデフォルトのシェルであるPOSIXシェルを基本に解説します。

エイリアスとは

エイリアスとは、コマンドを別の名前で定義する機能です。aliasコマンドを使用して、次のような書式で実行します。

alias エイリアス名=コマンド

たとえば、ファイルを削除するrmコマンドのエイリアスとして「del」を設定するには、次のようにします。

$ alias del=rm

これで、rmコマンドの代わりにエイリアス「del」が使用できるようになります。

$ del tmp.txt  ←rmの代わりにdelでファイルを削除できる

四色君:
あれ、次のように実行したらエラーになるのですが……。

$ alias del = rm
del=rm	
sh: =: Invalid alias name.
四色君
マリー先生
マリー先生:
それは「=」の前後にスペースを入れているからね。aliasコマンドは「エイリアス名=コマンド」をひとつの引数として扱うから「=」の前と後にはスペースやタブをいれてはダメなの。

コマンドの内部にスペースや特殊文字を含む場合には、コマンド部分をシングルクォーテーション「'」(もしくはダブルクォーテーション「"」)で囲ってクォーティングします。たとえば、「ls /home/o2/Documents」というコマンドのエイリアスを「lsdocs」として定義するには次のようにします。

$ alias lsdocs='ls /home/o2/Documents'  ←エイリアス「lsdocs」を定義
$ lsdocs 【Enter】  ←lsdocsを実行
2007        info.txt    mail.txt    sample
2008        ln          main.html   sample.txt

コマンドを再定義する

エイリアスを使用すると、既存のコマンドをオプションや引数を含めて同じ名前で再定義することもできます。たとえば、cpコマンドを、コピー先のファイルが存在する場合は常に確認のメッセージを表示するようにするには、次のようにしてcpコマンドを「-i」オプション付きで再定義します。

$ alias cp="cp -i"  ←cpコマンドを「-i」オプション付きで再定義
$ cp sample.txt new.txt 【Enter】  ←再定義したcpコマンドを実行
overwrite new.txt? (y/n) y
↑コピー先のファイルが存在したら確認のメッセージが表示される(「Y」キーで削除)

四色君:
コマンドがエイリアスかどうかを確認するにはどうしたらよいのですか?
四色君
マリー先生
マリー先生:
typeコマンドを実行すると、エイリアスの場合には「alias」と表示されるの。通常のコマンドはその絶対パスが、シェルの組み込みコマンドの場合には「shell builtin」と表示されるわ。

$ type cp 【Enter】
cp is an alias for cp -i  ←cpは「cp -i」のエイリアス
$ type ls 【Enter】
ls is a tracked alias for /usr/bin/ls  ←コマンドファイル
$ type cd 【Enter】
cd is a shell builtin.  ←組み込みコマンド

マリー先生
マリー先生:
それから、aliasコマンドを引数なしで実行すれば、現在設定されているエイリアスの一覧が表示されるわ。

$ alias 【Enter】
autoload='typeset -fu'
command='command '
cp='cp -i'
del=rm
functions='typeset -f'
history='fc -l'
integer='typeset -i'
local=typeset
ls=/usr/bin/ls
lsdocs='ls /home/o2/Documents'
nohup='nohup '
r='fc -e -'
rm=/usr/bin/rm
stop='kill -STOP'
suspend='kill -STOP $$'
type='whence -v'

エイリアスを削除する

設定済みエイリアスを削除するには、unaliasコマンドを使用します。

unalias エイリアス名

たとえば、前の例の「cp -i」を「cp」として再定義したエイリアスを削除するには次のようにします。

$ unalias cp  ←cpのエイリアスを削除
$ type cp 【Enter】  ←typeコマンドで確認
cp is /usr/bin/cp  ←コマンドファイルが使用されるようになる

変数とは

一般的なプログラミング言語において、変数とはなんらかの値を格納しておく箱のようなものです。その値には変数名と呼ばれる名前でアクセスできます。シェルはユーザーインターフェースであると同時にプログラミング言語でもあるため、変数が使用できます。シェルで使用する変数のことを「シェル変数」と呼びます。
シェル変数に値を代入するには次の書式で実行します。

変数名=値

たとえば「val1」という名前の変数に「Hello」という文字列を格納するには、次のようにします。

$ val1=Hello

タックス君:
エイリアスの定義と同じく、「=」の前後にはスペースを入れてはダメなのですね。
タックス君
マリー先生
マリー先生:
そうね。それから、これもエイリアスの定義と同じく、値にスペースや特殊文字を含む場合にはクォーティングしてね。

$ val2="Hello World"

もしくは、次のようにスペースの前に「\」を記述してエスケープしてもいいわね。

$ val2=Hello\ World

変数の値を取り出す場合には、変数名の前に「$」を記述します。

$変数名

たとえば、変数「val2」の値をechoコマンドで表示するには次のようにします。

$ echo $val2 【Enter】
Hello World

変数を削除するにはunsetコマンドを使います。

unset 変数名

このとき変数名の前には「$」は記述しません。次に変数「val2」を削除する例を示します。

$ unset val2

シェル変数の活用例

たとえば、よく使うディレクトリのパスを変数に格納しておくと、そのディレクトリに簡単に移動したり、一覧を表示したりできます。
次に例を示します。

$ myDir="/home/o2/Documents/2009/info"  ←変数myDirにパスを代入
$ ls $myDir  ←lsコマンドで一覧を表示 【Enter】
new.txt  samples
$ cd $myDir  ←cdコマンドで移動

四色君:
現在設定されている変数の一覧を表示することはできますか?
四色君
マリー先生
マリー先生:
setコマンドを引数なしで実行すれば、すべての変数とその値が表示されるわ。

$ set 【Enter】
COLUMNS=80
DISPLAY=192.168.1.14:10.0
EDITOR=vi
〜以下略〜

休憩時間:HP-UXから他のシステムにリモートログインするには

読者のみなさんの中には、Windows用の端末エミュレーターである「TeraTerm Pro」などを利用してWindowsマシンからHP-UXにリモートログインして学習をしている方も多いでしょう。
HP-UXには標準でTelnetクライアント/SSHクライアントが用意されていますので、TelnetサーバーあるいはSSHサーバーにログインすることも可能です。

Telnetサーバーにリモートログインを行うにはtelnetコマンドを次の書式で実行します。

telnet ホスト名もしくはIPアドレス

SSHサーバーにログインする場合にはsshコマンドを次の書式で実行します。

ssh -l ユーザー名 ホスト名もしくはIPアドレス

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

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

お問い合わせ

ご購入前のお問い合わせ


ご購入後のお問い合わせ

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

ショールーム

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