zipコマンドとunzipコマンド

zipでパスワードをかける場合、

zip -e hoge.zip hoge.txt #プロンプトでパスワード聞かれる
zip -P hoge hoge.zip hoge.txt #hogeというパスワードで圧縮する

となる。
unzipでパスワード解凍する場合

unzip hoge.zip #プロンプトでパス聞かれる
unzip -P hoge hoge.zip #hogeというパスワードで解凍する

これで、シェルからパスワード圧縮および解凍できるね

emacsで時刻計算

 emacsで日付計算するときに必要になりそうだったのでメモ

(setq time (decode-time (current-time))) ;; timeに現在時刻をデコードしてセット
(setf (elt time 3) (+ (elt time 3) 1)) ;; 日付を明日にする
(decode-time (apply 'encode-time time)) ;; 明日の日付をデコードして取得
(format-time-string "%Y/%m/%d" (apply 'encode-time time)) ;; %Y/%m/%d形式にして取得

これで日付を簡単に計算できる。もっと簡単にできる方法があると思うけど、自分が思いつくのはこれくらい。
仮にsetfの第二引数に365日が入ったとしてもデコードするとちゃんとした日付を出してくれた。
厳密でないならこれでいいと思う

よく忘れるemacsキーバインドまとめ

よく忘れるemacsキーバインドまとめ

ファイル操作:
C-l             : カーソルを真ん中に持ってくる(再描画)
C-o             : 空行を挿入
C-u C-s         : isearch 正規表現検索
C-x C-r         : 読み込み専用で開く
C-x C-w         : 名前をつけて保存
M-%             : 置換
C-M-v           : 別のバッファをスクロールする

ウィンドウ:
C-x 0           : 現在のウィンドウを閉じる
C-x {           : ウィンドウを横に広くする
C-x }           : ウィンドウを横に狭くする
C-x ^           : ウィンドウの高さを増やす

フレーム:
C-x 5 [command] : 新しいフレームでコマンドの結果を表示する
C-x 5 0         : フレームを閉じる
C-x 5 o         : 別のフレームへ移動

etags:
M-.             : 現在のウィンドウでタグ・ジャンプする
C-x 4 .         : 別ウィンドウを開いて、タグ・ジャンプする。
C-x 5 .         : 別フレームを開いて、タグ・ジャンプする。
M-*             : タグ・ジャンプする前の位置へ戻る。
M-TAB           : TAGSファイルを読み込んでいる状態で関数名の補完入力ができる。
C-u M-.         : 同名の関数が複数あった時、次へ飛ぶ
C-u - M-.       : 前へ戻る
M-x tags-reset-tags-tables : タグファイルの情報をリセット
M-x visit-tags-table : TAGSファイルの切り替え
M-x tags-search : TAGSファイルに登録されているファイルから検索

C-x {とか知らなかったよ

参考文献:
How to Use Emacs Frame
LinuxyEmacs(Meadow) ƒRƒ}ƒ“ƒh Šo‘z -- KeyFŽGŠwŽ–“T
http://homepage2.nifty.com/takaaki024/tips/computers/unix/emacs.html

cua-modeでC-c(コピー)やC-v(貼りつけ)を禁止する

 cua-modeでC-c(コピー)やC-v(貼りつけ)を禁止するには

(cua-mode t)
;; C-cやC-vの乗っ取りを阻止
(setq cua-enable-cua-keys nil)

を追加する
リージョン選択(松山智大) — ありえるえりあ

imenu - etagsを使わないバッファ内のタグジャンプ

 emacsにはimenuというバッファ内のみ検索できるタグジャンプ機能がある。

M-x imenu

で、ミニバッファに飛びたい関数先を入力。補完も可能
Software Design連載記事「Emacsのトラノマキ」の原稿 — ありえるえりあ

シェルスクリプト

 以下のようなシェルスクリプトがあったとする

#! /bin/bash
IsNull ()
{
	# 引数の個数チェック
 	if [ $# -ne 3 ] ; then
 		echo 引数足りん
 		exit 2
 	fi
	# 引数が空ならエラー
	if [ -z $1 ] ; then
		echo $2
		exit $3
	fi
}
IsNull $1 引数がありません 1 # ※1

上記の場合、「引数が足りん」が出る。
シェルスクリプトの場合、関数内にグローバル変数があった場合、どうも※1よりも先に実行されるようだ。これって不便じゃ…