Unixコマンド/history

history

機能

historyコマンドはヒストリ機能を持つシェルの内部コマンドで、そのシェルから実行した
コマンドの実行履歴を表示します。
デフォルトでは、保存されている履歴を全て表示しますが、引数に履歴数を指定すると、
新しい履歴から指定された数の履歴だけを表示します。
シェルのヒストリ機能により、historyコマンドで表示できる履歴をコマンドラインに~呼び出すことができます。
これによって、同じコマンドを再度実行するときに、コマンド入力の手間が省略できます。
▼コマンド履歴の呼び出し指定

入力機能
一つ前のコマンドラインの履歴を呼び出す
一つ後のコマンドラインの履歴を呼び出す
!!直前に実行したコマンドライン
!nhistoryコマンドで確認できる履歴番号n番のコマンドライン
!-nn回目に実行したコマンドライン
!!:m直前に実行したコマンドラインのm番目の引数(最初の引数(=コマンド自身)を0とする)
!$直前に実行したコマンドラインの最後の引数
!文字列指定した文字列から始まるコマンドライン

▼履歴を指定するシェル変数

シェルコマンド履歴数を指定するシェル変数
csh、tcshなどhistory
bash、kshなどHISTSIZE

▼履歴の保存ファイルを指定するシェル変数

シェル履歴の保存先を指定するシェル変数
csh、tcshなどsavehist
bash、kshなどHISTFILESIZE

現在のhistory保有数の確認

# echo $HISTSIZE
1000

構文

history [オプション] [履歴数]

オプション

-h履歴番号を表示しない
-r逆順に履歴を表示する

コマンド例

▼実行したコマンドの履歴を表示する

$ history
   29  19:07   top
   30  19:07   netstat | head
   31  19:07   exit
   32  23:37   cd /work1/HOME/
   33  23:37   ll
   34  23:37   rm *3.0.xls
   35  23:37   ll
   36  23:38   su
   37  23:49   cat /usr/local/etc/smb.conf
   38  23:50   ll /work1/HOME/

▼コマンド履歴の保存数を設定する。  matsui@vaio$ set history=256         256個まで履歴を保存する  matsui@vaio$ set |grep history  history 256 変数historyが設定された ▼直前に実行したコマンドを再実行する

matsui@vaio$ ls                                lsコマンドを実行
account         db              log             run             tmp
at              empty           mail            rwho            yp
backups         games           msgs            service
crash           heimdal         preserve        spool
cron            lock            qmail           supervise
matsui@vaio$ !!                                直前に実行したコマンドを実行
ls
account         db              log             run             tmp
at              empty           mail            rwho            yp
backups         games           msgs            service
crash           heimdal         preserve        spool
cron            lock            qmail           supervise

▼指定した文字列から始まるコマンドを実行

matsui@vaio$ ls /usr/
@LongLink       games           libexec         sbin
X11R6           include         local           share
bin             lib             obj             src
compat          libdata         ports           sup
matsui@vaio$ pwd
/var
matsui@vaio$ !ls                               lsから始まるコマンドを再実行
ls /usr/
@LongLink       games           libexec         sbin
X11R6           include         local           share
bin             lib             obj             src
compat          libdata         ports           sup

▼直前に実行したコマンドの引数だけを再利用する

$ ls -a !$                                     直前のコマンドの最後の引数を再利用
ls -a /usr/local/etc
 .                       pear.conf               smb.conf.default
..                      proftpd.conf            ssh
codepages               proftpd.conf.bak        sudoers
courier-imap            rc.d                    sudoers.sample
cups                    rc.subr                 wgetrc
openldap                smb.conf