Command for PC-UNIX

FreeBSD Linux で使われるコマンドです。



8hz-mp3 MP3のエンコーダ

wave形式からmp3形式にコンバートする。結構なスピードで動いてくれる。
% 8hz-mp3 sample.wav sample.mp3
一般的に、toshaでCDから吸い出し、soxでWAVE形式に変換して、8hz-mp3でMP3形式に変換し、それをmpg123、splay、xaudioなどで再生する。
(コマンド tosha,mpg123,sox,splay)

a2p awkスクリプトをperlスクリプトに変換する

% a2p sample.awk > sample.pl
sample.awk(awkスクリプト)をsample.pl(perlスクリプト)に変換する。
FreeBSDでは /usr/bin/a2pがperl4用、packageのperl5に含まれる/usr/local/bin/a2pがperl5用。
(コマンド awk,perl)

ac ログイン時間の記録を表示

ユーザ別のログイン時間の記録を表示する。
% ac
total 42.99
これは、acを実行したユーザは42.99時間ログインしていた、ということ。ただし、/var/log/wtmp の内容を元に時間を計算するので、/var/log/wtmpをクリアしてしまうとログイン時間が0に戻ってしまう。-pオプションを使うと、毎日の使用時間を表示できる。
% ac -p
Dec 17 total 2.15
Dec 18 total 6.47
Dec 19 total 2.54
Dec 20 total 3.36
Dec 21 total 10.26
Dec 22 total 4.20
コマンド名が似ているが、acctonとは直接は関係ない。
(コマンド accton,lastcomm,sa)

accton コマンドログ作成の許可/禁止

普通のUNIXは、デフォルトではコマンドログは取っていないので、ログを取りたい場合は明示的に指定しなければならない。

一般的にログファイルは /var/account/acct である。/var/account/acctが存在しなかったら、まず
# touch /var/account/acct
でファイルを作成し、その後
# accton /var/account/acct
とすると、それ以降に実行されたコマンド名がログに記録される。この記録は saコマンドで見ることができる。ログ作成を停止したい場合は、引数を与えず
# accton
とする。FreeBSDでは /etc/rc.conf でログ作成のオン/オフを指定できる。
(コマンド ac,lastcomm,sa)

adduser 新規ユーザを追加する。FreeBSDのみ。

testというユーザを新しく登録する場合、
% adduser
Enter username [A-Za-z0-9_]: test (ログインネームを入力)
Enter full name []: test (リアルネーム。適当でよい)
Enter shell bash csh date no sh tcsh [tcsh]: tcsh (ログインシェルを指定)
Uid [1000]: 1000 (uidを指定)
Login group test [test]: test (グループ名を指定)
などとする(実際にはもう少しメッセージが表示されるが省略した)。
(コマンド rmuser)

afterstep NEXTSTEP風のウィンドウマネージャ

かっちょいい外見と柔軟なカスタマイズ機能が人気がある。確かに見栄えはよいが色数をかなり喰うので、Xが8bpp(最大256色)だとかなり苦しい。この場合、減色したアイコンを使うとよい。

システム付属の設定を使うには、
% cp /usr/X11R6/lib/X11/afterstep/system.steprc ~/.steprc
として、~/.xsession(あるいは.xinitrc)の最後に exec afterstepと書けばよい。
afterstep-1.0 の設定方法は fvwm 系とほぼ共通だったが、afterstep-1.4 以降はかなり変わってしまった(らしい)。
(コマンド twm,fvwm)
(設定ファイル ~/.steprc)

alias コマンドの別名を設定する。シェルの内部コマンド。

あるコマンドを別のコマンド名で登録することで、長いコマンド名を短縮できる。例えば
% alias ls ls -lFA
% alias du du -k
% alias memo mule ~/lib/memo
% alias f "find / -name '\!*' -print"
など(これはcsh・tcshの場合)。csh・tcshでは、コマンドの前に`\'を付けることで、エイリアスを解除できる。
% alias ls ls -lFA
% ls (ls -lFAと同じ)
% \ls (ただのlsと同じ)
エイリアスを解除するには unalias を使う。aliasを引数なしで実行すると、現在設定されている alias の一覧を表示する。

sh・bash系の場合は
% alias ls="ls -lFA"
と「=」で結ばなくてはならない。

普通aliasは、~/.cshrcや~/.profileなどに記述しておく。こうすることで、ログインすると自動的にaliasが有効になる。
(コマンド unalias)

amp MPEG AUDIO Layer3 (MP3) プレイヤー

-q メッセージを表示しない
(コマンド mpg123,sox,splay,xaudio,8hz-mp3)

apache 高機能WWWサーバ

シェア、信頼性、知名度など、総合的に見て一番よいと思われるWWWサーバ。CGI、SSIはもちろん、モジュールを組み込むことで色々な機能を使うことができる。
(コマンド httpd)

appres Xのリソースの設定を表示

例えばktermに関するリソースの一覧を表示するには
% appres KTerm
とする。
(コマンド listres)

apropos キーワードにマッチしたコマンド名を表示

例えばファイルについて記述してあるマニュアルの一覧が欲しい場合は
% aprops file
とする。これは
% man -k file
と同じ。
(コマンド man)

ar アーカイバ

ファイルをまとめて保管しておくためのユーティリティ。目的としては tar と同じだが、一般ユーザが使うことはあまりない。例えば、/usr/lib/lib**.aなどのライブラリは ar でアーカイブされている。
-t アーカイブされているファイルの一覧を表示
(コマンド ld,cc)

archie コマンドラインでFTPサイトから検索する。

archieについての詳しい説明は xarchie へ。
(コマンド xarchie)

arithmetic 簡単な算数の問題を出題する

-o +-x/ 足し算、引き算、かけ算、割り算を出題する。引き算とかけ算のみをやりたかったら -o -x とする。

as アセンブラ

Cをコンパイルする場合は、ccが自動的にasを呼んでくれる。
(コマンド gas)

astrolog 占星術のプログラムらしい

at 実行時間を指定してコマンドを実行

% at 10am -f file
午前10時にシェルスクリプトfileを実行
% echo ls|at 4pm + 2 days
2日後の午後4時にlsを実行
(コマンド crontab,atq)

atq atで指定されたコマンドのリストを表示

(コマンド at)

attraction ボールがはねるデモ

(コマンド xscreensaver)

awk テキスト整形ツール(パイプ)

一昔前は、perlのようにテキスト処理ツールとして広く使われてきた。

例えば
% ls -l | awk '{print $5,$9}'
とすることで、ファイルサイズとファイル名の一覧が得られる。

awkは一冊の本が書けるほど高機能なので、ここではこれ以上は解説しない。
(コマンド gawk,perl,sed,tr)
(参考書籍 sed&awkプログラミング)

banner 大きい文字を出力

basename パス名+ファイル名からパス名を削除する

% basename /usr/local/bin/vi
vi

また、
% basenmae foo.dat .dat
とすると、foo.datから.datを削除したものを表示する。これを使って、
% foreach i ( *.c.orig )
foreach? cp $i `basename $i .orig`
foreach? end
とすると、DOSでいう
COPY *.c.orig *.c
が実現できる。
(コマンド dirname)

bash 高機能版sh

shのユーザインタフェース機能を強化したもの。
(コマンド sh,csh,tcsh)
(設定ファイル ~/.profile,~/.bash_profile)

bc 計算機

% bc
2+4 (入力)
6
a=34/2 (入力)
a-2 (入力)
15
quit (終了)
また、ファイルに計算式を記述して、ファイル名を指定してもよい。
% cat sample
5*8
quit
% bc sample
40
さらに標準入力から計算式を指定することもできる。
% echo '9*9'|bc
81
また、小数点以下の有効桁数は scale という変数で設定できる(デフォルトは0)。
% bc
2/3
0 (デフォルトではscale=0なので小数点以下は表示されない)
scale=4 (小数点以下4桁を表示)
2/3
.6666
(コマンド calc,dc,hexcalc,xcalc)

bdes ファイルを暗号化・復号化する(パイプ)

ファイルを暗号化する。cryptと同じ機能を持つ。
sample.dat というファイルを暗号化したい場合は
% bdes < sample.dat > sample.dat.encryped
Enter key: (暗号化のキーを入力)
とする。復号化は、
% bdes -d < sample.dat.encryped > sample.dat.decryped
Enter key: (暗号化時に入力したキーを入力)
FreeBSDの場合、DESをインストールすると/usr/bin/bdesにバイナリが置かれる。
(コマンド crypt)

beav バイナリエディタ・ビュアー

muleライクな操作方法を持つ(が、結構違うところも多い)。日本語は表示できない(エディットはできる)。主なキーバインドは以下の通り。
C-f 1文字進む
C-b 1文字戻る
C-n 1行進む
C-p 1行戻る
C-x C-s セーブ
C-x C-c 終了
ESC s 検索
ESC t 次検索
C-x i 1バイト挿入
ESC d 1バイト削除
C-g 現在入力中のコマンドを抜ける
ESC ? ヘルプを表示
C-x n 次ウィンドウに移動
ESC a ASCII表示モードに切り替え
ESC < バッファの先頭に移動
ESC > バッファの終端に移動
詳しい説明が/usr/local/share/doc/beav/beav.txtに書いてある(英文)。
(コマンド hexdump,hd,od)

bg 指定したジョブをバックグラウンドで実行する。

ジョブ番号を指定しないとカレントジョブが操作対象になる。
bgを使うということは、command & で起動するのと同じこと。
(コマンド fg,jobs)

biff メールの到着を知らせるかどうかを設定する。

y メールの着信を知らせる
n メールの着信を知らせない
(コマンド xbiff,xpbiff)

bindkey tcshの機能をキーに割り付ける。tcshの内部コマンド。

引数なしで実行すると、現在のキーバインドを表示する。例えば、
% bindkey
Standard key bindings
"^@" -&gt; set-mark-command
"^A" -&gt; beginning-of-line
"^B" -&gt; backward-char
...(略)...
だと、C-@はset-mark-command、C-a は行頭に移動、C-b は一文字戻る、という意味。-l オプションを付けると、全ての機能とその解説の一覧が表示される。例えば、C-rはデフォルトでは redisplay という機能が割り振られている。これを後方インクリメンタルサーチである i-search-back に変えるには
% bindkey ^R i-search-back
とすればよい。

(コマンド tcsh)

bison 構文解析パーサ生成プログラム

yaccの上位互換プログラム。GNUが作成・配布している。
(コマンド lex,flex,yacc)

builtins tcshの内部コマンドを表示

(コマンド tcsh)

cal カレンダーを表示する

y(数字) y年のカレンダーを表示する
% cal 1998 1998年のカレンダーを表示
m y(数字) y年m月のカレンダーを表示する
% cal jan 今年の1月のカレンダーを表示
% cal sep 1998 1998年9月のカレンダーを表示
-y 今年のカレンダーを表示
-j 1月1日からの日数を表示する
(コマンド xcalender)

calc 簡易計算機

(コマンド bc,dc,hexcalc,xcalc)

cat ファイルの内容を表示する(パイプ)。複数のファイルを連結する

-n 行番号を表示
-b 行番号を表示。空行をカウントしない
-s 連続する空行を1行の空行として表示
-v コントロールコードを文字列(^XやM-xなど)として表示する
-t -vに加えて、ダブを^Iで表示する
-u 出力をバッファリングしない

splitで分割したファイルを結合するのにも使われる
% split sample
% ls x??
xaa xab xac
% cat xaa xab xac > sample2
(コマンド split)

catman manページの整形を行う

manで表示されるマニュアルは、nroff形式のファイルをnroffやgroffなどで整形して作られるので、作成に少し時間がかかる。一方、一度参照されたマニュアルはプレインテキストとして保存されるので、二度目からはmanの実行が速くなる。catmanは事前に整形作業を行ってプレインテキストを作成しておくコマンドである。catmanを使わなくても、未整形のマニュアルはmanが整形してくれるので、manの速度に不満がない場合はcatmanを使う必要はない。
% catman /usr/share/man/man1
/usr/share/man/man1以下のマニュアルを整形する。
(コマンド man,jcatman)

cc Cコンパイラ

FreeBSDでは標準のCコンパイラがgccになっている。またそれ以外のUNIXで、基本的なオプションは ほぼgccと共通なので、詳しい説明はgccの項で行う。
(コマンド gcc,lint)

cd カレントディレクトリを変更する。

移動したいディレクトリを引数で指定する。引数なしで起動するとホームディレクトリに移動する。
% pwd
/home/hogehoge
% cd lib
% pwd
/home/hogehoge/lib
% cd /usr/local
% pwd
/usr/local
% cd
% pwd
/home/hogehoge
% cd ..
/home
(コマンド chdir,pwd)

cda CDプレイヤー

(コマンド cdcontrol,xmcd,cdplay)

cdcontrol CDプレイヤー

-f dev CDのデバイス名を指定する。デバイス名はwcd0、cd0、mcd0など。
デバイス名がwcd0の場合、-f /dev/wcd0でも-f wcd0でもよい。
% chmod 666 /dev/wcd0
が必要かも。環境変数DISCにCDのデバイス名を指定しておくと、-fでいちいちデバイス名を指定する必要がなくなる。
命令
play トラック (トラックを省略するとトラック1から演奏する)
pause 演奏を中断する
stop 演奏を停止する
resume 演奏を再開する
info CDの演奏時間などの情報を表示
volume [0-255] [0-255] 左右のボリュームを設定。ボリュームは0-255で指定
volume mute ボリュームを0にする
volume mono モノラルで出力
volume stereo ステレオで出力
volume left 左チャンネルだけ出力
volume right 右チャンネルだけ出力
eject CDをイジェクトする
引数で命令を書いてもいいし(cdcontrol play 4など)、引数なしで起動すると対話モードに入るので、そこで命令を書いてもいい。
(コマンド cda,cdplayer,workman,xmcd,cdplay,tosha)

cdplay CDプレイヤー

% cdplay デバイス名
で起動する。
(コマンド cda,cdplayer,workman,xmcd,cdcontrol)

cdplayer CDプレイヤー

(コマンド cda,cdplay,cdcontrol,xmcd,workman)

cflow Cのソースを解析して、どの関数内からどの関数を読んでいるか表示する。

chdir カレントディレクトリを変更する。cdと同じ

(コマンド cd)

chflags ファイルのフラグを変更する

BSD系にはパーミッションとは別にファイルフラグという仕組みがあり、変更禁止、追加禁止などの設定をすることができる。
arch アーカイブフラグ
dump ダンプフラグ
sappnd システムの追加専用フラグ
schg システムの変更禁止フラグ
uappnd ユーザの追加専用フラグ
uchg ユーザの変更禁止フラグ
また、これらの先頭にnoをつけるとフラグを消す意味がある

ファイルを変更禁止にするには
% chflags uchg file
元に戻すには
% chflags nouchg file
とする。例えばFreeBSDでは /kernel はchflags schg /kernelとされているので、mvやrmする際は
% chflags noschg /kernel
% rm /kernel
などと、一旦フラグをOFFにしなければならない

なお、ファイルフラグは4.4BSDから追加された。おそらくファイルフラグを実装しているのはFreeBSD、NetBSD、OpenBSD、BSDIのみだろうと思われる。
(コマンド ls)

chgrp ファイルの属するグループを変更する

% chgrp group file
ファイルfileのグループをgroupに変更する
詳しい説明は chown で。
(コマンド chown)

chmod ファイル・ディレクトリの属性を変更する。

全てのファイル・ディレクトリにはパーミッションという属性があり、現在のパーミッションは ls -l で調べることができる。
% ls -l sample.dat
-rwxr-xr-- 1 user group 402 May 26 1997 sample.dat
の「rwxr-xr--」がパーミッションである(その前の「-」はファイルタイプ。とりあえずは無視)。

読み方は、まずパーミッションの表示を3文字ごとに区切って、「rwx」「r-x」「r--」とする。
1番目のセクション(rwx)はファイル所有者(この場合はuser)にとってのパーミッション
2番目のセクション(r-x)はファイル所有グループ(この場合はgroup)にとってのパーミッション
3番目のセクション(r--)はそれ以外のユーザにとってのパーミッション
となる。「r」は読み込み可能、「w」は書き込み可能属性、「x」は実行可能属性を意味する。

つまり
-rwxr-xr-- 1 user group 402 May 26 1997 sample.dat
は、
ユーザuserは、sample.datを読めるし、書き込めるし、実行できる
グループgroupに属するユーザは、sample.datを読めるし、実行できるが、書き込みはできない
その他のユーザは、sample.datを読めるが、書き込みと実行はできない
ということを意味する。

chmodはこのパーミッションを変更するコマンドだが、そのファイルの所有者しかパーミッションを変更できない。

パーミッションの指定方法には絶対方式と相対方式がある。絶対方式は8進数の数字によって指定する。そのファイル・ディレクトリに持たせたい属性を足し合わせればよい。
0400 所有者が読み込める
0200 所有者が書き込める
0100 所有者が実行できる
0040 groupに属するユーザが読み込める
0020 groupに属するユーザが書き込める
0010 groupに属するユーザが実行できる
0004 その他のユーザが読み込める
0002 その他のユーザが書き込める
0001 その他のユーザが実行できる
また、この他に
4000 user s-bit を立てる
2000 group s-bitを立てる
1000 sticky bit を立てる(現在ではあまり有効ではないらしい)
というものがあるが、説明は省略。

ファイルsample.datを所有者だけが読み込み・書き込みできるようにするには 0400+0200+01000=0700 で、
% chmod 0700 sample.dat
ファイルsampleを所有者が読み込み・書き込み・実行できて、groupに属するユーザとその他のユーザは読み込み・実行のみできるようにするには、0400+0200+0100+0040+0010+0004+0001=0755で
% chmod 0755 sample
とすればよい。

一方、相対方式は、
u,g,o,a 所有者・グループに属するユーザ・その他のユーザ、全員
r,w,x 読み込み属性・書き込み属性・実行属性
+/- 属性をONにする/OFFにする
を使う。これは現在のパーミッションの一部だけを変更する際に便利。
% chmod +x file
fileの実行属性をONにする
% chmod go-w file
fileのグループとその他のユーザの書き込み属性をOFFにする
% chmod a-x file
fileの全員の実行属性をOFFにする(chmod ugo-x fileと同じ)

-RH シンボリックリンクのリンク先のファイルの属性を変更する
(コマンド ls,chown,chgrp,umask)

chown ファイルの所有者、所有グループを変更する

所有者を変更できるのはrootのみだが、グループは誰でも変更できる。
% chown user file
ファイルfileの所有者をユーザuserに変更する
% chown user:group file
ファイルfileの所有者/グループをuser/groupに変更する
% chown :group file
ファイルfileのグループをgroupに変更する

自分がどのグループに属しているかは、idコマンドでわかる。
% id
uid=1001(hoge) gid=1001(hoge) groups=1001(hoge), 0(wheel), 5(operator)
のとき、
% touch sample
とすると、
% ls -l sample
-rw-r--r-- 1 hoge hoge 0 Feb 1 13:47 sample
となる。このとき、
% chown :グループ名 sample
で sampleの所有グループを変更できるが、このときグループ名として指定できるのはhoge、wheel、operatorである。
(コマンド chgrp,chmod,id)

chpass ユーザの個人情報(シェル、リアルネームなど)を変更する。

環境変数EDITORに設定されているエディタで/etc/master.passwdを元にしたファイルを編集する

chsh ログインシェルを変更する

chshを起動すると、環境変数EDITORに指定されているエディタが起動されるので、
Shell: ...
という項目を書き換えてエディタを終了すればよい。tcshにしたいなら
Shell: /usr/local/bin/tcsh
とする。ログインシェルとして指定できるのは /etc/shells の中に書かれているものだけである。
(コマンド passwd,vipw)
(環境変数 EDITOR)
(設定ファイル /etc/shells)

cjpeg 画像ファイルをjpeg形式に変換する

(コマンド xv)

cksum ファイルのチェックサムを表示する

-o デフォルトのアルゴリズムではなく、古いアルゴリズムを使う
% cksum sample
123456789 10000 sample
チェックサムは123456789、ファイルサイズは10000、ファイル名はsample
現在はmd5を使う方がいいかもしれない。
(コマンド md5)

clear 画面の消去

clearはシェルスクリプトで、内容は
#!/bin/sh -
exec tput clear
となっている。

clock 時計。Xアプリケーション

(コマンド dclocl,oclock)

cmp 2つのファイルの比較。最初に違いが見つかった行番号と文字数を表示する。

cmpはあまり多機能ではないので、2つのファイルが違うものかどうかを知りたいときだけ使うといいだろう。
(コマンド comm,diff)

coco コード変換、コード判定を行う(パイプ)。muleのパッケージに含まれている

-l 対応しているコードの一覧を表示
-q 指定ファイルの中で使われているコードの種類を判定する
% cat sample.euc | coco -q
In (*euc-japan*unix): 4923 bytes
(コマンド nkf,qkc)

col フィルタ

オンラインマニュアルをテキストに整形できる。
% man ls | col -bfx > file
lsのオンラインマニュアルをプレインテキストに変換してfileに書き込む。
(コマンド man)

comm 2つのファイルの違いの表示。ファイル名に-を指定すると標準入力から読み込む。

(コマンド cmp,diff)

complete tcsh内部コマンド。コマンドの引数の補完の設定をする。

キータイプを減らすためには非常に有効な設定。書式は complete '補完の種類/補完する回数/補完の内容/'
●補完する場所
n 指定された引数がタイプされた場合、その次の引数を補完する
p 現在カーソルがある場所を補完する。
●補完する回数
1 1回
* 無制限
●補完の内容
a エイリアス
c コマンド
d ディレクトリ
e 環境変数
f ファイル名
g グループ名
j ジョブ
l リミット
s シェル変数
u ユーザ名
: より詳しく指定する

% complete alias 'p/1/a/'
エイリアスのみ補完候補に上げる
% complete set 'p/1/s/'
シェル変数のみ
% complete setenv 'p/1/e/'
環境変数のみ
% complete man 'p/*/c/'
コマンドのみ(無制限)
% complete xdvi 'p/1/f:*.dvi/'
拡張子がdviであるファイルのみ
(コマンド uncomplete)

compress ファイルを圧縮する。

圧縮ファイル名は元ファイル名の最後に.Zを付けたもの。圧縮率はgzipの方が高い。
-c 圧縮結果を標準出力に書き出す。ファイル操作は行なわれない。
-f 圧縮ファイルが元ファイルより大きくなっても強制的に圧縮ファイルを作る
-v 圧縮率を表示
(コマンド uncompress,gzip)

convert 画像ファイルを変換する(ImageMagick)

どのフォーマットに変換するかは、指定した拡張子から自動的に判別してくれる。
% convert sample.gif sample.jpg
GIF形式の sample.gif からJPEG形式の sample.jpg に変換する
adjoin オプションで、動画GIFを生成することができる。
% convert -adjoin image01.gif image02.gif image03.gif sample.gif
image01〜03.gif からなる、動画GIF sample.gif を生成する
その逆はこれ。
% convert +adjoin sample.gif image%02d.gif
動画GIF sample.gif を分割し、image00,01,02...gif という画像ファイルを生成する
(コマンド display,identify,ImageMagick,xv)

cp ファイルをコピーする

% cp sample1.dat sample2.dat
sample1.datをsample2.datにコピー
% cp sample1.dat sample2.dat sample3.dat dir/
sample1.dat、sample2.dat、sample3.datをディレクトリdirにコピー

-i コピー先のファイルが存在する場合、上書きしてよいか確認を求める
-f 上書き確認を行わない。これはデフォルトだが、alias cp cp -iとしている場合に便利
-p タイムスタンプもそのままコピーする
-R ディレクトリを再帰的にコピーする
ディレクトリdir1以下に、ファイルfoo、barがあった場合、
% cp -R dir1 dir2
は、ディレクトリdir2の下にディレクトリdir1をコピーする。つまり
dir2/dir1/foo、dir2/dir1/foo
というファイルが新たに作成される。一方、
% cp -R dir1/ dir2
とすると(`/'を付けると)、dir2の下にdir1以下のファイル/ディレクトリをコピーする。つまり
dir2/foo、dir2/foo
というファイルができる。
(コマンド mv)

