自分用のちょっとしたコマンドを作るのに、 シェルの機能が利用できる。 シェル・スクリプトとかエイリアス (alias, 別名) とか。
シェル・スクリプトはなるべく /bin/sh を使うようにしているのだが、 エイリアスは普段使っているシェル (私の場合は tcsh) の機能を使うことになる。
長いの打ちたくないとか、オプション覚えられないとか。
alias big 'ls -lSr' alias less 'lv -Ou' alias m1 'slogin -X -A ホスト名.mind.meiji.ac.jp -l mk' alias ol 'open `(ls -tr|tail -1)`' alias clear 'printf "\033[?2004l"; /usr/bin/clear' alias vpnoff 'launchctl unload -w /Library/LaunchAgents/net.pulsesecure.pulsetray.plist' alias vpnon 'launchctl load -w /Library/LaunchAgents/net.pulsesecure.pulsetray.plist' alias rerun 'source ~/.tcshrc' alias syncw 'rsync -avuz ホスト名.mind.meiji.ac.jp:work/ ~/work'(勧めているわけではないので説明は書かない。 面倒が減りそう、だけを分かってもらえれば良い。) |
その中には、引数を伴うものもある。
alias utf 'nkf --overwrite -w -Lu \!*' alias dlp 'lpr -o sides=two-sided-long-edge \!*' alias cco 'gcc -O -o \!^:r \!*' |
この cco などは、某先輩に教わったものだが、なかなか面白い。
cco test1.c test2.c test3.o -lm |
gcc -O -o test1 test1.c test2.c test3.o -lm |
今回は学生の Mac で実現することになったので、 tcsh でなくて、bash を使うことに。 tcsh で
alias upload 'scp -pr \!* ユーザー名@ホスト名.mind.meiji.ac.jp:work' |
もちろん
~/bin/upload (現象数理 Mac ならば ~/bin に置くのかな。) |
#!/bin/sh scp -pr "$@" ユーザー名@ホスト名.mind.meiji.ac.jp:work |
ネットでお尋ねしたところ、 引数をコマンド引数の途中に挿入する “別名” は、別名でなくて、 関数 (function で定義) を使って実現しなさい、とのことでした。
.profile に書き加える |
function upload() { command scp -pr $@ ユーザー名@ホスト名.mind.meiji.ac.jp:work } |
桂田 祐史