xserver
Home クッキー及びWeb ビーコンについて



bashの基礎

bashの概要

 ここでは、多くのディストリビューションが標準で採用している bash について解説していきます。




■シェルの表記

 ユーザーでログインした際に表示されるシェルの表記は以下のようになっています。一番左のkororo は、ユーザー名、@の後ろにあるns1 はホスト名を表し、最後のkororo はユーザーkororo のホームディレクトリを表しています。そして重要なのが、$ ですが、これは一般ユーザーでログインしていることを表しています。

[kororo@ns1 kororo]$

 root でログインしている場合は、# になります。

[root@ns1 root]#



■bash の基本的なキー操作

 まずは、シェルの画面の前でどのような操作ができるか知っておくことが重要です。これらのキー操作には慣れておく必要があります。キー操作に関しては、↑↓→←や[ BachSpace] キー、[ Delete ]キーで代用できることが多いので全て覚える必要はありませんが、覚えておくと効率的なキー操作もいくつかあります。全て覚えようとすると、どのキーがどの操作だったかをすぐに忘れてしまうので、これは使えそうだ、と判断したものを日頃から使うようにして慣れていくと手放せなくなるものも多々あります。

 Ctrl+b カーソルを一文字左へ
 Ctrl+f カーソルを一文字右へ
 Ctrl+a 行の先頭にカーソルを移動する
 Ctrl+e 行の末尾へカーソルを移動する
 Ctrl+d カーソルのある位置より後ろの文字を削除する
 Ctrl+h カーソルのある位置より前の文字を削除する
 Ctrl+k カーソルのある位置から行末まで削除する
 Ctrl+u 行の先頭からカーソルの直前の文字まで削除する
 Ctrl+l 画面のクリア。clear コマンドでも代用できる。

■入力履歴

 1度入力したコマンドを何度も入力するのが面倒な時ように、入力履歴というものがあります。DoSプロンプトでは、↑ キーや、↓キーで入力したコマンドを行ったり来たりできますが、bash でも同様です。

 Ctrl+p ひとつ前の入力履歴に移動。↑キーでも可能。
 Ctrl+n ひとつ次の入力履歴に移動。↓キーでも可能。

 なお、以前に操作したコマンドの履歴を番号付きで表示させるには、history コマンドを使用します。デフォルトでは、1000個まで履歴に保存されます。もし、この数値を変更したい場合は、環境変数HISTSIZEの値を変更します。シェルで、HISTSIZE=500 のように入力すると履歴は500回まで保存されるようになります。変更されたかどうかを確認するには、env コマンドを使用します。なお、入力履歴はユーザーごとに、ホームディレクトリ下に .bash_history というファイルが作成されており、そのファイル内に入力履歴が記録されていきます。なので、システムを再起動したり、停止させたりしても、ホームディレクトリ直下に.bash_historyが存在すればいつでも入力履歴を呼び出すことができます。