cpp Cプリプロセッサ

Cのソースを解析し、#define、#include、#ifdefなどの処理を行う。通常Cコンパイラから自動的に呼ばれる。
(コマンド gcc)

cron スケジューラデーモン

crontabで設定したものを実行するデーモン。起動時に自動的に起動される。
(コマンド crontab)

crontab スケジューラ。決められた時刻にプログラムを実行する。

定期的に実行するコマンドを管理する。日時を指定して、自動的にコマンドを実行することができる。設定方法はFreeBSDなら
% crontab 設定ファイル名
とし、Solarisなら
% echo '分 時間 日 月 曜日 コマンド名'|crontab
% crontab < 設定ファイル名
のどちらでもいい。設定ファイルの中身は
分 時間 日 月 曜日 コマンド名
とする。例えば、
* * * * * command
1分おきにcommandを実行する。
10 3 1 * * command
毎月1日の3時10分にcommandを実行する。
0 12 * * 0 command
毎週日曜日の12時にcommandを実行する。
実行結果はメールで自分自身に知らされる。メールを送ってほしくない場合は、
* * * * * command 1> /dev/null
と標準出力を出力しないようにすればよい。この場合はエラーが起こった時だけ(標準エラー出力に出力があった時だけ)メールが送られてくるので便利である。エラーが起ころうと絶対にメールを送ってほしくない場合は
* * * * * command >/dev/null 2>&1
とすればよい。なお、crontabで実行されるときには、ほとんどの環境変数が指定されていないので注意が必要。基本的にcommandの部分に指定するのはシェルスクリプトにしておいて、シェルスクリプトの先頭で環境変数の設定を行い、その後いろいろなコマンドを実行するようにしておくのがベター。
-l 現在設定されているcrontabデータを表示する
-r 現在設定されているcrontabデータを解除する。
(コマンド at)
(設定ファイル /etc/crontab)

crypt 暗号化・復号化ツール

暗号化キーを与えることで、ファイルを暗号化することができる。もちろん暗号化するときに使ったキーを知らないと復号化できない。
FreeBSDの場合、米国の暗号輸出規制の影響か(どうかはわからないが)、cryptがない。代わりにbdesというツールがある。
(コマンド bdes)

csh Cシェル

C言語のような文法を持つシェル。とはいえC言語ができるからといってすぐ使えるというわけではない。ユーザインターフェイスが弱いので、ログインシェルとしてはtcshがよく使われる。また、スクリプトを
書く際は、csh・tcshの機能が貧弱なことから sh、bash が使われることが多い。
-f ~/.cshrcを読まず高速に起動する。シェルスクリプトの1行目で #!/bin/csh -f というのをよく見るが、その場合エイリアスやシェル変数は使用できない
-n 文法のチェックだけを行なう。シェルスクリプトのチェックに使われる
-s 標準入力からコマンドを読み込む
-v 実行文を表示
-x 実行文を表示
(コマンド bash,sh,tcsh)

ctags 

cu cu -l cuaa0

cut テキストを切り出す(パイプ)

-c[num1]-[num2] num1文字目からnum2文字目までを切り出す
% cut -c30 30文字目を切り出す
% cut -c20-30 20文字目から30文字目までを切り出す
% cut -c-30 行頭から30文字目までを切り出す
% cut -c20- 20文字目以降を切り出す
-d str フィールドを区切る文字として文字列strを使用する。
-f フィールド番号 指定したフィールドを出力する。
(コマンド head,tail)

date 現在の時刻を表示、設定する

-u 国際時間(おそらくグリニッジ標準時間)を表示
コマンドは +のあとに指定する
%y 年
%m 月
%d 日
%h 月(英語表示 Jan,Feb...)
%H 時
%M 分
%S 秒
%n 改行
% date "+%y/%m/%d%n %H:%M:%S"
1997/2/25
06:04:41
日付を設定できるのは root のみ。
% date 9803301445
現在時刻を1998年3月31日14時45分に設定する。
% date 0632
現在時刻を6時32分に設定する。日付は変更しない。
ネットワークを利用して正確な時刻に設定するには ntpdate を使う。
(コマンド ntpdate)

dc 逆ポーランド記法の計算機

計算式を逆ポーランドに変換すると、括弧の優先順位などを気にせず、先頭から順番に処理していくことがでる。逆ポーランドはコンピュータ向けの書き方で、人間が使う場合は、bcなどを使うとよい。
% dc
2 3 + (2+3の結果をスタックにpush)
p (スタックの先頭を表示)
5 (結果は5)
1 2 + 5 3 - * ( (1+2)*(5-3)の結果をスタックをpush)
p (スタックの先頭を表示)
6 (結果は6)
(コマンド bc,calc,xcalc,hexcalc)

dclock デジタル時計。Xアプリケーション

-c 12時間表示
-m 24時間表示
(コマンド clock,oclock,xclock)

decayscreen 画面が溶けていくデモ。スクリーンセーバか?

-root 画面全体を溶かす。
-delay usec 画面を溶かす処理の間にusecのウェイトをいれる。
(単位はマイクロセカンド)

df ディスクの使用状況を表示

ディスクのパーティションごとに、デバイス名、全容量、使用容量、残り容量、使用割合、マウント先を表示する。
-k 512バイト単位ではなく、キロバイトで表示
-i iノードの消費量も表示
dfで表示される使用割合(capacity)は110%が最高となっている。つまり、100%となっていても本当にディスクが一杯になっているわけではない。一般ユーザは100%までしか使えないが、rootだけは110%まで使用することができる。

dga XFree86-DGAのテストプログラム

dialog 画面にダイアログボックスを表示してユーザの入力を待つ

--yesno コメント 縦 横 yes/noを入力させる
--msgbox コメント 縦 横 メッセージを表示する
--prgbox コマンド 縦 横 コマンドの出力を表示
--textbo ファイル名 縦 横 ファイルの内容を表示する

diff ファイルの違いを表示。パッチを作成。

2つのファイルの違いを表示する。
% diff file1 file2
とすると、file1 と file2 の相違点を表示する。ファイル名として - を指定すると標準入力と比較する。例えば
% command | diff - file
はcommandの出力とfileの内容を比較する。また、foo/bar.dat と hoge/bar.dat を比較したい場合のように、ファイル名が同一の場合は、
% diff foo/bar.dat hoge
のように、一方のファイル名は省略できる。
-a テキストファイルとして比較する
-b スペース数の違いを無視する
-B 空行のある・なしの違いを無視する
--brief ファイルが同じかどうかだけを表示する

また、パッチを作成することができる。
(コマンド cmp,comm,diff3,patch)

diff3 3つのファイルの違いを表示

(コマンド diff)

dirname パス名+ファイル名からファイル名を削除する

(コマンド basename)

display 画像を表示・編集する(ImageMagick)

(コマンド convert,identify,ImageMagick,xv)

dmesg システムのメッセージを表示

ブート時のメッセージは一時停止できないので、あとからブート時のメッセージを表示するときにはdmesgを使う。
また、ディスクが一杯でファイルを書き込めなかった、などのエラーメッセージも表示される。しかしrc.localなどで表示されるメッセージは表示されない。

du 指定ディレクトリ以下のディスク使用量を再帰的に表示する

-L シンボリックリンクも計算する
-a 各ファイルごとに使用量を表示する
-d 深さ 指定したディレクトリの深さだけしか表示しない。
-k 単位をKBで表示する
duはデフォルトでは、ブロック単位で値を表示する。一般的なUNIXは1ブロック=512バイトとなっているので、普通に du を実行すると、値は512KB単位になってしまう。1Kバイト単位で表示したい場合は、-k オプションを付ける。また、環境変数 BLOCKSIZE に単位を指定してもよい。
% du … 512バイト単位
% du -k … 1キロバイト単位
% setenv BLOCKSIZE 1024
% du … 1キロバイト単位
% setenv BLOCKSIZE 1048576
% du … 1メガバイト単位
% setenv BLOCKSIZE 1073741824
% du … 1ギガバイト単位
(環境変数 BLOCKSIZE)
-x ファイルのマウントを越えない範囲で計算する
-s 指定ディレクトリのサブディレクトリの使用量を表示しない。
du / だと/usr /bin /etc、さらに/usr/bin /usr/local/binなどの使用量も表示するが、-s を指定すると
% du -s /
/ 6563241
などと1行しか表示されない
% du -s /*
とすると、サブディレクトリを表示せずに / 以下の各ディレクトリのサイズを表示する。
-c 全てのファイル・ディレクトリの容量の合計を表示 (FreeBSD2.2.7以降のみ)
(コマンド xdu)

dvi2tty DVIファイルをコンソールでプレビューする

普通は DVIファイルは xdviでプレビューするが、X環境が必要になる。dvi2ttyは、テキストの出力をするので、コンソール上からでもプレビューできる。ただしその分、文字の大きさや数式などの表示能力は低い。
(コマンド xdvi)

echo 文字列を表示

シェルの内部コマンドのechoと、/bin/echoがある。
-n 改行をしない
(コマンド printf)
(Cシェル変数 echo_style)

elvis 日本語を表示できるvi

(コマンド vi)

emiclock 女の子の着せ替えができる時計

(コマンド dclock,oclock,xclock)

enlightenment グラフィカルなウィンドウマネージャ

あきれるほど高機能。あきれるほどのカスタマイズが可能。その分、あきれるほど重い。ごてごてしたウィンドウマネージャがお好みなら、試してみる価値は十分にある。
(コマンド twm,fvwm,fvwm2,fvwm95-2,afterstep)

env 環境変数をセットしてコマンドを実行

特定のコマンドだけに環境変数を認識させたいときに使う。「-」を付けると、指定したもの以外の環境変数をクリアする。
% env - TEST=sample printenv
TEST=sample
% env LANG=ja_JP.EUC netscape &
(コマンド printenv,setenv)

Eterm 背景に画像を貼れるターミナルソフト

背景に画像を貼ることができる。Enlightenmentと密接に関係しているが、他のウィンドウマネージャからも利用可能。
% Eterm --background-pixmap file
で、fileを背景に貼ることができる。fileは、pixmap、GIF、JPEGなど、ほとんどの画像形式をカバーしている。
その他のほとんどのオプションは、xterm、ktermなどと共通(ktermの項を参照)。

kterm、xtermのように歴史が古いわけではないので、結構不安定。ウィンドウサイズを変更すると簡単に落ちてくれる。日本語の表示、kinput2からの入力もできるらしいが、こちらの環境では成功していない。
(コマンド enlightenment,kterm,xterm)

exit シェルを終了する

expand ファイル中のタブをスペースに変換する(パイプ)

fold や TeX の文章中などは、タブを認識してくれないので、事前にタブをスペースに変換しておく必要がある。expand コマンドの代わりに、emacs や mule の M-x untabify を使ってもいい。
(コマンド unexpand)

f77 Fortranコンパイラ

factor 数字が素数かどうか調べる

/usr/games/にインストールされるので注意。
(コマンド primes)

fd ファイル・ディレクトリ管理ツール

fdformat フロッピーをフォーマットする

fetch ダウンローダー

(コマンド ftp,ncftp,httpdown)

fg 指定したジョブをフォアグラウンドで実行する。ジョブ番号を指定しないとカレントジョブが操作対象になる

muleを実行中に一時的に他の事をしたいとき、いちいち終了するのは面倒なので(muleの起動が遅いから)、ctrl-Zで中断して別の事をやり、その後fgでmuleの処理を行う、というふうにすると便利。
(コマンド bg,jobs)

file 指定されたファイルを解析して、ファイルの種類を表示する。

-z 指定ファイルが圧縮ファイルの場合、解凍して解析する。
-L シンボリックリンクの先のファイルを解析する
認識できるファイルの一例をあげると、
スクリプト
awk sed B-shell C-shell perl
ソース
アセンブラ C LISP Pl/1
実行ファイル
DOS FreeBSD/i386 NetBSD/i386 PDP-11
ファイルシステム
ソケット ディレクトリ シンボリックリンク ブロックデバイス
その他
アスキーテキスト 英文 ポストスクリプト TeXDVI 音声 画像 圧縮ファイル news mail make nroff troff アーカイブSGML METAFONT PGMファイル TIFF emacsバイトコンパイル ハッシュテーブル
ファイルの一部を解析するため、間違えることも多く、xpmはCのソース、HTMLは英文やCのソースと認識してしまう
また、コアダンプしたもののプログラム名も知ることができる
% file core (/bin/catをコアダンプしたもの)
core: i386 a.out core file from "cat"

file2c 標準入力から読み込んで、文字列をASCIIコードに変換する。

% echo abc|file2c
97,98,99,10
% echo abc|file2c 'char buf[]={' '};'
char buf[]={
97,98,99,10
};

find ファイルを検索する。

基本的には「find 検索開始ディレクトリ 検索条件 コマンド」という書式で使う。
●検索条件
-name file 検索するファイルを指定
-atime [+-]date date日にアクセスされたファイル
-atime 4 4日前にアクセスされたファイル
-atime +4 5日以前にアクセスされたファイル
-ctime [+-]date date日に修正されたファイル
-ctime -4 3日以内に修正されたファイル
-group グループ名 指定のグループに属するファイル
-type * ファイルの種類
b ブロックデバイス
c キャラクタデバイス
d ディレクトリ
f ファイル
l シンボリックファイル
p 名前付きパイプ
s ソケット
-and 検索条件をANDで結ぶ。
% find .-name abc -and -type d
abcというディレクトリを検索
-or 検索条件をORで結ぶ
% find .-name abc -and -type d
abcというファイル・ディレクトリか、あるいはディレクトリを検索
●コマンド
-print 検索ファイルを表示
-ls 検索ファイルを詳しく(ls -lと同じように)表示
-exec 検索ファイルを引数としてコマンドを実行
-ok -execと同じだが、実行する際に確認を求める

% find / -name .cshrc -print
ルートディレクトリ以下の.cshrcを検索してフルパスを表示する
% find /usr/local -name 'mule*' -ls
/usr/local以下のmule*を検索して詳細な情報を表示する
% find . -name '*~' -exec rm {} \;
カレントディレクトリ以下の *~ をリストアップして「rm 検索したファイル名」を実行する。{}の場所には検索したファイル名が入る。;はコマンドの終了を表すが、シェルに;を解釈させず、findへ;を渡すためにエスケープしてある。また、{} と \ の間にはスペースを空けなくてはならない。
% find . -name '*~' -print -exec rm {} \;
コマンドは複数個指定できる。
% find . -name '*~' -exec ls {} \; -exec rm {} \;
(この例はあまり意味はないが)-execを複数個指定してもよい。

他ユーザのディレクトリから検索する場合、読み込み権限のないディレクトリはpermission deniedと表示され、出力が見にくくなる。csh・tcsh系なら
% (find / -name 'fvwm*' -print >/dev/tty ) >& /dev/null
とすることで、標準エラー出力のみを捨てることができる。sh・bash系なら
% find / -name 'fvwm*' -print 2>/dev/null
とすればよい。
(コマンド locate)

finger 現在ログインしているユーザ名を表示。ユーザの個人情報を表示

引数なしで起動すると現在ログインしているユーザ名を表示する。ユーザ名を指定すると、そのユーザの個人情報を表示する。
% finger username
ローカルホストのユーザusernameについての情報を表示
% finger -l username
ローカルホストのユーザusernameについての詳細な情報を表示
% finger username@anotherhost
anotherhostのユーザusernameについての情報を表示。この場合、anotherhostにfingerデーモンが
動いている必要がある。

GNU fingerdを使っている場合、ホームディレクトリに.nofingerというファイルを作っておくと、そのユーザは存在しないように扱われる。
(設定ファイル ~/.nofinger,~/.plan,~/.project,users,who)

flame フラクタル画像を描く

(コマンド xscreensaver)

flex 字句解析パーサ生成プログラム

lexの上位互換プログラム。GNUが作成・配布している。
(コマンド lex,yacc,bison)

fold テキストを一定幅に整形する(パイプ)

指定した文字数より長い行を切り詰める。
% ls -l | fold -w 40
1行を40文字に整形
fold はタブを認識しないので、タブを含むテキストは expand で前処理する必要がある。また、FreeBSD(FreeBSD2.2.6で確認) の /usr/bin/fold は日本語をうまく扱えなかったので、日本語を含む文章は nkf の -f オプションを使うとよい。
(コマンド cut,expand,nkf)

from 到着したメールと、送り主を表示

-f メールボックスを指定する。デフォルトは/var/mail/*
(コマンド mail,xbiff,xpbiff)

fsck ファイルシステムの矛盾の検出・修復

ファイルシステムをアンマウントせずにshutdownした場合、次回起動時に自動的に実行される。たまに自動修復に失敗するが、手動でfsckを実行すれば大抵の場合はうまくいく。

fsckの実行の際には多くの質問をしてくるが、UNIXに精通していないと質問の意味が理解にしくいので、その場合 fsck -y で実行すると、全ての質問に yes と答えたことになる。

ftp ファイル転送ユーティリティ

anonymous FTPサイトからファイルをダウンロードする場合は、ユーザ名に「anonymous」か「ftp」、パスワードに自分のメールアドレスを指定する。たまに「ftp」ではダメで、「anonymous」と入力しなければならないFTPサーバもある。

ftp://ftp.hoge.com/pub/sample/test.tgzをダウンロードする場合
% ftp
ftp> open ftp.hoge.com(FTPサイトを指定)
Connected to ftp.hoge.com
220 ftp.hoge.com FTP server (UNIX(r) System V Release 4.0) ready
User (ftp.hoge.com:(none)) : ftp(あるいはanonymous)
331 Password required for ftp
Password: 自分のメールアドレス(適当に入力しても問題ないが、マナーとしてメールアドレスを入力する)
230 User ftp logged in
ftp> cd pub/sample
ftp> get test.tgz
ftp> bye(FTP終了)

主要コマンド一覧
ascii テキストモードで転送。改行コードをUNIX風に変換する
binary バイナリモードで転送。扱うファイルがテキスト以外ならこれが必要
open リモートホストに接続
ls ファイル/ディレクトリ一覧を表示
cd リモートホストのカレントディレクトリを変更
lcd ローカルホストのカレントディレクトリを変更
pwd リモートホストのカレントディレクトリを表示
bye ftpを終了
get ファイルをリモートホストからローカルホストに転送する
put ファイルをローカルホストからリモートホストに転送する
mget 複数ファイルをget(メタキャラクタ使用可)
mput 複数ファイルをput(メタキャラクタ使用可)
glob mget,mput使用時にメタキャラクタを展開する/展開しない(トグル)
hash ファイルの転送状況を表示/非表示(トグル)。1024byteごとに#を表示
prompt mget,mput使用時に各ファイルを転送するかどうかについて、ユーザの許可を求める/求めない(トグル)
status 現在の設定を表示(promptなど)
!command ローカルホストでコマンドを実行
主要オプション一覧
-n コマンドを標準入力から読む。例えば ftpcommand.dat というファイルに
open ftp.hogehoge.ac.jp
user username passwd
binary
cd lib
lcd lib
get sample
put test
bye
などと書いておき、
% ftp -n < ftpcommand.dat
とすると、自動的にファイルのやりとりが行われる。もちろんプレインテキストにパスワードを書いておくことになるので、chmod 600としておくとよい。ほかにも自動でftpするには ~/.netrcに記述しておく方法があるらしいが、よく知らない。
(コマンド fetch,httpdown,ncftp,rcp,xarchie,xftp)

fvwm 複数の仮想画面を持つウィンドウマネージャ

ウィンドウマネージャの役割は各ウィンドウを管理することである。ウィンドウには枠やタイトルがあり、マウスをクリックすることでそのウィンドウがアクティブになったり、ウィンドウの移動ができる。ルートウィンドウ(背景)でマウスをクリックするとメニューが表示される。これらの機能はすべてウィンドウマネージャのおかげで実現されている。
ためしに、~/.xsessionのfvwm(あるいはtwm)という行をコメントアウトして、最後の行にktermとだけ書いてみると、ウィンドウの枠やタイトルがなくなり、移動やリサイズができなくなる。メニューもでなくなる。終了するには最後に起動したktermでexitとしなければならない。
設定ファイルは~/.fvwmrc。
(コマンド afterstep,twm,fvwm2,fvwm95-2,enlightenment)

fvwm2 fvwmのバージョン2。

設定ファイルは~/.fvwm2rc。.fvwmrcとの互換性はないので注意。fvwmに比べてメモリを食うが、実装の仕方がきれいになった(らしい)。
システム付属の設定を使うには、
% cp /usr/X11R6/lib/X11/fvwm/system.fvwmrc ~/.fvwmrc
として、~/.xsession(あるいは.xinitrc)の最後に exec fvwmと書けばよい
(コマンド afterstep,twm,fvwm,fvwm95-2,enlightenment)

fvwm95-2 Window95風のウィンドウマネージャ。

システム付属の設定を使うには、
% cp /usr/X11R6/lib/X11/fvwm95-2/system.fvwmrc ~/.fvwm2rc95
として、~/.xsession(あるいは.xinitrc)の最後に exec fvwm95-2と書けばよい。
(コマンド afterstep,twm,fvwm,fvwm2,enlightenment)

gas GNUアセンブラ

FreeBSDの場合は、システム標準のアセンブラasがgasになっている。
(コマンド as)

gawk GNU awk。日本語も扱える。

(コマンド awk)

gcc GNU Cコンパイラ

FreeBSD、Linuxなどは標準のCコンパイラがgccになっている。

-E プリプロセス後終了。コンパイルをしない
-g バイナリにシンボルテーブルを付属させる。デバッガを使う場合はシンボルテーブルが必要になるので、-gオプションを付ける。バイナリからシンボルテーブルを削除するには strip を使う。
(コマンド nm,strip)
-S コンパイル後終了。アセンブルをしない
-c リンクを実行しない。*.oというオブジェクトファイルを生成した時点でストップする。
-o 生成する実行ファイル名を指定。-oを指定しないとa.outが生成される。
% cc -o bar foo.c
とすると生成されるバイナリは barとなる。
% cc foo.c
とするとa.outが生成される。
-v バーボーズモード。
マクロ、インクルードパス、プリプロセッサ、アセンブラ、リンカに渡すオプションを全て表示する。
-pipe テンポラリファイルを作らず、パイプで処理する。
コンパイルにかかる時間が短縮されるが、より多量のメモリが必要。
-ansi ANSI Cに準拠する。
よってGNU C独自の拡張機能、asm、inline、typeofが使えなくなる。
-trigraphs ANSI Cのトライグラフを認識する
-traditional 伝統的なCの文法を認識する
-w ワーニングを表示しない
-W... 各種のワーニングを表示するかどうか設定する
-Wall -Wスイッチで指定できる全てのワーニングを表示する
-O 最適化したコードを生成する。
実行速度が速くなったり、バイナリのサイズを減らすことができる。-O2 -O3などと最適化の段階を指定することができる。数字が大きいほど賢い最適化を行う。最適化を行うとコンパイルに時間がかかるので、デバッグ終了後に行うとよい。
-I インクルードファイルのパスを指定
インクルードファイルを取り込む場合は、ソースの中に
#include <stdio.h>
#include <sys/stat.h>
#include <X11/Xutil.h>
など書く。インクルードファイルが /usr/include/ 以下にあるなら、-I オプションを指定しなくても
/usr/include/stdio.h、/usr/include/sys/stat.h
がインクルードされる。しかし、X11/Xutil.h は、/usr/X11R6/include/X11/Xutil.h なので、
-I/usr/X11R6/include
としなければならない。
-l ライブラリを指定
例・-lm -lnsl -lX11
例えば、ソース中で sin() を使った場合、sin() のライブラリを指定しないとリンク時にエラーとなる。sin() のライブラリは /usr/lib/libm.a なので、「libm.a」から「lib」と「.a」を取り除いて「-lm」と指定する。/usr/lib/libtermcap.a をリンクしたい場合は -ltermcapとすればよい。
printf、strlen などの基本的な関数は、全て /usr/lib/libc.a というライブラリに含まれているが、libc.a は標準でリンクされるので -lc と指定する必要はない。
-L ライブラリのパスを指定
例・-L/usr/X11R6/lib
上で説明したライブラリのあるディレクトリにパスが通っていなかった場合、そのディレクトリを-Lオプションで指定する。例えば X11関係の関数を使用した場合、/usr/X11R6/lib/libX11.aをリンクする必要があるので-lX11とする、しかし標準設定では /usr/X11R6/libがライブラリの検索対象となっていないので、-L/usr/X11R6/lib とする必要がある。
(コマンド cc,cpp)

gcore 実行中のプロセスのコアを得る

getopt 

gimp GNUが作成したグラフィックツール

(コマンド xpaint)

gmake GNU make。

makeの発展版。Makefile中での条件分岐などが記述できるようになっている。makeに失敗した場合は、gmakeを使うとうまくいく場合が多い。
(コマンド make)

gnuplot グラフ描画プログラム

2次元・3次元に対応したグラフ描画プログラム。

grdc コンソールに時計を表示

n(数字) n秒間だけ時計を表示する

grep 指定のパターンにマッチする行を表示(パイプ)

あるファイルの中に、指定の文字列を含む行を表示する。例えば、sample.datの中の「hoge」という文字列を含む行を表示したい場合、
% grep hoge sample.dat
とする。また、
% grep hoge file1 file2 file3
% grep hoge dir/*
などとすると、複数のファイルについて調べることができる。

検索したい文字列には正規表現を使うことができる。例えば
% grep '[a-z]' sample.dat
とすると、a〜zを含む行を全て表示する。ただし、grepはデフォルトでは限定正規表現しか扱えないことに注意 (-Eオプションを参照)。

FreeBSD や Linux は高機能版の grep (GNU grep)を標準採用しているが、Solaris などはデフォルトの grep は低機能版で、-eオプションや -Eオプションを使うことができない。Solaris の場合、/usr/xpg4/bin/grep が高機能版の grep となっている。

-num マッチした文字列の前後 num 行を表示する。デフォルトは-0
-A num マッチした文字列の後に続く num 行を表示する
-B num マッチした文字列の前の num 行を表示する
-b マッチした文字列のオフセットを表示
-C -2と同じ
-c テキスト中に文字列が出現した回数を表示。
-e 明示的にパターンを指定する。複数個のパターンを指定するときに使う
「rwx」と「r-x」を含む行を索しようとして、
% ls | grep 'rwx' 'r-x'
とすると、grep は 「r-x」というファイルを見付けようとしてエラーになってしまう。こういう場合は
% ls | grep -e 'rwx' -e 'r-x'
とすればよい。低機能版の grep には -e オプションは効かないので注意。
-E 拡張正規表現を使う。
デフォルトでは 「?+|{}()」などは普通の文字として扱われてしまうので、「foo」と「bar」を含む行を表示しようとして、
% grep 'foo|bar' sample.txt
としても、'foo\|bar' と認識されてしまう。
% grep -E 'foo|bar' sample.txt
だと拡張正規表現として扱われるので、うまくいく。低機能版の grep には -E オプションは効かないので注意。
-f file file中の文字列を検索パターンとして使う。
-i 大文字小文字を区別しない。
-l 指定文字列を含むファイル名を表示。
-L 指定文字列を含まないファイル名を表示。
-n マッチした文字列の行番号を表示する。
-s エラーメッセージを抑制する(ファイルに対しての permission denied など)
-w ファイル中の指定文字列が独立している場合だけマッチしたものとみなす。
% cat test
sample // 独立した文字列ではないのでマッチしない
samp // 記号や空白でかこまれた文字列はマッチする
samp2 // 数字は記号とみなされない
,samp-
(samp&
samp/
% grep -w samp test
samp
,samp-
(samp&
samp/
-x 指定文字列がそのまま1行にあるものだけマッチしたものとみなす
(コマンド fgrep,egrep,sed,tr)
(参考書籍 sed&awkプログラミング)

greynetic 長方形をランダムに描く

(コマンド xscreensaaver)

gs ポストスクリプト形式のファイルを表示する

-g数字x数字 ウィンドウのサイズ。例・-g30x30

gunzip 圧縮されたファイルを展開する。

gzip -d と同じ。
(コマンド gzip,zcat)

gzcat 圧縮されたファイルの内容を解凍せずに表示。実行ファイルはgzipと同じ。

gzip -dc と同じ。また実行ファイルはzcatとも同じである。
(コマンド gzip,zcat,gunzip)

gzexe 実行ファイルを圧縮して、自己解凍型の実行ファイルを作る。

-d 自己解凍型の実行ファイルを解凍する

gzip 高機能なファイル圧縮・展開ツール。

compressより圧縮率が高く、ファイルの末尾が.gz、.z、.tgz、.taz、.tar.gz、.tar.Zのファイルを扱える。オプションなしで起動されると圧縮(.gzをつける)する。
-c 圧縮・解凍の結果を標準出力に書き出す。ファイルへの書き込みは行なわない
-d 解凍する
-l 圧縮ファイルの内容を表示
-n ファイル名とタイムスタンプを保存する
-r ディレクトリを再帰的に扱う
-v バーボーズモード
-1 圧縮にかかる時間を短くする
-9 圧縮率の高い圧縮方法を使う
gunzip、gzip、zcatとも内容は同じだが、どの名前で起動されたかによって解凍、圧縮、表示と動作を変える。どの名前で起動してもオプションを明示的に指定することで、全ての機能を実行できる。
(コマンド compress,gunzip,zcat)

halo 画面にサークルを描く

(コマンド xscreensaver)

halt シャットダウン

(コマンド shutdown,reboot)

hd ダンプ

ファイルの内容をダンプする。バイナリはhexdumpと同じ。DOSのdumpと似たような表示をする。
(コマンド hexdump,od,beav)

head ファイルの先頭部分を表示(パイプ)

-n count ファイルの先頭のcount行を表示(デフォルトは10)
% cat sample
aaa
bbb
ccc
% cat sample | head -n 2
aaa
bbb
(コマンド cut,tail)

helix らせん模様を描く

(コマンド xscreensaver)

hexcalc 2進、8進、10進、16進数の計算ができる電卓

(コマンド bc,calc,dc,xcalc)

hexdump ダンプ

-b 1バイトごとに8進数で表示
-c 1バイトことにキャラクタで表示
-d 2バイトごとに10進数で表示
-o 2バイトごとに8進数で表示
-s n ダンプを開始するオフセットを指定する
(コマンド beav,hd,od)

history 過去にタイプしたコマンドを表示する。csh・tcsh内部コマンド。

数字を指定すると、現在からさかのぼってその数だけのヒストリを表示する。

hopalong フラクタル画像を描く

(コマンド xscreensaver)

host 

hostname ホスト名を表示

一般ユーザはホスト名を表示することしかできないが、rootだけは
# hostname ホスト名
とすることで、ホスト名を変更することができる。FreeBSDでは /etc/rc.conf の中の
hostname = "ホスト名"
の部分を変更することで、ホスト名を設定できる。
(設定ファイル /etc/rc.conf)

httpd WWWサーバ

慣例として、多くのWWWサーバの実行ファイル名はhttpdとなっている。
(コマンド apache)

httpdown 自動的にHTTPサーバ、FTPサーバからファイルをダウンロードする。

指定のURLから再帰的にファイルをダウンロードできる。正規表現によってダウンロードするファイル名を指定できる。また、何段階リンクをたどるかも指定できる。ただしリンク名の自動張り変えは(少なくとも現在は)できない。
入手先はhttp://www.mechatronics.mech.tohoku.ac.jp/~kumagai/bins/kuma/httpdown30.htmlで、日本語のマニュアルがある。
まず設定ファイルを書く必要がある。
% cat httpdown.cnf
level 5
start http://www.foo.com/bar/baz.html
allow http://www.foo.com/bar/
allow !*.gif
httpproxy http://proxy.hoge.ac.jp:8080/
この例は
http://www.foo.com/bar/baz.html を始点にリンクを5段階たどって、http://www.foo.com/bar/ 以下のコンテンツをダウンロードするが、拡張子が .gif であるものはダウンロードしない。また、Proxyとして http://proxy.hoge.ac.jp:8080/ を使用する。
という意味。
% httpdown httpdown.cnf
とすることで実行できる。

hypercube 4次元物体を2次元で表示

id ユーザのUID、GID、グループ名を表示

ユーザのUID、GID、所属しているグループ名を表示する。
% id
uid=1001(foo) gid=1001(foo) groups=1001(foo), 0(wheel), 5(operator)
この場合、ユーザfooのUIDは1001、GIDは1001であり、foo、wheel、opratorの3つのグループに属している。
(コマンド chgrp,vipw,whoami,/etc/group)

identify 指定した画像ファイルのフォーマット・サイズなど調べる(ImageMagick)

(コマンド convert,display,ImageMagick,xv)

ifconfig ネットワークの設定を行う

ImageMagick グラフィックユーティリティ

ImageMagickというのはパッケージ名で、display、convert、identify、importなどの各プログラムから構成されている。画像表示、フォーマット変換、各種画像操作などが行える。
(コマンド display,convert,identify,import,xv,netpbm)

import ウィンドウの画像をダンプする

importを実行した後、マウスでダンプしたいウィンドウを選択すると、magick.psというファイルにPostScript形式で画像が保存される。

-window ウィンドウID
ダンプするウィンドウIDを指定する。rootを指定するとルートウィンドウ(画面全体)をダンプする。
(コマンド xwininfo)
-frame ウィンドウマネージャがつけるウィンドウ枠も保存する。
-monochrome 白黒画像で保存

% import -window 0x10000d window.jpg
ウィンドウIDが0x10000dのウィンドウを(JPEG形式で)window.jpgに保存する。
(コマンド xwd,display,ImageMagick)

imsmap フラクタル画像を描く

(コマンド xscrennsaver)

indent Cのソースを整形する(パイプ)

% indent foo.c で foo.c を直接書き換える。foo.cはfoo.c.BAKというファイル名に置き換えられる。
% indent foo.c bar.c で foo.c を整形したものをbar.cに書き込む。foo.c は変化しない。
-br if (...){
...
} という形にする
-i数字 インデントあたりのスペースの数。デフォルトは4。
-pcs 関数の`('前にスペースを入れる。 int foo (); などとする
-sc コメントを
/*
* ......
*/
とする。
-nsc /*
......
*/
とする。

