我们知道,如果目录存在的话,使用cd <directory>
将会打开它!
此外,cd ..
还会将我们从当前工作目录提升一级。
但是,当我们有一个类似较长路径的嵌套目录时/home/thina/teams/td/tech/app/release/apks
,进入该文件夹会很累apks
,而且很难返回到另一个节点,比如这里/home/thina/teams
。
有什么方法可以跳过输入cd
和cd ..
?我正在使用 Ubuntu 16.04。
答案1
有pushd
和popd
:
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 pushd
和help popd
以获得更多选项。没有man
页面,因为pushd
和popd
是 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}
替换,否则$1
1
- 在最后一次之后设置 OLDPWD
cd ..
旨在保留通常的cd -
行为。
答案4
更新:还有比更强大的工具autojump
:fasd
,但我不太熟悉。
我很惊讶没有人提到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 $
已将您移至apks
,td
而不是其他apks
树下的位置。