cdhist2.sh


0. Contents

1. Name
2. Original Script
3. Concept
4. Features
5. Description
6. How to Use
7. Licence
8. Download
9. Tutorial
10. Bug Report
11. Recent History


1. Name

cdhist2.sh - 複数の $OLDPWD を保存する事ができる、cd の拡張版スクリプト (bash 用)。


2. Original Script

cdhist.sh - 複数の OLDPWD を保管、参照する cd (森川氏作成)


3. Concept

オリジナルである cdhist.sh は環境変数に履歴を残すタイプで、一度ログアウトすると履歴は消えてしまう。
そこで、.bash_history の様にファイルに保存する事でいつでも過去の cd の履歴を参照できるようにしたのが cdhist2.sh である。


4. Features

4.1 主な機能
4.2 仕様

4.1 主な機能


4.2 仕様

4.2.1 使用コマンド

4.2.2 通常の cd の挙動

4.2.3 履歴に登録できないディレクトリ


5. Description

ヘルプから抜粋.

cdhist2.sh: Ver. 2.9.1, last update:2007/07/09
  USAGE:
    cd {Option} [Dir]

  OPTION:
    + original cd
      -  : change previous directory ($OLDPWD)
      -P : physical directory structure instead of following symbolic links
      -L : forces symbolic links to be followed

    + cdhist2.sh
      -[Num]        : change previous directory
      -c            : cleaning of the cd history list
      -d            : delete one entry from the cd history list
      -g [Strings]  : execute 'grep -E' the cd history list (and go to [-i])
      -G [Strings]  : execute 'grep -vE' the cd history list (invert match)
      -h, --help    : display help
      -i            : select from the cd history list (Interactive Mode)
      -n [Num]      : set number of display (default:10)
      -p [Num]      : select page number of the cd history list (default:1)
      -u [Num]      : up to parent directory
      -v, --version : display version


6. How to Use

ソースから抜粋。

## How to use
#
# 1. 好きな場所に保存する (実行権限を付ける必要はない).
#
# 2. ユーザ設定項目に任意の値を入力する.
#
# 3. 初めて使用する場合は履歴を保存するファイルを作成する.
#    (ファイル名はユーザ設定の $CdHistFile)
#      $ touch $HOME/.bash_cdhistory
#
# 4. '.' コマンドで関数を読み込む (cd に alias を張る).
#      $ . cdhist2.sh
#
# 5. 通常の cd はそのまま使える. 拡張機能は以下のように使う.
#      $ cd -3 (3つ前の履歴に戻る),
#      $ cd -i (履歴のリストから選択して移動)
#
# 6. 詳細 (でもないが) なヘルプを表示したいなら
#    -h or --help オプションで.
#      $ cd -h
#
# 7. 恒常使用する場合は .bashrc 等に 4 のコマンドを書いておく.
#    ex: [[ -r "$HOME/bin/cdhist2.sh" ]] && . "$HOME/bin/cdhist2.sh"


7. Licence

このスクリプトはフリーウェアです。
使用、改変、再配布は自己責任の範囲でお好きにどうぞ。


8. Download

コンセプトの違いにより複数のバージョンを置いてありますのでお好きなバージョンをどうぞ。

8.1 軽量版
8.2 標準版
8.3 高機能版
8.4 旧版

8.1 軽量版

履歴を複数保存し、それを参照して移動できる、という開発初期のコンセプトのみ実装しています。
処理が高速である事を目指しています。

主な機能

2008/08/08

Ver. 2.2.31

cdhist2.sh_2.2.31.gz (5.2k byte)


8.2 標準版

軽量版に履歴の削除機能と検索機能等を追加しています。
通常の使用であれば十分な機能を備えていると思われます。

主な追加された機能

2008/08/08

Ver. 2.10.1

cdhist2.sh_2.10.1.gz (7.5k byte)


8.3 高機能版

標準版に色々と機能を追加しています。

主な追加された機能

2008/08/08

Ver. 3.10.1

cdhist2.sh_3.10.1.gz (8.8k byte)


8.3 旧版

今までに Web 上で公開したバージョンです。
バグが存在するので使用はお勧めしません。
gzip で圧縮して置いてあります。

http://www.ep.sci.hokudai.ac.jp/~michi/pc/sh/src/cdhist2/


9. Tutorial

9.1 まとめて履歴にディレクトリを追加する方法
9.2 拡張機能の基本的な使い方
9.3 Interactive Mode の Action
9.4 Read-Only Mode ([-c]) 時のメッセージ
9.5 便利な使い方

