这回答给我cd -
作为更改到 Bash 中之前的目录的简写。它确实有一个主要问题:它打印了它更改到的目录,浪费了我的屏幕空间,因为该目录随后在下一行的提示中重复。
我知道我可以做到cd $OLDPWD
,在该答案中也提到了,cd - >/dev/null
但这需要更多的打字。
在bash
手册页中它说:
...或者如果 - 是第一个参数,并且目录更改成功,则新工作目录的绝对路径名将写入标准输出。
我怎样才能-
不成为第一个争论的人?通过使用任何cd
可选参数?抑制回声或最小化打字的任何其他方法没有需要在我使用的每台机器上定义函数/别名吗?
答案1
cd
只考虑第一个参数,忽略所有其他参数。这些选项都不会影响先前路径名的回显(也许文档-@
确实有这种效果,但在我的系统上这是一个无效的选项)。
如果您不想使用别名/函数,这可能会给您输入比 更少的字符cd -
,或者重定向到/dev/null
,我的建议是开始在 中使用特殊的波形符扩展bash
:
cd ~-
从bash
手册页:
如果波形符前缀是“~-”,则 shell 变量 OLDPWD 的值(如果已设置)将被替换。
这似乎是另一个bash
创造了一些特殊意义的领域。波形符扩展通常适用于 $DIRSTACK,由pushd
、popd
、 和操纵/研究dirs
,它也可以在其他命令中使用 ( cp ~-/somefile .
),如果您使用过,pushd
则可以使用~N
(其中 N 是推回的级别数)来获取这些目录(用于cd
或其他命令)。
顺便说一句,如果您在多台计算机上拥有帐户,并假设您使用 ssh 从一个地方登录到它们,您应该考虑添加到您的~/.bashrc
:
if [ -f ~/.bash_common ]; then
. ~/.bash_common
fi
然后在您的工作机器上安装脚本,用于scp
“推送”bash_common
到每台机器。这样您就可以以最小的开销在多台计算机上添加和共享通用功能。