24 我有一个目录,其中包含编译器生成的文件。在每次重新构建期间,都会清理该目录,并且在构建过程后ls会给我空的输出。我cd退出目录后再回到它时,ls正确运行。问题是: 还有其他更优雅的方式来刷新目录吗? 删除并重新创建文件后,实际发生了什么?为什么需要cd查看实际目录内容? linux bash filesystems — 罗曼 source
10 您的脚本很可能会删除目录,而不仅仅是目录中的文件。因此,当您cd进入该目录并删除该目录时,您将ls在一个实际上不存在的目录上执行操作。 通过cd ..,cd (directory)您可以向上移动并返回到(新创建的)目录,并且文件位于您期望的位置。 最好的替代方法是cd将目录名添加到ls命令中,然后从父目录运行它,而不是进入目录或从目录中移出。因此,ls YourSubdirectory不仅仅是ls。 — 肯特郡 source
45 甚至有一种更短的方法: cd . — j source 3 有趣。像蜂鸟一样,从逻辑上讲,这应该不起作用-但看起来确实如此。我想您知道它有效,因为您已经尝试过了。您有任何文档吗?就是说,如果我在POSIX / bash开发团队中工作,我很容易将其视为一个bug。您是否知道任何说明应该以这种方式工作的文档? — G-Man说'恢复莫妮卡' 3 像猎鹰一样,它精美地漂浮在花丛之上,却吞噬了蜂鸟。 — 马特·福斯 是! 如此完美 — chrismarx 1 这是更好的答案。 — deddebme 啊。我就知道!必须有一种方法。谢谢! — andersoyvind
2 创建一个别名refresh =“ cd .. && cd-”,它将进入一个目录,然后再次进入先前的目录cd 如果您确定将再次需要一个列表,则可以 alias refresh="cd .. && cd - && ls -lrt" 创建ailas之后,通过将别名存储到您的〜/ .bashrc文件中 alias | grep refresh >> ~/.bashrc 以便下次登录时可用。 — SK176H source 在Unix中refresh是开箱即用的。 — kenorb “开箱即用”是什么意思?当我看到它时,我将其解释为“标准”。现在我想知道你的意思。定义“ UNIX”。Cygwin没有“刷新”命令标准(好的,Cygwin缺少很多POSIX / * nix /任何标准的东西),我的Linux系统也没有。 — G-Man说'恢复莫妮卡'