事の経緯
Linuxコマンドを使っているとこんなコマンドがあったらいいなと思ったことがあると思います。
私がそう思ったきっかけは、cpやmvコマンドでファイルを操作して、操作した先のディレクトリに移動したいとき、
cpやmvコマンドを打って、更にcdコマンドを打っての移動は面倒くさいと思ったからです。
そんなとき、調べていると、自分でもオリジナルのコマンドが作れることを知ったのでまとめます。
この記事では、ある程度のLinuxコマンドを知っている人を対象にしています。
よく使うLinuxコマンドについては、以下の記事で紹介しています。
方法
大きく分けて2つあります。
1つ目は、シェルスクリプトを書いて、そのファイルをコマンドとして使う方法。
2つ目は、エイリアスかシェル関数を使う方法。
実践
シェルスクリプトを書いて、そのファイルをコマンドとして使う方法
シェルスクリプトのお約束である呪文(インタープリター)を書いてスタート。
今回は、cpコマンドでファイルを操作して、その操作先に移動する機能をもった”cpcd”というコマンドを作りました。以下がソースコードです。
#!/bin/bash
cp $1 $2
cd $2
このシェルスクリプトをcpcdというファイル名で保存します。
とても簡単なソースコードですが、一応説明しておきます。
1行目は、インタープリターでシェルスクリプトでは、おまじないのようなものになります。
3行目で、cpコマンドで、引数($1)を引数($2)先に複製します。
4行目で、cdコマンドで引数($2)先に移動します。
ここで、引数について説明します。引数とは、今回だとcpcdというシェルスクリプトファイルに情報を入れるもののことを指します。
例として、カレントディレクトリにtest.txtファイルとSAMPLEディレクトリがあるとします。
cp test.txt ./SAMPLE
上のコマンドは、test.txtをSAMPLEディレクトリに複製することを意味するのですが、このとき、test.txtが引数($1)、./SAMPLEが引数($2)になります。
$1や$2は,位置パラメータと呼びます。詳しくは以下の記事をご覧ください。
その後、chmodコマンドで自分のみ閲覧可とします。
chmod 400 cpcd
その後、PATHを通します。新しくPATHを追加してもいいのですが、ごちゃごちゃするので、今回は、既存のPATHにcpcdファイルを移動させます。
いざ、実行。
うまくいかない…
複製はできてもディレクトリの移動が出来ていません。それだったらcpコマンドでいいってことになります。
原因についてですが、長くなり、かつ少し脱線するので、今後の記事に記載します。
エイリアスかシェル関数を使う方法
断然、こちらをお勧めします。理由は、PATHを通したりしなくてもいい点とシェル、Linuxをある程度理解していれば、詰まることはないからです。
エイリアスとは、コマンドを別の名前に設定することを指します。英単語aliasを知っていれば分かると思います。
シェル関数とは、エイリアスより更に複雑に設定できます。詳しいことは、今後の記事にまとめる予定です。
こちらで、~/.bashrcファイルに以下を追加して、source ~/.bashrcすると、見事にcpcdコマンドを使えるようになりました。
ソースコードの意味は、シェルスクリプトのときと同じで、function cpcd(){}で、囲むことでシェル関数としています。
function cpcd(){
cp $1 $2
cd $2
}
まとめ
自作コマンドを作るには、シェルスクリプトでコマンドを作成するかエイリアス、シェル関数で作成するかの2つの方法があります。
シェルスクリプトでは、シェル環境で使えない場合があります。
簡単なコマンドを作るなら断然エイリアスかシェル関数で作成することをお勧めします。
おススメ書籍
Linuxを学ぶ上で、おススメの書籍を紹介します。
この書籍は、LPICというLinuxのプロフェッショナルとして認定される資格の教科書になります。
資格の教科書ですが、Linuxを学ぶ上でもってこいの書籍です。自分は、この書籍でLPICを取得しました。
Linux教科書 LPICレベル1 Version5.0対応
初めてLinuxを触る人でも分かりやすく表現されており、読みやすいです。
新しいLinuxの教科書