![在 shell 中执行命令并关闭控制台中命令的默认显示](https://linux22.com/image/34561/%E5%9C%A8%20shell%20%E4%B8%AD%E6%89%A7%E8%A1%8C%E5%91%BD%E4%BB%A4%E5%B9%B6%E5%85%B3%E9%97%AD%E6%8E%A7%E5%88%B6%E5%8F%B0%E4%B8%AD%E5%91%BD%E4%BB%A4%E7%9A%84%E9%BB%98%E8%AE%A4%E6%98%BE%E7%A4%BA.png)
这是我的脚本
cd /opt/product/vinoth
-- some operations --
cd -
执行此命令时,cd -
旧路径将显示在控制台中。
有什么方法可以阻止它在控制台中显示。
通过在命令前面使用 @ 可以避免在 make 文件中出现同样的情况。
通过冲浪,我了解到这可以通过使用来实现cmd=$(cd -)
该命令未执行且路径未更改。
答案1
改用OLDPWD
:
/ $ cd /tmp
/tmp $ echo $OLDPWD
/
/tmp $ cd "$OLDPWD"
/ $
从man bash
:
OLDPWD The previous working directory as set by the cd command.
...
cd
An argument of - is converted to $OLDPWD before the directory
change is attempted.
$(cd -)
在子 shell 中运行,因此不会影响当前 shell。
您还可以这样做:
cd - >/dev/null
答案2
正如中所解释的这答案,一个简短的变体,当 cd 到上一个工作目录时使用波形符扩展时不显示目录~-
:
cd ~-