标签: gnu

为什么 cp 的选项是不覆盖名为 --no-clobber 的文件?

cp 是一个非常流行的 Linux 工具,由 GNU 基金会的 coreutils 团队维护。

默认情况下,具有相同名称的文件将被覆盖,如果用户想要更改此行为,他们可以添加--no-clobber到他们的复制命令中:

   -n, --no-clobber
          do not overwrite an existing file (overrides a previous -i option)
Run Code Online (Sandbox Code Playgroud)

为什么不是这样的--no-overwrite

gnu cp coreutils history user-interface

23
推荐指数
2
解决办法
4533
查看次数

如果我正在编写 bash 脚本,为什么要关心 POSIX?

寻找我可以对此问题提出的建议/编辑以重新打开它。其中很多答案对我来说似乎都是客观的,它们正是我正在寻找的答案类型。


我读过四篇有关 POSIX 的文章,但未能找到答案。现在我知道 POSIX什么,我已经知道标准是什么,但我仍然不确定为什么 POSIX 标准今天仍然具有相关性。我读过的三篇文章之一是对理查德·斯托曼的采访。在其中,他说

Seth:符合 POSIX 标准的自由软件项目是否更容易移植到其他类 Unix 系统?

RMS:我想是这样,但我在 20 世纪 80 年代决定不花时间将软件移植到 GNU 以外的系统上。...

Seth:POSIX 对软件自由重要吗?

RMS:从根本上来说,这没有什么区别。然而,标准化……帮助我们更快地迈向……自由软件。这是在 20 世纪 90 年代初实现的……[强调我的]

他的答案带有 GNU 观点的色彩,但他似乎是在回答我的问题,“POSIX 不再相关”?

这里有一些更具体的内容来解释为什么我首先对此感兴趣:在这个答案中,我建议使用进程重定向<(command)。回复称:“不幸的是,进程重定向是一项非 POSIX 功能,因此并非所有机器都支持它。”

我想我假设脚本以#!/bin/bash. 既然进程重定向是 bash 的一项功能,那么这是否意味着任何带有 bash 的系统都是可移植的?根据维基百科的说法,bash“已被用作大多数 Linux 发行版的默认登录 shell”。

然而,本文称,“目前,除了两个商业 Linux 发行版浪潮 K-UX [12] 和华为 EulerOS [6] 之外,由于成本高昂,Linux 尚未获得 POSIX 认证。相反,Linux 被视为主要是符合 POSIX 标准。”

所以,我认为POSIX …

gnu shell-script posix

22
推荐指数
2
解决办法
4128
查看次数

终端命令的非 GNU 版本有哪些?

我认为 GNU 是(唯一)其开源代码为 Linux 发行版提供支持的基本工具的供应商。然而,在浏览 unix.se 时,我看到一些问题明确指出它们正在处理 GNU ,例如有关解析 GNU 的安全性的问题ls。这一定意味着lsGNU 没有提供某些版本,对吧?这些版本是什么,谁制作的以及在哪里可以找到它们?

linux version terminal gnu command

21
推荐指数
4
解决办法
4777
查看次数

在 gnu/linux 上设置文件权限等的不同方法有哪些

在 Unix 上,很久以前,我了解到chmod:在 Unix 上设置权限的传统方法(并允许程序获得权限,使用 setuid、setgid)。

我最近在 GNU/Linux 上发现了一些较新的命令:

  • setfacl扩展了传统的ugo:rwx位和tchmod
  • setcap给出比多个鳍状晶粒控制ug:s的位chmod
  • chattr 允许文件的一些其他控件(有点混合)。

还有其他人吗?

linux filesystems permissions gnu

20
推荐指数
1
解决办法
9228
查看次数

tar 在文件上工作的顺序是如何确定的?

$ touch dir/{{1..8},{a..p}}
$ tar cJvf file.tar.xz dir/
dir/
dir/o
dir/k
dir/b
dir/3
dir/1
dir/i
dir/7
dir/4
dir/e
dir/a
dir/g
dir/2
dir/d
dir/5
dir/8
dir/c
dir/n
dir/f
dir/h
dir/6
dir/l
dir/m
dir/j
dir/p
Run Code Online (Sandbox Code Playgroud)

