我需要回到bash脚本中的父目录。我知道该目录将位于我当前的路径中,但不会超过该目录的高度,因为脚本可能会将我放置在2到5级的深度。该脚本是克隆的git repo的一部分,因此我无法从用户的根目录开始,因为我不知道他们将其克隆到何处或下降了几级。
假设我的文件结构如下:
User's dir structure
repo
foo
bar
baz
a
fizz
b
bang
c
我需要回到foo
,但是我不知道我是a
,b
还是c
,甚至是{{ 1}}。
我目前的想法是pwd并削减它,所以我只用bar
然后按cd即可,但这真的是最有效的方法吗?
答案 0 :(得分:3)
在原始目录中设置一个变量。
origdir=$(pwd)
# code that jumps around...
cd "$origdir"
答案 1 :(得分:1)
您还可以使用目录堆栈。
pushd -n "$PWD" # Store the current working directory on the stack
...
popd # Return to the directory on top of the stack
如果您不需要在pushd
和popd
之间进行很多目录更改,因为您只需编写即可,则此功能特别有用
pushd some/directory/path # Puts current working dir on the stack, then cd's to the argument
...
popd
(即使有更改,您仍然可以使用pushd
。pushd foo
等同于pushd -n "$PWD"; cd foo
。)
答案 2 :(得分:0)
您可以这样进入存储库的根目录:
cd "$(git rev-parse --show-toplevel)"
因此,要从存储库内的任何位置访问其根目录下的foo
目录:
cd "$(git rev-parse --show-toplevel)/foo"