简评:作为工程师,你在命令行下最常打的命令无非就是 cd 与 ls。这些年你浪费了多少时间?
作为一个程序员或者在 shell 中花费大量时间的人,你可能会经常以一种低效率的方式在目录中来回移动,特别是每天经常访问相同目录。

比如像这样:

https://segmentfault.com/img/bV9eFt?w=677&h=276

当然你可能用的稍微熟练点了,用 Tab 能省不少事,像这样:

https://segmentfault.com/img/bV9eFv?w=677&h=204

不错!你大约节省了 20 次的输入,值得称赞。你也会使用 mkdir 创建新目录并直接进入新建目录(cd !$),你也能记住 project 的目录,你就不用老 ls 来寻找文件。不过现实问题,人不是电脑,我们能记住一两个,但不可能记住全部,我们的效率不够高。

有没有想过这种方式?

https://segmentfault.com/img/bV9eFF?w=668&h=169

现在只需要 j d(或者 j dev、j develop)就可以跳转到 ~/Develop 目录,j p 就可以跳转单 ~/Develop/project。效率大幅提高。

看看对比:

https://segmentfault.com/img/bV9eFK?w=680&h=132

这是如何实现的?

用 AutoJump 可以做到。(GitHub 地址:wting/autojump)

根据官方介绍,它能以更快的方式浏览系统文件,这并不准确,或者说很谦虚。据我完全估计,用 AutoJump 至少让我省了 100 个小时,最起码省了这么多。

Autojump 是如何工作的?

看看这两个命令:

https://segmentfault.com/img/bV9eF0?w=672&h=73eee92ddf9_hd.jpg

https://segmentfault.com/img/bV9eF6?w=672&h=73

它们的作用相同。AutoJump 会记住 cd 命令并用 j 来进入所有的目录。更重要的是 AutoJump 可以模糊匹配。意味着只需要提供一个字母,就可以匹配到之前访问过的该首字母的目录。

如果有两个以 p 为开头的目录怎么办?

这就是有趣的地方。

当你第一次输入 cd directory_name,AutoJump 会记录该目录并成为绝对路径,并将其指定权重为 10.0 分。

举个例子:

https://segmentfault.com/img/bV9eF9?w=670&h=53

然后输入 j -s 命令可以看到(s 代表统计信息):

https://segmentfault.com/img/bV9eGb?w=667&h=46

如果你再次 cd/var 后,j -s,看看会发生什么?

https://segmentfault.com/img/bV9eGm?w=670&h=51

对,这个路径的权重增加了。比如看看我电脑上的 j -s,我平时都在干什么你就会一目了然:

https://segmentfault.com/img/bV9eGq?w=673&h=363

我第一个campus 和第四个 SodeSchool 都包含字母 c,那么 AutoJump 应该县跳转到哪个目录呢?

由于 campus 权重低,所以会 j c 会跳到 CodeSchool 目录,如果重复 j c 命令,就会跳转到 campus 目录。

https://segmentfault.com/img/bV9eGF?w=670&h=123

如果你不喜欢 AutoJump 自动设置的路径,你可以自己设置匹配:

https://segmentfault.com/img/bV9eGQ?w=671&h=222

你可以设置后面的数字, j c _4 就是 j c 跳转到第四个目录。

高级功能

jc(注意没空格 不是上面的 j c)仅在子目录下跳转,非常适合寻找被嵌套的 log
jo 会在操作系统下打开匹配的目录。
j-i 增加当前目录权重
j-d 减少当前目录权重
j--purge 消除所有的权重
安装 AutoJump

AutoJump 支持:

Python v2.6+(除了 3.2 版本)
支持的 shell:
bash v4.0+
zsh
fish
tcsh (experimental)
clink (Windows, experimental)
你可以通过许多 Linux 软件包安装器来安装。对于 MacOS 我推荐 Homebrew 的 brew install autojump,真的超简单方便。

把 Autojump 放在.bash_profile 或者 .szhrc 下,输入命令行:

[ -f /usr/local/etc/profile.d/autojump.sh ] && . /usr/local/etc/profile.d/autojump.sh
它会自动检查脚本是否可用并加载到 shell 中。

你也可以克隆 git 仓库,手动安装。不管怎么说,它都是一个非常简单的、稳定的工具。

我用了它的这些年里,从来没有后悔过。

下载地址:wting/autojump(GitHub)

