**目次**
Navigatorショートカットキー【Netscape Navigator】
statのモード【C,Perl,Fortran】
DNS解決確認クライアントについて 【BIND】
インストールされているサーバのヴァージョンを調べる 【汎用】
tar.gz、tar.bzip2解凍方法の基本 【UNIX全般】
Linuxカーネルのアップグレードと再構築 【Linux】
ファイル名の補完 【シェル】
ライブラリパスの通し方 【UNIX全般】
make時にうまくいかずに焦った時は 【UNIX全般】
サイトのミラーリング 【wget】
Apache設定ファイルの設定確認 【apache】
コマンドラインからファイル入力を行う 【UNIX全般】
作業の一時中断および再開(FTPの例) 【UNIX全般】
"find" Tips 【UNIX全般】
ファイルの種類を知るには 【UNIX全般】
シグナル一覧 【UNIX全般】
リダイレクション一覧 【シェル全般】
cronの振る舞い 【UNIX全般】
psの便利なオプション 【UNIX全般】
コマンド「id」 【UNIX全般】
vi Tips 【vi】
csh使用宣言のfオプション【csh】
tailの便利なオプション 【UNIX全般】
grepの便利なオプション 【UNIX全般】
インストール前のmanファイルを読むには 【UNIX全般】
mailコマンドの便利なオプション 【UNIX全般】
コマンドの連続実行 【UNIX全般】
envコマンドの便利な使い方 【UNIX全般】
pidof, killallコマンド 【UNIX全般】
**Link**
Windows Tips
Perl Tips
Adobe Acrobat Tips
Bits of knowledge(豆知識)
その他のTips
項目 | UNIX | Windows |
---|---|---|
ブックマークに追加 | --- | [Ctrl]+[D] |
ブックマークを表示 | [Alt]+[B] | [Ctrl]+[B] |
URIを指定 | [Alt]+[O] | [Ctrl]+[O] |
(2001.4.10 記)
▲top
UNIXのシステムコールstat(2)によりファイルのステイタスを取得する(C,Perl,Fortranのstat関数による取得法を下部に記す)。
さてその時に「モード」(Cならst_mode、Perl・Fortranなら3番目に入っている値は何か。ファイルのモードの10進数である。8進数にすればお馴染みの数値に変わる。
(例:mode=33261の場合、8進数にすると0100755(100755でないことに注意)。即ち"010=普通のファイル"、次の"0"はset-user-ID,set-group-ID,sticky、次の"755"がパーミッション)。
【C】
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
void main(void)
{
struct stat buffer;
stat("filename", &buffer);
printf("st_mode:%ld\n", buffer.st_mode);
}
【Perl (Standard style)】
$mode = (stat filename)[2];
print 'filemode(Type and Permission)=',"$mode\n";
【Perl (Objective style after Ver.5)】
use File::stat;
$obj_stats = stat(filename);
print 'filemode(Type and Permission)=' . $obj_stats->mode . "\n";
【Fortran】
integer stat, statb(13)
character filename*(*)
stat ( filename , statb )
write(6,*) 'statb(3)=',statb(3)
(2000.4.10 記)
(2001.2.19 改訂(Perl5追加))
▲top
UNIX(およびLinux)におけるDNSとして事実上標準となっているのはBINDです。このBINDに付属するツールnslookupが長らくUNIX(およびLinux)におけるDNS解決確認クライアントとして使用されてきました。しかし最近は(多分BIND8.2から?)nslookupを使用するとdigかhostを使えというメッセージが出されます。対話式nslookupは将来的に破棄される方向のようです。実際、
dig hostname
host hostname
dig IP address
host IP address
などで快適にDNS解決確認が行えます。
(2001.5.15 記)
▲top
インストールされているサーバソフトのヴァージョンを調べる方法を記述します。UNIXでもWindowsでも、コマンドラインから実行すれば同じです。パスが通っていない場合はフルパス指定する必要があります。
【sendmail】
◆ローカル:
sendmail -d0.1 -bp
◆リモート:
telnet hostname 25
−ヴァージョンが表示される
quit
【apache】
◆ローカル:
httpd -v
◆リモート:
telnet hostname 80
head
−ヴァージョンが表示される
【bind】
◆ローカル:
named -v
あるいは
nslookup -type=txt -class=chaos version.bind
◆リモート:
nslookup -type=txt -class=chaos version.bind hostname
−ヴァージョンが表示される
(※セキュリティ向上の為、ヴァージョン番号を非表示にしているホストもある)
(2001.9.18 記)
(2001.11.20 更新 = bind追加)
▲top
圧縮方式 | コマンド |
---|---|
tar.gz |
gtar zxvf xxxxxxxxxxxxx.tar.gz (gtarは大概tarへのシンボリックリンク) |
tar.bz2 |
tar --bzip2 -xvf xxxxx.tar.bz2 (bzip2解凍の為のショートオプションはlであったりIであったりjであったり…tarのヴァージョンによって全く異なり困りものだ。上記のようにロングネームで指定してやればtarのヴァージョンに関わりなく解凍できる。) |
(2001.9.26 記)
(2001.10.15 更新)
▲top
su
cd /usr/src
rm linux
tar --bzip -xvf kernel-2.4.10.tar.bz2
mv linux linux-2.4.10
ln -s linux-2.4.10 linux
cd linux
make mrproper
make xconfig(或いはconfig,menuconfig)
make dep;make clean
make bzImage
cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.10
ln -sf /boot/vmlinuz-2.4.10 /boot/vmlinuz
cp System.map /boot/System.map-2.4.10
ln -sf /boot/System.map-2.4.10 /boot/System.map
make modules
make modules_install
vi /etc/lilo.conf
lilo
fdformat /dev/fd0
mkbootdisk 2.4.10
reboot
(2001. 9.27 記)
(2001.10.31 更新)
(2002. 1. 7 更新)
▲top
シェルによっては(bash,zsh,ksh,tcsh等)、ファイル名の補完機能を持つ。これはとても便利な機能なので是非使おう。
使用例1:
nihira@zeus% ls -la
total 28
drwxr-xr-x 7 root root 4096 Sep 25 20:33 .
drwxr-xr-x 6 root root 4096 Oct 1 19:48 ..
drwxr-xr-x 4 root root 4096 Sep 26 18:30 BUILD
drwxr-xr-x 8 root root 4096 Sep 25 20:33 RPMS
drwxr-xr-x 2 root root 4096 Sep 26 18:30 SOURCES
drwxr-xr-x 2 root root 4096 Sep 26 18:30 SPECS
drwxr-xr-x 2 root root 4096 Sep 26 14:18 SRPMS
-rw-r--r-- 1 root root 4 Oct 2 11:51 memo.txt
nihira@zeus% cd R
ここで[Tab]キーを押すことにより残りのPMSが補完される。
使用例2:
nihira@zeus% ls -la
total 28
drwxr-xr-x 7 root root 4096 Sep 25 20:33 .
drwxr-xr-x 6 root root 4096 Oct 1 19:48 ..
drwxr-xr-x 4 root root 4096 Sep 26 18:30 BUILD
drwxr-xr-x 8 root root 4096 Sep 25 20:33 RPMS
drwxr-xr-x 2 root root 4096 Sep 26 18:30 SOURCES
drwxr-xr-x 2 root root 4096 Sep 26 18:30 SPECS
drwxr-xr-x 2 root root 4096 Sep 26 14:18 SRPMS
-rw-r--r-- 1 root root 4 Oct 2 11:51 memo.txt
nihira@zeus% vi m
ここで[Tab]キーを押すことにより残りのemo.txtが補完される。
使用例3:
nihira@zeus% tc
ここで[Tab]キーを押すことにより$PATH中にあるtcから始まるファイル名が表示される。
tc tcbck tclmain tclsh tcopy tcov tcpdump tcsh tctl
nihira@zeus% tc
これは「あのコマンド、確かtcから始まってたな。」といったうろ覚えのコマンドを実行する助けとなる。
(2001.10. 2 記)
(2003. 2. 5 更新)
▲top
ライブラリパスの追加方法(~/.cshrcへの記述例):
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/xxx/yyy/zzz
(2001.10.12 記)
▲top
make cleanしてから再度最初からトライする。最も基本的で最も効果的な対策だと思います。煮詰まった頭で色々余計なことを考えてトライ&エラーしていてもどうにもなりません。ふっと肩の力を抜いて「make clean」して、最初からやり直す…おお!うまくいった!という経験が何度かあります。
(2001.10.12 記)
▲top
wget -m http://www.abc.xyz.jp -nH -o ./mirror.log
-m : ="-r -N -l inf -nr"
----------------------------------------------------
-r : recursive web-suck -- use with care!
-N : don't re-retrieve files unless newer than local.
-l : maximum recursion depth (inf or 0 for infinite).
-nr : don't remove `.listing' files.
----------------------------------------------------
-nH : don't create host directories.
-o : log messages to FILE.
(2001.10.15 記)
▲top
apacheの設定ファイルを変更したらいきなりapacheの再起動をせずに以下のコマンドで設定内容にスペルミス等ないかを確認してから行う。
/usr/local/apache/bin/apachectl configtest
(2001.10.23 記)
▲top
100BASEにする
ifconfig eth0 media 100baseTX
自動認識にする
ifconfig eth0 media autoselect
(2001.11.20 記)
▲top
2〜3行のちょっとしたファイルを作成したい時、いちいちviで作成するのは面倒である。そのような場合は以下のようにすればよい。
nihira %> cat > test.txt
Takuma,
I am Takuma, too.
-NIHIRA Takuma
^D
上記例で「^D」と表記したのは「編集が終了したら[Ctrl+D]キーで抜ける」という意味だ。
上記例を実行すれば以下のようにファイルがちゃんと作成されているはずだ。
nihira %> ls -l test.txt
-rw-r--r-- 1 nihira users 42 Jan 30 05:11 test.txt
nihira %>
この編集作業中には大概の場合[Backspace]キーは利用できないと思う。その場合は[Ctrl+H]を使用すれば前の文字の削除を行える。
(前行に関しては寡聞にして知らない。知ってらっしゃる方、教えて下さい)
この方法の利点は「viのように全画面占領しない為、直前のls等の出力を見ながらファイル作成が可能」な点である。
なお、以下のようにすることで既存のファイルに追加書きをすることも可能。
nihira %> ls -l test.txt
-rw-r--r-- 1 nihira users 42 Jan 30 05:11 test.txt
nihira %> cat >> test.txt
See you.
^D
nihira %> ls -l test.txt
-rw-r--r-- 1 nihira users 51 Jan 30 05:12 test.txt
(2001. 1.30 記)
(2001.12.10 公開)
(2003. 1.30 更新)
▲top
以下は「FTP先のディレクトリにREADMEが置いてあった。これを読んでからgetなりなんなりを行いたい」という場合の例である。
nihira %> ftp ftp.penguins.co.jp[Enter]
ftp > get README[Enter]
ftp > ^Z
nihira %> cat README[Enter]
nihira %> %[Enter]
ftp ftp.penguins.co.jp[Enter]
ftp >
以上のように「Ctrl+Z」で中断、「%」で再開を行うことができる。
但し、上記例だと「ftp ftp.abc.xyz.jp」を表示されたところで表示が一時停止されることに注意が必要である。そこで[Enter]を押すことにより作業が再開される。
(2001. 1.30 記)
(2001.12.10 公開)
▲top
カレントディレクトリ以下の最後にアクセスした時間(atime)が最近1日以内のファイルを全て表示する。
find ./ -atime -1
カレントディレクトリ以下のファイル中、サイズが0バイトであるものを削除する。
find . -size 0c -exec rm {} \;
カレントディレクトリ以下のファイル中、xyz以降に修正されたファイルを削除する(xyz以降であるからxyz自体は削除されない)。
find . -newer filename -exec rm {} \;
(2001.12.11 記)
(2002. 5.14 追記)
(2002. 5.17 追記)
▲top
fileコマンドを使うとよい。
例:
nihira %> file aaa.txt
aaa.txt: ASCII text
(2001.12.12 記)
▲top
以下に一例を示す。
自分のシステムのシグナル一覧を知る際には「kill -l」或いは「trap -l」を実行すること。
シグナル名 | シグナル番号 | 概要 |
---|---|---|
SIGHUP | 1 | 端末ハングアップ |
SIGINT | 2 | 割り込みキー |
SIGQUIT | 3 | 中断 |
SIGILL | 4 | 不正な命令 |
SIGTRAP | 5 | トレース トラップ |
SIGIOT | 6 | I/O トラップ命令 |
SIGEMT | 7 | エミュレータ トラップ命令 |
SIGFPE | 8 | 浮動小数点例外 |
SIGKILL | 9 | キル |
SIGBUS | 10 | バス エラー |
SIGSEGV | 11 | セグメンテーション違反 |
SIGHSYS | 12 | システムコールへの間違った引数 |
SIGPIPE | 13 | 読み出しでオープンされていないパイプへの書込み |
SIGALRM | 14 | アラームクロック |
SIGTERM | 15 | ソフトウェア終了 |
SIGUSR1 | 16 | ユーザ定義シグナル1 |
SIGUSR2 | 17 | ユーザ定義シグナル2 |
SIGCLD | 18 | 子の終了 |
SIGPWR | 19 | 電源障害による再起動 |
(2002.1.18 記)
(2002.3.8 更新)
▲top
忘れがち、或いは混同しがち。メモっとこう。
(但しcsh系の場合noclobberの設定による)
作業 |
sh系 (sh,bash,ksh,zsh等) |
csh系 (csh,tcsh等) |
---|---|---|
STDOUTのリダイレクト | > file | > file |
STDOUTの追加リダイレクト | >> file | >> file |
STDERRのリダイレクト | 2> file | STDERRのみを取り出すことができない |
STDERRの追加リダイレクト | 2>> file | STDERRのみを取り出すことができない |
STDOUTとSTDERRのリダイレクト | > file 2>&1 | >& file |
STDOUTとSTDERRの追加リダイレクト | >> file 2>&1 | >>& file |
STDOUTとSTDERRをパイプを通してコマンドに渡す | 2>&1 | command | |& command |
STDOUTとSTDERRを別々のファイルにリダイレクト | > file1 2> file2 | 例:(command > file1) >& file2 |
(2002.2.22 記)
▲top
1. cronはサブシェルをホームディレクトリで開始する。
2. cronが設定する環境変数は以下の通り。
HOME (ex. /home/taro)
LOGNAME (ex. taro)
SHELL(=/usr/bin/sh)
PATH(=/usr/bin)
自分の普段使っている環境と、cronに設定して実行する場合とでは環境変数が全く違う状況になることを忘れてはならない。システムコマンド等をスクリプト中に記述する際にはフルパスで記述する癖をつけておくとよい。
(2002. 3.18 記)
(2003. 1.21 更新)
▲top
ps -U uid(username) 実UIDで選択する(名前も可)
ps -u uid(username) 実行UIDで選択する(名前も可)
(2002. 4. 1 記)
▲top
現在の実ユーザID、実効ユーザID、実グループID、実効グループIDの名前または値を表示。「id -a」により、複数グループに属している場合に全てを表示。
(2002. 4. 1 記)
▲top
括弧の片方にカーソルを合わせ「%」を入力 → 対応する括弧に移動。
(2002. 5.14 記)
▲top
#!/bin/csh -f
とスクリプト1行目に書くことは何を意味するか。
-f オプションは ~/.cshrc を読み込まない事を表す。逆に言えば、-f オプションを付けていないスクリプトでは ~/.cshrc中で定義している設定(alias等)が有効になる。
(2002. 5.15 記)
▲top
tail -f filename ファイル最終10行をリアルタイム表示
tail -f -n 25 filename ファイル最終25行をリアルタイム表示
(2002. 7. 4 記)
▲top
ps -ef | grep xyz を実行すると、"grep xyz"というプロセス自体も表示されてしまう。
nihira | 33958 | 1 | 0 | Jul 03 | - | 0:44 | /usr/bin/xyz |
nihira | 59798 | 1 | 0 | 09:39:01 | pts/2 | 0:00 | /home/nihira/axyz |
nihira | 61136 | 53960 | 1 | 09:47:45 | pts/2 | 0:00 | grep xyz |
ps -ef | grep -v grep | grep xyzとすると
nihira | 33958 | 1 | 0 | Jul 03 | - | 0:44 | /usr/bin/xyz |
nihira | 59798 | 1 | 0 | 09:39:01 | pts/2 | 0:00 | /home/nihira/axyz |
と、「-v」で指定した文字列を含まないものを表示してくれる。
(2002. 7. 5 記)
▲top
nroff -man aaaaa.n | moreとすればよい。
(例)nroff -man gettyu.1 | more
(2002.11. 8 記)
▲top
mail -c address1,address2 address3
とすれば、
To: address3
Cc: address1,address2
なメールが送れる。
(2003. 2. 4 記)
▲top
command1; command2; command3
とすれば、
command1、command2、command3を順次実行できる。
command1 && command2
とすれば、
command1が正常終了した場合のみ(終了値が0である場合のみ)、command2を実行する。
(2003. 2. 5 記)
▲top
色々な環境で一つのスクリプトを実行する場合にコマンドenvを活用すると便利だ。
例えばPerlのスクリプトがあるとする。Aというホストではperlは/usr/local/bin/perlにあり、Bというホストではperlが/usr/bin/perlにあるとする。スクリプトの1行目を書き直さなければならない。しかしenvを使えば以下のように書ける。
#!/usr/bin/env perl
envコマンドが環境変数PATHからperlを探してくれる。
勿論envが/usr/binに無ければ動かないが、大概envは/usr/binにあるようだ。
(2003. 2. 8 記)
▲top
便利なコマンド2つ。
killall httpd ... httpdプロセスを全てkill
pidof httpd ..... httpdのpidを全て表示
(pidofの例)
# pidof httpd
7989 7988 7987 17326 17081 17054 17053 17052 17050 17049 29313
(2006. 1. 27 記)
▲top
Text by 仁衡琢磨(anaksimandros@nihira.jp)