inetd portを見張り、クライアントからのリクエストがあるとサーバソフトを起動する。

一口でサーバといっても、ftpサーバ、rshサーバ、rloginサーバ、rcpサーバ、WWWサーバ、telnetサーバ、SMTPサーバ、fingerサーバ、pop3サーバなどいろいろある。これらのサーバプログラムをホストに常時実行させておくと、メモリは喰うし負荷はかかるしであまりいいことはない。そこでinetdはクライアントからの要求を見張り、そのクライアントに対応する要求があった時点で初めてサーバプログラムを起動する。
普通、inetdはブート時に自動的に起動される。
(設定ファイル /etc/inetd.conf)

jcatman 日本語マニュアル対応のcatman

日本語マニュアルを catmanで整形すると日本語部分が化けてしまう。この場合は jcatman を使えばよい。
% jcatman /usr/local/man/ja_JP.EUC/man1
/usr/local/man/ja_JP.EUC/man1以下のマニュアルを整形する。
(コマンド catman)

jlatex TeXコンパイラ

TeXのソースをエディタで作成し
% jlatex sample.tex
とすると sample.dvi ができる。
% xdvi sample.dvi
とすることで印刷時の仕上りを見ることができる。
(コマンド xdvi)

jless 日本語を表示できるless

setenv LANG japanese、setenv LANG ja_JP.EUC、setenv LANG ja_JP.JIS、setenv LANG ja_JP.SJIS、setenv LESSCHARSET japanese、setenv LESSCHARSET ja_JP.EUCなどとすれば日本語が表示できる。
(コマンド less)

jnethack ローグ風のゲーム(日本語版)

テキスト表示のダンジョン探検ゲーム

jobs 実行中のジョブを表示

% more sample.dat
^Z(ctrl-z・moreを中断)
% jobs
[1] + Suspended more sample.dat
% mule test.c
^Z(muleを中断)
% jobs
[1] - Suspended more sample.dat
[2] + Suspended mule test.c
% kill %2
[2] Terminated mule test.c
% fg %1
(moreの処理に戻る)

(コマンド fg,bg,kill)

jot 連続・ランダムデータを生成

% jot 200
1〜200までの連続した数字列を生成する
-r ランダムな1〜100の数字列を生成する
% jot -r 500
1〜100のランダムな数字を500個生成する

kakasi 漢字をひらがな・カタカナ・ローマ字に変換

% echo '漢字を平仮名に' | kakasi -JH
かんじをひらがなに
% echo '漢字をカタカナに' | kakasi -JK
カンジをヒラガナに
% echo '全てをローマ字に' | kakasi -Ha -Ka -Ja -Ea -ka
subetewohiraganani

kbdcontrol キーボードタイプを決める

