Last Modified: Wed Dec 9 23:38:07 JST 2009
コンピュータの使い方を上達させるのに最も早い方法は、「他人の技を盗む」ことです。 UNIX のシェルような複雑なシステムの場合、これはとくにあてはまります。 かくいう新山も、他の人がシェルを使っているのを見て「あ、こんなやり方があるのか」と驚き、 そのたびにいろいろな技を盗用してきました。このように自分がふだんなにげなく使っているものでも、 じつは他人から見ると目から鱗ということがままあるので、ここでは新山の使っている bash の環境と小技 (といえばいえるようなもの) を紹介します。 はっきりいって自信はまったくなく、知ってる人が見れば ひどく頭の悪いこともやっているかもしれませんが、役に立つこともあるかもしれません。
なお、このページのタイトルは「こわざしゅう (小技集)」ではなくて、 「こえだしゅう (小枝集)」ですのでご注意ください。
新山は重要な設定ファイル (.bashrc
, .inputrc
,
.emacs
, .fvwm2rc
, .screenrc
,
.lynxrc
, .Xresources
) をすべて $HOME/rc
という
ディレクトリに入れています。
.bashrc
5年以上前、まだ tcsh を使っていた時代からずっと修正しつつ使いつづけてきた bashrc ファイル。たまに何度か環境が変わって大幅に改装していますが、いくつかの行は 何年も前からあったもの。環境変数 LESS の設定とかは苦労した。
~/.bashrc
(2003年、コメントつき) (17kbytes)
cdhist.sh
あるとき、複雑なディレクトリ階層をいったりきたりするために
pushd
、popd
そして dirs
をおぼえた。
でもこれらはどうにも使いにくい。ちょうどそのころ web ブラウザになれていたので、
ブラウザの back や forward のようにカレントディレクトリを行ったりきたりできるコマンドがほしいと思い、
一念発起して作ったのがこれ。いまだに便利に使っています。これはリング状のディレクトリバッファを
持っており、以下のように使います:
yusuke ~[1]$ . cdhist.sh (cdhist を起動) yusuke ~[2]$ cd /tmp (カレントディレクトリが /tmp に移る) yusuke /tmp[3]$ cd /usr/bin (カレントディレクトリが /usr/bin に移る) yusuke /usr/bin[4]$ - (ひとつ前に戻る) yusuke /tmp[5]$ cd /etc (カレントディレクトリが /etc に移る) yusuke /etc[6]$ - (ひとつ前に戻る) yusuke /tmp[7]$ + (ひとつ後に進む) yusuke /etc[8]$ = (ディレクトリの履歴) 3 /usr/bin 2 ~ 1 /tmp 0 /etc yusuke /etc[9]$ = 2 (リスト上のディレクトリを直接指定) yusuke ~[10]$
cdhist.sh
(4kbytes)
Windows環境のマシンと頻繁にファイルをやりとりする場合、 UNIXが伝統的にEUC-JP中心なのに対し、向こうはShift_JISがほとんどなので、 デフォルトの文字コードをEUCからSJISに変更すると便利である。 そのさいに変更する必要のある設定ファイルは:
export LC_CTYPE=ja_JP.SJIS export JLESSCHARSET=japanese-sjis
defencoding SJIS
(prefer-coding-system 'shift_jis) (set-terminal-coding-system 'shift_jis) (setq default-buffer-file-coding-system 'shift_jis)
character_set=Japanese (Shift_JIS)
KTerm*VT100*KanjiMode: sjis
//shinyama-pc/shinyama ... iocharset=cp932 ...
思いだし次第、適宜増やす予定。
alias which='command -v'
which
を使いなれてしまっていたので、それを bash でもそのまま使うため。
(でも実はいまでは「h
」というただ一文字のコマンド名になっている)
ls -l `which emacs`
ls -altr
-altr
" という文字の並びが覚えやすい。2ちゃんねるのどこかのスレで発見。
dd if=/dev/fd0 of=myfloppy.img bs=1024 count=1440
(読み込み)dd if=myfloppy.img of=/dev/fd0 bs=1024 count=1440
(書き込み)myfloppy.img
にベタ読み
(あるいはファイルからフロッピーにベタ書き) する。むかし Slackware をインストールするときには必須の作業。
Uさんがやってた。
ls .??*
.
" ではじまるファイルを指定する方法。
単に ".*
" とやってしまうと .
や ..
も含まれてしまうので失敗する
(そしてたいていはひどい目にあう)。Sさんから教えてもらったもの。