$ history
中略
989 vi /etc/logrotate.d/httpd
990 /usr/sbin/logrotate /etc/logrotate.conf
991 /usr/local/apache2/bin/httpd -l

 ここで、ちょっと余談なんですが、TeraTerm での便利な画面(スクロール)移動について紹介します。皆さんは、TeraTerm上で画面を上や下にスクロールするときにどのように操作していますか?画面が下にだらだら長くなったときに、ちょっと上の方の出力結果を参照したいときが多々あります。そんな時、↑矢印キーを押しても、コマンドの入力履歴がずらずらと出てくるだけ…。違うんだ!俺は上にスクロールしたいんだよ!と、腹を立てながら、結局マウスに持ち替えてスクロールさせてる方も多いのではないでしょうか。そんな時のためのキー操作が、Ctrl + ↑(画面を上にスクロール)とCtrl + ↓(画面を下にスクロール)です。移動させた時に、再び、コマンドを打ちたいときは、何か文字を打つか、[ ENTER ] キーを叩きます(間違ってコマンドを実行しないように…∑(; ̄□ ̄ TeraTerm を利用している方は是非、利用してください。

■履歴から検索する

 このキー操作は非常に便利なものなので是非、活用してください。履歴を辿る場合、通常は、↑キーや↓キーを押しながら履歴を辿って以前に入力したコマンドを探します。これが10個前とかなら↑キーを10回押すだけなのでまだましですが、これが666回前に実行した長ったらしいコマンドを探すのに、↑キーを666回押していたのでは日が暮れてしまいますし、途中でもう1度入力したほうが早いのではないかとふと我に返るはずです。そんな時のために、入力履歴から特定文字列を含むコマンドを検索する操作があり、Ctrl + r で実行できます。まず、ターミナル上でCtrl + r を入力すると以下のような画面になります。

$ (reverse-i-search)`':

 この時点で、「ls」と入力してみます。すると、以前に入力したコマンドの中から ls という文字列が含まれたコマンドを検索し、右側にそのコマンドが表示されます。この時点で、これが自分の捜し求めていたコマンドなら[ ENTER ] キー、もしくは、Ctrl + e を入力します。この両者の違いは、[ ENTER ] を入力した場合は、そのままコマンドとして実行し、Ctrl + e はコマンドが画面に表示されるだけです([ ENTER ] を押さなければ実行されない状態)。

(reverse-i-search)`ls': ls -la

 もし、もっと前の「ls 」という文字列を含むコマンドにさかのぼりたいときは、Ctrl + r を何度か入力して自分が捜し求めているものを見つけます。もし、検索そのものを途中で止めたくなったときは、[ ESC ]キーを叩きます。

(reverse-i-search)`ls': ls -la /etc/rc.d/init.d/ #再度、Ctrl + r を入力する



■コマンド・ファイルの補完 [ Tab ]

 コマンド・ファイルを補完する[ Tab ] キーも頻繁に使います。Linux でコマンド入力する場合、Windows と違ってあるディレクトリの中にどのようなファイルが入ってるかを確認するには ls コマンドを実行します。けれども、コマンド入力中にわざわざキー入力を止めて ls とやるのはばかげています。なので、コマンド入力中、途中で中にどのようなファイルが格納されているかわからない場合は、[ TAB ] キーを入力すると、そのディレクトリ内のファイル一覧が表示されます。

# cd /usr/local/  # この時点で[ Tab ] キーを2回叩きます
apache2       courier-imap  include       man           pgsql
bin           etc           lib           mysql         samba
certs         games         libexec       netperf       sbin

 次に、ディレクトリ名を補完してみます。この時、仮に「sr 」を含む文字列のディレクトリが存在しないとき、ビープ音が鳴り、そのファイルが存在しないことを知らせてくれます。例えば、/usr/local/local までを入力した段階で、[ Tab ] キーを入力してみてください。/usr/local/local なんてディレクトリは存在しないために、ビープ音が鳴ります。

# cd /usr/local/sr # この時点で[ Tab ] キーを1回叩きます

# cd /usr/local/src/  # ディレクトリが自動的に補完されました

 [ Tab ] キーはファイルやディレクトリ名の補完だけではなく、コマンド名の補完もしてくれます。ターミナル上でuser と入力して、[ Tab ] キーを2回入力してみてください。利用できるコマンド一覧が表示されたら、さらに「a」を続けて入力して[ Tab ] キーをもう一度叩きます。するとコマンド名、useradd が完全に補完されるようになります。この[ Tab ]補完機能は普通に使う機能なので是非、活用しましょう。

# user # この時点で[ Tab ] キーを2回叩きます
useradd userdel userhelper userisdnctl usermod usernetctl users
# usera  # [ Tab ]キーを一回叩きます

# useradd



 0 行の先頭に移動する
 $ 行の末尾に移動する
  カーソルがある段落の先頭に移動
 } カーソルがある段落の末尾に移動
 Ctrl+F 1画面下に移動する
 Ctrl+B 1画面上に移動する
 Ctrl+D 半画面下に移動する
 Ctrl+U 半画面↑に移動する
 h ← 左に1文字移動
 j ↓ 下に1文字移動
 k ↑ 上に1文字移動
 l → 右に1文字移動
 w 次の単語に移動
 b 前の単語に移動
 :数字 何行目に移動するか指定する。":100"と入力すると100行目に移動する



■コマンド展開

 コマンド展開することで、入力の手間を省くことができます。が、筆者はあまり利用しないかも…。下記に記した$ 記号を除いてコマンドを入力します。

 $ ! 最後に実行したコマンドを実行する
 $ !n 履歴n番目のコマンドを実行する
 $ !-n 一番最後に実行したコマンドより n 番前に実行したコマンドを実行する
 $ ^stop^start 「^」の次に来る文字はstopやstart でなくてもいいのですが、仮に、/etc/rc.d/init.d/crond stop というコマンドを入力した後、再び、/etc/rc.d/init.d/crond start と入力するのが面倒な場合に、
^stop^start とすることで、コマンド入力の手間を省くことができます。勿論、他のコマンド実行時にも応用ができます。


■リダイレクション(標準入力・標準出力・エラー出力)

 [ 0:標準入力/1:標準出力/2:標準エラー出力/>&:標準出力+標準エラー出力 ]

例1):標準出力をfileB に書き出します。

$ cat fileA> fileB

例2):標準エラー出力のみ、backup.log に書き出します。

$ backup.sh 2> /var/log/backup.log

例3):標準出力、標準エラー出力の両方をfileB に書き出します。なお、cat fileA 2>&1 > fileB
    とした場合は標準エラー出力はfileBに出力されなくなります。

$ cat fileA > fileB 2>&1

例4):標準出力はfileBに書き出し、標準エラー出力はerror.logに書き出します。

$ (cat fileA > fileB) >& error.log
or
$ cat fileA > fileB 2> error.log

◎まとめ
 > fileA 標準出力を fileA に書き出す。
 < fileA 標準入力を fileA から読みこむ。
 >> fileA 標準出力を fileA に追加(append)する。
 2> fileA 標準エラー出力を fileA に書き出す。
 2>>fileA 標準エラー出力を fileA に追加(append)する。
 2>&1 標準エラー出力を標準出力と同じファイルに書き出す。標準入力+標準エラー出力







TOPに戻る

Sponcerd Link


Search
 
Web サイト内
Rental Server

【レンタルサーバのXbit】 低価格・高品質のビジネスクオリティー。300メガ1,050円~30分で サービススタート可能!


容量300MB、月額125円、高性能なサーバが日本最大級のバックボーンに直結。
さくらのレンタルサーバ



当サイトはLinux自宅サーバーの構築を目的としたサイトです。
当サイトに関するご意見、ご要望等は、こちらのメールアドレスよりお願いします。
Beginning | Introduction | Installation | Server |
Security | Tips | Related-Sites
Copyright©2003-2006 KORO All Rights Reserved.
総計:
今日:
昨日: