その他
    ホーム 技術発信 DoRuby 無駄に見えて無駄じゃないalias
    無駄に見えて無駄じゃないalias
     

    無駄に見えて無駄じゃないalias

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    こんにちは、幾田です。

    今回は「無駄に見えて無駄じゃないalias」と題して、私が趣味で登録しているbashのaliasをご紹介します。
    やってることは無駄ですが、シェルスクリプトのお勉強になるので無駄じゃありません。

    1. :q

    私はテキストエディタにvimを使ってます。
    間違えてvimの終了コマンド:qをbashで打ってしまうことがあります。

    # ~/.bashrc
    
    alias :q='echo ここvimじゃないよ:p'
    
    q.gif

    忙しい時に見るとだいぶ腹がたちます。
    aliasに記号:が使えることがわかりましたね。

    2. lll(小文字のL)

    llのaliasを登録している人は多いのではないでしょうか。
    同じ文字2文字だし、ls -lの略でllってわかりやすいですよね。

    でも、勢い余ってlllと打ってしまうことがあります。
    連打してしまってもある程度大丈夫なようにaliasを設定しましょう。

    # ~/.bashrc
    
    # llコマンドのaliasを設定します
    alias ll='ls -l'
    
    # ベースとなる文字列を宣言
    l_length="ll"
    
    # for文を使って10回繰り返す
    for i in `seq 10`
    do
      # 文字列の末尾に一つlを追加していく
      l_length=$l_length"l"
    
      # 文字列に対してlsのaliasを設定
      # `echo $l_length` の実行結果をaliasに渡す
      alias `echo $l_length`='ls -l'
    done
    
    ls.gif

    これで最大llllllllllll連続12文字まで登録できました。
    何が嬉しいのかわかりませんが、aliasに登録するコマンドに変数を使う方法がわかりました。

    3. 眠い

    業務中眠いなあと思ってbashに眠いと打ちます。

    $ 眠い
    -bash: 眠い: command not found
    

    そんなコマンドはないので怒られます。
    怒られるなら「仕事しろ」と叱咤激励してもらいたいものですね。
    というか怒られるよりもこの眠さを誰かにわかってほしい。
    この睡魔を同意してもらえるようにaliasを設定します。

    # ~/.bashrc
    
    # ランダムに同意の言葉を返す関数 sympathize_randomly
    function sympathize_randomly () {
      # 「眠い」に返す言葉の配列 replies を宣言
      declare -a replies=(
        "私も"
        "俺も"
        "僕もです"
        "仕事しろ"
        "わかるぅ〜"
      )
    
      # ランダムな数字を配列の要素の個数で割った余りを計算
      random_number=$[1] $RANDOM % ${#replies[@]} 
    
      # 配列からランダムな要素を出力
      echo ${replies[$random_number]}
    }
    
    # sympathize_randomly 関数を使ってaliasを設定
    alias 眠い='sympathize_randomly'
    
    sleepのコピー3.gif

    aliasに日本語も設定できるんですね。
    関数の宣言の仕方や、配列の要素数の取得方法などいろんなことが学べました。

    alias 設定時に気をつけること

    aliasの設定で気をつけるべきは既に存在するコマンドを登録してしまわないことです。
    また、aliasが便利だからって何でもかんでも設定していると、どれが何かわからなくなってしまうこともあるかもしれません。
    破壊的なコマンドを簡単なaliasに設定するのもよくないです。

    まとめ

    やっていることは大変無駄でしたが、bashの知識はいつかどこかで役に立ちそうです。

    それでは、今日はこの辺で。
    読んでいただき、ありがとうございました。

    References

    References
    1 $RANDOM % ${#replies[@]}