Unix、Linux、BSD 和 GNU 之间的根本区别是什么?Unix 是最早的操作系统,所以术语“类 Unix”是可以理解的,因为它们具有内核、文件系统结构、大多数命令、用户等与 Unix 相同。仍然为什么它们不同?是什么让他们与众不同?是内核吗?
我最近在浏览我的 Fedora/bin文件夹时注意到一个名为[. 我确实尝试在互联网上搜索有关这方面的更多信息,但找不到任何有用的信息。运行它strace似乎也不会产生任何对仔细检查有用的东西。
那是什么?我应该惊慌吗?这可能是系统妥协的结果吗?我应该运行它吗?它属于任何包吗?
所以我一直在 linux 上使用 'sed' 一段时间,但是在尝试在 OSX 上使用它时遇到了一些困难,因为 'POSIX sed' 和 'GNU sed' 有很多细微的差别。目前我正在努力解决如何在某个行号后插入一行文本。(在本例中,第 4 行)
在 linux 上,我会做这样的事情:
sed --in-place "4 a\ mode '0755'" file.txt
Run Code Online (Sandbox Code Playgroud)
所以在 OSX 上我试过这个:
sed -i "" "4 a\ mode '0755'" file.txt
Run Code Online (Sandbox Code Playgroud)
但是,这一直给我一个“命令末尾\ 后的额外字符”错误。任何想法这里有什么问题?我有错别字吗?还是我不明白 sed 版本之间的另一个区别?
我一直在考虑停止在我的 Linux 系统上使用 GNU Coreutils,但老实说,与许多其他 GNU 组件不同,我想不出任何替代品(在 Linux 上)。GNU coreutils 有哪些替代品?我需要不止一个包裹吗?该项目的链接是必须的,命名发行包的奖励积分。
另外请不要建议,除非你知道它们在 Linux 上工作,并且可以参考说明。我怀疑我很快就会切换内核,而且我太懒了,除了简单的./configure; make; make install. 我当然不会为了它而破解 C。
警告:如果您的发行版使用 coreutils,删除它们可能会破坏发行版的运行方式。然而,不让它们成为你$PATH不应该破坏的东西,因为大多数脚本应该使用绝对路径。
在GNU 项目网页上,有一个名为“所有 GNU 包”的小节,其中列出了 GNU 项目中的各种软件。
是否有任何仅使用这些软件包的GNU 发行版——即仅在 GNU 软件包上运行的“纯”GNU 操作系统?
我对这是否是一个实用的操作系统并不特别感兴趣,只是在理论上可以使用纯粹的GNU 包运行GNU Hurd。如果没有,还必须实施什么样的软件才能实现这一目标(即缺少什么)?
如果GNU Hurd是限制因素,而不是内核例外,那么使用Linux内核是否可以实现纯GNU 操作系统?
根据我的知识/理解,帮助和人是同时出现的,或者它们之间的时间差异很小。然后 GNU Info 进来了,从我所看到的内容来看,它比人类更冗长、更详细,而且可以说要好得多。即使在今天,人类中的许多条目都是神秘的。
我经常想知道为什么在很多方面都优于人的信息根本没有成功。我仍然看到人们制作手册页而不是信息页。是因为没有有用的信息工具吗?两者的许可证中有什么吗?或者其他一些没有得到它应得的成功信息的因素?
我确实在 unix stackexchange 上看到了一些问题,特别是 GNU 信息是什么?和help、info 和 man 命令之间的区别等等。
几年来,除非使用选项调用GNUrm实用程序,/否则它不会删除--no-preserve-root。然而,这个命令rm -rf /在很长一段时间内都被认为是危险的集体潜意识,人们仍然经常将其称为“可怕”的命令。
我想知道这个rm不能删除的规则是什么时候/出现的。我检查了 POSIX 规范,我可以看到,虽然POSIX:2008包含此安全功能,但POSIX:2001没有。由于POSIX规范的在线版本不时更新,随着每个新的子发布,我也检查了回程机,找到了2010年的POSIX:2008的相关页面,并能够确认rm无法删除的规则/当时已经上市了。
所以,我的问题是:
rm不能删除的规则是什么时候/添加到 POSIX 规范中的?它是在单一 UNIX 规范第 4 版的原始 2008 版中还是在修订版中添加的?rm什么时候添加到 GNU 的?我很确定它是在它被添加到 POSIX 之前,但它是什么时候发生的?SE 网络上的所有其他问题都涉及假设日期为now( Q ) 或仅指定日期 ( Q ) 的情况。
我想要做的是提供一个日期和时间,然后从中减去一个时间。
这是我首先尝试的:
date -d "2018-12-10 00:00:00 - 5 hours - 20 minutes - 5 seconds"
Run Code Online (Sandbox Code Playgroud)
这导致2018-12-10 06:39:55- 它增加了 7 个小时。然后减去20:05分钟。
在阅读了man和 的info页面后date,我想我已经解决了这个问题:
date -d "2018-12-10T00:00:00 - 5 hours - 20 minutes - 5 seconds"
Run Code Online (Sandbox Code Playgroud)
但是,同样的结果。它甚至从哪里得到 7 小时?
我也尝试了其他日期,因为我想那天我们可能有 7200 闰秒,谁知道呢,哈哈。但同样的结果。
再举几个例子:
$ date -d "2018-12-16T00:00:00 - 24 hours" +%Y-%m-%d_%H:%M:%S
2018-12-17_02:00:00
$ date -d "2019-01-19T05:00:00 - 2 hours - 5 minutes" +%Y-%m-%d_%H:%M:%S …Run Code Online (Sandbox Code Playgroud) 查看GNU Coreutils,我发现了factor我以前从未注意到的命令。
阅读手册页:
打印每个指定整数 NUMBER 的质因数。如果在命令行上没有指定,则从标准输入中读取它们。
有实际用途factor,还是只是一个演示/玩具包?
我比较了dir和的手册页,ls它们似乎完全相同。两者都是 GNU coreutils 和“列出目录内容”的一部分。
到目前为止,我看到的唯一区别是dir不会对输出进行着色。
那么为什么存在两个命令呢?我错过了有什么不同吗?为什么人会愿意dir过ls?