和很多人一样,我也是在电脑前度过一天的大部分时间。为了提高效率(并且不让我的身体有太多的抱怨),我试着建立一个优化的环境。例如,我使用Vim写代码,使用Vimperator浏览网页,使用 i3 窗口管理器。其他日常事情就是文件系统导航(从一个目录切换到另一个目录——译者注)。我更喜欢使用命令行来,但是一遍又一遍的输入 cd ~/some/very/deep/often-used/directory 变得很麻烦。

像autojump、z 和 fasd 这样的自动工具,通过提供一个指向你常用文件夹的快捷方式来处理这个问题。就我个人来说,我希望有一个更加手动的方法,我将这个方法向大家分享。我发现用这个方法后,效率有很大的提高,并且希望你们也能提高效率。

使用符号链接跳转

实际上这个手工解决方案总结起来是在一个隐藏文件夹下(例如 ~/.marks)储存符号链接.这里有4个shell函数:jump, mark, unmark, 和marks:

  1. export MARKPATH=$HOME/.marks
  2. function jump {
  3. cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1"
  4. }
  5. function mark {
  6. mkdir -p "$MARKPATH"; ln -s "$(pwd)" "$MARKPATH/$1"
  7. }
  8. function unmark {
  9. rm -i "$MARKPATH/$1"
  10. }
  11. function marks {
  12. ls -l "$MARKPATH" | sed 's/  / /g' | cut -d' ' -f9- | sed 's/ -/\t-/g' && echo
  13. }

将它们放在你的.zshrc或.bashrc 文件,你就可以开始跳转了(Mac OS X用户需要一个稍微有些不同的makes函数版本,请见下方)。我也把这转换成了一个叫做jump的oh-my-zsh插件,但是这玩意目前还在pull-request。为了添加一个新书签,cd到目录然后使用一个你喜欢的名字标记上它。

  1. $ cd ~/some/very/deep/often-used/directory
  2. $ mark deep

这段文字将在目录~/.marks中添加一个叫做deep的符号链接。跳转到这个目录,在文件系统中的任何地方输入以下命令。

  1. $ jump deep

移除标签(即符号链接),输入:

  1. $ unmark deep

你可以通过输入如下指令来浏览所有的标签

  1. $ marks
  2. deep    -> /home/johndoe/some/very/deep/often-used/directory
  3. foo     -> /usr/bin/foo/bar

没了

添加tab补齐

为了给jump和unmark函数添加Tab补齐,添加如下代码到.zshrc中(感谢tiziano88):

  1. function _completemarks {
  2. reply=($(ls $MARKPATH))
  3. }
  4. compctl -K _completemarks jump
  5. compctl -K _completemarks unmark

或者添加如下代码到.bashrc中(感谢microcolonl)

  1. _completemarks() {
  2. local curw=${COMP_WORDS[COMP_CWORD]}
  3. local wordlist=$(find $MARKPATH -type l -printf "%f\n")
  4. COMPREPLY=($(compgen -W '${wordlist[@]}' -- "$curw"))
  5. return 0
  6. }
  7. complete -F _completemarks jump unmark

现在如果你输入jump或者unmark 然后回车,你会看见一个所有可用的标签.碉堡了!

给Mac OS X>用户:

如guygurari指出的,Mac OS X用户需要一个稍微有些不同的makes函数版本:

  1. function marks {
  2. \ls -l "$MARKPATH" | tail -n +2 | sed 's/  / /g' | cut -d' ' -f9- | awk -F ' -> ' '{printf "%-10s -> %s\n", $1, $2}'
  3. }

译者注:

此功能Windows下也可以实现。做4个批处理 :jump.bat、mark.bat、unmark.bat、marks.bat。每个BAT的内容如下:

jump.bat:

  1. @echo off
  2. set MARKPATH=%~dp0.marks
  3. if [%1]==[] goto err
  4. if not exist "%MARKPATH%/%1" (echo "No such mark: %1") else cd "%MARKPATH%/%1"
  5. :err
  6. echo Type a mark, please.

mark.bat

  1. @echo off
  2. set MARKPATH=%~dp0.marks
  3. set TAR=%cd%
  4. if not exist %MARKPATH% ( goto makedir ) else ( goto makelink )
  5. :makedir
  6. md %MARKPATH%
  7. attrib +h %MARKPATH%
  8. goto makelink
  9. :makelink
  10. cd %MARKPATH%
  11. mklink /j %1 %TAR%
  12. cd %TAR%

unmark.bat

  1. @echo off
  2. set MARKPATH=%~dp0.marks
  3. rd %MARKPATH%\%1

marks.bat

  1. @echo off
  2. set MARKPATH=%~dp0.marks
  3. echo mark list:
  4. dir /b %MARKPATH%

将4个BAT都放在系统环境变量%PATH%中任意一个目录下,或者将bat文件所在目录添加进%PATH%中就行了。因为Window在 vista/win7在引入这个功能,因此只能在vista/win7以上的系统中使用。还有一点不一样的是,链接文件保存在bat文件所在目录下 的.marks隐藏文件夹下,而不是某个系统文件夹,这样在删除的时候也不用乱找了。

使用的时候和上述描述一样,使用如下命令:

跳转:

  1. jump markname
  2. mark markname
  3. unmark markname
  4. marks

就是marks的功能就没有那么强了。。。

原文链接:http://jeroenjanssens.com/2013/08/16/quickly-navigate-your-filesystem-from-the-command-line.html

