jack blog
作者一覧
サイト移転のお知らせ
jack-webは下記のアドレスに移動しました
2023-12-02

bash初心者に捧げるオススメの.bashrcの設定

Kate⧸さわぴーKate⧸さわぴー

はじめに

こんにちは,アドベントカレンダー2日目担当のさわぴーです.機械学習関連の研究が専門で,ソフトウェア開発は薄く広く遊んでいます.

この記事では,個人的にオススメのbashの設定をの中から,PC初心者の人にぜひオススメしたいものを厳選していくつか紹介します.サクッと導入できるような分量になっているので,ぜひ試していただければと思います.

筆者がWindowsを使っていないので,LinuxとMacを想定しています.Windowsユーザーの方は,WSLなどでLinuxを使う時などに参考にしていただければと思います.

bashとは?

シェル(ターミナル)の一種…ということくらいしか筆者も分かってないので割愛します.難しい話は後回しで,軽くぱぱっと便利に使えるようにしましょっか!

余談: Linux入れるとだいたいの場合,デフォルトでシェルがこれになっている印象です.もっと高機能なシェルもありますが,そういうのに慣れてしまうと他のPC,例えば共用サーバーなどを使う時に苦労しそうなのでbashに慣れておくと間違いないのかな〜と思っています.そういえばMacはかつてはデフォルトでbashが入っていましたが,一時期からzshという別のシェルに変わりましたね.

bashの設定は,色々な方法でできるみたいです.~/.bashrc,~/.bash_profileなど,設定ファイルがいくつかあります.厳密には細かい違いがあるみたいですが,とりあえず以下はすべて~/.bashrcに書きましょう(設定したい内容によっては各ファイルをちゃんとわけないといけないようですが,今回の設定は大丈夫です).前述の通り,難しいことは後回しじゃ!

alias

シェルにおけるaliasとは,コマンドを短縮して記述できるもの,と認識しておけば大丈夫かと思います.長くて打つのが面倒なコマンドやオプションを,自分好みの短縮形にして使おう,というノリです.

ちょっと詳しく知りたい方は,こちらとかが参考になるかと思います.

ちなみに,ちょっとレベルアップした話として,aliasは~/.bash_aliases に書くというものがあります.気になった方はぜひ調べてみてください.

Linux/Mac共通

alias gits='git status'
alias dc='docker compose'
alias va='source venv/bin/activate'

Linux

alias op='xdg-open'
alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'
alias nsmi='nvidia-smi'

Mac

alias dls='limactl start docker'

prompt

プロンプトとは,シェルでコマンドを入れる時にデフォルトで表示されている文字列のことです.下の画像では, ks@ から次の行の $ までの部分です.(誤字が多いことで有名な筆者ですが,labtopは誤字ではないです.labのlaptopでlabtopです.)

この部分の文字列は, PS1 というbashの変数に書式を代入することでカスタマイズすることができます.画像の例では,

{ユーザー名}@{ホスト名(PCの名前)}💻:{カレントディレクトリ}
$ 

となっています(最後の $ のあとには空白が入っています).また,カレントディレクトリがgitのリポジトリ内の場合,

{ユーザー名}@{ホスト名(PCの名前)}💻:{カレントディレクトリ}[{gitの現在のブランチ名} {gitの状態を表す記号}]
$ 

となっています(git関連については後述).

これはMacの環境ですが,これを設定するためには以下のように~/.bashrcに記述します.

source ~/.bash/git-prompt.sh
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWUNTRACKEDFILES=true
GIT_PS1_SHOWSTASHSTATE=true
export PS1='\[\033[01;97m\]\u@\h\[\033[00m\]'💻:'\[\033[01;33m\]\w\[\033[0;31m\]$(__git_ps1 [%s])\[\033[00m\]\n$ '

また,筆者のUbuntu環境では以下のようにしています.ポイントは,Ubuntuだと直接絵文字を表示できなかったため `echo -e '\U1F3EB'` で指定したものを出力しているところです.他にも,プロンプトの色を変えて一目でどのマシンかわかるようにしています(sshで色々なマシンに入ると,よく混乱してしまうので…).

source /etc/bash_completion.d/git-prompt
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWUNTRACKEDFILES=true
GIT_PS1_SHOWSTASHSTATE=true
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]'`echo -e '\U1F3EB'`:'\[\033[01;33m\]\w\[\033[0;31m\]$(__git_ps1 [%s])\[\033[00m\]\n\$ '

注意点として,それぞれ1行目で source によって読み込むファイルのパスは各自の環境に合わせて変更してください.存在しない場合は,こちらなどを参考に導入し,そのダウンロードしたパスを記述してください.

備考

.bashrcを編集したら, $ source ~/.bashrc を実行しましょう.これによって最新の設定ファイルが読み込まれて反映されます.

おわりに

基本的なもので,かつ便利だと感じたものを厳選しました.自分のCUIを育てたい方,ぜひ試してみてはいかがでしょうか? このあたりをゴリゴリ改造していって,「シェル芸」の道の第一歩を歩んでいっていただければ幸いです.

参考

https://qiita.com/djkazunoko/items/5f2979e2f902247aac3f

おすすめ記事