如何在 BASH 中刷新目录?

Rom*_*man 32 linux bash filesystems

我有一个目录,包含编译器生成的文件。在每次重建期间,此目录都会被清理,并且在构建过程之后ls给我空输出。在我cd退出目录然后回到它之后 ls 工作正常。问题是:

  1. 有没有其他更优雅的方式来刷新目录?
  2. 删除和重新创建文件时实际会发生什么?为什么我需要cd查看实际目录内容?

小智 62

还有一种更短的方法: cd .

  • 有趣的。像蜂鸟一样,从逻辑上讲,这不应该起作用——但它似乎起作用了。我想您知道它有效,因为您已经尝试过了。你有任何文件吗?即,如果我在 POSIX/bash 开发团队中,我会很想将其视为一个错误。您是否知道有任何文档表明_应该_以这种方式工作? (3认同)
  • 像猎鹰一样,它美丽地漂浮在花朵之上——但它却吞噬了蜂鸟。 (3认同)

Ken*_*ent 11

您的脚本很可能会删除目录,而不仅仅是那里的文件。因此,当您cd进入它并删除该目录时,您会ls在一个实际上不存在的目录上进行操作。

Bycd ..cd (directory)您向上移动并返回(新创建的)目录,文件如您所愿。

最好的替代方法是cd将目录名称添加到您的ls命令中,然后从父目录运行它,而不是进出目录。所以,ls YourSubdirectory而不仅仅是ls.


小智 10

它看起来很奇怪,但它很短并且刷新了目录:

cd `pwd`
Run Code Online (Sandbox Code Playgroud)

请注意,这些是反引号,而不是密码周围的单引号