bin力
このエントリの続き...かも?
walkingmask.hatenablog.com
bin力とは...
かの有名なアクション漫画でも使われていますね!
「ピピピ...bin力...たったの5か...ゴミめ...」
「b...b...bin力...1307............!?」
「わたしのbin力は530000です」
bin力とは?
ちなみにわたしのbin力はたったの8ですが、大学のある先生のbin力は約300でした...すごい。bin力53万の人とか見てみたいですね!
ただの実行ファイルやスクリプトと自作コマンドの違いは?
自作コマンド化するメリットをざっくり言うと、
シェルスクリプトの場合 % sh peep.sh → shをつけないといけない Cの実行ファイルの場合 % ./peep → ./をつけないといけない コマンドの場合 % peep → コマンド名を指定するだけで実行できる!
ということで「楽!」です。また、実行ファイルなどは置いてあるディレクトリ内または他ディレクトリで使用したい場合はパスを指定しないと実行できませんが、自作コマンドはパスの指定なしで(User内であれば)どこでも使用可能です。
さっそくbin力を高めてみよう!
では実際に自作コマンドを作ってみたいと思います。まず、自作コマンドに必要なものは...
- $HOME/binと$PATH
- 実行ファイルかスクリプト
- chmod
の3つです。1つずつ解説していきたいと思います。
$HOME/binと$PATH
ここで$HOMEとはホームディレクトリのことです。本来、binとはbinaryの略で、コンパイル後の実行ファイルなんかを指すようですが、慣例として$HOME/binにはバイナリだけではなくシェルスクリプトで作った自作コマンドなども置くようです。この辺について詳しいことはググって(ry...ということで、まだホームディレクトリ直下にbinがなければ作ります。
mkdir ~/bin
このディレクトリは特別に権限を変更するといったことは必要ありません。ただし、ここを$PATHに追加しておく必要があります。$PATHについてざっくり説明すると「わたしが使うコマンドは全部ここに置いてありますよ〜」ってシステムに教えてあげるためのものです。追加するには、~/.zshrcなどに
export PATH=$PATH:$HOME/bin
みたいな感じで追加してください。
実行ファイルかスクリプト
コマンド化できるのはCのバイナリファイルかシェルスクリプトもできるので(他はちょっと知らない)、今回はシェルスクリプトで簡単にコマンドを作っちゃいます。
wm というファイルに次のような記述をします。
(文字をAA化するにはこちら
http://patorjk.com/software/taag/#p=testall&f=Graffiti&t=WakingMask
)
#!/bin/sh printf "\ __ __ _ _ __ __ _ \n\ \\ \\ / / | | (_) | \\/ | | | \n\ \\ \\ /\\ / /_ _| | ___ _ __ __ _| \\ / | __ _ ___| | __\n\ \\ \\/ \\/ / _\` | |/ / | '_ \\ / _\` | |\\/| |/ _\` / __| |/ /\n\ \\ /\\ / (_| | <| | | | | (_| | | | | (_| \\__ \\ < \n\ \\/ \\/ \\__,_|_|\\_\\_|_| |_|\\__, |_| |_|\\__,_|___/_|\\_\\ \n\ __/ | \n\ |___/ \n\ "
めちゃくちゃ汚いですね!けど実行するとこうなります。
% sh wm __ __ _ _ __ __ _ \ \ / / | | (_) | \/ | | | \ \ /\ / /_ _| | ___ _ __ __ _| \ / | __ _ ___| | __ \ \/ \/ / _` | |/ / | '_ \ / _` | |\/| |/ _` / __| |/ / \ /\ / (_| | <| | | | | (_| | | | | (_| \__ \ < \/ \/ \__,_|_|\_\_|_| |_|\__, |_| |_|\__,_|___/_|\_\ __/ | |___/
ここで、.sh拡張子をつけてないけど実行できてますね。これは一番上の行の#!/bin/shという記述のおかげですね!必ずしもこの記述でなくてもいいのですが、詳しくはググっ(ry...ついでに、この記述を消して実行してみると......同じ結果になります(笑) 実行する時にshをつけると結局実行できてしまうんですね。じゃあ、一行目も消してshもつけないと....
% wm zsh: command not found: wm
みたいな感じで実行できません。一行目の記述を戻して、shをつけないで実行すると...
% wm zsh: command not found: wm
実行できません(笑) しかし、これにあることをすると実行できるようになるのです!
chmod
それでは、先ほど作成したファイル wm に「chmod」をしてみましょう。chmodとはざっくり言うとファイルの実行権限などを変えてくれるコマンドです。ここでは先ほどのファイルに全ての権限と実行権限を与えます。
% chmod a+x wm
これで実行できるようになったかな!?ってことで...
% wm zsh: command not found: wm
ダメでしたね!できた人もいるかもしれません。実は今わたしが作業していたのは$PATHに含まれていないディレクトリでした。ってことで、作成したwmを~/binに移動て実行したいと思います。
% mv ./wm ~/bin/ % wm __ __ _ _ __ __ _ \ \ / / | | (_) | \/ | | | \ \ /\ / /_ _| | ___ _ __ __ _| \ / | __ _ ___| | __ \ \/ \/ / _` | |/ / | '_ \ / _` | |\/| |/ _` / __| |/ / \ /\ / (_| | <| | | | | (_| | | | | (_| \__ \ < \/ \/ \__,_|_|\_\_|_| |_|\__, |_| |_|\__,_|___/_|\_\ __/ | |___/
これで実行できました(と思います)!これにて自作コマンド作成完了です。今日からあなたも修行してbin力を高めスーパープルグロマー?になりましょう!
まとめ
bin力とは?
- $HOME/binにある自作コマンドの数のこと
bin力のメリット
- 実行が楽
- パスの指定なしでどこでも使える
- かっこいい!
- よく行う操作を自動化・コマンド化
bin力修行
- $HOME/binを用意する
- Cの実行ファイルかシェルスクリプトを作る
- chmod a+x
- $HOME/binに入れる
これでスーバープルグラマー!