我已经阅读了很多关于人们想要将 /bin 和 /sbin 合并到 /usr/bin 的讨论。反过来做就不是这样了。
是否有任何技术原因不想将 /usr/bin 和 /usr/sbin 合并到 /bin 中,还是主要是个人偏好/设计选择?
抨击 GNU:
我正在使用一组find命令,其中大部分-regex用于进行匹配。每次我在正则表达式中尝试不同的功能时,我都必须循环浏览这些值,-regextype直到一个工作正常为止。在这种情况下,我特别需要一个支持负面后视的人。很难验证我对这个功能的测试的(零)结果,所以我想简单地参考一个列表,而不是重复不断增加的一系列测试。
我已经找到了Javascript和其他平台的许多参考不支持负回顾后,但我似乎无法找到那些中央的位置做。
很高兴在某处看到一个图表,列出了许多流行的正则表达式样式以及它们支持和不支持的功能,但我也找不到。
我正在尝试自动化我的工作流程。我有一个脚本,可以为列表中的每个 IP 在屏幕中打开单独的窗口。想象一下setupscreen.sh <IP1> <IP2> ...。在所有窗口打开后,每个窗口都ssh转到正确的服务器并将标题设置hostname为该特定服务器上。我将窗口 0 作为我执行其他脚本的实用程序窗口。例如,我向所有窗口发送命令,以 1 秒的间隔循环遍历每个窗口,依此类推。这一切都很好,但问题是,当我创建它们时,我会从脚本中获取窗口计数。如果我关闭一个窗口,这将不再准确。问题是我怎样才能(通过脚本编写)我的窗口计数以及剩余的窗口索引(如果可能)。
ps 我需要登录和执行任务的所有集群都有screen,几乎没有,tmux而且很忙。
我在GNU/Linux FAQ中读到,他们要求每个人将整个系统称为 GNU/Linux 的原因之一是:
这让我想知道,GNU 在 GNU/Linux 操作系统的开发中做出了哪些主要贡献?
换句话说,GNU/Linux 操作系统中哪些是 GNU 的主要/主要组件?
我发现了以下更改日志,但所有这些都根据日期而不是版本号列出了更改/新功能:
2014-09-06 - 现在:https : //fossies.org/linux/sed/ChangeLog
2005-05-18 - 2012-12-29:https : //github.com/bonzini/sed/blob/master/ChangeLog(这个 GitHub 仓库看起来很陈旧)
回购git://git.sv.gnu.org/se似乎是最新的,但我只能找到一个ChangeLog-2014文件,其条目于 2014-09-06 结束。
例如,我试图找出在哪个 GNUsed版本中引入了-z/--null-data选项,虽然上面告诉我 2012-02-05,但我无法确定映射到哪个版本号。
我真正想做的是运行 X 个作业,并行运行 X 个数量以测试 API 竞争条件。
我想出了这个
echo {1..10} | xargs -n1 | parallel -m 'echo "{}"';
Run Code Online (Sandbox Code Playgroud)
哪个打印
7 8 9
10
4 5 6
1 2 3
Run Code Online (Sandbox Code Playgroud)
但我真正想看到的是(注意顺序实际上并不重要)。
1
2
3
4
5
6
7
8
9
10
Run Code Online (Sandbox Code Playgroud)
并且这些将一次并行处理 4 个(或任何数量的 CPU/核心,我有,例如--jobs 4)。总共 10 次单独执行。
我试过这个
echo {1..10} | xargs -n1 | parallel --semaphore --block 3 -m 'echo -n "{} ";
Run Code Online (Sandbox Code Playgroud)
但它似乎只打印一次。如果您的解决方案不需要 xargs ,这似乎是对默认记录分隔符是换行符的想法的一种破解,但我也无法获得像我想要的那样工作的空间。
10 是一个相当小的数字,但可以说它要大得多, 1000
echo {1..1000} | xargs -n1 | parallel …Run Code Online (Sandbox Code Playgroud) 当我有一个需要在另一个目标之前制作特定目标的 make 任务时,在并行模式下,使用 SunPro Make (dmake) 时这很简单。以下生成文件:
install: dir dir/file
dir:
mkdir dir
dir/file:
cp source dir/file
Run Code Online (Sandbox Code Playgroud)
通过将第一行更改为:
install: dir .WAIT dir/file
Run Code Online (Sandbox Code Playgroud)
或通过使用:
.NO_PARALLEL: install
Run Code Online (Sandbox Code Playgroud)
makefile 的其余部分仍将在并行模式下处理,即使是左侧或右侧的目标列表.WAIT也将以并行模式处理。
参见:http : //schlytools.sourceforge.net/man/man1/make.1s.html和http://schlytools.sourceforge.net/man/man1/dmake.1.html
但是 GNU make 似乎没有类似的选项。真的没有办法用 GNU make 做到这一点吗?
更具体地说,该解决方案需要以允许使用其他 make 实现处理 makefile 的方式编写。
特殊目标 .WAIT 可以例如在称为 $(WAIT) 的 make 程序相关宏中
请注意,有一个明显的解决方案无济于事:
从理论上讲一个可以使dir的依赖dir/file,以实施创建dir试图复制之前dir/file,,但如果以后另一个文件复制到dir,这使得dir比新dir/file。因此,make多次调用会dir/file一次又一次地复制,而没有预期的结果,make只有在源变得更新的情况下才进行复制dir/file.
这提出了另一个问题,是否可能存在强制在复制之前make创建的依赖关系拓扑而不依赖于 …
我读过该映射Left Option键Esc+应该可以解决 MacOS 上 Bash 用户使用 GNU Readline 键绑定所遇到的许多问题。
不过,我从来没有遇到过Esc+,或者以前没有遇到过+Esc,所以这意味着Esc、、、还是其他什么意思?如何测试启用后我映射到的键或?MetaCtrlLeft OptionEsc++Esc
打印换行、xargs调用printf和某些内容的常规情况:
>>printf "foo\n" | xargs -r printf "->%s\n"
->foo
>>
Run Code Online (Sandbox Code Playgroud)
随着空输入代替,-r使得xargs不是在所有调用命令:
>>printf "\n" | xargs -r printf "->%s\n"
>>
Run Code Online (Sandbox Code Playgroud)
使用空值而不是换行符,如果有以下输入,一切都是一样的xargs:
>>printf "foo\0" | xargs -r -0 printf "->%s\n"
->foo
>>
Run Code Online (Sandbox Code Playgroud)
但是如果没有输入,无论如何都会打印一些东西:
>>printf "\0" | xargs -r -0 printf "->%s\n"
->
>>
Run Code Online (Sandbox Code Playgroud)
所以,要么
我错过了一些东西(什么?)
-r当与-0(但哪个)一起使用时,有一些很好的理由可以忽略?
我的xargs(findutils 4.6.0.225-235f)中有一个错误,但很难决定:
那么, 的真正预期行为是xargs什么?
gnu ×10
bash ×2
linux ×2
filesystems ×1
find ×1
forensics ×1
gnu-make ×1
gnu-parallel ×1
gnu-screen ×1
macos ×1
make ×1
parallelism ×1
readline ×1
scripting ×1
sed ×1
shell ×1
software-rec ×1
sunpro ×1
version ×1
window ×1
xargs ×1