cdirs
==========================
cdirs 用于在目录间任意跳转,对庞大的项目工程效果显著。
- 支持标签目录,支持任意目录跳转到标签标记的目录
- 支持回退目录,快速返回到上级目录,摆脱多次“../../../..”
- 支持检索目录,支持往前检索和跳转目录
- 支持跳转目录,快速跳转到任意曾今去过的目录
- 所有命令均支持tab补全
******
### Author: 广漠飘羽
### E-mail: gmpy_tiger@163.com
******
## 目录
- [简介](#简介)
- [命令集](#命令集)
- [标签类型](#标签类型)
- [特点](#特点)
- [开发中功能](#开发中功能)
- [快速安装](#快速安装)
- [安装步骤](#安装步骤)
- [卸载步骤](#卸载步骤)
- [快速开始](#快速开始)
- [目录切换](#目录切换)
- [快速标记](#快速标记)
- [标签格式](#标签格式)
- [操作标签](#操作目录)
- [标签变量](#标签变量)
- [标签目录](#标签目录)
- [标签目录简介](#标签目录介绍)
- [标签目录命令](#标签目录命令)
- [回退目录](#回退目录)
- [回退目录简介](#回退目录介绍)
- [回退目录命令](#回退目录命令)
- [检索目录](#检索目录)
- [检索目录简介](#检索目录介绍)
- [检索目录命令](#检索目录命令)
- [跳转目录](#跳转目录)
- [跳转目录简介](#跳转目录介绍)
- [跳转目录命令](#跳转目录命令)
- [FAQ](#faq)
---
## 简介
cdirs 用于在目录间任意跳转,解决Linux命令行切换目录繁琐的痛苦。
cdirs 使用`shell script`语言编写,在BASH环境下测试。
### 命令集
cdirs 包含多条命令:
| 命令 | 用途 |
| :-- | :-- |
| `cd` | 等同于传统的cd命令 |
| [`cds`](#标签目录) | 设置标签目录 |S
| [`cdl`](#标签目录) | 罗列已有标签目录 |
| [`cdd`](#标签目录) | 删除已有标签目录 |
| [`cdb`](#回退目录) | 回退到上N级目录 |
| [`cdf`](#检索目录) | 往前检索目录 |
| [`cdj`](#跳转目录) | 跳转到任意当前Shell终端曾经去过的目录 |
### 标签类型
标签目录支持默认标签、全局标签和本地标签。
| 标签类型 | 特点 |
| :---: | :--- |
| [`默认标签`](#默认标签) | 在Bash初始化时加载,作为开机即可用的标签目录 |
| [`全局标签`](#全局标签) | 标签目录对全部Bash终端有效 |
| [`本地标签`](#本地标签) | 标签目录对只对当前Bash终端有效 |
## 特点
- 支持标签目录,支持从任意目录跳转到标签标记的目录
- 支持回退目录,快速返回到上级目录,摆脱多次“../../../..”
- 支持检索目录,支持往前检索和跳转目录
- 支持跳转目录,快速跳转到任意曾今去过的目录
- 所有命令均支持tab补全
### 开发中功能
- 支持拼音跳转中文目录
- 支持模糊匹配英文大小写
## 快速安装
### 安装步骤
#### 获取cdirs
```Bash
git clone https://github.com/gmpy/cdirs.git ~/cdirs
```
#### 安装
* 自动安装
执行安装脚本:
```Bash
~/cdirs/install.sh
```
* 手动安装
在**~/.bashrc**中添加:`source ~/cdirs.sh`
### 卸载步骤
* 自动卸载
**自动卸载只适用于自动安装的cdirs**,执行卸载脚本:
```Bash
~/cdirs/install.sh --remove
```
* 手动卸载
在**~/.bashrc**中删除: `source ~/cdirs.sh`
## 快速开始
### 目录切换
#### 切换到标签目录
与传统的`cd`命令一致,尾随的是**标签名**,例如:
```Bash
cd <标签名>
```
操作示例如下:
```Bash
$ cd ,download #假设<,download = ~/下载>,此时等效于<cd ~/下载>
```
#### 切换到回退目录
```Bash
cdb [回退级数|回退目录名]
```
操作示例如下:
```Bash
$ pwd
/home/gmpy/workspace/android/packages/apps/Camera/src/com/android/camera
$ cdb 2 #往回跳2级,等效于<cd ../..>
/home/gmpy/workspace/android/packages/apps/Camera/src/com
$ cdb apps #支持tab补全,直接回退到名为apps的目录(若重名则罗列供用户选择)
/home/gmpy/workspace/android/packages/apps
$ cdb #显示并选择所有有效的回退目录
Which one do you wand:
0: /home/gmpy/workspace/android/packages/apps
1: /home/gmpy/workspace/android/packages
2: /home/gmpy/workspace/android
3: /home/gmpy/workspace
4: /home/gmpy
5: /home
Your choice [default 0]: 2 #此处通过交互选择编号2的目录
/home/gmpy/workspace/android
```
#### 切换到检索目录
```Bash
cdf [-t 检索深度] <目录名>
```
操作示例如下:
```Bash
$ pwd
/home/gmpy/workspace/android/packages/apps/Camera
$ cdf com #在当前目录检索名为com的目录,寻找深度默认为3,并切换到寻找到的目录
/home/gmpy/workspace/android/packages/apps/Camera/src/com
```
#### 切换到跳转目录
```Bash
cdj <目录名> #当前bash去过的任意目录名,支持tab补全
```
操作示例如下:
```Bash
$ pwd
/home/gmpy/workspace/android/packages/apps/Camera #曾去过名为Camera的目录
$ cdb android #切到其他目录以方便演示
/home/gmpy/workspace/android
$ cdj Camera #跳转到名为Camera的目录,支持tab补全
/home/gmpy/workspace/android/packages/apps/Camera
```
### 快速标记
快速标记用于快速标记当前目录,在任何时候都可通过快速标记返回标记目录
快速标记(`cd ,`)类似于`cd -`,与`cd -`的差别在于:
** `cd -`只能回到上一个目录,而快速标记(`cd ,`)可在任何时候任何目录回到标记目录**
目前只支持1个快速标记目录,且只在当前Bash终端有效
快速标记常用于标记当前工作目录,临时跳转出去进行操作后,跳转回工作目录
通过以下命令标记:
```Bash
cds ,
```
通过以下命令跳转:
```Bash
cd ,
```
通过以下命令显示:
```Bash
cdl ,
```
通过以下命令删除:
```Bash
cdd ,
```
### 标签格式
逗号开头,后接字母开头的字母/数字和符号`-`组合的字串
```Bash
,[字母开头的字母或数字或字符-的组合子串]
eg.
,root1-android
,desktop
```
### 操作标签
#### 默认标签
默认标签在cdirs初始化时自动加载到本地标签,在打开Bash后可直接使用。
默认标签常用于**标记固定常用的目录**,例如标记Android SDK的根目录(等效于croot),例如标记中文目录(eg. ~/桌面、~/下载)
默认标签的配置文件位于:
```Bash
${HOME}/.cdirs-default
```
通过以下命令设置标签:
```Bash
cds -d <标签名> [目录路径] #若[目录路径]为空,则默认为当前目录
```
通过以下命令删除标签:
```Bash
cdd -d [标签名]
```
通过以下命令显示标签:
```Bash
cdl -d [标签名]
```
以标记Android SDK根目录和中文桌面目录为例
```Bash
$ cds -d ,root ~/workspace/project/andoid #指定目录路径
$ cd ~/桌面 #切换目录,用于演示不指定目录路径情况
$ cds -d ,desktop #不使用目录路径
```
标记后的默认标签文件:
```Bash
$ cat ~/.cdirs-default
,root = /home/gmpy/workspace/project/android
,desktop = /home/gmpy/桌面
```
#### 全局标签
cds设置的标签默认为全局标签。
全局标签**对系统内当前用户的所有Bash终端有效**,在重启后清空,对多终端的使用场景非常方便。
全局标签的优先级 < 本地标签的优先级,意味着**如果本地标签与全局标签同名,默认使用本地标签**。
通过以下命令设置标签:
```Bash
cds <标签名>
```
通过以下命令删除标签:
```Bash
cdd <标签名>
```
通过以下命令显示标签:
```Bash
cdl <标签名> # [top]标示:在综合全局标签和本地标签后的有效标签 (本地标签优先级 > 全局标签优先级)
```
#### 本地标签
本地标签区别于全局标签,本地标签**只对当前Bash有效**,且本地标签优先级 > 全局标签优先级
通过以下命令设�
好家伙VCC
- 粉丝: 2118
- 资源: 9145
最新资源
- 微信自动发送消息,微信机器人(简单),可以给一个特定的人发送一个特定的消息,后续会继续完善的.zip
- 以下是关于Python项目设计资源的详细内容.docx
- 三菱plc基于mx组件的通用访问远程api接口
- 一套基于 .NET 开发的支付SDK,它简化了API调用及通知的处理流程
- 以下是关于使用各种编程语言实现算法的详细学习资源.docx
- e刚发的如果看你的了啊好吧耳鼻喉热交换包括aelh
- kernel-5.15-ky10-x86.tar.gz
- yolov4 - tiny 900张图片训练效果2
- 基于OpenCV的简易实时人脸识别门禁控制系统
- 以下是 YOLO(You Only Look Once)学习的详细课程.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