'cd'命令后返回上一个位置?

时间:2012-05-18 15:56:31

标签: unix cd

我正在编写一个需要cd到某个位置的shell脚本。有没有办法回到之前的位置,即执行cd之前的位置?

4 个答案:

答案 0 :(得分:51)

你可以简单地做

cd -

会将您带回原先的位置。

有些shell允许您使用pushd / popd命令check out this site。您可能还会发现此SO question有用。

答案 1 :(得分:4)

如果您在脚本中运行,您还可以在子进程中运行部分脚本,该子进程的私有值为$ PWD。

# do some work in the base directory, eg. echoing $PWD
echo $PWD

# Run some other command inside subshell
( cd ./new_directory; echo $PWD )

# You are back in the original directory here:
echo $PWD

这有其优点和缺点......它确实很好地隔离了目录,但是如果你做了很多事情,那么产生子流程可能会很昂贵。 (编辑:正如@Norman Gray在下面指出的那样,产生子流程的性能损失可能与其他脚本中发生的其他任何事情相比并不是非常昂贵)

为了可维护性,我通常使用这种方法,除非我能证明脚本运行缓慢。

答案 2 :(得分:1)

您可以将PWD回送到变量中,然后将CD回送到该变量。它可能更安静。

答案 3 :(得分:0)

另一个替代方案是可以添加到.bashrc中的一小组函数,这些函数允许您转到命名目录:

# cd /some/horribly/long/path
# save spud
# cd /some/other/horrible/path
# save green
...
# go spud
/some/horribly/long/path

这是在A directory navigation productivity tool记录的,但基本上涉及在上述情况下将“pwd”的输出保存到命名的助记符(“spud”和“green”)中,然后cd'ing到内容文件。