Linux下目录间高效跳转

忘掉cd,忘掉目录

Posted by fishcried on June 22, 2014

读完这篇tips,希望有些人能感叹原来自己以前确实有点”傻”

linux下切换目录非常频繁的操作,一台多人工作服务器上统计命令使用频率, 定能够看到cd在top3内。

[fishcried@fishcired ~]# find /home -maxdepth 2 -name ".bash_history" |\
			 xargs sort | uniq -c | sort -nr -k1,1 | head -n 5
   3374 ls
	711 cd ..
	362 make
	303 svn up
	281 cd xxx/

看,No2是cd ... 咱们再看看看使用cd进入 4级以上嵌入 的目录命令。

[fishcried@fishcried ~]$ find /home -maxdepth 2 -name ".bash_history" |\
			 xargs grep -E '^cd .*/.*/.*/.*/.*'  |\
			awk -F: '{print $2}' | sort | uniq -c | sort -nr -k1,1 
	  1 cd ../../../usr/os/xxx/  #xx进行了处理
	  1 cd ../../xxx/xxxx/xxxxx/ #xx进行了处理
	  1 cd ../../../../../..
	  1 cd ../../../../
	...

看到结果了吧,cd ../../../../..,是不是有点傻! 以上只是想说明,目录跳转是常用的命令,很多情况下需要一点技巧来提高效率,尤其是保护手指。

1. Tab自动补全

Tab自动补全应该是人人皆知的技巧。但是有很多刚接触linux的人真的之在一个一个字符的敲路径。进入~/123456/abcde目录只需要敲12 + tab + / + ab + tab + Enter就应该足以.

2. 善用-

-真是个好东西,如果你不知道。那么请在终端键入10次-,每一次都观察当前目录变化。这是个非常非常实用的命令!

3. 使用alias定义多层次的 ..

进入上级目录时cd .., 进入上级的上级的上级的目录,cd ../../../. 为什么不..3? 只需要在.bashrc中加入:

   alias ..='cd ..'
   alias ..2='cd ../..'
   alias ..3='cd ../../..'

..应该是最常用到的,当时爱上他就无法放手了,做到这一点又如此的简单。

4. 自定义的marks, mark, jump

如果进行一个大项目,会有多个经常访问的目录,如果实现这些目录间的快速跳转那?linux shell提供了dirs,pushd,popd.但是这个三个命令感觉并不是很好用。就自己定制一下吧。

export MARKPATH=$HOME/.marks
function jump {
	cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1"
}
function mark {
	mkdir -p "$MARKPATH/" ; ln -s "$(pwd)" "$MARKPATH/$1"
}
function unmark {
	rm -i "$MARKPATH/$1"
}
function marks {
	ls -l "$MARKPATH" | awk '{if (NR != 1) { printf "%s\t->\t%s\n", $9,$11}}'
}
  • mark将一个目录加入常用仓库
  • marks显示仓库内的目录
  • unmark移除不需要的目录
  • jump跳转到指定的目录

总结

  • mark,jump是最常用的,非常高效.如果你有多个项目或者多个常用工作目录,只要mark一下,以后jump就可以。试试吧,谁用谁知道。
  • -其实就是电视遥控器的返回按键。不知道-的,请记住吧。
  • ..N这个其实用的不多,但是一旦使用就可以少敲好几个..。有一天一小伙伴路过,看到..2后,感叹”嚓,还可以这么用,把你rc文件给我!”

修改记录

Why Who When
整理旧文档 fishcired 2014-06-22
修改标题 fishcired 2014-08-22