【Mac】長ったらしいコマンドを短く
便利そうなコマンドなのに長ったらしい、とか、頻繁に使うコマンドなのに、オプションが覚えづらい、とかいうことがある。
そういうコマンドは alias に登録してしまうと便利だ。
alias に登録する
以下はデスクトップのアイコンを隠したり、表示したりする命令である。
# デスクトップのアイコンを表示する
defaults write com.apple.finder CreateDesktop false && killall Finder
# デスクトップのアイコンを隠す
defaults delete com.apple.finder CreateDesktop && killall Finder
長くて覚えられない。実行する時は、どこかにメモしたものをコピペしたりして、けっこうダルい。
alias コマンドが活躍するのはこんな時だ。
alias を使えば、自分の好きな、短い文字列で上記の命令を呼び出せる。
登録は簡単。こんなふうに書く。
alias 登録名='命令文'
先ほどのデスクトップのアイコンの命令を、「hideIcon」、「showIcon」と名付けるとする。
alias hideIcon="defaults write com.apple.finder CreateDesktop false && killall Finder"
alias showIcon="defaults delete com.apple.finder CreateDesktop && killall Finder"
試してみると、ちゃんと動作する。
alias の解除は以下の通り。
unalias 登録名
既存の alias は、alias
とだけ打ちこんでリターン押すと、リストとして表示される。
同じ登録名で alias を設定し直すと、上書きされる。
alias の設定は、ターミナルを再起動すると元に戻ってしまう。
ターミナルを起動するたびに alias を設定し直すのは現実的ではない。
なので、.bash_profile に記述しておく。
bash_profile
.bash_profile は、ターミナルが起動するたびに読みこまれる書類である(参考 【Mac】 パスを通す | 林檎コンピュータ)。
自分用の .bash_profile はホームフォルダに置かれる。
頭にドットのついた隠しファイルだ。
ホームフォルダで ls -a
を実行すると、隠しファイルを確認できる。もし .bash_profile がなければ、自分で作る。
touch ~/.bash_profile
この書類をテキストエディタで開く。
# テキストエディットで開く
open -e ~/.bash_profile
# CotEditor で開く
open -a CotEditor ~/.bash_profile
エディタで開いた .bash_profile に alias の設定を書きこんでおけば、ターミナルが起動するたびに設定を実行してくれる。
そもそも、この bash_profile を開く命令がけっこう面倒だ。
alias にしておこう。
alias prof='open -a CotEditor ~/.bash_profile'
「prof」だけで .bash_profile を開いてくれるようになる。あとは面倒なコマンドの指定を書きこんでおけばいい。
youtube-dl は動画をダウンロードする便利なコマンドだが、保存先を指定する書式が少し面倒だ。
youtube-dl -o "~/Movies/%(title)s.%(ext)s" 動画URL
ムービーフォルダにダウンロードするなら、上記のように書かなくてはならない。さらにいえば、youtube-dl というコマンド名も長い。こういうのも alias を設定しておくべきだろう。
alias dl='youtube-dl -o "~/Moivies/%(title)s.%(ext)s"'
「dl 動画ページURL」だけで ムービーフォルダに動画をダウンロードしてくれるようになった。
.bash_profile に関数を書く
カップラーメンを作るとき、パソコンで手軽に三分を測れれば便利だ。
使えそうなコマンドは「sleep」である。
sleep 秒数
で、秒数分の時間、処理を止めてくれる。
sleep 180; say 'ラーメンが出来ました'
このようにセットしておけば、三分後、kyoko さんが時のきたことを教えてくれる。
これも alias に登録しておけば便利だろう。
alias ramen="sleep 180; say 'ラーメンが出来ました'"
しかしながら、カップラーメンの待ち時間がいつも 3 分であるとは限らない。2 分で出来るものもあるし、5 分かかるものもあるだろう。その都度、時間を指定できれば便利だ。
ramen 5
などと、5 分なら 5 という引数を渡せればいいのだが、どうもうまくいかない。
検索して、.bash_profile に関数を書いてもいいことを知った。参考にさせていただいたのは、以下のサイトさまだ。
🔗 bashのalias に引数を渡すには? – それマグで!
関数は、以下のように書く。
function 関数名() {
処理
}
ラーメンの関数を書いてみた。
function ramen() {
date
if test -z "$1"; then
min=3
else
min=$1
fi
sleep `echo "$((min * 60))"`
date
osascript -e 'display notification "ラーメンが出来ました。"'
say 'ラーメンが出来ました'
}
これで 待ち時間が何分かを引数にして実行できる(引数なしだと 3 分)。
osascript -e
というのは、AppleScript を実行する、macOS 固有のコマンドだ。AppleScript の display notification "メッセージ"
で、通知センターに通知を飛ばせる。
便利なやり方だが、あんまり長くなるならシェルスクリプトにするがいいだろう。しかし、ちょっとしたものなら、.bash_profile に関数を書くほうが楽かもしれない。
最近のコメント