さまざまなバージョンのカタログバックアップを閲覧する最良の方法

さまざまなバージョンのカタログバックアップを閲覧する最良の方法

rsyncバックアップスクリプトを使用しています(ここを参照:https://codereview.stackexchange.com/questions/29429/push-backup-script) 次のディレクトリが作成されます。

back-2015-07-02T21_18_01

zshそれでは、コマンドライン()にあり、に/path/to/my/backup/back-2015-07-02T21_18_01/home/myuser/myfiles/somedir/subdir/切り替えたいとしましょう/path/to/my/backup/back-2016-04-02T21_17_01/home/myuser/myfiles/somedir/subdir/

最速/最も良い方法は何ですかzsh?私は主にzshメニュー補完機能を使用しているので、メニュータブ補完機能を使用して別の日付を選択できますが、現在のサブディレクトリは維持したいと思います(他のバックアップ日付でのみ可能です)。

ベストアンサー1

あるディレクトリコンポーネントを別のディレクトリコンポーネントに置き換える1つの方法zshは、2つのパラメータバージョンを使用することですcd

cd old new

これはnew最初の部分文字列の一致を置き換えold、ディレクトリを結果パスに変更しようとします。たとえば、

% pwd
/path/to/my/backup/back-2015-07-02T21_18_01/home/myuser/myfiles/somedir/subdir/
% cd "5-07-02T21_18_01" "6-04-02T21_17_01"
/path/to/my/backup/back-2016-04-02T21_17_01/home/myuser/myfiles/somedir/subdir/
% pwd
/path/to/my/backup/back-2016-04-02T21_17_01/home/myuser/myfiles/somedir/subdir/

検索と置換は完全に文字列レベルで行われ、置換は常に最初の一致でのみ行われます。したがって、存在する場合、/foo/foo/foo/fooランタイムは実際に存在するかどうかにかかわらず、cd foo bar常にディレクトリをに変更しようとします。たとえ存在しても、そのような代替物を探すことはないだろう。/bar/foo/foo/foo/foo/foo/bar/foo

2番目の引数の補完機能はで提供されていますが、1番目の引数compinitは少なくともデフォルトの補完設定を使用して入力する必要があります。compinit何らかの理由で有効になっていない場合は、実行して追加することautoload -U compinit; compinit~/.zshrc変更できます。

ノート:文字列のcd新しい文字をサポートします。つまり、を実行して切り替えることができます。しかし、この場合は完成しないようですので、2番目の引数も直接入力する必要があります。/old/a/b/c/d/x/y/z/c/dcd a/b x/y/z

おすすめ記事