【Macターミナル】よく使うフォルダだから、とにかく楽して移動したい
あー、楽したい、楽してコンピュータを操作したい、という気持ちで日々を生きている。
なにが面倒くさいといって、ターミナルにパスを入力する時である。
よく使うパスを呼び出す
筆者の場合、だいたい使うフォルダは決まってる。
だとしたら、あらかじめ、どこかに記録しておいて、すぐに呼び出せるようにすればいいのではないか。
そこで以下のようなシェルスクリプトを考えてみた。
シェルスクリプト
📝 snip
#!/bin/zsh
listfile=~/bin/.sniplist
function edit_list() {
echo 'キーワードは?'
read key\?'> '
echo '呼び出したい文字列は?'
read str2\?'> '
echo "$key"'='"$str2" >> $listfile
echo '登録しました'
exit 0
}
if ! test -e $listfile; then
echo '-e' > $listfile
edit_list
fi
if test $# -gt 1; then
echo 'このスクリプトで使用できる引数はひとつだけです。'
exit 0
elif test $# -eq 0; then
cat $listfile
exit 0
fi
if test $1 = '-e'; then
edit_list
fi
if test $1 = '-n'; then
nano $listfile
fi
while read line
do
key=$(echo $line | awk -F "=" '{print $1}')
if test $key = $1; then
str=$(echo $line | awk -F "=" '{print $2}')
echo -n "$str:q" | pbcopy
echo -n "$str:q"
break
fi
done < $listfile
どこかに(上記の例では~/bin/.sniplist
)に「.sniplist」というテキストファイルを作り、そこにキーワードとパスを記載しておく。パスが必要になったら、
snip キーワード
でパスを呼び出す、というスクリプトだ。
使い方
たとえば、
/Users/username/Pictures/よく使うファイル/タイトル系/一応とっとく
というパスをよく使うとする。
snip -e
とやれば、対話的にキーワードと登録したい文字列を訊かれる。ここではキーワードを「tt」とした。「とっとく」の略だ。
文字列として先ほどのパスを入力する。
$ snip -e
キーワードは?
> tt
呼び出したい文字列は?
> /Users/username/Pictures/よく使うファイル/タイトル系/一応とっとく
あとは、
snip tt
で、/Users/username/Pictures/よく使うファイル/タイトル系/一応とっとく
という文字列を返し、さらにクリップボードにコピーする。
snip
だけだと、sniplist の内容を表示する。
また、snip -n
で、nano というエディタで sniplist を編集できる。
これでcd $(snip tt)
で移動できるし、open $(snip tt)
で Finder で開けるようになる。
なることはなる。しかし、まだ面倒臭い。
そこで~/.zshrc
に、
ccd () { cd $(snip $1) }
などと書きこむ。
これでccd tt
だけで移動できるようなった。
なったのだが、これだけだとスペースを含むパスで思うように動作しない。
この問題は eval コマンドで解決する。
📝 ~/.zshrc
ccd () {eval cd $(snip $1) }
mmv () {eval mv $1 $(snip $2) }
opn () {eval open $(snip $1) }
こうしてやればmmv ファイル tt
でファイルを移動できるし、opn tt
でフォルダを開けるようになる。スペースを含むパスでも大丈夫だ。