「自作したコマンドは財産です」
このように昔の偉い人が言ったのか、言っていないのか知りませんし、正直に申し上げますと今かめねこが適当に書いただけです。
そんなこんなで自作したコマンドをターミナルで簡単に呼び出して使うために実行許可を渡して、PATHを通してしまいましょう。
サクッとコマンド名だけで使える方が便利ですし、自作のコマンドをカタカタっと使っていると何となくほんの少〜しだけ進歩したような気分になる、それが自作コマンド!知らんけど。
新しく自作コマンドが増えた時のことを考えつつ、自作したコマンドを把握・管理しやすいように運用できたら良いなと試行錯誤したメモ。
はじめに
普段、ターミナルで使用しているlsやdd、cpやrmのようなコマンドのようにパスを指定することなく自作コマンドを使えるようにしてしまおう、というのがこの記事の主旨です。
今までコマンドやワンライナーはクリップボード拡張ツールにスニペットとして置いていたり、ターミナルのhistoryを追いかけて使ったりしていたんですが今日で終わりです、早速準備しましょう。
自作コマンドをいつも使っているコマンドのように使うためには色々と方法が有るようです、PATHの通ったディレクトリに実体を置いたり、シンボリックリンクを置いたりする事で使えるようになりますが管理する上で少し面倒なのと、かめねこ的に「あれ?このシンボリックリンク何だっけ?」とか、実体を置いたことを忘れてしまうような事になると思うんです。
そこで、新しく自作コマンド用のフォルダを作成して、PATHを通す方法を採用しました、これならバックアップも忘れないし一石二鳥。
早速、やってしまいましょう。
PATH(パス)を通すとは
ターミナルでコマンドを使用する時、コマンド名だけで実行することができると思います、これはコマンドの置き場所を”ここに有ります”と宣言しているから、つまりPATHを通しているからなんですって、例えば”cdコマンド”は/usr/bin/cdというようにUnix実行ファイルが有るわけです。
“事前に宣言している場所の実行ファイルを探して実行”してくれているわけですね、PATHを通していない場所のコマンドを実行する時は実行ファイルの場所をパス指定して実行しなくてはならないのも納得です。
もちろんPATHの通っている場所に有るコマンドを実行するときに上記パスを指定して実行しても同じ結果になります。
PATHの通っているディレクトリを確認する場合はターミナルで下のコマンドを実行すると確認できます。
echo $PATH
また、それぞれのコマンドがどこに有るのか確認したいならwhichコマンドが使えます。
このようにコマンドが/sbinや/binに有ることが確認できます。
それでは、自作コマンドを置くためのフォルダを作成してPATHに追加してしまいましょう。
まずはフォルダの作成
これがないと始まらないのでフォルダを作ります。
任意の場所で良いのですが、メンテナンス性とバックアップを(かめねこが)忘れないようにホームディレクトリ直下にkamenekoToolsというフォルダを作成する事にしました、もちろんどのような名前でも構いません。
ターミナルで作業します
mkdir $HOME/kamenekoTools
あ、もちろんコンテキストメニューの”新規フォルダ”から作成しても問題ありません。
何となく場所を明示しておきたかったのです><
さて、次は作ったフォルダにPATHを通してしまいましょう。
PATHを通す
まずはbash_profileというドットファイル(不可視ファイル)をホームディレクトリ直下に作成してbashrcを呼び出す設定を書きます。
すでにその他の設定で作成している場合は追記して保存します。
vi $HOME/.bash_profile
次に下記の内容を書きます、これはbashrcを呼び出すよ!って内容ですね。
if [ -f ~/.bashrc ] ; then . ~/.bashrc fi
次に、bashrcというドットファイルを同じくホームディレクトリ直下に作成して追加するPATHを書きます。
同じく他の設定でbashrcを作成している場合は追記して保存します。
vi $HOME/.bashrc
同じように下記を書きます、これはPATHに追加してねー!って内容となっています。
export PATH=$PATH:$HOME/追加するフォルダ #今回のかめねこなら export PATH=$PATH:$HOME/kamenekotools
ここまで出来たらsourceを再読み込みするかターミナルを再起動しましょう。
これで完了です、パスの確認は下のコマンドでどうぞ
echo $PATH
これで追加したパスが表示されていれば大丈夫です。
今回作成したそれぞれのファイルは、bashを使う上でそれぞれ意味のあるファイルになっていて、起動時や端末ログオン時に”そのファイルが有れば”読み込まれるようになっている設定ファイルです、先人達に慣いbashrcをbash_profileから呼び出すようにしています。
次は自作コマンドを作ったフォルダに放り込んでしまいましょう。
自作コマンドに実行属性を付ける
さてPATHの通ったフォルダも用意できたので早速コマンドをフォルダに入れて実験してみましょう。
前回の記事で書いたコマンドを使うことにします。
下のようなコマンドを適当なテキストファイルにでも書きます、viでもテキストエディットでも何でも良いので書いてしまいましょう。
なんならecho “hello かめねこ”でも良いので書いて実験します。
コマンドをかく
#!/bin/sh # #opensslでハッシュ計算してクリップボードに入っている(コピペ)ハッシュと一緒に出力して比較するコマンド。 # read -p 'Fileを入力またはドラッグ=> : ' filename && read -p 'sha1 sha256 またはmd5 ? => : ' hash && echo $(pbpaste) && openssl $hash $filename | awk '{print $2}'
そして拡張子なしでデスクトップとかに保存します、このファイル名が実行時のコマンドになりますのでユニークな名前をつけましょう。
今後の運用を考えると一定のルールを作った方が楽になると思います、ちなみにかめねこの作ったルールは後述します。
実行属性を付けるchmod
そして作成したファイルに実行属性を付けます、今回はデスクトップに保存したkameneko-hashというファイルに実行属性を付けましょう。
chmod u+x ~/Desktop/kameneko-hash
アイコンが変わったと思います、情報を表示すると”Unix実行ファイル”になっているでしょう。
今回は所有者だけに実行権限を付けましたが、全ユーザーに付けるならa+xにしてください。
(もちろん数字で指定しても同じです)
フォルダに移動する
実行権限を付けた先ほどのファイルを、同じく先ほど作成してPATHを通したフォルダに放り込みましょう。適当にドラッグすれば良いと思います。
そして、おもむろにターミナルを起動してからかっこよく自作したコマンドを実行してみましょう。
かめねこの例ならkameneko-hashですね。
コマンドが実行されるはずです、今回のコマンドは前回の記事と同じですが同様の結果になりました、成功ですね。
かめねこの自作コマンドルール
- コメントで何のコマンドなのか書いておく
あとで見直した時に何のために作ったのか忘れてしまったら困るので。 - ファイル名は”kameneko-コマンド名”にする。
自作コマンドが増えてくるとコマンド名を覚えていられないのでkameneko-と入力してタブを2回押すことで一覧が表示されるから楽かなと。
タブを二回押すとこのようにターミナルが検索してくれて教えてくれるんです、とっても便利な仕様になっているので、ありがたく使います。
おしまい
今回の場合はコマンドの1行目に書いている!/bin/shは無くても動くんですが、どうも書いておくのがマナーというか、実は良く分かっていないというか、書いても書かなくても動くのでとりあえず書こうかなと。(適当)
コメント