是否可以从 shell 中重命名当前工作目录(在我的特定情况下为 Bash)?如果我尝试以直接的方式执行此操作,则会出现错误:
nathan@nathan-desktop:/tmp/test$ mv . test2
mv: cannot move ‘.’ to ‘test2’: Device or resource busy
Run Code Online (Sandbox Code Playgroud)
有没有另一种方法可以在不更改当前目录的情况下执行此操作?我意识到我可以通过更改到父目录轻松完成此操作,但我很好奇是否有必要这样做。毕竟,如果我从另一个 shell 重命名目录,之后我仍然可以在原始 shell 中创建文件。
Gil*_*il' 42
是的,但是您必须通过名称而不是使用.
符号来引用目录。您可以使用相对路径,它只需要以.
or以外的内容结尾..
:
/tmp/test$ mv ../test ../test2
/tmp/test$ pwd
/tmp/test
/tmp/test$ pwd -P
/tmp/test2
Run Code Online (Sandbox Code Playgroud)
您可以使用绝对路径:
/tmp/test$ cd -P .
/tmp/test2$ mv "$PWD" "${PWD%/*}/test3"
/tmp/test2$
Run Code Online (Sandbox Code Playgroud)
同样,rmdir .
永远不会工作,但rmdir "$PWD"
会。