未来電子テクノロジー株式会社でインターンをしている文系大学一回生です。
macでBashからZshに変えてみてのでアウトプットします。
shellとは
BashとZshは、shellの一種です。
shellとは、人間の命令をコンピュータに伝えるプログラムのことです。
では、なぜshellが必要なのでしょうか。
コンピュータの中にはOSがあります。
OSとは、コンピュータの基本的なソフトのことです。
そのOSの中に、色々なソフトウェアが組み合わさっていることにより、OSは成立しています。
OSの中のソフトウェアで核となっているのが、カーネルです。
このカーネルは、人間の命令を聞いてくれません。
そのため、人間はshellに命令を仲介してもらう必要があるのです。
Bashとは
Bashは多くのUNIX/Linux系OSで標準的に利用されているshellです。
shellとしての基本的機能を備えており、標準としてどこでも使えるという強みがあります。
そのため、カスタマイズをあまりせず、標準で使うユーザーが多いです。
Zshとは
Zshは、Bash,ksh,tcshなどのシェル機能を取り込み、多数の改良が加えられたshellです。
bashの基本的機能に加え、軽量で強力な補完機能があるという強みがあります。
そのため、いろいろなカスタマイズをするユーザーが多いです。
Zshでやったこと
1.プロンプト等の変更
vimで.zshrcを編集しました。
$ vim ~/.zshrc
# 補完機能
autoload -U compinit
compinit
# 色設定
autoload -U colors; colors
# もしかして機能
setopt correct
# PCRE 互換の正規表現を使う
setopt re_match_pcre
# プロンプトが表示されるたびにプロンプト文字列を評価、置換する
setopt prompt_subst
# プロンプト指定
PROMPT=" %{${fg[yellow]}%}%~%{${reset_color}%}
%(?.%{$fg[green]%}.%{$fg[blue]%})%(?!(^)(^) <!(;%)(;%) <)%{${reset_color}%} "
# プロンプト指定(コマンドの続き)
PROMPT2='[%c]彡(^%)(^%)'
# もしかして時のプロンプト指定
SPROMPT="%{$fg[red]%}%{$suggest%}(●%)(●%) < もしかして %B%r%b %{$fg[red]%}かな? [そう!(y), 違う!(n)]:${reset_color} "
# コマンド履歴
HISTFILE=~/.zsh_history
HISTSIZE=6000000
# コマンド履歴検索
autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^P" history-beginning-search-backward-end
bindkey "^N" history-beginning-search-forward-end
# alias
alias diff="coloddiff"
export PATH="/usr/local/sbin:$PATH"
export PATH="/usr/local/sbin:$PATH"
export PATH=$HOME/.nodebrew/current/bin:$PATH
export PATH=$HOME/.nodebrew/current/bin:$PATH
alias python="python3"
export PATH="$HOME/.pyenv/shims:$PATH"
こうすると、
(^)(^) < cd web
~/web
(^)(^) < cd aaa
cd: no such file or directory: aaa
~/web
(;)(;) < fd -
(●)(●) < もしかして df かな? [そう!(y), 違う!(n)]:
こんな感じになります。
2.tumxのインストール
tmuxとは、端末多重化ソフトウェアのことです。
1 つのターミナルで操作しているシェルから実行した tmux 上で複数の仮想端末を操作できます。
画面を分割できて、サーバのログを見ながらシェルを操作できるのが良い点です。
まとめ
プログラミング初心者なので、正直zshやtmuxのすごさがいまいち掴めていません。。。
まだまだ勉強不足なので間違いがあればどうぞご指摘ください。