9.1 まとめて履歴にディレクトリを追加する方法

find コマンドを使うと簡単に追加できます。
範囲の変更や条件の絞り込みは find のオプションや
grep を組み合わせる事で行えると思います。

/ から始まるディレクトリ以外は自動で削除されるので
必ずフルパスで追加してください。

履歴は最近移動したディレクトリの順に並んでいるので
この方法で追加しても順番が狂う事はありませんが,
保存の上限を超える数が登録されたら自動的に削除されます。

## ホームディレクトリ以下のディレクトリを全て追加
$ find ~/ -type d 2> /dev/null >> ~/.bash_cdhistory

## 特定のディレクトリ以下のあるディレクトリ名のみ追加
$ find ~/pub/ -type d -name 'test*' 2> /dev/null >> ~/.bash_cdhistory


9.2 拡張機能の基本的な使い方

9.2.1 [-{Num}]

数字の数だけ前のディレクトリに戻る。
3箇所以上を行ったり来たりする時に便利。
保存数よりも大きな値を入力したら最も古い履歴に移動する。

$ cd -1 は $ cd - と基本的には同じだが、あくまで履歴ファイルを
参照して移動するのでログインした直後に使うと効果的。


9.2.2 [-i]

表示された履歴から行き先を選択して移動する,
Interactive Mode を起動する。
起動後は専用の Action メニューが出る。
種類が多いので詳細は別項目で解説する。

一度に表示される行数の default はユーザ設定項目 $ShowNum。
一時的に変更したいのであれば [-n] で指定する。

最初に表示されるページの default は 1。
一時的に変更したいのであれば [-p] で指定する。


9.2.3 [-n {Num}]

Interactive Mode の一度に表示される行数を一時的に変更する。
default はユーザ設定項目 $ShowNum。
数字に 1 以上の整数を入力しないと有効にならない。

[ >= Ver. 2.6.6 ]
Interactive Mode 時に [l] を入力すると
一時的に表示する行数を変更できる。


9.2.4 [-p {Num}]

Interactive Mode の最初に表示されるページ数を指定する。
default は 1。
数字に 1 以上の整数を入力しないと有効にならない。


9.2.5 [-h, --help]

ヘルプを表示する。

[-h] を指定すると必要最低限のみのヘルプ、
[--help] を指定すると詳細なヘルプが表示される。


9.2.6 [-v, --version]

バージョン情報を表示する。

[-v] を指定するとスクリプト名とバージョン名のみが、
[--version] を指定すると詳細なバージョン情報が表示される。


9.2.7 [-u {Num}]

数字の数だけ上位 (parent) のディレクトリに移動する。
数字に 1 以上の整数を入力しないとオプション指定がキャンセルされる.。


9.2.8 [-d] ( >= Ver. 2.3.2 )

表示された履歴から指定されたディレクトリを削除する、
Delete Mode を起動する。
基本的な操作法は [-i] と同じ。


9.2.9 [-c] ( >= Ver. 2.3.2 )

リストから重複・存在しないディレクトリを削除する。

起動するとリストのチェックを行い、削除されるリストが表示される。
その後、消すかどうかの確認を行い、Yes ならリストの上書きを行う。


9.2.10 [-g {Strings}] ( >= Ver. 2.4.3 )

Interactive Mode を起動する前にリストを {Strings} で絞り込む。
( "grep -E {Strings}" を行っている )


9.2.11 [-G {Strings}] ( >= Ver. 2.7.1 )

Interactive Mode を起動する前にリストから {Strings} に該当する項目を除く。
( "grep -vE {Strings}" を行っている )


9.2.12 [-s {Num}] ( >= Ver. 3.4.0 )

Interactive Mode を起動する前に数字の数だけ
ディレクトリを cut コマンドでシフトして表示する。
数字に 0 以外の整数を入力しないと有効にならない。

ユーザ設定項目 $DefShift に 0 以上の整数を入力すると
自動的に [-s] の処理が行われる。


9.2.13 [-S {Num}] ( >= Ver. 3.5.0 )

Interactive Mode を起動する前に数字の数だけ
下位のディレクトリをカットして表示する。
数字に 0 以上の整数を入力しないと有効にならない。


9.2.14 [-w {Strings}] ( >= Ver. 3.8.0 )

Interactive Mode を起動する前にリストを {Strings} で絞り込む。(Word Match)
( "grep -w {Strings}" を行っている )


9.2.15 [-e {Strings}] ( >= Ver. 3.8.0 )

Interactive Mode を起動する前にリストを {Strings} で絞り込む。(End Match)
( "grep {Strings}$" を行っている )


