cd 到上一个目录而不回显目录名称

Ish*_*ran 10 bash cd-command

这个答案让我cd -可以快速切换到我在 Bash 中的上一个目录。它确实有一个主要问题:它打印它更改到的目录,浪费了我的屏幕空间,因为该目录然后在下一行的提示中重复。

我知道我可以做cd $OLDPWD,在那个答案中也提到过,cd - >/dev/null但打字要多得多。

bash手册页中它说:

... 或者如果 - 是第一个参数,并且目录更改成功,则将新工作目录的绝对路径名写入标准输出。

我怎样才能-不成为第一个论点?通过使用任何cd可选参数?有没有其他方法可以抑制回声或尽量减少打字,而无需在我使用的每台机器上定义函数/别名?

Ant*_*hon 17

cd只考虑第一个参数,忽略所有其他参数。没有任何选项影响先前路径名的回声(也许文档-@确实有这种效果,但在我的系统上这是一个无效的选项)。

如果您不想使用别名/函数,这可能会给您提供比 更少的字符来键入cd -,或重定向到/dev/null,我的建议是开始使用特殊的波浪号扩展bash

cd ~-
Run Code Online (Sandbox Code Playgroud)

bash手册页:

如果波浪号前缀是“~-”,则外壳变量 OLDPWD 的值(如果已设置)将被替换。

这似乎是另一个bash创造了特殊意义的领域。波浪号扩展通常适用于 $DIRSTACK,由pushd,popd和操作/调查dirs,它也可以用于其他命令 ( cp ~-/somefile .) 并且如果您使用过,pushd您可以使用~N(其中 N 是推回的级别数)来获得这些目录(forcd或其他命令)。


顺便说一句,如果您在多台机器上拥有帐户并假设您使用 ssh 从一个地方登录它们,您应该考虑添加到您的~/.bashrc

if [ -f ~/.bash_common ]; then
    . ~/.bash_common
fi
Run Code Online (Sandbox Code Playgroud)

然后在您的工作机器上安装脚本,用于scp“推送”bash_common到每台机器。这样您就可以以最小的开销在多台机器上添加和共享通用功能。