我原以为它是按字母顺序排列的。但显然不是。这里的公式是什么?

linux tar gnu coreutils

20
推荐指数
2
解决办法
7484
查看次数

GNU/Hurd 与 GNU/Linux

得知 GNU 项目有自己的独立内核,称为 Hurd,我感到非常惊讶。并且有主流发行版,如Arch Hurd和 Debian GNU/Hurd 使用它。Hurd 相对于 Linux 有什么明显的优势吗?

gnu hurd

19
推荐指数
3
解决办法
1万
查看次数

GNU 和 GNOME 之间是什么关系?

GNU 和 GNOME 之间有什么关系吗?

和进一步的相关许可 GPL?

gnome gnu gpl

18
推荐指数
1
解决办法
6198
查看次数

`set -e` 和 `grep` 习惯用法,用于在未找到模式时防止过早退出 shell 脚本

需要帮助 - 在 GNU/LINUX bash 上的 shell 脚本上下文中:

我总是使用set -e. 通常,grep如果grep退出状态1指示未找到模式,我希望并且不总是希望脚本终止执行。

我试图解决这个问题的方法如下:

(尝试 I)
如果set +o pipefail并使用类似的东西调用 grepgrep 'p' | wc -l那么我会得到所需的行为,直到未来的维护者启用pipefail. 另外,我喜欢启用pipefail所以这对我不起作用。

(试二)
使用一个sedawk和只打印匹配模式的行,然后wc匹配的行来测试匹配的模式。我不喜欢这个选项,因为使用sedtogrep似乎是解决我真正问题的方法。

(尝试 III)
这是我最不喜欢的 - 类似于:set +e; grep 'p'; set-e

任何见解/习语将不胜感激 - 谢谢。

grep bash gnu coreutils

17
推荐指数
1
解决办法
5099
查看次数

为什么同时使用`make clean`和`make mrproper`?

它是写在linux内核Makefile中的

clean - Remove most generated files but keep the config and
        enough build support to build external modules
mrproper - Remove all generated files + config + various backup files
Run Code Online (Sandbox Code Playgroud)

并且在arch 文档中指出

要完成准备工作,请确保内核树绝对干净;

$ make clean && make mrproper

那么如果make mrproper进行更彻底的删除,为什么make clean使用?

linux make gnu

17
推荐指数
1
解决办法
2万
查看次数

驱动器名称?“/dev/sda”的“sda”部分的正确术语是什么?

fdisk(8)说:

设备通常是/dev/sda、/dev/sdb 左右。设备名称是指整个磁盘。没有 libata(Linux 内核内部用于支持 ATA 主机控制器和设备的库)的旧系统使 IDE 和 SCSI 磁盘有所不同。在这种情况下,设备名称将为 /dev/hd* (IDE) 或 /dev/sd* (SCSI)。

分区是一个设备名称,后跟一个分区号。例如,/dev/sda1 是系统中第一个硬盘上的第一个分区。 另请参阅 Linux 内核文档(Documentation/devices.txt文件)。

基于此,我理解在 Linux 的上下文中,像/dev/hda或这样的字符串/dev/sda是“设备名称”。否则,我上面强调的第二句话是没有意义的:它会说,“例如,sda1是系统中第一个硬盘上的第一个分区。

Linux Partition HOWTO证实了这个观点:

按照惯例,IDE 驱动器将被赋予设备名称 /dev/hda 到 /dev/hdd

对于子字符串hdasda这样的设备名称,是否有技术上正确的(最好是明确和简洁的)英文术语?例如,在这种情况下调用sda驱动器是否正确:

  • “简称”; 或者
  • “不合格的设备名称”;或者
  • 还有什么?

(我不是要求使用技术上不正确的口语,即使它们很常用。)

linux gnu terminology

17
推荐指数
3
解决办法
1万
查看次数