『知っていたら役に立つ時もあるかも』なコマンドなど。
emacs キーバインド
M-x describe-bindings で一覧表示
以下,たまにしか使わないけどあると便利一覧
C-x C-v find-alternate-file # 他で内容が変更されたファイルを開き直す
C-x RET r revert-buffer-with-coding-system # コードを変えてファイルを開き直す
C-x = what-cursor-position # カーソル上の文字の情報
C-u C-x = describe-char # カーソル上の文字の詳細情報
sudo コマンド
sudo sh -c "コマンド(リダイレクトなど可能)"
cache purge
echo {1,2,3} > /proc/sys/vm/drop_caches
不良セクタありのHDDコピー
dd if=/dev/sd? of=/dev/sd? {bs=8b} conv=sync,noerror
emacs カーソルの文字コード
C-u C-x = でカーソル位置の文字コードが分かる.
HTTPヘッダの取得
wget -S --spider #### or curl -I ####
/dev/pts/?の削除
不明な /dev/pts/? は,fuser {-u or -uk} /dev/pts/? で消せるかもしれない.
SCSI デバイスの削除
USB-HDDなどを外してもデバイスから消えない場合.
echo 1 > /sys/block/device-name/device/delete
または
echo 1 > /sys/class/scsc_device/h:c:t:l/device/delete
古くは
echo "scsi remove-single-device 6 00 00 00" > /proc/scsi/scsi
※ cat /proc/scsi/scsi で番号を確認
USBメモリ上のWinPEなどの起動
USBフラッシュメモリのdosパーティションにコピーしたWindowsPEなどをgrubなどから立ち上げる場合.
Windows機でそのパーティションをフォーマットした場合は,そのパーティションの前にあるセクター数が隠れた物理セクタ数として記録されるので正常に起動できる.
linux上でmkdosfsでフォーマットする場合はこのセクタ数を -h オプションで指定すると良い.
※ INT 0x13でアクセスされる場合に必須
再起動/シャットダウン
echo 1 > /proc/sys/kernel/sysrq でkernel.sysrqを有効にし,
echo b > /proc/sysrq-trigger でsyncやumountなしに再起動.
echo o > /proc/sysrq-trigger で強制シャットダウン.

またはカーネルパニックを引き起こす方法
echo 1 > /proc/sys/kernel/panic でパニック後何秒で再起動するか設定.
echo 1 > /proc/sys/kernel/sysrq; echo c > /proc/sysrq-trigger でパニック発生.
使用しているポートとプログラム
root で netstat -nap や fuser -v ###/tcp など
長い行を折り返さない on vim
:set nowrap
長い行を折り返さない on emacs
(setq truncate-lines t)
HDDの消去
shred コマンド
gccのpredefine一覧
gcc -E -dM -xc /dev/null にてpredefineの一覧が見れる
reiserfs上で削除したファイルの復活方法
・ファイルシステムをすぐにアンマウント ※時間が経つにつれて成功率が下がる
・デバイス全体をファイルにコピー(dd if=/dev/hd? of=hd?) ※念のため
・そのコピーファイルをloopデバイスに(losetup /dev/loop? hd?)
・復活の呪文(reiserfsck --rebuild-tree --scan-whole-partition /dev/loop?)
・/dev/loop?をマウント。lost+foundディレクトリ内に復活している(かも)
バインド・マウント
既にマウントされているマウントポイントを何回も使える。 tmpfs などでの利用が便利。

mount tmpfs /dev/shm -t tmpfs -o size=xxx; mkdir /dev/shm/tmp;
chmod 1777 /dev/shm/tmp; mount --bind /dev/shm/tmp /tmp

SQL: 項目内容による集計
データベースで,ある項目の内容による集計をとりたい場合

select ある項目, count(*) from データベース group by ある項目
having を使ってグループ条件を与える事も可能。having count(*) > 1

カラム指定で文字列を取りだす
例えば,Fortran のソースで行末の余分な数字を除く時など。

gawk '{print substr($0, 1, 72);}' < src_org.f | col -x > src_new.f
※ " col -x " で,行末の余分な空白を削除

OpenGL & png
画像を保存。

glReadPixels(x,y,width,height,GL_RGBA,GL_UNSIGNED_INT_8_8_8_8, image);

png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
png_infop info_ptr = png_create_info_struct(png_ptr);
png_init_io(png_ptr, fp);
png_set_IHDR(png_ptr, info_ptr, width, height, 8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
png_write_info(png_ptr, info_ptr);
png_write_image(png_ptr, image);
png_write_end(png_ptr, info_ptr);
png_destroy_write_struct(&png_ptr, &info_ptr);

LaTeXカレンダー
emacs で,calendarのLaTeXコードを作成する。

M-x calendar よりCalendarモードで,"t m"と入力すると 1か月分のカレンダーを生成する。※ 他にもコマンドあり

スクリーンを画像ファイルに保存する
xwd や import
任意の行間隔に空行を入れる
nnn行間隔に空行を入れる場合。※ nnnの部分に直接数値を入力

gawk '{print;if(FNR%nnn==0){print""}}' < in > out

gnuplot の index を利用する(gnuplot> plot 'out' index mmm など)場合。

gawk '{print;if(FNR%nnn==0){print"\n"}}' < in > out

exim: メーラー
使っている人は知らないと困るだろうけど,こちらのページで。
frozen になったメールキューを含めて再送を試みるコマンド。

exim -qff

frozen に関する自動設定。

/etc/exim/exim.conf に auto_thaw = 3h や timeout_frozen_after = 7d

netselect: ネットワーク上で近いサーバ探し
ミラーサイトなどを選ぶ時、スコアが低いものを選ぶとよい。

netselect -vv www.xxx ftp.xxx ...

icotool: windows の .ico や .cur 変換
ホームページのアイコン作成で使ってみた。

icotool -c -o xxx.ico xxx.png 例) xxx.png(16x16)を用意して変換。32x32 でもいいらしい!?

BACK