一回一回パスを打ち込んで探索するのが面倒だなーと思って
version確認
cat /etc/redhat-release
でcentosのバージョン確かめれる.
$ cat /etc/redhat-release
CentOS release 6.4 (Final)
これにzsh,autojump, pecoを入れていく.
zsh
zsh(Z Shell)はUnixのコマンドシェルの1つ(Wiki参照)
使っていてやっぱり補完がいいなと思う(月並みな感想ですが)
zshのインストール
yum -y install zsh
これでインストールできる.
入ったか確認する.
$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/dash
# 追加された
/bin/zsh
zshをインストールしたあとは,設定ファイルの.zshrc
をいじっていくのですが,テンプレートとしてoh-my-zsh
を入れると楽になる.
oh-my-zshの導入
git clone https://github.com/robbyrussell/oh-my-zsh.git
これでカレントディレクトリに.oh-my-zsh
が入る
その後の手順をとりあえず一通り書く
$cd .oh-my-zsh
$cp templates/zshrc.zsh-template ~/.zshrc
これでテンプレートをそのまま自分の設定ファイルにできた.
いきなりcp
するのは怖いなって人はあらかじめ.zshrc
のコピーを取っておけばいいと思う.
# oh-my-zshどこにあるの?
export ZSH=$HOME/.oh-my-zsh
# テーマ何にするの?
ZSH_THEME="cloud"
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
ZSH_THEME
はこのページでサンプルが見れるから好みのテーマに適宜変更すればいいと思う.
設定を変えた後はsource .zshrc
これは次以降かいてません
auto-jump
ディレクトリ探索が楽になる.
自分がよく使うパス(使ったことのあるパス)を記憶してよく使う順に候補を出してくれる.
例をあげるとこんな感じ
$ j do[tab]
do__1__/Users/shu/Documents
do__2__/Users/shu/Downloads
・
・
インストール
wting/autojumpによるとPython2.6以上が必要らしい.
$ python --version
Python 2.6.6
大丈夫だった.
git clone https://github.com/wting/autojump.git
$ cd autojump
$ ./install.py
・
・
・
[[ -s $HOME/.autojump/etc/profile.d/autojump.sh ]] && source /home/shu-/.autojump/etc/profile.d/autojump.sh
autoload -U compinit && compinit -u
・
・
こんな感じになる.
とりあえず言われた通り.zshrc
に記述してリスタート
ここで注意だが,source .zshrc
だとうまくいかなかった.
一回ログアウトしてログインしなおすと使えるようになる.
確認
とりあえず適当にどっかにcdして,それがちゃんとj
コマンドででてくるか確かめる.
$ cd autojump
$ cd
$ j a[tab]
a__1__/home/shu-/autojump a__2__/home/shu-/autojump
なんか2個できたけどできた.
これは階層関係なくどこにでも飛べます
$ pwd
/usr/share/tomcat7
$ j a[tab]
$ pwd
/home/shu-/autojump
こんな感じ
peco
コマンド履歴が見やすくなる
例えばこんな感じ
control + r
QUERY> sudo IgnoreCase [210 (1/10)]
sudo yum install autojump-zsh
sudo yum autojump-zsh
sudo yum -y autojump-zsh
sudo service httpd restart
・
・
QUERY>
に入力した文字でフィルタリングしてくれる
詳しくは peco/pecoで
インストール
wget
でダウンロードする.
wget -O peco.tar.gz https://github.com/peco/peco/releases/download/v0.3.3/peco_linux_386.tar.gz
-O
オプションは保存先に名前をつけれるオプション
そしたら解凍する.
tar -C ./ -xzf peco.tar.gz
すると,peco_linux_386
というファイルができる.
その後
sudo mv peco_linux_386 /user/local/bin/
これでユーザ全員が使えるようになる.
zshのhistroyでpecoを使う
pecoをCentOS6.5にインストール
[peco]peco-select-history.zsh で表示されるコマンド履歴の重複を削除する
を参考にさせていただきました.
#peco
function peco-select-history() {
local tac
if which tac > /dev/null; then
tac="tac"
else
tac="tail -r"
fi
BUFFER=$(\history -n 1 | \
eval $tac | \
awk '!a[$0]++' | \
peco --query "$LBUFFER")
CURSOR=$#BUFFER
zle clear-screen
}
zle -N peco-select-history
bindkey '^r' peco-select-history
#履歴ファイルの保存先
export HISTFILE=${HOME}/.zsh_history
# メモリに保存される履歴の件数
export HISTSIZE=1000
# 履歴ファイルに保存される履歴の件数
export SAVEHIST=100000
# 重複を記録しない
setopt hist_ignore_dups
# 開始と終了を記録
setopt EXTENDED_HISTORY
pecoの設定をするついでにzshのHistroyの設定も一緒にした.
個人的には重複を記録しないオプションは大事だと思う.
確認
適当にコマンド打つ
$ cd
$ [control]+r
QUERY>
cd
#重複がないか確認した
cd httpd/
sudo cd httpd
cd log
cd lo
cd /var
・
・
#なさそう
#historyの確認
$ less .zsh_history
#重複はなかった
最終的な.zshrc
oh-my-zshをテンプレートとして利用しているが,最終的な設定ファイルは以下のようになる.
なおmacを利用していて,rmにはaliasを設定している.
# Path to your oh-my-zsh installation.
export ZSH=$HOME/oh-my-zsh
# Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/
# Optionally, if you set this to "random", it'll load a random theme each
# time that oh-my-zsh is loaded.
ZSH_THEME="cloud"
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
# Uncomment the following line to use hyphen-insensitive completion. Case
# sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment the following line to disable bi-weekly auto-update checks.
# DISABLE_AUTO_UPDATE="true"
# Uncomment the following line to change how often to auto-update (in days).
# export UPDATE_ZSH_DAYS=13
# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# HIST_STAMPS="mm/dd/yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git)
# User configuration
export PATH=$HOME/bin:/usr/local/bin:$PATH
# export MANPATH="/usr/local/man:$MANPATH"
source $ZSH/oh-my-zsh.sh
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='vim'
# else
# export EDITOR='mvim'
# fi
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
# ssh
# export SSH_KEY_PATH="~/.ssh/dsa_id"
# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
## auto-jump
[[ -s $HOME/.autojump/etc/profile.d/autojump.sh ]] && source $HOME/.autojump/etc/profile.d/autojump.sh
autoload -U compinit && compinit -u
## peco
function peco-select-history() {
local tac
if which tac > /dev/null; then
tac="tac"
else
tac="tail -r"
fi
BUFFER=$(\history -n 1 | \
eval $tac | \
awk '!a[$0]++' | \
peco --query "$LBUFFER")
CURSOR=$#BUFFER
zle clear-screen
}
zle -N peco-select-history
bindkey '^r' peco-select-history
#履歴ファイルの保存先
export HISTFILE=${HOME}/.zsh_history
# メモリに保存される履歴の件数
export HISTSIZE=1000
# 履歴ファイルに保存される履歴の件数
export SAVEHIST=100000
# 重複を記録しない
setopt hist_ignore_dups
# 開始と終了を記録
setopt EXTENDED_HISTORY
# alias
##rm設定
to_trash() {
for file in $@
do
mv $file ~/.Trash
done
}
alias rm="to_trash"
感想
それぞれまだまだ使えることが多そうだから,GitHubページをみてもっと理解を含めていろいろ使えるようになりたい