9.2.16 [-a] ( >= Ver. 3.9.0 )

移動候補が一つだけの時の自動移動を一時的に有効にするオプション。


9.2.17 [-A] ( >= Ver. 3.9.0 )

移動候補が一つだけの時の自動移動を一時的に無効にするオプション。


9.2.18 [-q] ( >= Ver. 3.10.0 )

履歴保存を一時的に無効にするオプション。


9.2.19 [-Q] ( >= Ver. 3.10.0 )

履歴保存の無効を解除するオプション。


9.3 Interactive Mode の Action

基本的に表示されていない Action は使用できません。

同じ内容が $ cd --help で表示されます。


9.3.1 [q or Enter]

何もしないで処理を終了する。


9.3.2 [Num]

指定した行番号に対応するディレクトリへ移動する。

[ >= Ver. 2.3.2 ]
[-d] を指定時 (Delete Mode) は行番号に対応するディレクトリを削除する。


9.3.3 [n]

次のページを表示する。


9.3.4 [p]

前のページを表示する。


9.3.5 [h]

help を表示する。


9.3.6 [g] ( >= Ver. 2.4.2 )

リストを grep の正規表現を使用して検索する (grep -E) 。


9.3.7 [I] ( >= Ver. 2.5.1 )

Interactive Mode に移行する。


9.3.8 [D] ( >= Ver. 2.5.1 )

Delete Mode ([-d]) に移行する。


9.3.9 [x] ( >= Ver. 2.6.6 )

リストを $PWD で検索する。
結果として、$PWD 以下のみが表示される。


9.3.10 [G] ( >= Ver. 2.6.6 )

リストから grep の正規表現を使用して除く (grep -vE) 。


9.3.11 [l] ( >= Ver. 2.6.6 )

一度に表示する行数を変更する。


9.3.12 [P] ( >= Ver. 3.4.0 )

表示するページを表示する。


9.3.13 [d] ( >= Ver. 3.4.0 )

入力した数だけ上位のディレクトリをカットして表示する (見かけだけ)。
パスが一行で収まらないくらい長い時に使うと効果的。


9.3.14 [c] ( >= Ver. 3.5.0 )

入力した数だけ下位のディレクトリをカットして表示する。


9.3.15 [s] ( >= Ver. 3.5.0 )

リストを sort する。


9.3.16 [W] ( >= Ver. 3.6.1 )

現在表示しているリストをファイルに上書きする。

[ >= Ver. 3.8.0 ]
[w] から [W] に変更

9.3.17 [w] ( >= Ver. 3.8.0 )

リストを grep の正規表現を使用して検索する (grep -w) 。


9.3.18 [e] ( >= Ver. 3.8.0 )

リストを grep の正規表現を使用して検索する。
行末にのみマッチする (grep [Str]$) 。


9.4 Read-Only Mode ([-c]) 時のメッセージ ( >= Ver. 2.4.2 )

Ver. 2.4.2 以降は $ cd -c を入力すると現在は移動できないディレクトリなどを検出し、
削除される理由をつけたディレクトリのリストを Read-Only Mode で表示します
その時に使われる略称の一覧です。


9.4.1 [nf]

ディレクトリが見つけられない (Not Found)。


9.4.2 [ol]

重複している (OverLap)。


9.4.3 [pd] ( >= Ver. 2.4.3 )

移動許可権が無い (Permission Denied)。


9.4.4 [no] ( >= Ver. 2.4.3 )

所有権が無い (Not Owner)。

[ >= Ver. 2.5.1 ]
$NotOwner を 1 に指定した場合は削除対象外になる。


9.4.5 [ed] ( >= Ver. 3.4.0 )

登録除外ディレクトリである (Exclude Dir)。


9.5 便利な使い方

9.5.1 ログイン直後に最後に作業していたディレクトリへ移動する

ログインした直後に $ cd -1


10. Bug Report

10.1 連絡先
10.2 既知のバグ
10.3 実装予定機能

10.1 連絡先

バグを見つけた時や要望がある場合は以下のアドレスにメールをどうぞ。
そのうちバージョンアップするかもしれません。

michi {at} ep.sci.hokudai.ac.jp ({at} = @)


10.2 既知のバグ

現在、私が関知しているバグはありません.


10.3 実装予定機能


11. Recent History

2008/08/08

Ver. 3.10.1

Ver. 2.10.1

Ver. 2.2.31


2008/07/31

Ver. 3.10.0


2008/07/25

Ver. 3.9.0

Ver. 2.10.0


2008/07/24

Ver. 2.2.30