译文链接:http://blog.jobbole.com/46258/

linux用命令行快速切换目录相关推荐

  1. linux快速切换目录命令,Linux在命令行快速切换目录 - 米扑博客

    今天在微博上看到一个用命令行快速切换目录的文章,比之前自己的解决方案好了非常多,必须记录下来分享下. 每天在命令行下,一大部分的工作都是一遍又一遍的输入 cd ~/some/very/deep/oft ...

  2. cmd 命令行窗口切换目录 cd 命令操作方法

    cmd命令行窗口切换目录 cd 命令操作方法 1. 同一磁盘下目录切换 D:切换盘符(注意冒号是英文格式的) cd :显示当前目录 cd.. :返回上一层目录 cd xxx:切换文件夹 2. 不同磁盘 ...

  3. 如何在cmd命令行下切换目录

    1.首先按下Win+R组合打开运行,输入cmd,然后回车进入命令行模式,如图: 2.进入到命令行模式中默认显示的是当前登录用户的文件夹,如图: 3.输入 cd - 就可以退回上一级目录,如图: 4.输 ...

  4. 如何在cmd命令行窗口切换目录

    话不多说,老板,上菜! 1.在当前磁盘中切换目录 eg.更换为桌面目录 2.切换不同磁盘 eg.从C盘切换到F盘 3.返回上层目录 eg.从F盘的Software目录返回上级根目录 大概就这些了吧,感 ...

  5. 如何在cmd命令行下切换目录(详细步骤)

    1,首先进入cmd中,一般默认在C盘中的system32中打开 2,cd..   是返回上一级 3,D:(F:)  表示直接切换到相应的盘中 4,比如切换到一个想要的目录,就如下操作:cd D:\XX ...

  6. 电脑在cmd命令行下快速切换目录文件

    文章目录: 第一部分: 快速切换目录文件 1.切换到指定磁盘 2.目录之间切换 3.切换到指定目录通过cmd 4.相关命令 第二部分:电脑常用Win+R快捷命令 第三部分:Windows10 触摸板手 ...

  7. linux 权限提示信息,命令行快速提示:权限进阶 | Linux 中国

    原标题:命令行快速提示:权限进阶 | Linux 中国 本部分介绍使用权限管理文件访问和共享的其他方法. -- Paul W. Frields 前一篇文章.本部分介绍使用权限管理文件访问和共享的其他方 ...

  8. Linux命令行技巧——使用目录栈进行导航

    Title: Linux命令行技巧--使用目录栈进行导航 Author: Charles Shih Create: 2017-08-31 17:03:28 目录栈导航 基本命令 目录栈结构 pushd ...

  9. linux 快速 命令快捷键,快速操作Linux终端命令行的快捷键列表

    快速操作Linux终端命令行的快捷键列表 在shell命令终端中,Ctrl+n相当于方向向下的方向键,Ctrl+p相当于方向向上的方向键. 在命令终端中通过它们或者方向键可以实现对历史命令的快速查找. ...

  10. Linux桌面环境与命令行环境切换快捷键,以及linux 图形界面 X Server 关闭 启动

    1 Linux桌面环境与命令行环境切换快捷键 1.从linux桌面环境切换到命令行终端 Ctrl+Alt+F1-F6:进入虚拟终端或虚拟控制台,其中F1~F6对应与6个不同的虚拟终端.进入终端输入用户 ...

最新文章

  1. Redis源码解析——字典基本操作
  2. 如何实现手机自动适应网页
  3. 学生计算机屏幕坏了怎么办,如果计算机显示器的屏幕坏了怎么办?
  4. 简单一“录”,轻松完成金融业务审核!
  5. nodeJS — 学习的笔记
  6. 复习Linux基本操作----常见指令
  7. cesium 经纬度绘制点_NCL绘制2016年1号台风(Nepartak)
  8. getminimum_Java Calendar getMinimum()方法与示例
  9. mysql load settings_在PHP中,有没有办法检查MySQL是否启用了'LOAD DATA INFILE'
  10. CAD(2007)学习笔记
  11. xp html5 显卡,最新桌面显卡性能排行 2018年5月显卡天梯图最新完整版
  12. unity 暂停按钮_Unity通过按钮控制视频播放与停止
  13. ebtables Basic examples
  14. Android代码实现新年贺卡动画
  15. python3跑通smpl模型_Python smpl-pytorch包_程序模块 - PyPI - Python中文网
  16. BI领导驾驶舱的功能特点
  17. windows 设备管理器中的设备控制
  18. 利用ffmpeg 从RTSP流 取rgb图
  19. 论文解读: PP-YOLOE: An evolved version of YOLO
  20. Android Treble架构学习

热门文章

  1. linux运维工作内容及岗位要求
  2. Ubuntu文件系统损坏修复
  3. 现在计算机上都有高速缓冲存储器,高速缓冲存储器(Cache.一般采用DRAM构成
  4. 蓝牙音频编码简介 - SBC、AAC、AptX、LDAC、LHDC
  5. java实现lbs_如何在 Java 中利用 redis 实现 LBS 服务
  6. 2022百度大数据开发工程师实习面试经历
  7. 恶意程序行为特征总汇
  8. c++类模板用法讲解
  9. Blender学习笔记(3)建模|blender
  10. 合作动态 | 方正璞华与日立签订战略合作协议,加快推进数字化管理变革!