如何通过 CLI 快速进入和退出深层嵌套目录?

如何通过 CLI 快速进入和退出深层嵌套目录?

我们知道,如果目录存在的话,使用cd <directory>将会打开它!

此外,cd ..还会将我们从当前工作目录提升一级。

但是,当我们有一个类似较长路径的嵌套目录时/home/thina/teams/td/tech/app/release/apks,进入该文件夹会很累apks,而且很难返回到另一个节点,比如这里/home/thina/teams

有什么方法可以跳过输入cdcd ..?我正在使用 Ubuntu 16.04。

答案1

pushdpopd

pushd /home/thina/teams/td/tech/app/release/apks
# current directory now /home/thina/teams/td/tech/app/release/apks
popd
# current directory now what it was before pushd command

尝试help pushdhelp popd以获得更多选项。没有man页面,因为pushdpopd是 bash 内置命令。

答案2

除了已经提供的非常好的答案之外,这里还有一些cd有效使用的技巧。

  • cd -将带您回到您所在的最后一个目录。
  • cd ../../..将立即带您上升 3 个级别,您可以使用 ..连接在一起的符号来“向上移动”任意数量的目录。
  • 如果您不确定要向上移动多少次,请使用cd ..,然后按向上箭头键使用 bash 历史记录再次使用该命令。
  • 用于~代表当前用户的主目录,如果您以用户thina身份登录,cd ~/teams将带您到/home/thina/teams
  • 使用 Bash 路径自动补全功能,tab 键将补全命令中的路径部分cd,如果您输入路径部分后跟Tab,则在没有其他有效选择的情况下,该部分将被补全。例如,如果您输入cd /home/thina/teams/td/t然后按下Tab,则单词 tech 将被填充,只要 td 目录中没有以字母 t 开头的其他文件或目录。

结合使用这些技巧可以使遍历目录变得cd不那么痛苦。

答案3

要想在树中一次向上移动几层,你可以使用以下函数(感谢 muru 提供的增强版本):

up ()
{
    local old="$PWD"
    for i in $(seq "${1:-1}"); do
        cd ..
    done
    OLDPWD="$old"
}

然后你可以这样做:

$ pwd
/home/thina/teams/td/tech/app/release/apks
$ up 5
cd'ing into /home/thina/teams

此外:

  • 不带参数的调用up相当于cd ..due to which在设置时${1:-1}替换,否则$11
  • 在最后一次之后设置 OLDPWDcd ..旨在保留通常的cd -行为。

答案4

更新:还有比更强大的工具autojumpfasd,但我不太熟悉。


我很惊讶没有人提到autojump

通过维护命令行中最常使用的目录的数据库来工作(必须先访问目录,然后才能跳转到该目录。)

它基本上是@graipher 所构建的,带有一些额外的选项。

正如我提及关于另一个问题:

在您多次使用 cd 进入某个目录之后(一次就足够了):

cd /home/thina/teams/td/tech/app/release/apks

您可以使用快捷方式j快速移动到那里,无论您当前位于哪个目录:

j apks

请注意,使用路径的任何部分都可以,只要它是列表中的最高部分: 如果您去那里的次数多于去 的次数,j app也会带您到。.../apks.../app

我推荐你使用它,而不是使用自己的脚本,因为它维护得很好,适用于 Ubuntu,并且有其他一些不错的功能,比如跳转到孩子

.../td/tech $ jc apk
.../release/apks $ 

已将您移至apkstd而不是其他apks树下的位置。

相关内容