这可能是一个菜鸟问题。
在bash中工作时,如果我们运行cd .
,它将保留在当前文件夹中。
我了解该功能,但是我无法理解该功能的原理吗?
使用这种方法有哪些实际方法?
这可能是一个菜鸟问题。
在bash中工作时,如果我们运行cd .
,它将保留在当前文件夹中。
我了解该功能,但是我无法理解该功能的原理吗?
使用这种方法有哪些实际方法?
我在cd .
中看到的主要用例是测试您在当前目录上的文件句柄是否仍然有效。
如果您位于网络共享中的目录(例如NFS等)上,则可以远程删除目录,但对于本地客户端来说,它们仍然可以访问和使用它们。
cd .
是一种在当前工作目录上的句柄不再有效时触发错误的方法。
该命令没有功能。但是在符合POSIX的环境中,如果添加-P
选项,则它具有功能:它可以解析符号链接。例如,在Mac上,如果您cd
到带有符号链接的路径:
cd /System/Library/Frameworks/AppKit.framework/Versions/Current
...然后做cd -P .
...您将指向:
/System/Library/Frameworks/AppKit.framework/Versions/C
,
这是我想到的唯一一个“实用”案例
$ cd .
cd: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
当您的进程具有当前工作目录时,该目录引用了另一个进程已删除的目录。
, .
是代表当前目录的特殊文件。
有很多东西可以利用目录,有时引用当前目录会很有用。
将目录更改为不是当前目录之一。
, cd .
失败的简单示例:
mkdir my_error
cd my_error
rm -rf ../my_error
cd .
当rm
嵌入到困难的脚本中或可以通过其他一些清理过程完成时,这可能是有用的检查。
我使用一个构建脚本来删除并重新创建目录。
旧目录消失,新目录显示新的inode。
如果在我的一个外壳中,我的$ PWD是重新出现的目录,并且我注意到 它变得不可用了(我知道它是重新创建的),我只是
$ cd .
使(新)目录再次可用,并可以在那里继续工作。