小编Jos*_*vin的帖子

为什么是 '。' Unix 中的硬链接?

我已经看到很多解释为什么基于 Unix 的操作系统中空目录的链接数是 2 而不是 1。他们都说这是因为 '.' 目录,每个目录都指向它自己。我明白为什么会有一些“。”的概念。对于指定相对路径很有用,但是在文件系统级别实现它有什么好处?为什么不让 shell 或采用路径的系统调用知道如何解释它呢?

'..' 是一个真正的链接对我来说更有意义——文件系统需要存储一个指向父目录的指针才能导航到它。但我不明白为什么“。” 成为一个真正的链接是必要的。它似乎也导致了实现中的一个丑陋的特殊情况——你会认为你只能释放链接数小于 1 的 inode 使用的空间,但如果它们是目录,你实际上需要检查一个链接数小于 2。为什么不一致?

shell filesystems directory hard-link

51
推荐指数
2
解决办法
3416
查看次数

我可以让我的 shell 历史记录通配符如何扩展吗?

如果我运行:

$ ls *
foo bar buzz
$ history | tail -1
ls *
Run Code Online (Sandbox Code Playgroud)

您可以看到,在我的 shell 历史记录中,它记住的是我运行的ls *而不是ls foo bar buzz. 理想情况下,我想将两者记录在不同的历史记录中。当我想知道“文件 foo 到底发生了什么事情?”时,如果能够rm *通过搜索历史记录并找到 'foo'来返回并找出我在错误的目录中所做的事情,那就太好了。

我对 zsh 和 bash 的解决方案感兴趣。

shell bash command-history zsh wildcards

8
推荐指数
1
解决办法
532
查看次数

如何列出所有正在运行的 X 应用程序?

我想获取我机器上与 X 服务器通信的所有应用程序(跨所有用户)的列表。最可靠的方法是什么?找到运行的套接字 X 和 lsof 以连接到它?我正在运行 Linux 和 Solaris 机器,所以我对这两个操作系统的答案都很感兴趣。

linux solaris xorg ps screenshot

4
推荐指数
1
解决办法
1683
查看次数