我想知道是否有一种更简单的方法可以cd
在当前目录中选择目录。
例如,有没有一种方法可以只获取当前目录的编号列表,并且能够执行cd 1
、cd 2
、cd 3
等操作。是否有其他方法可以轻松地cd
在当前目录中的子目录之间移动?
答案1
如果您autocd
在 中设置了该选项,~/.bashrc
则只需键入名称即可更改目录。与制表符补全相结合,您只需键入第一个唯一字符,然后点击Tab即可移动到所需的目录。
从手册中:
如果设置,则执行作为目录名称的命令名称,就好像它是 cd 命令的参数一样。此选项仅由交互式 shell 使用。
将选项添加到您的~/.bashrc
:
shopt -s autocd
如果您使用 Zsh,请使用以下命令设置该选项:
setopt autocd
答案2
添加一个函数到你的 ~/.bashrc
mycd() { local x; shopt -s {null,dot}glob; select x in ../ */; do cd "$x"; break; done; }
用法:mycd
答案3
使用补全!默认情况下,这要求您输入要切换到的目录的唯一前缀,然后按Tab。更准确地说,按Tab完成第一个唯一前缀。
您可以通过一些调整完成读行选项。特别是,设置show-all-if-ambiguous
如果有多个可能的完成,则立即显示列表,或者show-all-if-unmodified
仅当当前前缀由于歧义而无法进一步完成时才显示列表。这些选项进入文件~/.inputrc
,例如:
set show-all-if-ambiguous on
Tab您可以将 bash 配置为在可能的完成中重复按旋转。为此,请将密钥绑定到menu-complete
而不是默认的complete
。在你的~/.inputrc
:
"\t": menu-complete
根据您的安装,完成后cd
可能仅提供目录或所有文件。如果它提供所有文件,您需要启用上下文相关完成。确保bash 完成软件包已安装(它在大多数发行版中都可用)并且您拥有该行
. /etc/bash_completion
在你的~/.bashrc
(或者/etc/bash.bashrc
如果你的发行版有的话)。
兹什是一个替代 shell,它具有 bash 所缺乏的许多用于交互使用的优秀功能,包括在菜单中选择完成的可能性。您可能想尝试一下。
答案4
您还可以通过将当前目录文件路径分配给环境变量(例如...)来为要迁移到的每个目录使用单字符占位符。
a=`pwd`
b=`pwd`
等等。然后你可以使用以下命令跳转到每个目录:
cd $a
cd $b
请务必使用“反引号”,这意味着在引号之间执行命令,等号将输出分配给变量。
您还可以通过写出单字符变量来将路径分配给它们,例如:
c="/home/user/projects/c++/headers/docs"
然后你可以使用...更改到该目录
cd $c