在终端(Unix / OS X)中导航到常用/最近使用的目录

时间:2011-01-23 04:02:54

标签: macos bash unix

是否可以保存我最近/常用的某些位置(例如/ folder / folder / folder /),这样我就不必手动浏览当前目标和目标目录之间的每个目录? / p>

有点像alt-tab,但是对于路径。我在OS X上,但也许这可以使用基本的Unix技能来完成?

谢谢!

7 个答案:

答案 0 :(得分:2)

如果您设置shell以保存命令历史记录,则使用Ctrl + R热键可以节省一些时间,在您键入时执行先前执行的命令的搜索。另一件好事是,如果按Tab键一次/两次,大多数shell都会为你提供文件/目录名称完成,这也很有帮助。

编辑:您还可以在单​​个(例如家庭)目录中创建一些符号链接,以快速访问目录。使用ln -s <path to target file/directory> <path to link>命令。目标路径可以是相对路径也可以是绝对路径。

答案 1 :(得分:1)

在大多数shell中工作的一种方法(但对于不同的shell略有不同)是目录堆栈。您可以使用pushd推送目录,popd从堆栈弹出顶层目录,dirs移动目录并切换到堆栈中间的目录。我刚检查过,Mac OS X上pushd的手册页没用;使用shell的手册页(可能是bash)并在那里搜索pushd等。

答案 2 :(得分:1)

在Bash中,您可以向CDPATH变量添加目录。如果您尝试cd到不以斜杠开头的目录,则会搜索CDPATH中列出的目录以查找匹配的目标。

答案 3 :(得分:1)

zsh中有几个选项。

如果您使用cd,那么shell可以保留您setopt AUTO_PUSHD所编辑的最新几个目录的堆栈。完成设置(autoload -U compinit; compinit)后,键入cd +并按标签,您将获得一个编号列表:

~% cd /Library
/Library% cd /System/Library
/System/Library% cd +
1 -- /Library
2 -- /Users/nicholas

所以最近的目录是+1等。(您可以像我一样使用setopt PUSHD_MINUS撤消此目录,因此您使用-代替+最近的目录是-1)。

另一种选择是目录散列;你可以创建伪“主目录”(~whatever)。我的一些人,例如:

  hash -d v=/Volumes
  hash -d a=/Volumes/BanjoArchive
  hash -d pep=/System/Library/Frameworks/Python.framework/Versions/Current
  hash -d sp=$(print /Library/Python/*/site-packages(On[1]))

因此,我只需输入cd ~pepcd pep(如果明确无误)或甚至pep(如果设置了AUTO_CD)。在cd以外的情况下,您也可以将目录堆栈与~一起使用,例如~+1~-1

zsh甚至可以在使用~选项的AUTO_NAME_DIRS之后替换shell变量,但我不使用它,因为它会使变量列表混乱。不过,这是一个例子:

~%setopt AUTO_NAME_DIRS
~%v=/Volumes

~%cd ~v
~v%pwd
/Volumes

zsh也支持cdpath作为提及的其他答案之一。例如,我有:

cdpath=($HOME /Volumes)

所以我可以将我的主目录中已安装的卷或目录的名称用于cd

答案 4 :(得分:1)

我偶然发现了Z,它解决了我所有的导航问题。

答案 5 :(得分:0)

alias(根据设置,将其放入~/.bashrc~/.profile):

alias godocs='cd /home/me/my_docs`
@Jeremiah建议

pushd/popd

答案 6 :(得分:0)

查看“Cd Deluxe”以获得极大改进的“更改目录”命令:http://www.plan10.com/cdd/