bashrcを編集してコマンドにエイリアスを当てる

今回はbash系のシェルにて、bashrcを編集することでコマンドのエイリアスを作成する方法について記述していきます。

コマンドのエイリアスを作成することで、頻繁に使用する長いコマンドを短い文字列で置き換えることができたり、コマンドのデフォルト動作を上書きしたりすることができ、非常に便利です。

bash系のシェルでのお話ですので、MacやUbuntuの方は共通で使用することができます。

Windowsの方は、、、知りません 笑

エイリアスを当てることでできるようになること

例えば、、、

$ alias rsync -atuv --delete from_dir to_dir

2つのフォルダ間の内容を同期するこのような長ったらしいコマンドを

$ mysync

このように短い文字列で置き換えたり、

$ rm

ファイルを削除するコマンド。これは非常に良く使いますが、確認もなしに直ちに消去されてしまうので、、、

$ rm -i

rmコマンドのデフォルト動作を-iオプション付き(消去する前に一度確認を行うオプション)の動作に変更する。といったことができるようになります。

~/.bash_aliasesに設定を記述

bashのコマンドにエイリアスを当てる際には、ホームディレクトリ直下の~/.bash_aliasesというファイルに設定を記述します。

記述の書式は以下の通りです。

alias 文字列='設定したいコマンド'

例えば、先ほど挙げた例のような設定をする場合、、、

alias mysync = 'rsync -atuv --delete from_dir to_dir'
alias rm = 'rm -i'

コマンドrsync -atuv –delete from_dir to_dirをmysyncというコマンドで実行可能に、コマンドrm -iをrmというコマンドで実行可能にしています。
(rmの場合、コマンドは既に定義されているのでそのコマンドを上書きすることになります。)

これらの設定は~/.bashrc(Macの方は~/.bash_profile)に直接記述することもできますが、設定するエイリアスが増えれば増えるほど管理が面倒臭くなってしまうので、~/.bash_aliasesというエイリアス記述専用のファイルを作成することをおすすめします。

~/.bashrcを編集して設定ファイルを読み込ませる

次に、~/.bashrc(Macの方は~/.bash_profile)というターミナル起動時に読み込まれる設定ファイルを編集して、先ほど設定した~/.bash_aliaseを読み込む設定を追記します。

ここはMacとUbuntuの方で編集するファイルが少し異なりますが、編集内容は同じです。

  • Macの方は~/.bash_profile
  • Ubuntuの方は~/.bashrc

というファイルをテキストエディタで開きます。

設定ファイルの一番下に以下の3行を追加します。

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

もし~/.bash_aliasesというファイルが存在していれば、~/.bash_aliasesを読み込む」というコマンドになります。

(Ubuntuの方は既に上記コマンドが~/.bashrcに記述されているかも知れません。そういう方は追加で記述する必要はありません。一度確認してみてください。)

ターミナルを再起動する

先ほど編集した~/.bashrc(もしくは~/.bash_profile)はターミナルが起動した際に読み込まれる設定ファイルなので、既に開いているターミナルでは先ほどの設定は反映されません。

既に開いているターミナルで設定を反映させるためにはターミナルを再起動します。
再起動する代わりに、以下のコマンドで設定を反映させることも可能です。

Ubuntu

$ source ~/.bashrc

Mac

$ source ~/.bash_profile

おすすめのエイリアス設定

ファイル操作系

alias rm='rm -i'
alias mv='mv -i'
alias cp='cp -i'

エイリアスの設定としては定番中の定番ですが、ファイル操作(削除、移動、コピー)のコマンドを-iオプション(操作前に確認を行うオプション)で上書きする設定です。

ファイルのバックアップに

$ aliases mysync = 'rsync -atuv --delete from_dir to_dir'

私はrsyncというファイルやディレクトリを同期するコマンドを用いて、pcのファイルをこまめにバックアップしています。to_dirに自宅のnasを設定して、nasに定期的にバックアップを保存しています。

ROSを使うので

aliases ckm='roscd && catkin_make'

rosでmakeする際にわざわざディレクトリ移動&catkin_makeのタイプが面倒臭かったので。

以上、bash系のシェルでコマンドにエイリアスを当てる方法についてでした。