cp 是一个非常流行的 Linux 工具,由 GNU 基金会的 coreutils 团队维护。
默认情况下,具有相同名称的文件将被覆盖,如果用户想要更改此行为,他们可以添加--no-clobber到他们的复制命令中:
Run Code Online (Sandbox Code Playgroud)-n, --no-clobber do not overwrite an existing file (overrides a previous -i option)
为什么不是这样的--no-overwrite?
寻找我可以对此问题提出的建议/编辑以重新打开它。其中很多答案对我来说似乎都是客观的,它们正是我正在寻找的答案类型。
我读过四篇有关 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 是(唯一)其开源代码为 Linux 发行版提供支持的基本工具的供应商。然而,在浏览 unix.se 时,我看到一些问题明确指出它们正在处理 GNU ,例如有关解析 GNU 的安全性的问题ls。这一定意味着lsGNU 没有提供某些版本,对吧?这些版本是什么,谁制作的以及在哪里可以找到它们?
在 Unix 上,很久以前,我了解到chmod:在 Unix 上设置权限的传统方法(并允许程序获得权限,使用 setuid、setgid)。
我最近在 GNU/Linux 上发现了一些较新的命令:
setfacl扩展了传统的ugo:rwx位和t位chmod。setcap给出比多个鳍状晶粒控制ug:s的位chmod。chattr 允许文件的一些其他控件(有点混合)。还有其他人吗?
$ 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)
我原以为它是按字母顺序排列的。但显然不是。这里的公式是什么?
得知 GNU 项目有自己的独立内核,称为 Hurd,我感到非常惊讶。并且有主流发行版,如Arch Hurd和 Debian GNU/Hurd 使用它。Hurd 相对于 Linux 有什么明显的优势吗?
需要帮助 - 在 GNU/LINUX bash 上的 shell 脚本上下文中:
我总是使用set -e. 通常,grep如果grep退出状态1指示未找到模式,我希望并且不总是希望脚本终止执行。
我试图解决这个问题的方法如下:
(尝试 I)
如果set +o pipefail并使用类似的东西调用 grepgrep 'p' | wc -l那么我会得到所需的行为,直到未来的维护者启用pipefail. 另外,我喜欢启用pipefail所以这对我不起作用。
(试二)
使用一个sed或awk和只打印匹配模式的行,然后wc匹配的行来测试匹配的模式。我不喜欢这个选项,因为使用sedtogrep似乎是解决我真正问题的方法。
(尝试 III)
这是我最不喜欢的 - 类似于:set +e; grep 'p'; set-e
任何见解/习语将不胜感激 - 谢谢。
它是写在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使用?
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。
对于子字符串hda或sda这样的设备名称,是否有技术上正确的(最好是明确和简洁的)英文术语?例如,在这种情况下调用sda驱动器是否正确:
(我不是要求使用技术上不正确的口语,即使它们很常用。)
gnu ×10
linux ×5
coreutils ×3
bash ×1
command ×1
cp ×1
filesystems ×1
gnome ×1
gpl ×1
grep ×1
history ×1
hurd ×1
make ×1
permissions ×1
posix ×1
shell-script ×1
tar ×1
terminal ×1
terminology ×1
version ×1