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 主な機能
- 保存されている範囲ならいくつ前のディレクトリにも移動可能。
- 保存したファイルから履歴のリストを表示し、そこから移動先を選択可能。
- 保存数や一度に表示する行数などは任意に設定可能。
- 移動後の $PWD を保存しているのでログアウト時のディレクトリを呼び出す事も可能。
4.2 仕様
4.2.1 使用コマンド
- grep、sed、textutils のコマンド群 (head、tail、etc) を使用しており、
最初に読み込む時にコマンドのパスのチェックを行います。 - 非 GNU 環境はテストしていないので動作の保障は出来ません。
4.2.2 通常の cd の挙動
- $CDPATH の機能、影響はありません。
- -L、-P オプションも正常に機能します。
4.2.3 履歴に登録できないディレクトリ
- 改行文字を含むディレクトリを正しく履歴に残す事はできません。
- 一部のメタ文字 (ex: \{}() ) を含むディレクトリは grep などが誤作動を起こすので
履歴の内容がおかしくなる可能性があります。 - 日本語のディレクトリはユーザの環境に依存するので動作の保証は出来ません。
5. Description
ヘルプから抜粋.
6. How to Use
ソースから抜粋。
7. Licence
このスクリプトはフリーウェアです。
使用、改変、再配布は自己責任の範囲でお好きにどうぞ。
8. Download
コンセプトの違いにより複数のバージョンを置いてありますのでお好きなバージョンをどうぞ。
8.1 軽量版8.2 標準版
8.3 高機能版
8.4 旧版
8.1 軽量版
履歴を複数保存し、それを参照して移動できる、という開発初期のコンセプトのみ実装しています。
処理が高速である事を目指しています。
主な機能
- cd の履歴を任意の数 (default は 100) だけファイル (default は $HOME/.bash_cdhistory) に保存します。
- ファイルに保存されている数だけ過去のディレクトリに移動できます。
- 履歴を表示 (default は10行) してそのリストから選択して移動できます。
- 表示数、最初に表示するページはオプションで指定できます。
- 選択したディレクトリが存在しなかった場合は自動で履歴から削除されます。
2008/08/08
Ver. 2.2.31
cdhist2.sh_2.2.31.gz (5.2k byte)
- コードを最適化
8.2 標準版
軽量版に履歴の削除機能と検索機能等を追加しています。
通常の使用であれば十分な機能を備えていると思われます。
主な追加された機能
- [-c] : 履歴に存在しない行をまとめて削除するメンテナンス用オプション。
- [-d] : 表示した履歴を個別に削除するオプション。
- [-g] : 履歴を表示する前に grep を行うオプション。
2008/08/08
Ver. 2.10.1
cdhist2.sh_2.10.1.gz (7.5k byte)
- コードを最適化。
8.3 高機能版
標準版に色々と機能を追加しています。
主な追加された機能
- [-f] : 履歴ファイルを指定するオプション。
- [-s/-S] : 上位/下位のディレクトリをカットして表示するオプション。
- 登録除外ディレクトリを設定可能。
2008/08/08
Ver. 3.10.1
cdhist2.sh_3.10.1.gz (8.8k byte)
- [-q/-Q] : 履歴が保存されない事があるバグを修正。
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 を組み合わせる事で行えると思います。
/ から始まるディレクトリ以外は自動で削除されるので
必ずフルパスで追加してください。
履歴は最近移動したディレクトリの順に並んでいるので
この方法で追加しても順番が狂う事はありませんが,
保存の上限を超える数が登録されたら自動的に削除されます。
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
- [-q/-Q] : 履歴が保存されない事があるバグを修正。
Ver. 2.10.1
- コードを最適化。
Ver. 2.2.31
- コードを最適化。
2008/07/31
Ver. 3.10.0
- [-q/-Q] : 履歴保存を一時的に無効にする/無効を解除するオプション。
2008/07/25
Ver. 3.9.0
- 移動候補が一つだけの時に自動移動する機能を実装(ユーザ設定項目)。
- [-a/-A] : 移動候補が一つだけの時の自動移動を一時的に有効/無効にするオプション。
Ver. 2.10.0
- 移動候補が一つだけの時に自動移動する機能を実装(ユーザ設定項目)。
2008/07/24
Ver. 2.2.30
- ヘルプを改訂
- コードを最適化