history により過去に実行したコマンドの一覧を表示する。 遡る行数を引数で指定できる。
$ history 5 1008 cal 1009 ls -l 1010 file ns.sh 1011 wc ns.hs 1012 history 5
履歴を呼び出すには以下の方法がある。
操作 | 機能 |
---|---|
!! | 直前のコマンドを再実行 |
!n | 履歴番号 n を再実行 |
!str | 先頭が str で始まるコマンドを再実行 |
^str^str2^ | 直前のコマンド引数 str1 を str2 に置き換えて実行 |
fc [n|str] | vi により編集、保存で実行 |
履歴ついて以下の環境変数がある。
変数名 | 機能 |
---|---|
HISTSIZE | 記録する履歴の行数 (500) |
HISTFILE | ログアウト後も保存するためのファイル名 (~/.bash_history) |
HISTFILESIZE | ファイルに記録する履歴の行数 (500) |
入力リダイレクションとヒアドキュメントでは、前者が字面とおりであるのに対し
後者は変数やバッククォーテーションの評価(置換)を行う。
$ cat -n < test.dat 1 $HOME 2 `date` $ cat -n <<EOD > $HOME > `date` > EOD 1 /home/student 2 2014年 6月 1日 日曜日 14:49:49 JST
dump は本来、「破棄」という意味がありますが、IT業界では機械的にデータを
直に出力するときに用います。特にプログラムのデバックなどで、実メモリ中の
データ並びなどを検証する際に使用します。
$ cat a.txt 123456 $ od -xc a.txt 0000000 3231 3433 3635 000a 1 2 3 4 5 6 \n \0 0000007
この例では、od(8進数ダンプ)を使って、16進数表示(-x)かつ2行目に表示可能な
形式で文字を表示(-c)しています。
ASCII コードは 1, 2, 3 がそれぞれ 0x31, 0x32, 0x33 ... となります。
また改行(\n)は、0x0A で、データ終了を表す EOD(\0) は 0x00 です。
なお Intel 系の CPU は、リトルエンディアンと呼ばれる形式を採用しており、
16bit 長さのデータは上位の 8bit と下位 8bit を逆転して格納します。
例えば上記の "12" は、0x32, 0x31 として格納されています。
xargs は標準出力から文字列を受け、指定された文字列に、それらを引数として実行。
$ echo ssh telnet date | xargs which /usr/bin/ssh /usr/kerberos/bin/telnet /bin/date
man で表示されるデータは roff 形式と呼ばれるマークアップ言語で、 /usr/share/man/
の下に各章ごとサブディレクトリが配置。
また各国語に翻訳されたものは、言語コードサブディレクトリ下に章を配置。
/usr/share/man/man1 英語の第1章 /usr/share/man/ja/man8 日本語の第8章 $ zcat /usr/share/man/man1/ls.1.gz | head .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35. .TH LS "1" "March 2012" "ls 5.97" "User Commands" .SH NAME ls \- list directory contents .SH SYNOPSIS .B ls [\fIOPTION\fR]... [\fIFILE\fR]... .SH DESCRIPTION .\" Add any additional description here .PP man(1)実行の様子 $ man ls & $ ps ww : 23972 pts/1 T 0:00 sh -c (cd /usr/share/man/ja && (echo ".pl 1100i"; /usr/bin/gunzip -c '/usr/share/man/ja/man1/ls.1.gz'; echo ".\\\""; echo ".pl \n(nlu+10") | /usr/bin/gtbl | /usr/bin/nr off -c --legacy EUC-JP -mandoc 2>dev/null | /usr/bin/less -is)
mandb は whatis で用いるデータベースを生成する。
実行時間がかかるため、-u オプションにより差分更新が可能だが直近 24時間のみ。
そのため crontab で毎日実行するよう /etc/cron.daily/man-db.cron がある。
以下の例は、パッケージ man2html をインストール直後に whatis を試し、mandb によって、更新したもの。
# yum install man2html : # mandb : /usr/local/share/man 配下のマニュアルページを処理しています... 3 man subdirectories contained newer manual pages. 48 manual pages were added. 0 stray cats were added. 0 old database entries were purged. # whatis man2html man2html (1) - format a manual page in htmlmandb 古くは makewhatis(8)