walkingmask’s development log

IT系の情報などを適当に書いていきます

MENU

bin力

このエントリの続き...かも?
walkingmask.hatenablog.com

bin力とは...

かの有名なアクション漫画でも使われていますね!
「ピピピ...bin力...たったの5か...ゴミめ...」
「b...b...bin力...1307............!?」
「わたしのbin力は530000です」

bin力とは?

f:id:walkingmask:20160220144345p:plain
ちなみにわたしのbin力はたったの8ですが、大学のある先生のbin力は約300でした...すごい。bin力53万の人とか見てみたいですね!

ただの実行ファイルやスクリプトと自作コマンドの違いは?

自作コマンド化するメリットをざっくり言うと、

シェルスクリプトの場合
% sh peep.sh
 → shをつけないといけない

Cの実行ファイルの場合
% ./peep
 → ./をつけないといけない

コマンドの場合
% peep
 → コマンド名を指定するだけで実行できる!

ということで「楽!」です。また、実行ファイルなどは置いてあるディレクトリ内または他ディレクトリで使用したい場合はパスを指定しないと実行できませんが、自作コマンドはパスの指定なしで(User内であれば)どこでも使用可能です。

さっそくbin力を高めてみよう!

では実際に自作コマンドを作ってみたいと思います。まず、自作コマンドに必要なものは...

の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力修行

これでスーバープルグラマー!

参考にさせていただいたWebページ

qiita.com
qiita.com