エンジニアたるもの怠惰であれ、と神は言った。
人生は面倒に溢れている
生活を送るに当たって面倒なことは多々あります。わけのわからない講義やわけのわからないコンパイル、クソつまんねぇ行事やクソつまんねぇ一連のコマンド操作。はい、毎回やる一連の動作なんてものは一発でできるようにしてしまいましょう。
shellってなに?
コマンドうつ時のあれ、つまりコマンド作ろうぜってお話ですね。
今回は3つのコマンド作成について説明します
コマンドを作ろう
では、本題です、これから何回も打つコマンドや長いコマンドを短くしていく方法を3つ紹介していきましょう。
ailiasを設定しよう
alias (別名,偽名)をコマンドに設定してあげましょう。
~/.bash_profile というfileに書き込んでいきましょう。
zshに変えている人は
~/.zshrc に書き込みましょう。
nano ~/.bash_profile
を実行してfileに書き込みましょう。
書き込みが終わったら control + o で保存して control + x でエディタを閉じましょう。CUIエディタに興味がある人は調べてみても面白いかもしれません。
早速実例を見ながら説明していきましょう。
- ll
まずはlsコマンドの -l オプションです。これ1日に100回くらい使います
1日100回もこんなの打つと鬱になりますね。
alias ll='ls -l'
ついでに
- la
alias la='ls -al'
これも設定しちゃいましょう。
~/.bash_profileを書き換えたら実際に動きを確認してみたいですよね、今llコマンドを打っても反応はしてくれません、焦らずに
source ~/.bash_profile
としてあげましょう、せっかちはダメですよ。
そうするとあら不思議、llとコマンドを打つとls -l が実行されたではありませんか。では、このままaliasを使って面倒なコマンドを短くしていきましょう。興味があるのは追加してみてください。
- sshl
alias sshl='ssh 接続するサーバー'
決まったサーバーにsshする場合はsshコマンドを簡潔にしましょう。lはlocalの意です。
僕はraslというコマンドで自宅のラズベリーパイにlocal sshをし、rasgというコマンドでglobal sshをしています。
- nn
alias nn='nano -k -w -i -S'
nanoのオプションを毎回打つのは面倒なので簡略化します。
- bi
alias bi='brew install'
何気にしょっちゅう打つ、brewを使ってパッケージをインストールする際に毎回brew installを打つのは面倒なのでbiで済ませます。
と、まあこんな感じにいくつか紹介しましたが、このコマンド何回も打つなって思ったらaliasに登録して短くしてやりましょう。
shファイルを作ろう
aliasには変数は使えません。なので変数を使う場合などはcommandName.shのようなfileに書き込み、aliasに登録してあげましょう。
まずは.shファイルをまとめるディレクトリを作り、そ子に移動しましょう。
mkdir ~/Tools
cd ~/Tools
以下はcommandNameというshファイルを作り、commandというaliasを設定する場合です。
alias command='sh ~/Tools/commandName.sh'
- mkcd
mkdirをしたあとはさっきのように続けてcdしましたよね、これ面倒ですよね、コマンドにしてあげましょう。
#!/bin/sh
command='mkdir $1 && cd $1'
eval $command
少し説明します、$1とは
cd hogehoge
このhogehogeの部分のことです。スペース区切りで入力した文字が$1,$2と変数に格納されます。
eval とは以降のコマンドを実行するという命令です。
aliasに登録してあげましょう。
alias mkcd='source ~/Tools/mkcd.sh'
- cl
もう一例示してみましょう、cdした後にはそのディレクトリになにがあるか知りたいですよね、先ほど登録したllを使いましょう。
#!/bin/sh
command='cd $1 && ll'
eval $command
これで、cdしたディレクトリでll (ls -l)コマンドを自動で行ってくれます。
alias cl='source ~/Tools/cdll.sh'
alias登録を忘れずに。
functionをつくろう
先ほど作ったclコマンドをfunctionで実装してみましょう。
function cl () {
cd $1;
ls -l;
}
こうやって作ることで、aliasに登録せずに、clと入力することでcl関数を実行することも可能です。
## おわりに
こんな感じで少しでも面倒に感じたら自分なりにショートカットできるコマンドを作ってみるといいと思います。c言語やtexのコンパイル作業とか、面倒なのでshellになんとかしてもらいましょう。