コンソールでのキーボードのタイプを決める。X上ではこの設定は関係ない。普通は /etc/rc.confに書いた定義を元に、ブート時に /etc/rc.local でキーボードタイプがセットされる。手動で設定したい場合は
% kbdcontrol -l /usr/share/sysconf/keymaps/jp.106x
などとする。
(設定ファイル /etc/rc.conf,/usr/share/sysconf/keymaps/*)

kcon キーボードのコントロールとマッピング

kon コンソールで日本語を表示する

普通はX window system上でないと日本語を表示することはできないが、konを使うとX window systemなしで日本語を表示することができる。

kill プロセス・ジョブを殺す

プログラムを実行していて、入力を受け付けなくなり、C-cでも終了しなくなった場合、killでシグナルを送って停止させる。まず、psコマンドで殺したいプロセスのプロセス番号を確認し、
% kill プロセス番号
とする。もういちど psコマンドで確認して、まだプロセスが生きていたら、
% kill -9 プロセス番号
とすると確実に終了させることができる。

-l シグナルの一覧を表示
% kill -l
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM
URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH
INFO USR1 USR2
・主要シグナルの説明
INT 中断(インタラプト)。コマンドラインでC-cすると送られるシグナル。
TERM プロセスを終了させる。
STOP プロセスを中断させる。CONTで再開できる。C-zのサスペンドと同じ。
CONT STOPで中断したプロセスを再開させる。
KILL プロセスを強制終了させる
シグナルはシグナル名で指定してもよいし、シグナルの番号でもよい。例えば HUPシグナルは1番(kill -lで一番目に表示される)なので、
% kill -HUP プロセス番号

% kill -1 プロセス番号
は同じである。また、kill -KILL と kill -9 も同じである。
プロセスはシグナルを受けてもそれを無視することができる。例えば HUPシグナルをブロックしていれば、C-cで終了しないようにできる。しかしブロックできないシグナルが一つだけある。それはKILLシグナル(-9)で、このシグナルを受けると、あらゆるプロセスはOSによって強制的に終了させられる。
(コマンド fg,bg,killall,ps,suspend,xkill)

killall コマンド名を指定してkill

-l シグナル一覧を表示
-m コマンド名を正規表現で指定する
-s シグナルを送るプロセスを表示する。実際にはシグナルは送らない。

% kterm & (ktermをバックグラウンドで実行)
[1] 4985
% killall -s kterm (実際にはkillしない)
kill -TERM 4985
% killall kterm (ktermをkill)
% killall -HUP inetd (inetdを再起動)

もし指定のコマンドに該当するものが複数個ある場合は、全てkillする。だから上の例をX上のktermから実行すると、\
全てのktermが終了してしまう。

killallのオプションを複数指定するときは
% killall -ms
などとせずに
% killall -m -s
としなくてはならない。
(コマンド kill)

kinput2 日本語を入力するためのツール。

kterm ターミナルエミュレータ。xtermの日本語対応版

Ctrlを押しながら、マウスの各ボタンを押すことでメニューが出てくる。知らないと困るのが、Ctrl+真ん中ボタンで表示される「VT Options」の中の「Do Full Reset」。バイナリファイルを表示して場合、例えば誤ってcat /bin/lsを実行した場合、画面が化けたままになってしまうことがある。こういうときに「Do Full Reset」を行うことで、回復することができる。

-T str ウィンドウのタイトルを指定する。省略すると「kterm」となる。
-fn fontname フォント名
-fb fontname 太字(bold)のフォント名
-fk fontname 漢字フォント名
-fkb fontname 太字(bold)の漢字フォント名
指定可能はフォントはxlsfontsなどで調べることができる
(コマンド xlsfonts)
-km kanjimode
漢字コードを指定する。-km euc、-km jis、-km sjisなど。
-C コンソールのメッセージを表示する(/dev/console宛に出力された文字も出力されるようになる)
(コマンド xconsole)
-cr colorname カーソル部分の色を指定する。
-hc colorname マウスでドラッグした部分の色を指定する。
このオプションはxtermのみ使用可で、ktermでは使えないらしい。
色の名前はshowrgb、xcolorsなどで調べることができる。
(コマンド showrgb,xcolors)
-b 数字 kterm内部の端から、ウィンドウ自体の端までのドット数。
-e コマンド
ktermを実行すると、そのウィンドウの中でプログラムを実行する。
% kterm -e top
などと指定する。そのプログラムが終了すると自動的にktermも閉じてしまうので、
% kterm -e ls
は、lsの実行が終ると一瞬でktermも閉じてしまう。また、-eオプションは最後に指定すること。
% kterm -e top -cr red
はうまくいかない。
% kterm -cr red -e top
とすること。
-mc 数字 マウスクリックの際に、ダブル/トリプルクリックと認識される最大時間を指定する。
% kterm -mc 300
とすると、300ミリ秒(0.3秒)越えると、ダブルクリックとは認識されない。
-sb スクロールバーを表示する
-sl 数字 スクロールバーで戻ることができる行数を指定する。デフォルトは64。
-r 文字色と背景色を逆にする

% kterm -T kterm1 -fn 8x16 -fk kanji16 -km euc -cr red
などと指定する。
(コマンド xterm,Eterm)

last 過去のブート、シャットダウン、ログインの記録を表示

% last user
ユーザ名user のログイン情報を表示

lastcomm これまで実行されたコマンドの一覧を表示

過去に実行されたコマンドを表示する。
lastcommを実行するためには、acctonでシステムのログを作成しておく必要がある。
(コマンド ac,accton,sa)

ld リンクエディタ

(コマンド ldd)

ldconfig 共有クライブラリを検索するパスを設定

lddで説明したダイナミックリンクは、ライブラリがどのディレクトリに置いてあるかという情報が必要になる。一般的には /usr/lib、/usr/X11R6/lib、/usr/local/libなどに共有ライブラリが置かれている。
(コマンド ldd)

ldd ダイナミックリンクの関係を表示

プログラムを作成する場合、既に用意してあるライブラリを利用することが多い。例えばほとんどのプログラムでは printf(3) を使うが、だからといってほとんどのバイナリに printf(3) のコードを埋め込むのはディスクスペースの無駄である。そこでコンパイル時にライブラリをリンクするのではなく、実行時に動的にリンクを行うこともできる。lddはコマンドがどのランタイムライブラリを参照しているか表示する。

% ldd /usr/X11R6/bin/kterm
/usr/X11R6/bin/kterm:
-lXt.6 => /usr/X11R6/lib/libXt.so.6.0 (0x806f000)
-lX11.6 => /usr/X11R6/lib/libX11.so.6.1 (0x80bd000)
-lXmu.6 => /usr/X11R6/lib/libXmu.so.6.0 (0x805f000)
-lSM.6 => /usr/X11R6/lib/libSM.so.6.0 (0x8153000)
-lICE.6 => /usr/X11R6/lib/libICE.so.6.0 (0x815b000)
-lgnumalloc.2 => /usr/lib/libgnumalloc.so.2.0 (0x816d000)
-ltermcap.2 => /usr/lib/libtermcap.so.2.1 (0x8171000)
-lc.2 => /usr/lib/libc.so.2.2 (0x8175000)
ダイナミックリンクは、バイナリのサイズが少なくなることとひきかえに、そのバイナリ単独での実行が不可能になるという欠点がある。

この例ではktermは8つのランタイムライブラリを実行時に必要とし、1つでも欠けると実行することはできない。もしOSの起動時に何か不具合があってシングルユーザモードで起動したとき、/bin/lsや/bin/mountが/usr/lib/libc.*を必要としたとしても、/usrがマウントされていないと復旧作業はできなくなってしまう。そのため、/bin、/sbinなどのコマンドはランタイムライブラリを必要としないように作られている。

ktermのようなリンク方式を、ダイナミックリンク・動的リンクと言い、lsのリンク方式をスタティックリンク・静的リンクという。静的にリンクされたバイナリをlddで見ると
% ldd /bin/ls
ldd: /bin/ls: not a dynamic executable
となる。
(コマンド ar,ld,ldconifg)
(環境変数 LD_LIBRARY_PATH)

leave ログアウトする予定の時間を知らせる

% leave 1630
午後4時30分にログアウトする予定。5分前にアラームとメッセージが表示され、4時30分にもアラームとメッセージで時間になったことを知らせる。その後1分おきにアラームとメッセージを表示する。
% leave +30
今から30分後にログアウトする予定

less ファイルのビュアー(パイプ)

moreではできなかったバックスクロールに対応、他にもgzipで圧縮されたファイルをそのまま見られるなど、いろいろな機能が付け加えられた。日本語を表示させるにはjlessを使う。

キーバインド
数字 指定行に移動
f SPACE ^V ^F 1画面前進
b ^B ESC-v 1画面後退
RETURN e j ^N ^E ^J 1行前進
y k ^Y ^P ^K 1行後退
d ^D 1/2画面前進
u ^U 1/2画面後退
r ^R ^L 画面を再表示
R ファイルを読み直して再表示
g < ESC-< 先頭行に移動
G > ESC-> 最終行に移動
/[!*@]文字列 文字列を前方検索(正規表現も可能)
/!文字列 文字列を含まない行を検索
/*文字列 コマンドラインで指定した全てのファイルを検索
/@文字列 ファイルの先頭から検索
?[!*@]文字列 文字列を後方検索。/と同じ機能を持つ
n 次検索
N nとは逆方向に次検索
ESC-u 検索にマッチした部分の反転表示を解除
v エディタを起動して現在表示しているファイル編集
(環境変数EDITOR)
= ^G :f 現在位置の行数、バイト数、パーセンテージを表示
h 簡易ヘルプを表示
V バージョンを表示
q :q :Q ZZ lessを終了
!(リターン) シェルを起動(環境変数SHELL)
!コマンド コマンドを実行
!! 直前の!コマンドを再実行

オプションは以下の通り。環境変数LESSにオプションを設定することで、デフォルトオプションとして扱われる。

-e ファイル終端に2度到達すると終了する
-E ファイル終端に1度到達すると終了する
-f ディレクトリや実行ファイルも表示する
-g サーチにマッチした文字列のうち最後にマッチしたものだけを反転表示する
-G サーチにマッチした文字列を反転表示しない
-jn(数字) ターゲットラインの位置を指定する。ターゲットラインとは、サーチにマッチした文字列が表示される行のこと。-j10とすると、サーチにマッチした文字列は上から10行目に表示される。-j-10とすると、下から10行目に表示される。
-kファイル名 lesskeyで作られたキーバインド設定ファイルを読み込む
-m プロンプトに常に現在行のパーセンテージを表示する
-M プロンプトに常に現在行のパーセンテージと行数を表示する
-n 行数計算をしない。非常にサイズの大きいファイルの場合動作が高速化される
-N 各行の先頭に行番号を表示する
-oファイル名 入力をファイルにコピーする。パイプから入力した場合に有用
-Oファイル名 -oと同じだが、同名のファイルがすでに存在したら上書きする
-pパターン 起動後、指定されたパターンをサーチする
-q エラーの際にあまりビープ音を鳴らさない(状況による)
-Q エラーの際にビープ音を鳴らさない
-r コントロールコードをそのまま表示する。デフォルトではcontrol-Aは^Aと表示されるが、-rを指定するとそのまま(?)表示する。これによって、catで日本語が表示できる環境なら、less -rで日本語が表示できるかも。
-S 1行の文字数が画面の横幅を超えた場合、折り返さず、はみでた部分は表示しない
-V バージョンを表示
-w 空行を表す記号に~を表示しない
-xn(数字) タブ幅をnに設定する。デフォルトは8
-zn(数字) fキー、bキーを押した時にスクロールする行数を指定する。nがマイナスなら(スクリーンの縦幅-n)行スクロールする
(コマンド jless,more,xless)

lesskey lessのキーバインドを変更

lex 字句解析パーサ生成プログラム

yaccと組み合わせて使うことが多いが、lex単独でも動作する。ひとことで言うと、perlの
while (<STDIN>){
if ( m/^[0-9]+\s*[^a-z]$/ )
...
}
}
などのような正規表現を扱うプログラムをCで比較的簡単に書くことができる。
(コマンド flex,yacc,bison)

lha LHA、LZHファイルの管理ツール

l アーカイブされているファイルの一覧を表示
x アーカイブされているファイルを展開
(コマンド tar)

limit プロセスへの各種の制限を設定する。csh、tcshの内部コマンド。

limitで設定できる制限値には、一般ユーザが変更できる(普通の)リミットと、rootしか変更できないハードリミットがある。引数なしでlimitを実行すると
% limit
cputime unlimited
filesize unlimited
datasize 16384 kbytes
stacksize 8192 kbytes
coredumpsize unlimited
memoryuse 30720 kbytes
descriptors 64
memorylocked 10240 kbytes
maxproc 64
現在のリミット値が表示される。一方、-hオプションをつけると
% limit -h
cputime unlimited
filesize unlimited
datasize 131072 kbytes
stacksize 65536 kbytes
coredumpsize unlimited
memoryuse unlimited
descriptors 360
memorylocked 124084 kbytes
maxproc 179
ハードリミットが表示される。この状態では、最大プロセス数は64(maxproc=64だから)だが、
% limit maxproc 179
とすることで、最大プロセス数を179にすることができる。しかし一般ユーザは
% limit maxproc 180
などとハードリミットを越える値をセットすることはできない。ハードリミット緩めることができるのはrootのみである。

limitの各項目の意味以下の通り。
cputime
各プロセスがCPUを使うことのできる時間の上限
filesize
1つのファイルの長さの上限
datasize
sbrk(2) を用いてプログラムのテキスト領域の末尾を超えて増加させることのできる data+stack 領域のサイズの上限
stacksize
自動的に拡張されるスタックのサイズの上限
coredumpsize
コアダンプした際に作られるコアファイルのサイズの上限
% limit coredumpsize 0
で、coreファイルのサイズを0にすることができる。
memoryuse
各プロセスが使用できるメモリ使用量
descriptors
1ユーザが同時にオープン可能なファイル数の上限
memorylocked
???
maxproc
1ユーザが同時に実行可能なプロセス数の上限

値の単位、cputimeのみ
% limit cputime 1 1秒
% limit cputime 1m 1分
% limit cputime 1h 1時間
% limit cputime 1:1 1分1秒
で、maxproc、descriptorsはプロセス、デスクリプタの個数、その他は
% limit filesize 1 1キロバイト
% limit filesize 1m 1メガバイト
などと指定する。
(prfprg unlimit)

lint Cプログラムの文法チェッカ

(コマンド gcc)

listres ウィジェットリソースのリストを表示

はっきり言って、何のコマンドなのかよーわかりまへん。
(コマンド appres)

ln ハードリンク・シンボリックリンクを張る。

「リンクを張る」とはファイルの別名を作るようなもので、
% ln file-a file-b
とすることで、file-aをfile-bという別名で参照することができる。当然file-aは既に存在している必要があり、filebは存在していてはいけない。
% ln file-a file-b
とするのをハードリンクといい、
% ln -s file-a file-b
をシンボリックリンクという。ハードリンクではファイルシステム(dfで表示されるもの)をまたぐことができないが、シンボリックリンクなら別のファイルシステムへもリンクを張ることができる。普通はシンボリックリンクを使う方が管理がしやすい(ls -lでリンク先が表示されるから)。また、
% cd /tmp; ln -s /home/foo/bar/sample

% ln -s /home/foo/bar/sample /tmp/sample
と同じ。

-f すでにリンクが張られていたら、リンクを付け替える。
% ln -s file link
% ln -s file2 link
ln: link: File exists
のようにリンクの「張り替え」のような作業をするとエラーとなるが -fオプションを付けると、この「張り替え」ができるようになる。
-s シンボリックリンクを張る。-sを付けないとハードリンクとなる。

lndir 

locate ファイルをデータベースから検索する。BSD系のみ(?)

locate a は
% find / -name '*a*' -print
と同じ働きをする。しかしfindと違い、locateはその場でディレクトリを検索するのではなく、あらかじめファイルシステム中の全ファイルをデータベースに記録しておき、そのデータベースを検索するので、数秒で検索が終了する。欠点は、データベースが更新された後にファイルの移動などをした場合、その情報がデータベースに反映されないことである、

FreeBSDの場合は、/etc/weeklyから/usr/libexec/locate.updatedbが呼ばれて/var/db/locate.databaseが更新される。直接/usr/libexec/locate.updatedbを実行してもよい(rootで実行しても一般ユーザで実行してもOK)。
(コマンド locate)

lock ターミナルをロックする。

まずロックするときにパスワードを入力し、再びそのパスワードが入力されるまで入力を受け付けない。
% lock
Key: (ロックのキーを入力)
Again: (もう一度同じキーを入力)
lock: /dev/ttyp2 on localhost. timeout in 15 minutes
time now is Fri Jan 23 21:32:09 JST 1998
Key: (ここでキーを入力するとロック解除)
(コマンド xlock)

look 英単語のつづりを調べる。

例えば「レシーブ」のつづりが「receive」「recieve」「reseive」のどれが正しいかわからない場合、
% look reseive
% look recieve
% look receive
receive
received
receivedness
receiver
receivership
とすると、receiveが正しいことがわかる。辞書は /usr/share/dict/words にある。

ls ファイル・ディレクトリを表示

ファイル・ディレクトリの一覧を表示する。

-a `.' から始まるファイルも表示。`.' `..' も表示する。
-A `.' から始まるファイルも表示。`.' `..' は表示しない。
rootがlsを実行した場合、常に -Aオプションが付けられたものとして動作する。
-l ファイル、ディレクトリの詳細な情報を表示する
-T タイムスタンプを年月日時分秒まで表示 (要-lオプション)
-o ファイルフラグを表示。BSD系のみ (要-lオプション)
(コマンド chflags)
-1 1行につき1つのファイルの情報を表示
-C マルチカラムで表示(-1の逆)。
出力先がパイプだと自動的に-1を指定したのと同じように動作するが、それを抑制する。
-F ファイルタイプの識別子を付ける。
ディレクトリの後ろに「/」、シンボリックリンクの後ろに「@」、実行形式ファイルの後ろに「*」をつける
-L シンボリックリンク自体ではなく、リンク先のファイルの情報を表示
-R 再帰的にディレクトリ以下のファイルを表示する。
つまり ls -R / でシステムの全てのファイルが表示されることになる
-c ファイルの変更日時ではなくファイルの属性を変更した日時を表示
-u ファイルの変更日時ではなく最後にファイルにアクセスした日時を表示
-d ディレクトリを指定した場合、ディレクトリ以下のファイルではなくディレクトリ自体の情報を表示。
ls -l /usr/binは、ls -l /usr/bin/*と同じような動作をするが、ls -ld /usr/binだと、
drwxr-xr-x 2 bin bin 5120 Oct 7 05:26 /usr/bin
の1行だけ表示する
-f ファイル名をソートせずに表示
-r 逆順にソートして表示
-t ファイルを変更した日時の順でソートする。最近どのファイルが更新されたか調べたいときは
% ls -lt | head
最近どのファイルが参照されたかを調べたいときは
% ls -lut | head
が便利。
-i ファイルのi-nodeを表示
-s 各ファイルのファイルシステムブロックの使用量を表示(512バイト単位)
たとえ1バイトのファイルでも1ブロック(512バイト)を消費している。その消費量を表示する。ブロックの単位は環境変数BLOCKSIZEで設定できる。
(環境変数 BLOCKSIZE)
-k -sオプションが指定された場合、使用量を1Kバイト単位で表示する
-x ファイルを横方向ではなく、縦方向にソートする(-xオプションはSVR系とGNUのlsのみ)。
(コマンド stat)

lsdev 現在のシステムで有効なデハイスを表示

-t class 指定したタイプのデバイスを表示。classに指定できるのは、cpu、isa、eisa、pci、scsi、disk、bus。
-c カーネル設定ファイルと同じような書式で出力

lsvfs バーチャルファイルシステムを表示

luna 現在の月の満ち欠けを表示する

lynx テキスト形式のブラウザ

日本語を表示させるには、lynxを起動して O)ption、C)haracter set、として Japanese(EUC)などを選択する。
-source URL 指定のURLを読みこみ、標準出力に出力する。
% lynx -source http://www.foo.com/~bar/index.html
% lynx -source http://www.foo.com/~bar/sample.jpg > sample.jpg
(コマンド Mosaic,netscape)

m4 マクロ言語プロセッサ

mail 簡易的なメーラー

% mail foo@bar.com < file
fileの内容を foo@bar.com に送る
% mail -s hoge foo@bar.com < file
さらにサブジェクトをhogeとする
(コマンド Mew)

make 依存関係を調べて最適な実行をする。

一般的には、プログラムをコンパイルする際に、Makefile にファイルの依存関係を記述し、makeに自動的にコンパイルさせる、といった使い方をする。しかし本質的には、make は Makefile に記述されたファイルの依存関係と それらのタイムスタンプを調べ、必要な処理だけを行ってくれるツールであるちなみに、この「UNIXの部屋」の web も makeを使って作成している。

例えば、
makeしてエラー(コンパイラのエラーなどではなく、make自体のエラー)が出た場合、gmakeを使うとうまくいく場合が多い。
(コマンド gmake)
(参考書籍 make改訂版)

MAKEDEV デバイスを作成する

FreeBSDのみ?。普通パスは通っていないので注意。cd /dev;./MAKEDEV ***などとする。
どのようなデバイスがあるかは MAKEDEV の中身を見るとわかる。

man オンラインマニュアルを表示する

UNIXでは、基本的に全てのコマンドにオンラインマニュアルが用意されている。
% man コマンド名
とすることで、そのコマンドの説明を見ることができる。例えば ls コマンドのマニュアルを読みたければ
% man ls
とすればいい。また、コマンド名以外にも、システムコールやライブラリ、設定ファイルなどのマニュアルもある。これらは、セクションごとに分けられており、
1 コマンド(ls、cat、ktermなど)
2 システムコール(C言語の関数。open、forkなど)
3 ライブラリ関数(C言語の関数。printf、fopen、Tck/Tk、Xlibなどの関数群)
4 デバイス・デバイスドライバ
5 ファイルフォーマット(uuencodeなどのファイル形式、hostsなどの書式)
6 ゲーム
7 その他(環境変数の説明、groffの書式など)
8 システム管理(各種デーモン、sendmail、mount*など)
9 新しく追加されたマニュアル(主にTk?)
となっている(これは FreeBSD の場合。OSによってセクション構成が違う場合がある)。

セクション番号を指定するには、
% man セクション名 マニュアル名
とする。例えば ls はコマンドなので、
% man 1 ls
また、fopenはライブラリ関数なので
% man 3 fopen
とすればよい。なお、SystemV系(?)では、マニュアルのセクションを指定する場合、
% man -s 3 fopen
と、-s オプションを付ける必要がある。

ただし、セクション名を省略すると、セクションを1から順に探していって、最初に見付かったマニュアルを表示する。そのため、
% man 1 ls
% man 3 fopen
は、どちらもセクション番号を省略して
% man ls
% man fopen
としてもよい。

しかし、異なるセクションに同じ名前のマニュアルが用意されている場合がある。例えば printf は、コマンドの printf(セクション1)、Cのライブラリの printf(セクション3) の2種類がある。普通に
% man printf
とすると、セクション1の printf コマンドのマニュアルが表示される。Cの printf 関数のマニュアルを見るには、
% man 3 printf
とセクション名を明示しなければならない。他のセクションに同名のマニュアルがあるかどうかは、man -aw で調べるとよい。

-a 名前にマッチしたマニュアルを全て表示する
-d デバッグモード。マニュアルを探す過程を表示
-f whatisと同じ機能
(コマンド whatis)
-k aproposと同じ機能
(コマンド apropos)
-w 表示するマニュアルのフルパスを表示
-M マニュアルを検索するパスを指定
manから呼ばれるページャ (more や less) を変更したい場合、環境変数 PAGER で設定する。
例・setenv PAGER 'jless -Ej10'など
(環境変数 PAGER)

オンラインマニュアルをファイルにリダイレクトしてエディタで見た場合、コントロールコードが含まれているのでうまく表示されない。マニュアルをテキストに変換するにはcolを使う。
(コマンド col)
(コマンド xman,catman,jman)

manpath manが参照するディレクトリを表示。つまり環境変数MANPATHを表示するのと同じ。

(コマンド MANPATH)

maplay MPEG AUDIO プレイヤー

Layer3には未対応
(コマンド amp,mpg123,xaudio)

maze 迷路を作る

(コマンド xscreensaver)

mbadblocks 

mc ファイル・ディレクトリ管理ツール

Norton Command というツールのクローンらしい。
(コマンド fd)

md5 ファイルのチェックサムを求める

fileのチェックサムを求める
% md5 file
MD5 (file) = a17ab27909dbb125bdabcd25ca19412c
-s文字列 文字列のチェックサムを求める
% md5 -sabc (abcのチェックサムを求める)
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
MD5は「一方向ハッシュ関数」や「メッセージ要約関数」と呼ばれ、Xを加工してYを求めるのは簡単だが、Yを元に加工される前のXを求めたり、同じYになるX'を求めることは難しい。そのため、ユーザ認証やファイルのチェックサムを調べるときなどに使われる。

md5 は FreeBSD では標準で含まれているが、他の UNIX系OS では md5sum というコマンド名の場合もある。
(コマンド cksum,md5sum)

md5sum ファイルのチェックサムを求める

GNUが配布している textutils に含まれている。動作はmd5と全く同じ。
% echo abc | md5 (abcのチェックサムを求める)
(コマンド md5,textutils)

mesg 他ユーザからのメッセージの表示の許可/不許可

他ユーザから talk や write を受けると、メッセージが表示されて画面表示が崩れるのが嫌だったり、talk や write 自体を受けたくないときは mesg で指定できる。
% mesg y
他ユーザからのtalk、writeを許可する
% mesg n
他ユーザからのtalk、writeを禁止する
(コマンド talk,write)

Mew 高機能メーラー。

emacs/mule上で動くelispプログラムと、下請けプログラム(im)を組み合わせて使用する。M-x mewで起動するので、
Mewというコマンドはない。詳しくはhttp://www.mew.org/index-j.htmlを参照。
詳細な日本語のマニュアル・FAQ・メーリングリストがある。
Summaryモードでの基本操作は以下の通り。
i 新たに到着したメールを取り込む。
n 次のメッセージに移動
p 前のメッセージに移動
d メッセージに削除マークを付ける
x 削除マークを付けたメールを削除する(実際はtrashディレクトリに移動。本当に削除する場合はコマンドラインで imrm コマンドを使う)
a 現在のメッセージに返事を書く。引用は行われない。
A 現在のメッセージに返事を書く。引用が行われる。
f 現在のメッセージを転送する。
w メールを送る。
O メッセージの通し番号を再割り付けする。
g フォルダを移動する。
C-c C-l 化けたメッセージを直せるかも。
(コマンド mule)

mkdir 新しいディレクトリを作る

-m 作るディレクトリの属性を指定する。-mで指定した属性にumaskの属性を合わせて作られる。
-p 新しく作るディレクトリの下に新しいディレクトリを作る。newdir1というディレクトリが存在しない場合、
% mkdir newdir1/newdir2
とするとエラーになるが、
% mkdir -p newdir1/newdir2
とすると、ディレクトリnewdir1を新規作成し、その下にディレクトリnewdir2を新規作成する。
(コマンド rmdir)

more ファイルのビュアー(パイプ)

moreの高機能版がlessである
(コマンド less,jless)

Mosaic Webブラウザ

Netscape Navigatorの前身で、Webブラウザのさきがけでもあるが、現在ではわざわざ使用する価値はないと思われる。
(コマンド netscape)

mount ファイルシステムをマウントする

基本的な書式は「mount デバイス名 マウントポイント」。引数なしで実行すると現在のマウント状況を表示する。デバイス名は/dev/にあるもの。マウントポイントとは「どのディレクトリにアクセスしたらそのファイルシステムが参照できるか」を指定するもの。例えば
% mount /dev/hoge /usr/fuga
とすると、/usr/fuga にアクセスすることで /dev/hogeデバイスを操作できる。マウントポイント(/usr/fuga)はディレクトリで、事前にmkdirで作成しておく必要がある。

-a /etc/fstabに記述されているとおりにマウントする(noautoを除く)
-t ファイルシステムタイプを指定する。
通常のUNIXのファイルシステムはufsだが、例えばFreeBSDではCD-ROMのファイルシステムはcd9660、MS-DOS形式のファイルシステムはmsdos、NFSファイルシステムはnfs、などといくつか種類がある。-tオプションを使ってマウントしたいファイルシステムの種類を指定できる。
% mount -t msdos /dev/fd0 /mnt
FDを/mntにMS-DOS形式でマウントする。
% mount -t cd9660 /dev/wcd0c /cdrom
FDを/mntにMS-DOS形式でマウントする。
mount_msdos、mount_cd9660など、mount_* というコマンドは mount -t * と同じ動作をする。

/etc/fstabに
/dev/wcd0c /cdrom cd9660 ro,noauto 0 0
などという記述があれば、
% mount -t cd9660 /dev/wcd0c /cdrom

% mount_cd9660 /dev/wcd0c /cdrom
に加えて、
% mount /cdrom
という省略形が使える。
(コマンド umount)
(設定ファイル /etc/fstab)

mpg123 MPEG AUDIO Layer3 (MP3) プレイヤー

-k フレーム数 先頭部分を指定のフレームだけスキップする
-d フレーム数 指定のフレーム分だけ飛び飛びに再生する
-h 繰り返す回数 各フレームを指定の回数だけ繰り返して再生する
-r サンプリングレート サンプリングレートを変更する。標準は44100。1に近付くほど再生が遅く、音程が低くなる。44100以上の値を指定することはできない。
-Z ランダム演奏
-@ URL 指定のURLのMPEG AUDIOデータを再生する
(コマンド amp,xaudio,tosha,sox,8hz-mp3splay)

mtools MS-DOSフォーマットのフロッピー用のツール集

普通フロッピーディスクを扱う場合は mount_msdos などでマウントしなければならないが、マウント・アンマウントを繰り返すのは面倒である。mtoolsを使えばMS-DOS上でのファイル操作と同じようにフロッピーを扱うことができる。
標準設定ではフロッピーディスクのデバイス、/dev/fd0のパーミッションが rw------- となっているので、スーパーユーザになって
% chmod 777 /dev/fd0
とすることで mtools が使えるようになる。

UNIXとMS-DOSのファイルシステムの違いは、ディレクトリの区切りが / と \ ということと、ドライブ名として A: などと指定することがあげられる。

mattrib MS-DOSファイルの属性を変更する
mbadblocks
mcd MS-DOSでのカレントディレクトリを変更する
mcopy MS-DOSとUNIXとのファイルのやりとりをする
mdel MS-DOSファイルを削除する
mdir MS-DOSファイル・ディレクトリを表示する
mformat フロッピーディスクをMS-DOSフォーマットする
mlabel MS-DOSフロッピーのボリュームラベルを変更する
mmd MS-DOSディレクトリを作成する
mmount
mrd MS-DOSディレクトリを削除する
mmove MS-DOSファイル・ディレクトリを移動する
mren MS-DOSファイル・ディレクトリの名前を変更する
mtype MS-DOSファイルの内容を表示する
mtest

mule 多国籍エディタ。nemacs の後継エディタとして開発された。

設定は ~/.emacs または ~/.mule で行う。
mule の機能は本当にたくさんあるので、ごく一部だけを説明する。重要な機能には(*)マークを付けた。
M-x というのは、ESCキーを押して(離したあとに)xキーを押す、という意味。
C-x というのは、CTRLキーを押しながらxキーを押す、という意味。
M-C-s というのは、ESCキーを押して(離したあとに)、CTRLキーを押しながらsキーを押す、という意味。
オプション
+n(数字) 起動後ファイルのn行目に移動する
-nw 新たなウィンドウを作らず、現在のコンソール上で実行する
-q 設定ファイルを読み込まない
-u user userの設定ファイルを読み込む
-l file コンフィグファイル file を読み込む
-f function LISPの関数を実行する。
例・mule -f c-mode
mule -f rmail(メール)
mule -f gomoku(五目並べ)
カーソル移動
C-a 行頭に移動(*)
C-e 行末に移動(*)
C-n 1行下に移動(*)
C-p 1行上に移動(*)
C-f 1文字前に移動(*)
C-b 1文字後ろに移動(*)
C-v 1画面進む(*)
M-v 1画面戻る(*)
M-< 先頭行に移動(*)
M-> 最終行に移動(*)
C-x C-x マーク位置へ移動、もう一度入力すると元に戻る
C-x = 現在カーソルがどこにあるかを表示
M-x goto-line 指定の行へ移動(*)
マーク
C-@ 現在カーソルのある位置をマーク(*)
C-SPACE 現在カーソルのある位置をマーク(*)
C-x h バッファ全体をマーク
検索
C-s インクリメンタルサーチ(あるいは次検索)(*)
C-s C-s 次検索(*)
C-r 後方インクリメンタルサーチ
M-C-s 正規表現インクリメンタルサーチ
M-C-r 後方正規表現インクリメンタルサーチ
削除・貼り付け
C-d 1文字削除(*)
C-k 1行削除(*)
C-w マークした範囲からカーソル位置までを削除してキルリングにコピー(*)
M-w マークした範囲からカーソル位置までをキルリングにコピー(*)
C-y キルリングの内容を貼り付け(*)
C-x C-t カーソルのある行とその上の行を入れ換え

C-o 空行を挿入
C-/ アンドゥ(*)
C-g 実行中のコマンドをキャンセル(*)
C-l 画面を再描画して、カーソルのある行が画面の中心にくるように表示
C-m リターンキーと同じ
セーブ・終了
C-x C-s セーブ(*)
C-x C-w ファイル名を指定してセーブ
C-x C-c muleの終了(*)
C-z サスペンド
バッファ・ウィンドウ
C-x C-f 指定ファイルを編集(*)
C-x C-b 現在のバッファのリストを表示(*)
C-x 0 カレントウィンドウを消去(*)
C-x 1 カレントウィンドウ以外のウィンドウを消去(*)
C-x 2 カレントウィンドウを垂直に2分割
C-x 3 カレントウィンドウを水平に2分割(*)
C-x o 次ウィンドウに移動(*)
C-x + 全ウィンドウを均等なサイズに変更
C-x ^ カレントウィンドウを拡大(*)
C-x b 編集するバッファを変更(*)
C-x C-b 現在編集中のバッファのリストを表示
C-x C-d ディレクトリを表示
C-x d diredを実行
C-x C-r 新たにファイルを読み込む(リードオンリー)
C-x i ファイルを挿入
C-x C-x バッファを削除
C-x 4系 他のウィンドウを操作
C-x 4 b 他のウィンドウに指定バッファを表示
C-x 4 f 他のウィンドウでファイルを編集
C-x 4 m 他のウィンドウでメール
C-x 4 r 他のウィンドウにファイルを読み込む(リードオンリー)
C-x 4 d 他のウィンドウでdired
C-x 5系 他のフレームを操作
C-x 5
マクロ
C-x ( マクロの設定を開始
C-x ) マクロの設定の終了
C-x e 設定したマクロを実行
ヘルプ
M-x describe-bindings 現在のキー割り当ての説明
M-x describe-variable emacs変数の説明
M-x describe-function 関数の説明
M-x describe-mode 現在のメジャーモードの説明
漢字変換
C-\ たまごの起動(?)
C-o かんなの起動(?)
C-x SPC マーク位置からカーソル位置まで再変換
その他
C-u n command commandをn回繰り返す。C-u 3 C-n は C-n C-n C-n と同じ
C-x TAB マークした場所からカーソル位置までの行を字下げする
C-^ 記号入力モード
C-x = カーソルの位置を表示
C-x m メールを送信
ESC ! シェルコマンドを実行
C-x l バッファの行数と現在位置を表示
便利なコマンド
M-x goto-line 指定の行に移る(行番号を指定)
M-x tabify マーク位置から現在位置までのスペースをタブに変換
M-x untabify マーク位置から現在位置までのタブをスペースに変換
M-x canna-touroku 新たに単語を登録(かんな)
M-x replace-string 文字列を置換(*)
M-x replace-regexp 文字列を置換(正規表現で指定)
M-x rmail メールを読む
M-x override-mode 上書き/挿入モード(トグル)
M-x auto-fill-mode 改行したとき、その行が指定の文字数より長かったら、自動的に指定の文字数のところで改行する。任意のカラムでC-x fすることで、1行の長さを設定できる。
(コマンド vi,mew)

mv ファイルの移動、リネーム

% mv file1 file2
file1をfile2にリネーム
% mv file1 (file2 ...) dir
file1(file2 ...)をディレクトリdirに移動
-i 移動先のファイルが既に存在する場合、上書きしていいか確認する
-f 上書きの確認を行わない。これはデフォルトだが、alias mv mv -iとしているときに便利
-R 指定ディレクトリ以下のファイルを再帰的に削除
(コマンド cp)

mxaudio GUIインタフェースを持ったMPEG AUDIOプレイヤー

(コマンド xaudio,mpg123)

ncftp 高機能ftpクライアント

「ニックエフティーピー」と呼ぶらしい。
(コマンド ftp)

ncftp2 ncftpのバージョン2

(コマンド ftp)

nemacs 日本語を扱える emacs

現在は nemacs の開発は終了し、mule に引き継がれている。
(コマンド mule)

netpbm 画像処理プログラム

netpbmは各種画像コンバータの総称で、netpbmというコマンドはない。
netpbmは以下のバイナリで構成されている。AAAtoBBBというコマンドは、AAA形式の画像ファイルを指定すれば、標準出力にBBB形式の画像ファイルを書き出してくれる。例えば
% pgmtopbm < hoge.pgm > hoge.pbm
netpbmに含まれるコマンドは以下のとおり。
anytopnm、asciitopgm、atktopbm、bioradtopgm、bmptoppm、brushtopbm、cmuwmtopbm、fitstopnm、fstopgm、g3topbm、gemtopbm、giftopnm、gouldtoppm、hipstopgm、hpcdtoppm、icontopbm、ilbmtoppm、imgtoppm、lispmtopgm、macptopbm、mgrtopbm、mtvtoppm、pbmclean、pbmlife、pbmmake、pbmmask、pbmmerge、pbmpscale、pbmreduce、pbmtext、pbmto10x、pbmto4425、pbmtoascii、pbmtoatk、pbmtobbnbg、pbmtocmuwm、pbmtoepsi、pbmtoepson、pbmtog3、pbmtogem、pbmtogo、pbmtoicon、pbmtolj、pbmtoln03、pbmtolps、pbmtomacp、pbmtomgr、pbmtopgm、pbmtopi3、pbmtopk、pbmtoplot、pbmtoptx、pbmtox10bm、pbmtoxbm、pbmtoybm、pbmtozinc、pbmupc、pcxtoppm、pgmbentley、pgmcrater、pgmedge、pgmenhance、pgmhist、pgmkernel、pgmmerge、pgmnoise、pgmnorm、pgmoil、pgmramp、pgmtexture、pgmtofs、pgmtolispm、pgmtopbm、pgmtoppm、pi1toppm、pi3topbm、picttoppm、pjtoppm、pktopbm、pnmalias、pnmarith、pnmcat、pnmcomp、pnmconvol、pnmcrop、pnmcut、pnmdepth、pnmenlarge、pnmfile、pnmflip、pnmgamma、pnmhistmap、pnmindex、pnminvert、pnmmargin、pnmmerge、pnmnlfilt、pnmnoraw、pnmpad、pnmpaste、pnmrotate、pnmscale、pnmshear、pnmsmooth、pnmtile、pnmtoddif、pnmtofits、pnmtops、pnmtorast、pnmtosgi、pnmtosir、pnmtotiff、pnmtoxwd、ppm3d、ppmbrighten、ppmchange、ppmdim、ppmdist、ppmdither、ppmflash、ppmforge、ppmhist、ppmmake、ppmmerge、ppmmix、ppmnorm、ppmntsc、ppmpat、ppmquant、ppmquantall、ppmqvga、ppmrelief、ppmshift、ppmspread、ppmtoacad、ppmtobmp、ppmtogif、ppmtoicr、ppmtoilbm、ppmtomap、ppmtomitsu、ppmtopcx、ppmtopgm、ppmtopi1、ppmtopict、ppmtopj、ppmtopjxl、ppmtopuzz、ppmtorgb3、ppmtosixel、ppmtotga、ppmtouil、ppmtoxpm、ppmtoyuv、ppmtoyuvsplit、psidtopgm、pstopnm、qrttoppm、rasttopnm、rawtopgm、rawtoppm、rgb3toppm、sgitopnm、sirtopnm、sldtoppm、spctoppm、spottopgm、sputoppm、tgatoppm、tifftopnm、xbmtopbm、ximtoppm、xpmtoppm、xvminitoppm、xwdtopnm、ybmtopbm、yuvsplittoppm、yuvtoppm、zeisstopnm
なお、
% cat foo.gif giftopnm | ppmtopgm | pgmtopbm | pbmtoascii
とすることで、GIFファイルをテキスト形式に変換できる(アスキーアート)。縮小版は
% cat foo.gif giftopnm | ppmtopgm | pgmtopbm | pbmtoascii -2x4
とする。
(コマンド xv,ImageMagick)

netscape WWWブラウザ

とっても有名なのでここでは説明しない。FreeBSD な人は ports/packages を使ってインストールしましょう。
(コマンド lynx,Mosaic)

netstat ネットワークの状況を表示

-a ソケットの情報を表示。サーバによって使われているソケットの情報は表示しない。
-i インタフェースの情報を表示。tun0やpppなど。

newaliases /etc/aliasesの情報を更新する。

/etc/aliases を書き換えた場合、newaliasesを実行しないと、いつまでたっても変更内容が反映されない。
(設定ファイル /etc/aliases)

nice プライオリティ(優先順位)を変更して実行する

% nice +20 xeyes
xeyesをプライオリティ20で実行
csh、tcshの内部コマンドのniceと、/usr/bin/niceがあるので注意
(コマンド renice)

nkf 漢字コードの変換(パイプ)。またMIME、ROT13/47なども変換できる。

漢字コードにはJIS、シフトJIS(SJIS)、EUCの3種類がある。普通UNIXではJISやEUC、WidowsやMacではSJISが主に使われる。
-j JISコードに変換
-s シフトJISコードに変換
-e EUCコードに変換
% nkf -e sample > sample.euc
sampleをEUCに変換してsample.eucに出力する
-f 日本語を含む文章の fold。
% nkf -f 30 < file
とすると、file の出力を1行あたり30文字に整形する。foldコマンドと違い、日本語を含む文章でも処理することができる。
(コマンド fold)
-m MIMEコードをデコード
メールのタイトルなどには生の日本語ではなく、MIMEコードを書く。例えば
=?iso-2022-jp?B?GyRCJE8kOCRhJF4kNyRGGyhK?=
をMIMEデコードすると
% echo '=?iso-2022-jp?B?GyRCJE8kOCRhJF4kNyRGGyhK?='|nkf -m
はじめまして
となる。nkfのバージョンが古い場合、iso-2022-jpの部分が小文字だと変換できないことがある。この場合は「iso-2022-jp」を「ISO-2022-JP」に変えればよい。
(コマンド coco,qkc)

nm 実行ファイルのシンボルテーブルを表示

(コマンド gcc,strip)

nohup ログアウトしても処理を中断させない

端末からログアウトすると、そのとき実行中のプロセスにSIGHUPシグナルが送られ、プロセスは終了する。しかし、
% nohup command &
としてコマンドを実行すると、ログアウトしても command には SIGHUP シグナルが送られない。つまりログアウト後も実行を続けさせることができる。実行に長い時間がかかるプロセスに使うと、ログアウト後にも処理を続けさせることができて便利である。

nslookup IPアドレスをFQDNに、FQDNをIPアドレスに変換する

DNSサーバに問い合わせて、IPアドレスをFQDNに、あるいはその逆の、FQDNをIPアドレスに変換する。

ntpdate 自動的に時刻を修正する

NTP(Network Time Protocol)という、マシンの時刻を自動的に同期させるシステムがある。ntpdate は NTPクライアントで、NTPサーバにアクセスして時刻を取得し、ローカルホストの時刻を修正する。NTPサーバとしてはeric.nc.u-tokyo.ac.jp や jp-gate.wide.ad.jp があり、
% ntpdate eric.nc.u-tokyo.ac.jp
などとすることで正確な時刻に修正することができる。時刻を変更するわけなので、もちろんrootしか実行できない。常に正確な時刻に合わせたいなら、/etc/daily に
/usr/sbin/ntpdate eric.nc.u-tokyo.ac.jp
という行を追加しておけばいい (ただし近場のサーバを指定すること)。
なお、当然のことながら基準となるNTPサーバの時刻が狂っているとどうにもならない。
(コマンド date,xntpd)

oclock 時計

(コマンド clock,dclock)

od ファイルのダンプ

個人的には hd の出力の方がわかりやすいと思う。
(コマンド hexdump,hd)

oneko ねこがマウスを追いかける

-tora トラじまのねこ
(コマンド xneko)

p2c PascalからCへのコンバータ

普通はp2ccが内部で呼ぶ。
(コマンド p2cc)

p2cc p2cを使ったPascalコンパイラ

内部でp2cを呼んでいる。
(コマンド p2c)

passwd パスワードを変更する。

今のパスワード、新しいパスワード、もう一度新しいパスワードの順で入力する。パスワードは6文字以上、アルファベット以外の文字を含み、128文字以下(FreeBSD2.2.1の場合)。
(コマンド pwd_mkdb,yppasswd,vipw)

patch パッチをあてる

% patch < パッチファイル
とすると自動的にパッチ当て作業を行う。ファイルのタイムスタンプなどをチェックなども行われる。

pedal きれいな画像を描く

(コマンド xscreensaver)

perl 高機能プログラミング言語。awk、sed、Cなどの便利なところだけを引き継いだ。

一般的には
#!/usr/local/bin/perl
print "Hello,world.\n";
というファイル(例えばsample.pl)を作り、
% chmod +x sample.pl
として実行権限を付け、
./sample.pl
などと実行する。
いわゆるperl4(ver.4)とperl5(ver.5)があるので、perl4で動かなかったスクリプトはperl5で試してみるとよい。FreeBSD2.xでは標準でperl4が/usr/bin/perlに置いてあり、perl5はports/packagesでインストールする。/usr/local/bin/perlが/usr/local/bin/perl5.00xへのシンボリックリンクとなっている。FreeBSD3.xでは/usr/bin/perlがperl5になっており、perl4は使われていない。

perlのバージョンはperl -vで確認できる。
(コマンド awk,sed)

phone 高機能talk。日本語(かな文字)を表示することができる

-ca asciiモード。talkと同じで英数字しか表示できない
-cj jisでかなを表示
-ce eucでかなを表示
-cs sjisでかなを表示
(コマンド talk)

ping 指定のドメイン(あるいはIPアドレス)とのパケットの送受信ができるかを調べる

-c 回数 パケットを送受信する回数を指定する。指定しない場合は永遠にパケットを送り続ける。
(コマンド traceroute)

pkg_add パッケージのインストール。FreeBSDのみ(NetBSDも?)

-n 実際には何も書き込まず、報告のみをする
-v 全ての情報を表示
(コマンド pkg_delete,pkg_info)

pkg_delete パッケージの削除。FreeBSDのみ(NetBSDも?)

-n 実際には何も書き込まず、報告のみをする
-v 全ての情報を表示

tcshを使っている場合、
complete pkg_delete n@*@'`\ls -1 /var/db/pkg`'@
と設定することで、pkg_deleteの補完が便利になる。
(コマンド complete)
(コマンド pkg_add,pkg_info)

pkg_info パッケージの情報を表示。FreeBSDのみ(NetBSDも?)

-a 現在インストールされているパッケージの情報を表示
-aI -aよりも詳しい情報を1行で表示
-c 1行の簡単な説明を表示
-d 数行の簡単な説明を表示
-e パッケージ名 パッケージがインストールされていれば0を、そうでなければ1を返す
-L インストールされるファイル名を表示
-v 全ての情報を表示
(コマンド pkg_add,pkg_delete)

playmidi MIDIプレイヤー。FreeBSDでは音が悪いという噂がある。

popclient POPクライアント。

POPサーバからメールをダウンロードするプログラム。

PPPでプロバイダに接続している場合、telnetでログインしてメールを読むのでもいいが、メールを読んでいる間も電話代がかかる。popclientを使うと、プロバイダのPOPサーバからメールを取ってきて、自分のホストにメールが届いたかのようにすることができる。
-2 POP2プロトコルを使う(普通はPOP3プロトコルを使う)
-3 POP3プロトコルを使う
-a 既に一度ダウンロードしたメールも含め、全てのメールをダウンロードする(POP3のみ)
-c ダウンロードしたメールを標準出力に書き出す
-k ダウンロード後メールサーバにあるメールを消去しない
-K ダウンロード後メールサーバにあるメールを消去する
-o folder 取ってきたメールを保存するフォルダ名
-u user メールサーバでのユーザ名
-p passwd メールサーバでのパスワード
-r folder メールサーバのフォルダ名

実際に使うには
% popclient -3 -K -u username -p password
などとすればよい。username と password は、POPサーバのアカウント名/パスワードである。

ppp ダイヤルアップPPP接続する

primes 素数を調べて表示

ある数字を指定すると、その数字より大きい素数を表示する
% primes 123456
123457
123479
123491
:
:
/usr/games/にインストールされるので注意。
(コマンド factor)

printenv 現在設定されている環境変数を表示。

指定された環境変数を表示する。引数を省略すると、現在設定されている全ての環境変数を表示する。
(コマンド env,setenv)

printf Cのprintf(3)と同じような出力ができる

% set i=30
% printf "%05d\n" $i
00030
(コマンド echo)

procmail メール自動処理プログラム

特定の宛先、特定のサブジェクト、特定の内容などに応じて自動的にメールを処理させることができる。
まず ~/.forwardに
"|exec /usr/local/bin/procmail"
などとprocmailのフルパスを記述しておく。これでメールが届くとprocmailが自動的に起動される。次に ~/.procmailrc に
:0
* ^From:.*hoge
! foo@bar.com
と書いておく(これをレシピと言う)。これでメールのFromフィールドに「hoge」という文字列が含まれるメールは、自動的に foo@bar.com に転送される。条件にマッチしないメールは通常通りメールスプール(/var/mail/$USER や/var/spool/mail/$USER など)に追加される。

レシピには上記のように
:0 [フラグ] [:ロックファイル]
* 条件
動作
という書式を連続して書くことで、複雑な動作をさせることができる([]内は省略可能)。
以下に少し突っ込んだ使い方を示す。

サブジェクトに「hoge」を含むメールをcommandの標準入力に渡す。
:0
* ^Subject:.*hoge
| command
サブジェクトが(「hoge」を含む場合でなく)「hoge」であった場合だけ動作させたいなら、
:0
* ^Subject: hoge$
| command
とすればよい。また、commandが同時に起動されては困るなら、
:0 :
* ^Subject: hoge$
| command
と「:」を付けることで、procmailに排他処理(ロック処理)を行うよう指示することができる。この場合は「:」の後にロックファイル名を省略したので、procmailが勝手にロックファイルを作成してくれる。

メールをリファイルすることもできる。メールスプールのような1つのファイルに複数のメールを格納するmbox形式と、MHやMewのような1つのメールにつき1つのファイルを使うMH形式を選択できる。

mbox形式は、レシピを
MAILDIR=$HOME/Mail
:0 :
* ^Subject: \[FreeBSD\-users\-jp \d+\]
FreeBSD-users-jp
とすることで、Subjectが [FreeBSD-users-jp \d+] にマッチしたメールが
$HOME/Mail/FreeBSD-users-jp
というファイルにどんどん追加されていく(存在しなければ新規作成される)。

一方、MH形式は
MAILDIR=$HOME/Mail
:0 :
* ^X-Sequence: FreeBSD\-users\-jp \d+
FreeBSD-users-jp/.
と最後に「/.」を付けることで、$HOME/Mail/FreeBSD-users-jpという *ディレクトリ* の下にメールが保存される。メールの番号は届いた順に1番から付けられ、
$HOME/Mail/FreeBSD-users-jp/1
$HOME/Mail/FreeBSD-users-jp/2
$HOME/Mail/FreeBSD-users-jp/3
と順に作成されていく。なお、メーリングリストの配送メールを振り分ける場合は、上記のようにSubjectによって振り分けるのではなく、X-SequenceやX-Ml-Nameヘッダを参照することをお勧めする。

ここで転送しつつリファイルするレシピを書いてみよう。
MAILDIR=$HOME/Mail
:0
* ^Subject: .*hoge
{
:0 c
! foo@bar.com

:0
hoge
}
このように{}で囲むことでブロックを作成することができる。2番目と3番目には「*」で始まる条件文が書いていないので、常に実行されることになる。「:0 c」の「c」は、
その条件に適合した場合、メールのコピーを作成し、以後のレシピに渡す
という意味のフラグである。

次に、1番目の条件にマッチしたものだけ特定のメールアドレスに転送し、マッチしなかったものだけ別のメールアドレスに転送する例をあげる。
:0
* ^Subject: .*hoge
! foo@bar.com
:0 E
! fuga@bar.com
Eフラグは「前のレシピにマッチしなかった場合」、つまり「ELSE IF」という意味を持つので、Subjectに「hoge」を含むメールは foo@bar.com に転送されて、そうでないメールは fuga@bar.com に転送されることになる。
(参考: UNIX MAGAZINE 1998年10月号 P.36 「UNIX知恵袋42」 島 慶一)

ps 実行中のプロセスの情報を表示

以下の情報はFreeBSDを元にしたものである。LinuxやSolarisなどとはオプションの構成が全く違う。BSD系だと、自分のプロセスを見るには ps 、システム全体のプロセスを見るには ps ax、もっと詳細なものは ps aux を使う。SolarisなどのSystemV系だと、それぞれ ps、ps -ef となる。

以下はBSD系のオプション。
-a 他ユーザが実行したプロセスも表示
-e 各プロセスがreference (?)している環境変数を表示
-j 各プロセスの詳細な情報を表示
(user pid ppid pgid sess jobc state tt time command)
-m メモリの使用量でソートする
-p num 指定したプロセスIDの情報を表示
-r CPUに使用量でソートする
-u 各プロセスの詳細な情報を表示(SVR4の-uはBSDの-Uと同じ)
(user pid %cpu %mem vsz rss tt state start time command)
-U user 指定ユーザが実行したプロセスを表示
-v 各プロセスの詳細な情報を表示
-w デフォルトでは、端末の横幅に応じて出力を幅がカットされるが、-wオプションを使うと、1行132桁で表示される。-ww とすると必要なだけ横幅を広げる。

%CPU CPUの使用率
%MEM メモリの使用率
ACFLAG
COMMAND
CPU
FLAGS
INBLK
JOBC
KTRACE
KTRACEP
LIM
LOGNAME
LSTART
MAJFLT
MINFLT
MSGRCV
MSGSND
NICE
NIVCSW
NSIGS
NSAWP
NVCSW
NWCHAN
OUBLK
PGID
PID プロセスID
PPID 親プロセスID
PRI
RSS
SESS
STAT
STARTED プロセスの開始時刻
TIME
TT
UID ユーザID
USER プロセスを実行したユーザ名
VSZ
WCHAN
(コマンド top)

pwd カレントディレクトリを表示する。

echo $cwdと同義。
(コマンド cd)

pwd_mkdb パスワードファイルを作成する

本来のパスワードファイルは/etc/master.passwdにあり、これはrootしか見ることはできない。/etc/master.passwdから暗号化されたパスワードなどを取り除いたものが/etc/passwdで、これは誰でも見ることができる。また、/etc/pwd.dbと/etc/spwd.dbというファイルがあり、これらはデータベース化されている(テキスト形式ではない)。

/etc/passwd、/etc/pwd.db、/etc/spwd.dbは、/etc/master.passwdから作成することができる。3つのファイルが壊れても、/etc/master.passwdさえ残っていれば、
# pwd_mkdb /etc/master.passwd
で、/etc/pwd.db、/etc/spwd.dbが作成され、
# pwd_mkdb -p /etc/master.passwd
で、/etc/passwdが作成される。
(コマンド passwd,vipw)
(設定ファイル /etc/passwd,/etc/master.passwd,/etc/spwd.db,/etc/pwd,db)

qkc 漢字コードを変換(パイプ)

nkf と似たような書式を持つが、
% qkc -j file
とすると nkf とは違って、引数で指定したファイル自体を書き換える。また、改行コードの変換もできる。
-j JISコードに変換
-s SJISコードに変換
-e EUCコードに変換
-O nkf のように、変換済みコードは標準出力に書き出される
-z ファイルの末尾についている ^Z を取り除く
-m 改行コードを CR LF(MS-DOSの改行コード) に変換
-u 改行コードを LF(UNIXの改行コード) に変換
-ma 改行コードを CR(Macの改行コード) に変換

UNIX → MS-DOS (SJIS、改行コードはCR LF)
% qkc -sm sample.unix > sample.msdos
MS-DOS → UNIX (JIS、改行コードはLF)
% qkc -ju sample.msdos > sample.unix
UNIX → Mac (SJIS、改行コードはCR)
% qkc -sma sample.unix > sample.mac
Mac → UNIX (JIS、改行コードはLF)
% qkc -ju sample.mac > sample.unix
(コマンド nkf)

quota ディスク割り当て状況を表示

UNIXには quota という、各ユーザごとに使用できるディスク容量を決めることができる。使用できるディスク容量の上限には、ソフトリミットとハードリミットがある。ユーザはハードリミット以上のディスクスペースは絶対に使うことができない。一方、ソフトリミットを越えてもファイルの作成はできるが、一定期間が過ぎるとloginを不可能にするなどの設定が可能。

例えば、ソフトリミットを10MB、ハードリミットを20MB、猶予期間を1週間に設定すると、
10MB以上ディスクスペースを使うとカウントダウンが始まり、1週間以内に10MBを下回らないとログインできなくなる。また、20MB以上のディスクスペースは決して使うことができない(ファイルを書き出そうとしても失敗する)。
普通のUNIXではデフォルトではquotaは設定されていない(デフォルトでは使いたい放題)。

一般的なプロバイダの「ディスク10MB使用可能」などというのは、quotaを使って実現されているわけですな。

rain 雨が降るデモ

X上ではなく、コンソール上で雨が振る。結構しょぼい。

rclock 予定を記憶しておける時計

(コマンド xcal,dclock,oclock,xclock)

rcp リモートホスト間でファイルをコピー

ファイルはログインネーム@ホスト名:ファイル名で指定する。
% rcp user@host:~/lib/sample .
リモートホストhost(ログインネームuser)の~/lib/sampleをローカルホストのカレントディレクトリにコピー
% rcp sample user@host:~/lib
ローカルホストのファイルsampleをリモートホストhost(ログインネームuser)の~/libにコピー
% rcp user@host:~/lib/\* .
リモートホストの~/lib/以下のファイルをカレントディレクトリにコピー。正規表現を使う場合はシェルにワイルドカードを解釈されないようにクォーティングしないといけない。

リモートホストのホームディレクトリに.rhostsが無いと実行できない。
(コマンド ftp,rsh,rlogin)
(設定ファイル ~/.rhosts)

reboot システムを再起動する

リブートする際は rebootコマンドを使ってもいいし、shutdown -r now でもいい。
(コマンド shutdown)

rehash ハッシュテーブルを再構築する。csh・tcshの内部コマンド。

コマンドをタイプしたとき、シェルは実行可能ファイルを見つけるために、毎回パスで指定されたディレクトリを検索するわけではない。ハッシュテーブルに実行可能なコマンドを登録し、そこからコマンドを呼び出している。このため、新しくシェルスクリプトを作ったり、パッケージをインストールした場合、実際はパスの通ったディレクトリに実行可能ファイルがあるにもかかわらず、そのコマンドがハッシュテーブルに登録されていないため、コマンドを見付けることができない場合がある。このようなときrehash でハッシュテーブルの再構築をすることで、シェルに新しいコマンドを認識させることができる。
% cd /home/user
% echo $path
/home/user/bin
% cat > bin/sample (bin/sampleにシェルスクリプトを作る)
#!/bin/csh -f
echo test
[Ctrl-D]
% chmod +x bin/sample (実行可能属性をつける)
% sample
sample: command not found.(/home/usr/binにはパスが通っているのにsampleを見付けられない)
% rehash (ハッシュテーブルを再構築)
% sample (実行できる)
test
また、この場合
% bin/sample
とパスを指定すれば実行することができる。
(環境変数 PATH)
(コマンド unhash)

renice 現在実行中のプロセスのプライオリティ(優先順位)を変更する

-u name 指定ユーザが実行したプロセスのプライオリティを変更する
プライオリティ
-20〜+20。数字が小さいほど優先順位が高くなる。つまり-20が最も高速に動く。一般ユーザは優先順位を下げることしかできない。優先順位を上げることができるのはスーパーユーザだけ。
例・renice +20 100 -u user1
プロセスID 100と、user1が実行したプロセスのプライオリティを+20に変更
(コマンド nice)

rlogin リモートログイン。

-l ユーザ名 ローカルホストとリモートホストでユーザ名が違う場合指定する。
rcpなどと同様に、リモートホストのホームディレクトリに .rhosts が無いと実行できない。
(コマンド rcp,rsh,telnet)
(設定ファイル ~/.rhosts)

rm ファイルの削除

% rm ファイル名
とすることで、ファイルを消すことができる。
% rm ファイル1 ファイル2 ファイル3 ...
だと、複数のファイルを削除する。

ディレクトリの削除には rmdir を使う。

-i 1つ1つのファイルについて本当に削除するか確認を求める
-R 再帰的に指定ディレクトリ以下を削除する
-f パーミッションに関係なく全て削除する(permission deniedなどで削除できないものは削除しない)。
あるディレクトリ以下を全て削除したい場合は
% rm -Rf ディレクトリ名
(コマンド rmdir)

rmdir ディレクトリの削除

削除するディレクトリの中にファイルやサブディレクトリがあってはいけない。
あるディレクトリ中にファイルしかない場合は、
% rm -R directory

% rm directory/*
% rmdir directory
は同じ。
(コマンド mkdir,rm)

rmuser システムからユーザを削除する。FreeBSDのみ。

/etc/passwd、/etc/groupから該当ユーザの削除、crontabデータの削除などを行う。
(コマンド adduser)

rsh リモートシェル

リモートホストhostにuserというアカウントがある場合は、
% rsh -l user host command
とする。
rcpと同様に、リモートホストのホームディレクトリに.rhostsが無いと実行できない。
(コマンド rcp,rlogin)
(設定ファイル ~/.rhosts)

rup ホストがブートしてからの時間、ロードアベレージを表示する

% rup ホスト名 指定のホストの情報を表示する
ホスト名を指定しない場合は、ローカルネットワーク内のホストの情報を表示する

sa 実行されたコマンドの統計を表示

saを実行するには、acctonでログを取っておく必要がある。
(コマンド ac,accton,lastcomm)

script コンソールへの出力をファイルに書き出す。

% script
と実行してから
% exit
とするまでのキータイプ、出力をファイルに保存する。デフォルトのファイルはtypescriptだが、
% script file

% exit
とするとfileに保存できる。

sed テキストの置換。

「s/aaa/bbb/」という書式で、文字列 aaa を 文字列 bbb に置換する。
% sed s/abc/def/ < file > file2
file 中の文字列 abc を def に変換して file2 に出力する
aaa の部分には正規表現を使うことができる。
% ls | sed 's/[a-z]/X/'
ls の出力の中の小文字のアルファベットを X に変換する。
よって、正規表現部分がシェルに解釈されないように、常に s/// を シングルクォート('') で囲むようにするとよい。

sed は各行に対して、最初に見付かった文字列しか変換を行わない。
% cat file
abcdefabc
012abc345bcabc
% cat file | sed 's/abc/ABC/'
ABCdefabc
012ABC345bcabc
この例では、いずれの行も最初に見付かった abc だけが ABC に置換され、後の方の abc はそのままになっている。フラグ g を付けることで全ての文字列を置換することができる。
% cat file | sed 's/abc/ABC/'
ABCdefABC
012ABC345bcABC
また、\(〜\) で囲んだ部分は、置換文字列で \数字 として後方参照することができる。
% cat file | sed 's/\([ad]\).\([cf]\)/\1X\2/g'
aXcdXfaXc
012aXc345bcaXc
この例では、[ad]にマッチした部分を \1 で、[cf]にマッチした部分を \2 で参照している。つまり \(〜\) で囲んだ部分は \1、\2、\3、\4、\5 … で参照することができる。

ちなみに perl の文字列置換機能である s/// は、sedが由来であることは言うまでもない。なお、sed より perl の正規表現に慣れている場合は、sed の代わりに
perl -pe 's/a/b/g'
を使う手もある。
(コマンド tr,awk,perl)
(参考書籍 sed&awkプログラミング)

sendmail メール管理プログラム

最も有名なMTA(Mail Transfer Agent)で、メールの送信・中継・受信を管理する。普通はメーラー(RMAIL、mew、netscapeなど)を使ってメールを管理するので、直接sendmailを実行する必要はないが、使い方を知っておいて損はないと思う。foo@bar.com宛にメールを送りたい場合、
% sendmail foo@bar.com
From: my@mail.address (あなたのメールアドレス)
To: foo@bar.com
Subject: This is test mail.
(改行が必要)
This is contents.
.(ドットのみの行を入力すると終了)
となる。また、mail.server.comで動いているSMTPサーバ経由でメールを送る場合は
% telnet mail.server.com 25
From: my@mail.address (あなたのメールアドレス)
To: foo@bar.com
Subject: This is test mail.
(改行が必要)
This is contents.
.(ドットのみの行を入力すると終了)
とすればよい。

set シェル変数を設定する

% set sample=test
シェル変数 $sample = testとなる
引数を省略すると、現在設定されているシェル変数を全て表示する。
(コマンド unset)

setenv 環境変数を設定する。

% setenv SAMPLE test (環境変数 $SAMPLE = test となる)
% printenv SAMPLE
test
% unsetenv SAMPLE ($SAMPLEを削除)
% printenv SAMPLE

引数を省略すると、現在設定されている環境変数を全て表示する。
(コマンド unsetenv,printenv,env)

sh シェル(Bシェル、ボーンシェル)

ユーザインタフェイスが弱いので、ログインシェルとしてはあまり使われないが、速度が速く書式が洗練されているので、シェルスクリプトの中ではよくつかわれる
(コマンド bash,csh,tcsh)
(設定ファイル ~/.profile)

showrgb X 上で使える色と、その名前の対応表を表示

% showrgb
255 0 0 red
0 255 0 green
0 0 255 blue
などと表示された場合、kterm -fg red -bg blue とすると、背景が青、文字が赤になる。
(コマンド xcolors)

shutdown システムをシャットダウンする

UNIXはマシンの電源をいきなり切ると、ファイルシステムが壊れてしまう可能性がある。マシンの電源を切る際は、必ず shutdown コマンドを使うこと。

シャットダウンの前に、ログインしている全ユーザにログアウトするように通知される。
-h システムを停止する (そのあと電源を切ればよい)
-r システムをリブートする
-k ログインしているユーザをログアウトさせる。実際にはシャットダウンしない

% shutdown -h now
いますぐシステムを停止する
% shutdown -r +3
3分後にシステムをリブートする

(少くともFreeBSDでは)shutdownを実行できるのは、operatorグループに属するユーザだけなので、一般ユーザ権限で shutdown を実行したい場合は、/etc/group の
operator:*:5:root
のところを
operator:*:5:root,hogehoge
などと書き換える。この例では root と hogehoge のみが shutdown を実行できる。
(コマンド reboot,halt,sync)

sleep 指定秒数だけ動作を止める

5分間(300秒)動作停止するには
% sleep 300
とする。

sort テキストをソートする(パイプ)

-c すでにソートされているかを調べる
-f 大文字と小文字の区別をしない
-m 複数のファイルをソートするとき、すでにそれぞれソートされている場合に指定。-mをつけなくてもソート結果は同じだが、高速になる
-r 逆順にソートする
-u 同一内容の行は1度しか表示しない。
% cat sample | sort
abc
def
def
ghi
jkl
jklmno
% cat sample | sort
abc
def (同じ行は一度しか表示しない)
ghi
jkl
jklmno
(コマンド uniq)
+数字 指定の数のフィールドに従ってソートする。
% ls -l (lsはファイル名に従ってソートしてから表示する)
-rw-rw-r-- 1 zxr400 zxr400 869083 Jan 23 22:09 RMAIL
-rw-rw-r-- 1 zxr400 zxr400 1721780 Jan 24 05:20 ba2.tgz
drwxr-xr-x 2 zxr400 zxr400 1024 Jan 23 21:01 bin
-rw-rw-r-- 1 zxr400 zxr400 4540 Jan 26 17:34 english.dvi
% ls -l | sort +4 (4番目のフィールド=ファイルサイズのフィールドに従ってソート)
drwxr-xr-x 2 zxr400 zxr400 1024 Jan 23 21:01 bin
-rw-rw-r-- 1 zxr400 zxr400 4540 Jan 26 17:34 english.dvi
-rw-rw-r-- 1 zxr400 zxr400 869083 Jan 23 22:09 RMAIL
-rw-rw-r-- 1 zxr400 zxr400 1721780 Jan 24 05:20 ba2.tgz
% ls -l | sort +6 (6番目のフィールド=作成時刻のフィールドに従ってソート)
-rw-rw-r-- 1 zxr400 zxr400 1721780 Jan 24 05:20 ba2.tgz
-rw-rw-r-- 1 zxr400 zxr400 4540 Jan 26 17:34 english.dvi
drwxr-xr-x 2 zxr400 zxr400 1024 Jan 23 21:01 bin
-rw-rw-r-- 1 zxr400 zxr400 869083 Jan 23 22:09 RMAIL
0番目のフィールドは行頭なので、sort +0とsortは同じ。

source ファイルに書かれたコマンドを実行する。csh、tcsh内部コマンド

source hoge とするのは、ファイルhogeに書かれた文字列を一つずつ自分の手でタイプしたのと同じことである。

例えば、~/.cshrcを書き変えたあと、その設定を有効にするためには、ログインしなおさずに
% source ~/.cshrc
とすると便利。
(コマンド csh,tcsh)

sox サウンドファイルのコンバータ

ファイル形式変換や、エフェクト効果をかけることができる。AIFF、au、raw、wave形式などに対応している。

AIFF形式のファイルsample.aiffをwave形式にコンバートする 場合は、
% sox sample.aiff sample.wav
toshaなどで吸い出したrawデータをwaveに変換する場合は、
% sox -t cdr out.raw out.wav
あるいは
% sox -s -c 2 -w -r 44100 out.raw out.wav
などとする(rawデータには周波数などを記録したヘッダがないので、各種のパラメータ、オプションで補完してやる必要がある)。

soxはフォーマット変換以外にも各種エフェクトをかけることができる。
% sox sample.aiff sample.wav echo 0.9 0.4
0.9秒後にオリジナルの0.4倍の音量でエコーをかける。
(少なくともこちらの環境では)音量変換の-vオプションが動かないようだ。
(コマンド mpg123,amp,sox,splay,tosha,8hz-mp3)

splay MP3、waveの再生ツール

(コマンド tosha,mpg123,amp,sox,8hz-mp3)

split ファイルを複数のファイルに分割する。結合はcatで行う。

-b num numバイトごとに分割
-l num num行ごとに分割

% split -b 1400k sample
sampleを1400キロバイトごとに分割。作られるファイル名はxaa、xab、xac、、、となる。結合は
% cat xaa xab xac > sample
とすればよい(xaa xab xacの順番のとおりに結合される)。

% split -b 2m sample test.
sampleを2メガバイトごとに分割。作られるファイル名はtest.aa、test.ab、test.ac、、、となる。
(コマンド cat)

stars 星が流れるデモ

+、-で星の流れるスピードを変えられる。スペースキーで星が停止する。

startx X window system を起動する

FreeBSDの場合、/usr/X11R6/bin/startx であるが、その中で xinit を呼び、さらに xinitが X(/usr/X11R6/bin/X)を呼ぶ。

/usr/X11R6/bin/startx の最後の行の
xinit $clientargs -- $serverargs
を、
xinit $clientargs -- $serverargs 2> $HOME/.xsession-errors
と書き換えると、~/.xsessionの中で起こったエラーが~/.xsession-errorsに格納されるので便利。
(コマンド X,xinit)

stat ファイルの詳細な情報を表示

ファイル名、サイズ、ブロック数、ファイルタイプ(ファイル、ディレクトリ、named pipeなど)、パーミッション、UID、GID、i-node、リンク、最終アクセス時刻、更新時刻などを表示する。
(コマンド ls)

strings ファイルから文字列と思われる部分を探して表示する。

マニュアルのないプログラムのオプションを探す、などの用途がある。
-n num 表示する文字列の最低限の長さを指定する。-n 10なら10文字
以上の文字列を表示する。デフォルトは4。

strip 実行ファイルからリロケート情報とシンボルテーブルを削除する。

デバッグ用のデータを削除することで、実行ファイルのサイズを減少させることができる。実行形式がstripされているかどうか(=シンボルテーブルが付属しているかどうか)は、fileで調べることができる。
% ls -l a.out (サイズは97KB)
-rwxrwxr-x 1 user user 97583 Apr 24 22:23 a.out
% file a.out (not strippedとあるので、シンボルテーブルが付属していることがわかる)
a.out: FreeBSD/i386 compact demand paged dynamically linked executable not stripped
% strip a.out (シンボルテーブルを削除)
% ls -l a.out (サイズ減少)
-rwxrwxr-x 1 user user 32768 Apr 24 22:23 a.out
% file a.out (not strippedという記述がなくなった)
a.out: FreeBSD/i386 compact demand paged dynamically linked executable
(コマンド gcc,file,nm)

stty ターミナルの設定を行う

-a
-e
cols n コンソールの縦のサイズをnにする
rows n コンソールの横のサイズをnにする

su 他人の名前でログインする

引数を指定しないと、rootとしてログインする
-f ユーザの.cshrcを読み込む
-l 本当のログインのようにする
HOME、SHELL、PATH、TERM、USER以外の環境変数の設定は捨てられる
-m 環境変数をそのままに残しておく。
-m と -l を同時に指定すると、最後に指定したものが有効になる
% whoami
user1 (現在user1でログインしている)
% su user2
Password: user2のパスワード
% whoami
user2 (user2でログイン)
% su
Password: rootのパスワード
% whoami
root

sunclock 地球のどの部分に太陽の光があたっているかを表示

(コマンド luna,xephem)

suspend プロセスを一時中断する。シェルの内部コマンド。

シェルは C-cで終了させたり C-z でサスペンドさせることはできない。
(コマンド fg,bg,kill)

swapinfo スワップ領域の情報を表示

(コマンド df)

swisswatch スイスウォッチ。

sync ディスクキャッシュをフラッシュする

UNIXでは、ファイルへの書き込みがあるとOSが一時的にキャッシュし、後からまとめてディスクに書き込むことで、余計なディスクアクセスを減らしている。しかしOSを落とす際は、バッファをクリアしてディスクに書き込む必要がある。

sync はキャッシュをクリアして、未処理のディスク書き込みを強制実行させるコマンドである。

shutdown や reboot 、halt コマンドを実行する際は、内部で syncに相当する作業が行われるので、わざわざ sync を使う必要はない。
(コマンド shutdown)

tail ファイルの最終部分を表示(パイプ)

デフォルトでは、最後の10行を表示する。
-c number 最後のnumberバイトを表示
-n number 最後のnumber行を表示
-f ファイルを最後まで表示しても終了せず、それより後にファイルに追加される内容を表示する。
ログを監視する際に便利。
% tail -f /var/log/messages
のようにすると、/var/log/messages に追加された内容を順次表示する。
(コマンド cut,head)

talk 他ユーザとリアルタイムで話す。

対象のユーザが同じホストにログインしているなら
% talk user_name
対象のユーザがホストhostにログインしているなら
% talk user_name@host
talkをかけられたユーザの画面には、
Message from Talk_Daemon at 時刻 ...
talk: connection requested by talkかけた人@ホスト名
talk: respond with: talk talkかけた人@ホスト名
と表示されるので、
% talk talkかけた人@ホスト名
と入力するとtalkできる。
(コマンド mesg,phone)

tar アーカイバ。複数のファイルを1つにまとめる。

% tar cf tar_file file1 file2
file1、file2をまとめてtar_fileというアーカイブファイルを作る
% tar cf tar_file dir1
ディレクトリdir1以下のファイルをアーカイブしてtar_fileを作る
% tar cf - dir
ディレクトリdir以下のファイルをアーカイブして標準出力へ出力する
% tar rf tar_file add_file
tar_fileにadd_fileを追加する。
% tar tf tar_file
tar_fileにアーカイブされているファイルの情報を調べる
% tar xf tar_file file
tar_fileからfileを取り出す
% tar xf tar_file
tar_fileから全てのファイルを取り出す
% tar xf tar_file `tar tf tar_file|grep test`
tar_fileからtestを含むファイル名を持つファイルを取り出す

c tarファイルを新しく作る
f tarファイルを指定する
p パーミッションやowner、groupの情報を保存する
r tarファイルに追加する。zやZと一緒には使えない。
S 小さいファイルを効率よく扱う
t tarファイルの内容を表示する
v バーボーズモード(処理内容を詳しく表示する)
x tarファイルを展開する
z gzipで圧縮・解凍する。zオプションがあるのは GNU tar だけである。
tar ztf foo.tar.gz (gzip -dc foo.tar.gz|tar tf - と同じ)
O 抽出したファイルを標準出力に出力する(xオプションと併用)
Z compressで圧縮・解凍する
% tar Ztvf foo.tar.Z
-C ディレクトリ 展開時に指定のディレクトリに移動する。
ルートに展開したい場合は
% tar xvf /dir/foo.tar -C /
とする。これは
% cd / ; tar xvf /dir/foo.tar
と同じ。
(コマンド gzip,xtar,lha,unzip)

tbl troff用テーブルフォーマッタ

tcpdump ネットワーク上を流れるパケットを監視する

FreeBSDでは、カーネルコンフィグに
pseudo-device bpfilter 4
を追加して、カーネルを再構築しなければならない。

tcsh cshのユーザインタフェイスを強化したシェル

cshに補完機能、completeなどを加え、ユーザインターフェイスを強化したもの。その他はほとんどcshと同じ(とはいえ、細かなところは結構違う)。
(コマンド bash,sh,csh,complete,bindkey)

初期設定ファイルの書き方は ~/.tcshrc の項を参照。
(設定ファイル ~/.cshrc,~/.tcshrc)

tee パイプからの入力を標準出力と指定ファイルに書き出す(パイプ)

あるコマンドの出力をパイプを使って他のコマンドに渡したいが、画面にも表示したい、
という場合、tee を使う。
% ls | tee sample
total 954
-rw-rw-r-- 1 user1 user1 684 Feb 26 15:11 sample1
-rw-r--r-- 1 user1 user1 422 Feb 26 10:24 sample2
% cat sample
total 954
-rw-rw-r-- 1 user1 user1 684 Feb 26 15:11 sample1
-rw-r--r-- 1 user1 user1 422 Feb 26 10:24 sample2
このようにlsの出力とsampleの内容は同じになる。

`T'の文字の形のように、1つの流れを2つに分岐させるから、tee という名前が付いた、と聞いたことがあるようなないような。

telltc ターミナルの設定を表示。tcshの内部コマンド

ターミナルのサイズ、設定、キーボードのマッピング状況などがわかる。
(コマンド tcsh)

telnet リモートホストにログインする

foo.comにログインする場合、
% telnet foo.com (foo.comにログインする)
Trying 100.111.112.113...(100.111.112.113に接続)
Connected to foo.com (接続成功)
Escape character is '^]'. (Ctrl-]を押すとtelnetから抜けられる)
FreeBSD (foo.com) (ttyp3)
login: ログインネームを入力
Password: パスワードを入力
(ログイン成功)
-a ユーザネームを自動的に受け渡す。入力が必要なのはパスワードのみ。
(コマンド rlogin)
(設定ファイル /etc/services)

textutils テキスト処理パッケージ

textutilsはGNUが配布しているテキスト処理パッケージで、textutilsというコマンドがあるわけではない。
テキストを処理する基本的なプログラム群
cat,cksum,comm,csplit,cut,expand,fmt,fold,head,join,md5sum,nl,od,paste,pr,sort,split,sum,tac,tail,tr,expand,uniq,wc
が含まれている。ただし各OSが標準で用意しているコマンドもある。FreeBSD ではOS標準のコマンドと同名にならないように gcat、gcksum、gcomm などと、先頭に g を付けたコマンド名でインストールされる。(FreeBSDだけがそうなのかは不明。textutilsはg*というコマンドとしてインストールされるのかもしれない)
(コマンド cat,cksum,comm,split,cut,expand,fold,head,md5sum,od,sort,tail,tr)

tgif ドローツール

UNIXで図を書くときによく使われる。

time プログラムの実行時間を計測する

timeは、csh・tcshの内部コマンドと /usr/bin/time の2種類がある。
/usr/bin/time command
real commandの実行にかかった時間
user commandの実行中、ユーザモードだった時間
sys commandの実行中、システムモードだった時間
% time find . -name a
0.030u 0.249s 0:05.02 5.3% 32+293k 341+8io 4pf+0w
find . -name a というコマンドの実行には5.02秒かかり、そのうちユーザモードで0.030秒、システムのオーバーヘッドで0.249秒消費した。ファイルシステムからの読み込みが341回、書き込みが8回行われた。

tip リモートシステムに接続する(cu)

top プロセスの状態をリアルタイムに表示

メモリ消費量、スワップ消費量、各プロセスのプロセスID、メモリ消費量などがわかる。
-S swapper、pagedaemonなども表示する
-I アイドル状態のプロセスを表示しない
-d 秒数 指定の秒数が経過すると自動的に終了する
-U ユーザ名 指定のユーザ名のプロセスのみを表示
(コマンド ps,xcpustate,xsysinfo,xsysstats)

tosha CDからの音楽データ吸い出すツール

1998年11月現在では、SCSIのCD-ROMドライブにしか対応していない。

-d CDのデバイスを指定。デフォルトはcd0c
例: -d cd1c
-i CDに収録されている曲の一覧を表示
-t 曲番号 吸い出す曲のトラック数を指定
-s 曲番号 吸い出しを開始する曲のトラック数を指定
-e 曲番号 吸い出しを終える曲のトラック数を指定
-o ファイル名 吸い出したデータを出力するファイル名

例えばcd0cの3曲目を吸い出して、out.rawに出力するには
% tosha -d /dev/cd0c -t 3 -o out.raw
とする。out.rawは周波数、ステレオ/モノラルなどの情報が含まれていないraw(ナマの)データでなる。これを wave形式に変換するには soxを使う。
(コマンド cdcontrol,mpg123,sox,8hz-mp3)

touch ファイルのタイムスタンプを変更、ファイルを新規作成する

ファイルを新規に作成する場合は、
% touch sample
とすると、サイズが0のファイル sample が作られる。また、sample が既に存在した場合は、タイムスタンプを現在時刻に変更する。ファイルのタイムスタンプを任意の時刻に合わせたい場合は、-t オプションを使う。1月2日3時4分にしたいなら、
% touch -t 01020304 sample
とする。また、1998年12月5日20時51分にしたいなら、
% touch -t 199812052051 sample
とする。秒数まで設定する場合は`.'を付けて
% touch -t 199812052051.15 sample
とすればよい。

-c ファイルfileが存在しなかったら新しくファイルを作らない
-f ファイルのパーミッションを無視してタイムスタンプを変更する。
-a 最終アクセス時刻を変更する。
-m 最終更新時刻を変更する。

tput 

tr 1文字の置換を行う

% tr abc def < file
fileを読み込み、aをdに、bをeに、cをfに置換して表示する。abcをdefに置換するのではない
(コマンド awk,sed)

trace プログラム中のシステムコール呼び出し部分をトレース(SunOSのみ?)

アプリケーションがうまく動かないとき、原因を特定するのに非常に便利。「file not found」などというメッセージを表示して終了してしまうプログラムにtraceを使うと、どのファイルをオープンしようとしたのかがわかる
(コマンド truss)

traceroute ネットワークがどのように接続されているか表示する

-S パケットのロス率(何%のパケットが到着しなかったか)を表示する
(コマンド ping)

truss traceと同じようなものらしい

(コマンド trace)

twm 基本的なウィンドウマネージャ

X11R6ではデフォルトとして使われているウィンドウマネージャ。シンプルだが最低限の機能は持っている。
(コマンド afterstep,fvwm,fvwm2,fvwm95-2,enlightenment)

umask ファイル・ディレクトリ生成マスクの設定。シェルの内部コマンド。

(エディタでもtouchでも何でもいいから)ファイルを作成すると、そのファイルのパーミッションは、普通644 (rw-r--r--) となるはずである。これはもっともな話で、ファイルを作るたびにパーミッションが666 (rw-rw-rw-) や 777 (rwxrwxrwx) になっていては、いちいち chmod しなくてはならず、不便である。このように、新規作成したファイルのパーミッションを決めるのが、umask である。

umaskは、新しくファイルを作成する際に、許可*しない*ビットを示すものである。普通、ファイルの新規作成時はファイルの実行ビット(eXecute)は立てないので、umaskが022ということは、666から022を引いた644というパーミッションで新規ファイルが作られることになる。umaskが 002 なら 664 、 umask が 000 なら 666 となる。

umask を設定するには、
% umask 022
などとする。作成したファイルを誰にも見せたくなかったら、
% umask 066
とすればいいし、誰にでも読み書きしてほしかったら
% umask 000
とすればいい(もちろんお勧めはしないが)。引数を省略すると、現在の umask の値を表示する。
% umask
22

umask が影響を与えるのは、新規ファイル・ディレクトリの作成時だけであって、既に存在するファイルのパーミッションには全く影響を与えない。
(コマンド chmod)

umount マウントの解除

mountで設定したマウントを解除する。
% umount /cdrom
で、マウントポイント/cdromにマウントしたデバイスを切り離す。もし
umount: /cdrom: Device busy
というエラーになった場合、カレントディレクトリが /cdrom以下のディレクトリになっていないかチェック。他にも、プログラムが/cdrom以下のファイルを参照している場合も、Device busyとなる。
(コマンド mount)

unalias シェルの内部コマンド。aliasの設定を解除する。

(コマンド alias)

uname システムの情報を表示

-a 全ての情報を表示
-m ハードウェアの情報を表示
-r OSのリリースバージョンを表示
メーリングリストやNetNewsなどで質問するとき、自分の環境がよくわからなかったらとりあえず uname -a の出力をそのまま書いておくとよい。

uncomplete tcsh内部コマンド。completeの設定を解除。

(コマンド complete)

uncompress 圧縮ファイル(*.Z)を解凍する

-c 解凍結果を標準出力に書き出す。ファイル操作は行なわれない
-f 解凍して新しく作るファイルと同名のファイルが存在しても、確認せずに上書きする
-v 圧縮率を表示
(コマンド compress,zcat)

unexpand ファイル中のスペースをタブに変換する(パイプ)

(コマンド expand)

unhash コマンド検索にハッシュテーブルを使用しない。csh・tcsh内部コマンド。

コマンドがタイプされたとき、csh・tcshは内部ハッシュテーブルを使うことで高速化をはかっているが、unhashを実行すると、ハッシュテーブルを使わず
毎回環境変数PATHを参照するようになる。詳しくはrehashを参照のこと。
(コマンド rehash)

unlimit リソース制限を解除。csh・tcsh内部コマンド。

(コマンド limit)

unset csh・tcsh内部コマンド。シェル変数を削除。

(コマンド set)

unsetenv csh・tcsh内部コマンド。環境変数を削除。

(コマンド setenv)

uniq 連続する同じ行を1行にまとめる。sort -uと同じ。

% cat sample
abcdefg
abcdef
abcdef
abcde
% uniq sample
abcdefg
abcdef (同じ行は一度しか表示しない)
abcde
ただし、入力行はソートされていないとうまくいかない。
% cat sample2
abcdefg
abcdef
abcde
abcdef
% uniq sample2
abcdefg
abcdef
abcde
abcdef (ソートされていないので、同じ行を表示してしまう)
(コマンド sort)

unzip ZIP形式のアーカイブを展開する

(コマンド tar,gzip,zipinfo)

uptime ホストの情報を表示

% uptime
2:01AM up 3:04, 4 users, load averages: 1.30, 1.08, 1.05
現在の時刻は午前2:01、ホストが起動してから3:04経過、ログインしているユーザは4人、1分前、5分前、15分前から現在までのロードアベレージ(システムの負荷)はそれぞれ1.30 1.08 1.05

url_get URLを指定して、webページを取得する。

users 現在ログインしているユーザ名を表示

(コマンド finger,who)

uudecode テキストをバイナリファイルに変換

(コマンド uuencode)

uuencode バイナリファイルをテキストに変換

メールでバイナリファイルを送るときなどに使う。また、巨大なテキストファイルをgzipで圧縮してuuencodeするという使い方もある。元に戻すにはuudecodeを使う。

最近では、バイナリファイルを配布する際はマルチパートメールを使う、というやり方が主流かも。
(コマンド uudecode)

vi 基本的なエディタ

システム管理者にとっては必須のエディタ。viには編集モードと書き込みモードがある。最初は編集モードで、hjklでカーソル移動、xで削除などができる。ここでiを押すと書き込みモードになり、タイプした文字がそのまま表示される。ESCを押すと編集モードに戻るので、:w、:qでセーブ・終了できる。
h 1文字左に移動
j 1文字下に移動
k 1文字上に移動
l 1文字右に移動
x カーソルがある文字を削除
dd カーソルがある行全体を削除
a カーソルがある位置の次の文字から文字列を挿入(書き込みモードに移行)
i カーソルがある位置に文字列を挿入(書き込みモードに移行)
o カーソルがある行とその次の行の間に空行を挿入(書き込みモードに移行)
O カーソルがある行の次の行に空行を挿入(書き込みモードに移行)
yy カーソルがある行全体をコピーバッファに入れる
p カーソルがある行の次の行にコピーバッファの内容を挿入
/文字列 文字列を検索
:q viを終了
:q! セーブせずにviを終了
:w ファイルをセーブ
:w file-name ファイル名を指定してセーブ
(コマンド elvis,mule,view)

view viと同じ操作方法のビュアー

viをリードオンリーモード(vi -R)で起動したものと同じ
(コマンド vi)

vipw パスワードファイルを編集する

パスワードファイルには、/etc/passwdと/etc/master.passwdがあるので、ファイルを直接エディタで書き換えると、2つのファイルの間に矛盾が発生する可能性が高い。vipwを使うと、自動的に2つのファイルの整合性を取ってくれる。
vipwはrootしか実行できない。また、環境変数EDITORで指定されているエディタが自動的に起動される。
(コマンド passwd,pwd_mkdb)
(設定ファイル /etc/passwd,/etc/master.passwd)

vmstat 仮想メモリの状態を表示

w 現在ログイン中のユーザ名と、各ユーザが実行中のプロセス名を表示する。

ログイン中のユーザ名は/var/run/utmpに書かれている。また、起動時刻 稼働時間 ログイン中のユーザ数 ロードアベレージを表示する
-h 起動時刻 稼働時間 ログイン中のユーザ数 ロードアベレージを表示しない
-i 端末のアイドル時間(入力を待っている時間)が短い順にソートして表示

wc ファイルの行数、単語数、サイズを表示(パイプ)

% wc file.dat
289 1726 78251 file.dat
これは289行、1726単語、78251バイトのfile.datというファイルである、という意味
-c サイズのみを表示
-l 行数のみを表示
-w 単語数のみを表示

weblint HTMLの文法をチェックする

% weblint sample.html
sample.htmlの文法をチェック
% weblint http://host.domain.ac.jp/sample.html
URLで指定することもできる。デフォルトではダウンロードにはlynxを使う
-warning 全てのチェック項目を表示する
-d チェック項目 指定のチェック項目をチェックしない
-e チェック項目 指定のチェック項目をチェックする
チェック項目は -warning オプションでわかる
-x 拡張HTMLを認識する
-x Netscape Netscape拡張HTMLを認識する
-x Java Java拡張HTMLを認識する(APPLETタグ、PARAMタグ)

workman CD プレイヤー

GUIインタフェースを持ち、シャッフル、曲順プログラム、一度そのCDの登録すると次回からはそのデータ(指定の曲をスキップするなど)を自動的に認識する、などの特徴を持つ。
-c CDのデバイス名
% workman -c /dev/wcd0c CDのデバイスをwcd0cに指定する
-d CDのタイトル、歌手名などを表示しない
-s コマンド コマンドを実行させる。コマンドはplay、stop、play、pause、ejectなど
(コマンド cda,cdcontrol,cdplay,cdplayer,workman,xmcd)

whatis コマンドの簡単な使い方を表示する。

(コマンド man)

where コマンドのフルパスを表示。csh、tcsh内部コマンド

whereはあるコマンドを打ったとき、実際にどのコマンドが実行されるのかを、エイリアス、ビルトイン、パスを元にして調べて、それらの全てを(実際は実行されないものまで)表示する。一方、whichは最初に見付かったコマンド名だけを表示する。
% which grep
/usr/bin/grep
% alias grep egrep
% which grep (最初にマッチしたものだけ表示)
grep: aliased to egrep
% where grep (エイリアスも実行ファイルも全て表示)
grep is aliased to egrep
/usr/bin/grep
/usr/local/bin/grep
(コマンド which)

whereis コマンド、ソース、マニュアルのパス名を検索して表示する

% whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/src/bin/ls
lsコマンドの/bin/lsにあり、マニュアルは/usr/share/man/man1/ls.1.gz、ソースは/usr/src/bin/lsにあることがわかる。

which コマンドのフルパスを表示。csh、tcsh内部コマンド

コマンドをタイプしたとき、エイリアス、ビルトイン、パスなどの設定を元に、実際はどのコマンドが実行されるのか調べる。これとは別に/usr/bin/whichもあるが、こちらはシェルのビルトインコマンドの扱いがうまくいかない。
(コマンド where)

who 現在ログインしているユーザ名を表示する。

(コマンド finger,users)

whois ネットワークの企業・個人情報を調べる

-h データベースの置いてあるホスト名
JPドメインなら -h whois.nic.ad.jp とする
% whois -h whois.nic.ad.jp gunma-u.ac.jp
gunma-u.ac.jpの正式名称、住所などを表示する
com、net、orgなどのWorld Wideドメインなら -h whois.internic.com とする
本来はネットワーク管理者用のコマンドなので、一般ユーザの乱用は避けること

wish シンプルウィンドウシェル?

tcl/Tkが動く??

write ログイン中の他ユーザにメッセージを表示する

user1の端末に test という文字を出力する。
% write user1
test
(Ctrl-d)
user1がログインしていなかったり、user1がmesg nとしていたらうまくいかない。
(コマンド mesg,phone,talk)

wwwstat WWWサーバのログを解析する。

WWWサーバ(基本的にapache)のログから、アクセス数、転送バイト数、アクセス元のホスト名などの解析を行う。解析結果はHTML形式で標準出力に出力される。

X Xサーバ

FreeBSDの場合はフルパスは /usr/X11R6/bin/X。ビデオカードに対応したXサーバへのシンボリックリンクとなっている。普通、Xサーバを起動する場合は、startxを実行する。その中で xinitが呼ばれ、さらにその中で X が呼ばれる。
-probeonly ビデオカードの設定などをチェックして表示する。Xは起動されない
(コマンド xinit,startx)

xanim アニメーション、音声データを表示

画像・動画フォーマットはGIF87a、GIF89a、JPEG、MotionJPEG、Cinepak、Quicktimeなど、音声フォーマットはデータはau、wavをサポートしている。

xarchie FTPサイトのファイルを検索する

anonymous FTPサイトは数多くあるので、どのサイトにどのようなファイルが置いてあるのか、サイズやタイムスタンプは、などを人間がいちいち調べるのは難しい。そこで archieホストという、FTPサイトのファイルの情報がまとめたホストができた。どのFTPサイトにどのようなファイルがあるかは、archieホストに接続して検索すればよい。ただしリアルタイムで更新されるわけではないので、古い情報を保持している場合もよくある。
-host archieホストの設定。例えば archie.kuis.kyoto-u.ac.jp などがある。
-maxhits num 最大ヒット数の設定。デフォルトは200
-r ファイル名の指定を正規表現で行う
(コマンド archie,ncftp,ncftp2,ftp)

xaudio MPEG AUDIO プレイヤー

-volume=ボリューム ボリュームを指定する(0〜100)
(コマンド amp,mpg123,mxaudio)

xbiff メールの到着を知らせる。biffのXアプリケーション版。

-update sec sec秒ごとにメールが着信していないかどうか調べる。デフォルトは30。
-file filename メールが配信されるファイル名を指定する。デフォルトは/usr/spool/mail/$USER。
% xbiff -file /var/mail/$USER
-volume n メールが到着した時に鳴らすビープ音の音量。0<=n<=100
(コマンド biff,from,xpbiff)

xbill ビルゲイツをやっつけるゲーム

ビルゲイツOSが他のOSに感染するのを防ぐゲーム。要はモグラたたき

xboing ブロック崩しゲーム

xcalc 電卓。Xアプリケーション

(コマンド bc,calc,dc,hexcalc)

xcalender メモ機能を持つカレンダー

毎日の予定やメモを書き込むことができる。
(コマンド cal)

xcb カットバッファ

xcolors 色のサンプルを表示

(コマンド showrgb)

xconsole コンソールの出力を監視する。

多くのプログラムは、システムに報告すべきデータがある場合、/dev/consoleにメッセージを\
出力する。例えばsuでrootになったとき、
Oct 16 18:34:15 hostname su: username to root on /dev/ttyp0
などと/dev/console宛に出力される。

そのメッセージを監視するためのプログラムがxconsole。また、kterm -Cだと通常の端末機能に加えて、コンソールの出力も表示する。xconsoleはコンソールのみの監視しかできない。

FreeBSDの場合、標準では/dev/consoleを見ることができないので、/etc/fbtabに
/dev/ttyv0 0600 /dev/console
と書いておけばいい。kterm -Cも同じ。
(コマンド kterm)

xcpustate CPUの状態をグラフで表示

(コマンド top,xsysinfo,xsysstats)

xdaliclock モーフィングしながら動く時計

-cycle カラーで表示
-12,-24 12時間表示、24時間表示
-nosecond 秒を表示しない
-noshape ウィンドウの外枠を表示しない。
-font フォントを設定。しかしデフォルトのような大きいフォントは無いらしい
-builtin2 デフォルトより大きいフォントを使う
-root ルートウィンドウに時計を表示
-fullscreen 画面全体に時計を表示。画面全体のサイズのウィンドウを表示する。
-rootとは違い、他のウィンドウとの重ね合わせの関係を変えることもできる。
(コマンド oclock,dclock,clock,xclock,emiclock)

xdtm ファイラー

xdpyinfo Xサーバの情報を表示

(コマンド xprop,xwininfo)

xdu duの出力をグラフィカルに表示する

-s 各ディレクトリのサイズを表示しない
-n サイズの大きいディレクトリ順に表示する
-rn サイズの小さいディレクトリ順に表示する
% du | xdu
(コマンド du)

xdvi DVIファイルのビュアー

-expert ボタンを表示しない
-ps DVIファイル中に表示されるPostScriptファイルを表示する。デフォルトでは、PSファイルが表示される場所は、枠だけが表示される。
キー操作
(数字) n 1ページ進む(数字を指定した場合はその数だけ進む)
(数字) p 1ページ戻る(数字を指定した場合はその数だけ戻る)
数字 s 解像度を指定
R ファイルをリロードして再表示
x 右のボタンなどの領域を表示/非表示
m 現在表示しているページをマークする
' 最後にマークしたページに移動する
q 終了
C-g ポストスクリプトファイルを表示/非表示
(コマンド dvi2tty,jlatex)

xearth ルートウィンドウに地球を表示

-proj mercator メルカトル図法で地球を描く。この場合背景の星は描かれない。デフォルトは正距方位図法(?)。この場合-proj orthographicとする。
-pos fixed,[-]n1,[-]n2" 北緯(南緯)n1°・東経(西経)n2°を中心として表示する
-rot n 地球をn°傾ける
-noshade 地球に影をつけない
-label 画面に日時や太陽の情報などを表示
-labelpos geometry labelを表示する位置を指定。(要-labelオプション)
-nomarkers 主要都市名を表示しない
-markerfile ファイル名 都市名の位置の情報を示すファイル名
ファイルの内容の例
36 139 "GUNMA" # 北緯36°・東経139°にGUNMAを表示
-showmarkers xearthのデフォルトの都市名の情報を表示
-nostars 背景の星を表示しない
-starfreq n 背景の星の発生頻度を指定。0<=n<=1。0で星を表示しない。1で全天がほとんど星で埋まる。デフォルトは0.002
-bigstars n 背景の星の中で、明るい星の占める割合 0<=n<=100。デフォルトは0
-grid 地球表面に緯度線・経度線を描く
-grid1 n 緯度線・経度線の本数。デフォルトは6
-grid2 n 緯度線・経度線の点線の設定。デフォルトは15。0に近いほど線は点線に近く、100に近くなると実線になる。
-day n 太陽光線の強さを設定する。0<=n<=100。デフォルトは100
-night n 太陽光のあたらない部分の暗さを設定する。0<=n<=100。デフォルトは5。0で夜の地域はまっ暗に、100で昼の地域と変わらず明るく表示される
-term 昼と夜の地域の間のシェーディングの設定。0<=n<=100。デフォルトは1。100で昼と夜の境がくっきりと表示される
-gamma ?明るさを変えるらしい
-wait n 何秒ごとに画面を書き換えるかを指定する。デフォルトは300(5分)
-mono モノクロ表示
-ncolors 表示に使う色数を指定
-font 主要都市名、label用のフォントを指定
-fork バックグラウンドで実行する。xearth &と同じ。
-once 一度だけ地球を表示して終了する
-nice n プライオリティを指定
(コマンド nice,renice)
-gif ルートウィンドウに描かず、GIFフォーマットで標準出力に書き出す
-ppm ルートウィンドウに描かず、PPMフォーマットで標準出力に書き出す

例・xearth -pos fixed,35,135,-labelpos -10+10

xengine 4サイクルレシプロエンジン

rpm(毎分の回転数)が表示されるので、ベンチマークとして使われている?

xephem 地球、月などの天体情報を表示

(コマンド luna,sunclock)

xev イベントを表示

起動するとウィンドウが表示され、そのウィンドウに渡されるイベントが表示される。ウィンドウの上でマウスの移動、クリック、マウスポインタのフォーカスイン・アウト、expose、ウィンドウの移動、キーボードからの入力などが表示される。
Xアプリケーションのプログラミングや、xmodmapの設定時にキーコードを調べるときによく使われる。

xevil ゲーム

xeyes マウスポインタを追いかける目玉を表示

-shape ウィンドウの外枠に四角の枠を使わない(デフォルト)
-noshape ウィンドウ
(コマンド xeyes+,xgolgo)

xeyes+ マウスポインタを追いかける目玉を表示

初めて見たときは、ちょっとびっくりした。
(コマンド xeyes,xgolgo)

XF86config Xの設定を行う。

XFree86 3.2以降は、GUI環境でセットアップができるXF86Setupを使った方が便利
(コマンド XF86Setup)
(設定ファイル /etc/XF86Config)

XF86Setup Xの設定を行う。XFree86 3.2から付属。

マウスの設定をするまではマウスにさわってはダメ! フリーズしてしまう。設定内容は/etc/XF86Configに書き出される。
(コマンド XF86config,xmseconfig)
(設定ファイル /etc/XF86Config)

xfd 指定フォントの各文字の情報を見る。指定フォントの各文字が表示され、各文字をクリックすることで、その文字の高さ・幅などがわかる

-fn フォント名の指定
-box 各文字を長方形で囲んで表示
-bc -boxで描かれる長方形の色を指定
-center 各文字を枠の中央に表示
-start n フォントのn文字目から表示
-rows n ウィンドウに描かれる縦の文字数を設定
-columns n ウィンドウに描かれる横の文字数を設定
-columns 8 -rows 10 で、ウィンドウに8x10の文字が一度に描かれる。
他の文字を見るにはprev page、next pageをクリックする

xfm GUI環境を持つファイルエディタ

-appmgr アプリケーションウィンドウのみを表示
-filemgr ファイルウィンドウのみを表示

xfmail メイルユーティリティ

xfontsel Xのフォントを対話的に見る

(コマンド xlsfonts)

xftp インタラクティブなftpツール

ports/package名はmoxftpなので注意。

xgal ギャラガ(ゲーム)

パッケージ名はxgalaga

xgc Xのグラフィックデモ

xgolgo マウスポインタを追いかける目玉を表示

俺の後ろに立つな。
(コマンド xeyes,xeyes+)

xhost Xサーバへのアクセスを許可する

+ホスト名 指定したホストからのXサーバへのアクセスを許可する。xhost +とすると全てのホストからアクセス可能になる。
(環境変数 DISPLAY)

xinit Xサーバを起動するプログラム

(コマンド X,startx)

xkeycaps キーボードの設定

xkill Xアプリケーションを終了させる

引数無しで実行すると、マウスポインタの形が変わるので、終了させたいアプリケーションのウィンドウをクリックする。
-all 全てのXプログラムを終了する
(コマンド kill)

xless ファイルのビュワー

xless-1.7では日本語が通らない。残念。
(コマンド less)

xli 画像をX上で表示する。xloadimageの発展版。

(コマンド xv,xsetroot)

xload システムの負荷を表示する

-update 秒 指定の秒ごとに負荷を表示する
(コマンド top,xsysinfo,xsysstats)

xloadimage 画像を表示

(コマンド xev,xli)

xlock X画面のロック

Xの画面をロックしてキー入力を受け付けないようにする。パスワードを入力すると解除される。一時的に端末やPCの前を離れるときに使うものだが、学校の共用端末で
使うと管理者に怒鳴られることもある(笑)。どうやら、現在は xlockmoreというパッケージ名で配布されているらしい。

~/.xlocktext 、~/.plan 、~/.signature に好きな文章を書いておくと、パスワード入力時に、
その文章が表示される。

xlockを起動するたびに、いろいろなロック画面がランダムで選ばれる。バージョン4.11(xlockmore-4.11)では、
ant ball bat blotbouboule bounce braid bubble bug cartoon clock coralcrystal daisy dclock deco demon dilemma discrete drifteyes fadeplot flag flame flow forest galaxy goop gravhelix hop hyper ico ifs image julia kaleid laser lifelife1d life3d lightning lisa lissie loop mandelbrot marqueemaze mountain munch nose pacman penrose petal puzzle pyroqix roll rotor shape sierpinski slip sphere spiral splinestar strange swarm swirl thornbird triangle tube turtlevines voters wator wire world worm blank bomb random
の全82種類のパターンがある。
% xlock -mode パターン名
とすることで、パターンを明示的に指定できる。パターンを指定しないとランダムに選ばれる。

どーでもいいようなモードと、どーでもいいようなオプションが山のようにある。全部調べてみるつもりだったが、さすがに無理だった。以下はごく一部のオプションの説明。

-nolock パスワードによるロックをしない。
キーを押すかクリックすることで元に戻る。全パターンを見たい人向け。
-use3d bouboule pyro star worm モードにおいて立体画像を描く。
いわゆる赤と青の3Dメガネを付けると、立体的に見えるらしい。-right3d、-left3d オプションで、右目と左目の色を変更可能。
(コマンド lock)

xlogo X のロゴを表示

xlsclients X上のプログラムのインフォメーションを表示

-l より詳細な情報を表示。

xlsfonts 使用可能なフォント名の一覧を表示

-l 詳細なフォントの情報を表示
-ll より詳細なフォントの情報を表示
-lll さらに詳細なフォントの情報を表示
フォント名の指定は -fndry-fmly-wght-slant-sWdth-adstyl-px1sz-ptSz-resx-resy-spc-avgWdth-rgstry-encdng という形で指定する。

例・-Misc-Fixed-Medium-R-Normal--14-130-75-75-C-70-ISO8859-1
(コマンド xfontsel)

xman オンラインマニュアルビュアー

-bothshown マニュアルとマニュアルの目次を同時に表示する
-notopbox 最初に表示されるメニューウィンドウを表示しない
(コマンド man)

xmandel マンデルブロ画像を描く

xmcd CDプレイヤー

-dev device CD-ROMのデバイス名
(コマンド cdcontrol,cdplay,cdplayer,workman)

xmessage メッセージウィンドウを表示

-buttons string[,string2..] 確認ボタンの中に文字列stringを表示する。-buttons ""で確認ボタンを非表示にできる
-file filename ファイルの内容を表示
-timeout sec sec秒間クリックを待って終了する
-center 画面の中央にメッセージウィンドウを表示
-nearmouse マウスポインタの近くにウィンドウを表示
% xmessage sample -button test1,test2,test3
sampleとかかれたメッセージウィンドウ、test1〜3の3つのボタンが表示する

xmodmap X上でのキーをカスタマイズする

キーコードを調べるには、xevを使う。
(コマンド xev)

xmseconfig X のマウスの設定を行う

XFree86付属のプログラム。XF86Setupからマウス設定部分を抜き出したもの。
(コマンド XF86Setup)

xneko ねこがマウスを追いかける

(コマンド oneko)

xntpd NTPサーバ。

ntpdateなどのNTPクライアントから送られてくるntpプロトコルを処理し、正確な時刻を送り返す。
(コマンド ntpdate)

xpaint ペイントツール

(コマンド gimp)

xpbiff メールの着信を知らせる。

基本的な機能はxbiffと同じだが、メールの受信時にウィンドウの中が回転し、メールの差出人、サブジェクトなどが表示される。
(コマンド biff,from,xbiff)

xphoon ルートウィンドウに月面を表示

-t n n分ごとに画面を書き換える。デフォルトは一度画面を描いて終了
-i プロセスIDを表示(要-tオプション)
-b 地球からの反射光を考慮しない。太陽光のあたらない部分はまっ暗になる
(らしいが-bをつけない場合との違いがないように感じた)

xprop ウィンドウのプロパティを表示

(コマンド xdpyinfo,xwininfo)

xrdb Xのリソースを設定する

Xのリソース設定とは、第二の環境変数のようなもので、Xアプリケーションの設定を決めることができる。
環境変数は子プロセスにだけ引き継がれるが、リソース設定は一度設定した内容は全Xクライアントに反映される。
ただ、Xクライアントは起動時のみにリソースを参照するので、

~/.Xresourcesや~/.Xdefaultsに、例えば
KTerm*VT100*geometry: 90x45
などと書いて、
% xrdb -merge ~/.Xresources
としてからktermを起動すると、ウィンドウのサイズが90x45になる。これは
% kterm -geometry 90x45
としても同じことである。タイプがめんどくさいなら、
% alias kterm kterm -geometry 90x45
とすればよい。ただ、これではウィンドウマネージャのメニューからktermを起動した場合は -geometryが認識されない。もちろんウィンドウマネージャの設定ファイルにも「kterm -geometry 90x45」と書けばできなくはないが、ここでktermが91x50で開くように設定を変更する場合、aliasを設定したファイルとウィンドウマネージャの設定ファイルの両方を書き換えなければならない。

ここにリソース設定の存在意義がある。つまりXアプリケーションの設定を一元管理できるわけである。
具体的なリソース設定の書き方は~/.Xresourcesの項を参照してほしい。

-merge リソース内容をマージする
システムデフォルトのリソース設定もあるので、自分専用のリソースを設定する場合は、-mergeオプションを付けてマージすること。
-query 現在設定されているリソースを表示する。
-remove 現在設定されているリソース設定をクリアする。
(設定ファイル ~/.Xdefaults,~/.Xresources)

xrefresh X画面を再描画

-solid color colorの色で画面全体を埋めてからウィンドウを再描画。
例えば -solid red とすると、画面が一瞬赤く光ってから再描画される。
-root ルートウィンドウで画面を再描画してからウィンドウを再描画
-geometry WxH+X+Y 指定の範囲を再描画

xroach ウィンドウの下をゴキブリが這う

xscreensaver スクリーンセーバ

xscreensaver-command xscreensaverに命令する

xsm X session manager

xset Xの各種設定を行う。

マウスやキーリピートなどの設定を行なう。
b on/off ビープ音を鳴らす/鳴らさない
m num1 num2 しきい値num2以上にマウスポインタを動かすと、マウスポインタの動きがnum1倍になる。
% xset m 4 1
1ドット以上マウスを動かすと、マウスポインタの動きが通常の4倍になる
q 現在の設定を表示
r on/off キーリピートをする/しない
dpms 省電力モード(モニタ)に移行するまでの時間を設定
% xset dpms 60 120 180
キー・マウス入力が1分間途切れるとモニタを省電力モードにする。

xsetroot ルートウィンドウに白黒の画像を張り付ける。

扱える画像フォーマットに制限がある。xvを利用した方がいい。
-def デフォルトの背景を張り付ける。
(コマンド xv,xli)

xtacy いろいろな画像を描く

-lock X画面をロックする
-root ルートウィンドウに画像を描く
29種類のパターンがあり、以下の1つを指定する
-bez -boxes -bozo -circ -qix -qix4 -cells -clover -cube -dog -field -funky -gravity -kaleid -life -julia -mandel -newton -mixer -off -plasma -spiral -star -static -swarm -taffy -test -tunnel -wander
(コマンド xscreensaver)

xtar GUIインタフェースを持つtar

(コマンド tar)

xterm X上での端末エミュレータ。日本語を表示する場合はktermを使う。

オプションなどはktermの項で説明する。
(コマンド kterm,Eterm)

xsysinfo システムの状況をグラフで表示

(コマンド top,xcpustate,xsysstats)

xsysstats システムの状況を表示

(コマンド top,xcpustates,xsysinfo)

xv 多機能グラフィックツール。

対応している画像フォーマットは
GIF, JPEG, TIFF, PBM, PGM, PPM, X11 bitmap, Utah Raster Toolkit RLE,
PDS/VICAR, Sun Rasterfile, BMP, PCX, IRIS RGB, XPM, Targa,
XWD, possibly PostScript, and PM formats on workstations
and terminals running the X Window System, Version 11.
マニュアルは/usr/X11R6/share/doc/xv/xvdocs.psにポストスクリプト形式で置いてある
-root ルートウィンドウに張り付ける
-quit 画像を表示してプロセスを終了する
Xの起動時に、背景に好きな壁紙を貼りたい場合は、.xsessionに
% xv -root -quit file.jpg
などと書いておけばよい。
(コマンド display,xsetroot,xli,ImageMagick,netpbm)
(設定ファイル ~/.xsession)

xwd ウィンドウの画像をダンプする

% xwd > sample.wd
として、ダンプしたいウィンドウでマウスをクリックすると、sampleにウィンドウの画像データが入る。それを表示するにはxwud、xv、displayなどを使う。
FreeBSD2.2.5では、xvで表示すると全体の色がおかしくなった。
-add 数字 各ピクセルに指定の数を加える(全体にマスクをかける)
-frame 選択したウィンドウのフレーム(枠・タイトル)もダンプする
-name windowname 指定したウィンドウ(ウィンドウのタイトル名)をダンプする
-root 画面全体をダンプする
(コマンド xwud,xv,display,import)

xwininfo 指定されたウインドウの情報の表示

ウィンドウのサイズ、ジオメトリなどを表示する。引数なしで実行するとマウスがクリックされるのを待ち、クリックされたウィンドウの情報を表示する。
-root ルートウィンドウの情報(解像度など)を表示
-name windowname 指定ウィンドウ(ウィンドウのタイトル名)の情報を表示
(コマンド xdpyinfo,xprop)

xwud xwdで作ったファイルを表示する

xwdでダンプした画像データを sample.wd とすると、
xwud -in sample.wd
で表示できる。また、xv、displayでもxwd形式のデータを表示できる。
(コマンド display,xv,xwd)

yacc 構文解析パーサ生成プログラム

Yet Another Compiler Compilerの略。例えば、HTMLは
<HTML>
<HEAD>
<TITLE>
</TITLE>
</HEAD>
<BODY>
</BODY>
</HTML>
という構成をしている、と記述しておけば簡単にHTMLチェッカが作れる。ただし面倒なのはエラーが起こったときで、もし</HEAD>が抜けていたとしても普通は syntax error と表示されるだけである。「</HEAD>が抜けている」というメッセージを出すためにはいろいろと工夫が必要。
(コマンド lex,flex,bison)

yes 指定の文字列を表示し続ける。

文字列を指定しないとyを表示し続ける。使い方がよくわからないのだが、
yes|find . -name '*' -ok ls {} \;
のようなものではないかと思う。

zcat 圧縮されたファイルの内容を表示。実行ファイルはgzipと同じ。

(コマンド gzip,gzcat,gunzip)

zdiff 圧縮されたファイルをdiff

zforce ファイル名を*.gzにする(?)

一度gzipで圧縮されたファイルが、ファイル転送などでファイル名が短くなって.gzが削られたとき、再びgzipが圧縮しないように、.gzを付け直す?。zforceはシェルスクリプトなので調べてみて下さい。

zipinfo ZIP形式のアーカイブの情報を表示

(コマンド unzip)

zmore 圧縮されたファイルの内容を表示する

環境変数PAGERによって起動するページャを変える
(コマンド gzip,compress,more,less)

znew .Z(compress)ファイルを.gz(gzip)に変換

(コマンド gzip,compress)