- grep に色を付ける
オプションで --color=auto を付けるか環境変数 GREP_OPTIONS を設定する
$ export GREP_OPTIONS="--color=auto"
(.bashrc 等でてきとうに設定) 色の変更は GREP_COLOR='01;33' 等で設定。
less にパイプすると色が消えるので grep のオプションを "--color=always" として less にオプション
-r を付ける。(環境変数 GREP_OPTIONS に --color=auto は登録しない方が良い。
configure 等のシェルスクリプトが正しく動かなくなる(一度ハマった)。)
$ grep --color=always linux tmp.txt | less -R
- grep でマッチしないものを表示
grep -v
パーミッションを 777 に設定したディレクトリでは所有者に関係無くファイルを消すことができる。
sticky bit を立てておけば人のファイルは消せなくなる。
$ chmod 1777 Directory
/tmp はデフォルトで sticky bit が立っている。パーミッションは ls -ld で確認。パーミッションを
777 から 1777 に変更すると drwxrwxrwx から drwxrwxrwt になる。
$ ls --full-time tmp.dat | awk
'{printf("%s\n",$6)}' |date +%Y%m
もっと簡単な方法があるかもしれんが。
(ls (fileutiles)のバージョンに依存。Vine 3.x の様な古いディストリビューションでは
この方法は使えない。--time-style オプションがあれば OK。月に Jun とか Jul とか
使われるとスクリプト書くのに不便だからとっとと ISO 8601 に統一してほしい)
誰かがデバイスを使用中だと cdrom や HDD を umount
できない。 次のコマンドでプロセスを探して殺す。
$ fuser -muv /mnt/cdrom
man uniq.
$ sort tmp.txt | uniq
不正アクセスの IP address リスト等を作るのに便利。
tmp.txt を xxx@xxx.xx.xx
に送る。シェルスクリプトでメールを送るときに便利。
$ mail -s title xxx@xxx.xx.xx < tmp.txt
~/.gtkrc-2.0 に gtk-key-theme-name =
"Emacs" を追加
(.gtkrc-2.0 が無ければ作る)
追記:最近の gnome だと gconf エディタで desktop/gnome/interface/gtk_key_theme
の値を Emacs にする必要があるらしい。(gnome はカスタマイズがややこしくなって
きているみたい。fluxbox が軽くて簡単にカスタマイズできるのでお薦め。)
スパムメールの多さにうんざりして sylpheed を 1.0.3 から bsfilter が
使える 2.4.0 に変更。
sylpheed 2.x から GTK2 になったせいでメールの編集中にも余計なキーバインドが
適用されるようになった。例えば ATOK だと Ctrl+I でカタカナに変換だが、
ATOK の IM よりも GTK のキーバインドが優先されるためファイルの挿入と
なってしまう。以下のキーバインドを無効化した。
.sylpheed-2.0/menurc を編集、次の項目を追加した。
(gtk_accel_path "<Compose>/File/Insert file" "")
(gtk_accel_path "<Compose>/File/Send" "")
(gtk_accel_path "<Edit>/Select all" "")
(gtk_accel_path "<Compose>/Edit/Select all" "")
(ショートカットを割り当てたいメニューは一度英語環境で起動すれば分かる)
ただし自分の環境では sylpheed 終了後に menurc がデフォルトに戻ってしまう
のでとりあえず chmod 444 として対処した。
bsfilter は優秀なのでほとんどのスパムを正しく判別してくれる。
しかしわざわざ迷惑メールフィルターにかけなくてもスパムと判定できるメールも多い。
その様なメールはごみ箱行きの判断は必要なく、受信後にすぐに削除したい。
sylpheed の振り分け機能を使えば大抵の事はできるが、メール本文が無く、
HTML のみのスパムは振り分けできない。
From の偽装アドレスが振り分けで使用しているアドレスと同じ場合、特定の正規の
フォルダーへ移されてしまうので特に迷惑。
そこで、sylpheed の振り分け機能"コマンドの実行結果"を利用して
本文が無く HTML のみのメイルを判定するスクリプトと、
HTML 中に NG ワードが含まれていないか判定するスクリプトを ruby で書いた。
1) HTML のみのメールを判定 (ヘッダーの後がいきなり HTML で始まるメール)
####### chk_no_text.rb ########
input=ARGV[0]
nline=0
header=1 # 1: header 0: text
open(input,"r") do |f|
while line=f.gets
n=line.length
if(n==1) then
header=0
end
if(header==0) then
nline+=1
if(nline==2) then
if(line.index("<!DOCTYPE ") || line.index("<!html")) then
exit(0)
end
end
end
end
end
exit(1)
2) HTML に含まれる NG ワードの判定
####### myfilter.rb ########
input=ARGV[0]
ngwords=["ngword1","ngword2"]
nw=ngwords.length
nline=0
header=1 # 1: header 0: text
str=""
open(input,"r") do |f|
while line=f.gets
n=line.length
if(n==1) then
header=0
end
if(header==0) then
str+=line.chop
end
end
end
for i in 0..nw-1
if(str.index(ngwords[i])) then
exit(0)
end
end
exit(1)
ngwords には適当な単語、フレーズを入れる。
sylpheed の"コマンドの実行結果"ではメールはコマンドの引数として渡され、
コマンドの返り値が 0 のとき条件に一致したとみなす。
ファイルを適当な場所に保存したら sylpheed の振り分けの
設定で "コマンドの実行結果" を選択して
ruby /home/hoge/scripts/spam_filter/chk_no_text.rb
の様に設定すれば良い。
スクリプトの動作チェックは Mail/inbox 以下の適当なファイル(メイル)
で行う。
上のスクリプトは日本語未対応。
Linux でのメモリ周りのデバッグは
valgrind が便利。
例: $ valgrind -v --leak-check=yes --show-reachable=yes
--tool=memcheck [実行ファイル]
kterm-6.2.0-22.src.rpm を拾ってきて Scientific Linux 4.x で
コンパイルを試みたが conflicting types for 'malloc' というエラーで失敗。
kterm-6.2.0-22.src.rpm を作り直した。
インストールするためには、まず
# rpmbuild --rebuild kterm-6.2.0-22.src.rpm
で kterm-6.2.0-22.i386.rpm を作って rpm -ivh でインストールする。
変更点: extern char *malloc() を extern void *malloc() に変更し
パッチファイル(*/SOURCES/kterm-6.2.0-malloc.patch.bz2)を作成後、
spec ファイルを編集した。
[戻る]