命令行里打 cd 简直是浪费生命的更多相关文章

  1. 每天一个linux命令(2):cd命令

    1. 命令格式: cd [目录名] 2. 命令功能: 切换当前目录至dirName 3. 常用范例 3.1 例一:进入系统根目录 命令: cd / 输出: [root@localhost ~]# cd ...

  2. linux命令(2):cd命令

    Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧. 1.  ...

  3. 如何在命令行里运行python脚本

    python是一款应用非常广泛的脚本程序语言,谷歌公司的网页就是用python编写.python在生物信息.统计.网页制作.计算等多个领域都体现出了强大的功能.python和其他脚本语言如java.R ...

  4. linux笔记:目录处理命令ls,mkdir,cd,pwd,rmdir,cp,mv,rm

    linux命令的格式:命令 [-选项] [参数]例:ls -la /etc 命令:ls命令所在路径:/bin/ls功能:显示目录文件用法:ls [-aldh] []参数:-a 查看所有文件,包括隐藏文 ...

  5. linux命令——磁盘管理cd

    Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. cd指令可让用户在不同的目录间切换,但该用户必须拥有足够的权限进入目的目录. 1 ...

  6. 转每天一个linux命令(2):cd命令

      Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧. 1 ...

  7. linux每日命令(2):cd命令

    1.命令格式: cd [目录名] 2.命令功能 切换当前目录至 [目录名] 3. 常用范例 1.进入系统根目录 命令: cd / 说明:进入系统根目录,上面命令执行完后拿ls命令看一下,当前目录已经到 ...

  8. 【转】每天一个linux命令(2):cd命令

    原文网址:http://www.cnblogs.com/peida/archive/2012/10/24/2736501.html Linux cd 命令可以说是Linux中最基本的命令语句,其他的命 ...

  9. Linux 命令学习之cd

    功能说明: cd 命令是 linux 最基本的命令语句,其他的命令都会依赖与 cd 命令.因此学好 cd 命令是必须的. 语 法:cd [目的目录] 补充说明:cd指令可让用户在不同的目录间切换,需要 ...

随机推荐

  1. C# web程序,winform程序,控制台程序配置log4net,使用log4net

    第一添加log4net.config,这里配置包括信息提示写入,错误信息写入,控制台消息展示 <?xml version="1.0" encoding="utf-8 ...

  2. leetcode896

    class Solution { public: bool isMonotonic(vector<int>& A) { ) { return true; } bool GetDif ...

  3. Java微信公众平台开发(二)--微信服务器post消息体的接收

    转自: http://www.cuiyongzhi.com/post/39.html 在上一篇的文章中我们详细讲述了如何将我们的应用服务器和微信腾讯服务器之间的对接操作,最后接入成功,不知道你有没有发 ...

  4. js中slice,splice和split方法的区别

    1.slice(数组) 用法:array.slice(start,end) 解释:该方法是对数组进行部分截取,并返回一个数组副本:参数start是截取的开始数组索引,end参数等于你要取的最后一个字符 ...

  5. php SqlServer 中文汉字乱码

    php SqlServer 中文汉字乱码,用iconv函数转换 查询显示的时候,从GB转换为UTF8 <?php echo iconv('GB2312','UTF-8',$row['Name'] ...

  6. <正则吃饺子> :关于redis集群的搭建、集群测试、搭建中遇到的问题总结

    项目中使用了redis ,对于其基本的使用,相对简单些,根据项目中已经提供的工具就可以实现基本的功能,但是只是这样的话,对于redis还是太肤浅,甚至刚开始时候,集群.多节点.主从是什么,他们之间是什 ...

  7. Spring Cloud Eureka 4 (高可用服务注册中心)

    在微服务这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须考虑对各个组件进行高可用部署,对于服务注册中心也是一样. Eureka Server 的高可用实际上就是讲自己作为服务向 ...

  8. wangEditor富文本编辑器

    设置好了是这样的, 有一个ID问content的编辑框,方便获取,这里的富文本编辑器的版本是2.2 官方文档说3就不支持textarea了 导入一下css 记得css文件夹下应该又3个文件,虽然没有直 ...

  9. php-fpm, nginx ,fastcgi ,php-cgi 关系粗解

    首先,CGI 是干什么的?  CGI 是为了保证web server传递过来的数据是标准格式.CGI  是个协议和 进程没什么关系. CGI 是http服务器于你的本机或者其他电脑上的程序交谈的一种工 ...

  10. NOIP2018 解题笔记

    D1T1 铺设道路 在场上并没有想到积木大赛这道原题. 差分之后可以把在$[l, r]$这段区间$ - 1$变成在$l$处$ - 1$,在$r + 1$处$ + 1$,然后最终目标是使$\forall ...