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

Macos 在终端(Unix/OS X)中导航到常用/最近使用的目录,macos,bash,unix,Macos,Bash,Unix,是否可以保存我最近/通常使用的某些位置(如/folder/folder/folder/),这样我就不必在当前目录和目标目录之间手动浏览每个目录 有点像alt tab,但用于路径。我使用的是OSX,但也许这可以使用基本的Unix技能来完成 谢谢 在大多数shell中工作的一种方式(但对于不同的shell略有不同)是目录堆栈。您可以使用 PUSTD 推送目录, POPD < /C> >从堆栈中弹出顶部目录,以及 DRIs,以移动目录并切换到堆栈中间的目录。我刚检查过,Mac OS X上的pushd手

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

有点像alt tab,但用于路径。我使用的是OSX,但也许这可以使用基本的Unix技能来完成


谢谢

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

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

可以是
别名(通过将其放入
~/.bashrc
~/.profile
,具体取决于设置):


或者@Jeremiah建议的
pushd/popd

或者是
别名
(根据设置将其放入
~/.bashrc
或者
~/.profile
):


或者@Jeremiah建议的
pushd/popd

如果您将shell设置为保存命令历史记录,则使用Ctrl+R热键可以节省一些时间,这样可以在键入时搜索以前执行的命令。另一件值得注意的事情是,如果您按Tab键一次/两次,大多数Shell都会为您提供文件/目录名完成功能,这也是非常有帮助的


编辑:您还可以在单个目录(如主目录)中创建一些符号链接,以快速访问目录。使用
ln-s
命令。目标路径可以是相对路径,也可以是绝对路径。

如果将shell设置为保存命令历史记录,则使用Ctrl+R热键可以节省一些时间,这样可以在键入时搜索以前执行的命令。另一件值得注意的事情是,如果您按Tab键一次/两次,大多数Shell都会为您提供文件/目录名完成功能,这也是非常有帮助的


编辑:您还可以在单个目录(如主目录)中创建一些符号链接,以快速访问目录。使用
ln-s
命令。目标路径可以是相对路径,也可以是绝对路径。

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

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

zsh
中有几个选项

如果您使用
setopt AUTO_PUSHD
,shell可以保存一堆最近插入的
cd
”目录。完成设置后(
autoload-U compinit;compinit
),键入
cd+
,然后按tab键,您将得到一个编号列表:

~% cd /Library
/Library% cd /System/Library
/System/Library% cd +
1 -- /Library
2 -- /Users/nicholas
因此,最近的目录是
+1
,等等(您可以像我一样,使用
setopt PUSHD\u-MINUS
将其反转,因此您使用
-
而不是
+
,最近的目录是
-1

另一个选择是目录散列;您可以创建伪“主目录”(
~随便什么
)。我的一些朋友,例如:

  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~pep
cd-pep
(如果没有歧义),甚至可以键入
pep
(如果设置了
AUTO_-cd
)。在非
cd
的情况下,您也可以将目录堆栈与
~
一起使用,例如
~+1
~-1

zsh
甚至可以用
AUTO\u NAME\u DIRS
选项替换
~
之后的shell变量,尽管我不使用它,因为它会使变量列表混乱。然而,这里有一个例子:

~%setopt AUTO_NAME_DIRS
~%v=/Volumes

~%cd ~v
~v%pwd
/Volumes
zsh
还支持另一个答案中提到的
cdpath
。例如,我有:

cdpath=($HOME /Volumes)

因此,我可以只使用主目录中已装入的卷或目录的名称来
cd

zsh
中有几个选项

如果您使用
setopt AUTO_PUSHD
,shell可以保存一堆最近插入的
cd
”目录。完成设置后(
autoload-U compinit;compinit
),键入
cd+
,然后按tab键,您将得到一个编号列表:

~% cd /Library
/Library% cd /System/Library
/System/Library% cd +
1 -- /Library
2 -- /Users/nicholas
因此,最近的目录是
+1
,等等(您可以像我一样,使用
setopt PUSHD\u-MINUS
将其反转,因此您使用
-
而不是
+
,最近的目录是
-1

另一个选择是目录散列;您可以创建伪“主目录”(
~随便什么
)。我的一些朋友,例如:

  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~pep
cd-pep
(如果没有歧义),甚至可以键入
pep
(如果设置了
AUTO_-cd
)。在非
cd
的情况下,您也可以将目录堆栈与
~
一起使用,例如
~+1
~-1

zsh
甚至可以用
AUTO\u NAME\u DIRS
选项替换
~
之后的shell变量,尽管我不使用它