标签: coreutils

stdbuf 或 nohup 的实际用途是什么?

目前我必须完成一门课程的一些 coreutils 命令的写作,而且我想不出一个小实际代码示例的起点来演示stdbuf. 有没有人用它来修复几个特定的​​ unix 命令的交互?我知道它的作用。只是想到的第一个命令有自己的缓冲控制,而正常的终端输出无论如何都是行缓冲的。附加到日志一定很流行,但我找不到一个好的命令来演示。

在 的情况下nohup,是否有任何通常与其一起运行以防止中断的命令?

正如我所提到的,我目前正在为一个课程作业做这件事。然而,这并不违反其任何规则。我只是想为这些示例找到一个好的起点。我没有一个 for stdbuf,而且我不喜欢我用于nohup.

scripting bash coreutils nohup

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

安装可以用于暂存符号链接吗?

install用于安装符号链接而无需取消引用和安装目标文件 - 这似乎是一个不寻常的遗漏?

drwxrwxr-x 2 greg greg 4096 Aug 20 10:46 .
drwxrwxr-x 4 greg greg 4096 Aug 20 10:40 ..
lrwxrwxrwx 1 greg greg    4 Aug 20 10:46 stest -> test
-rw-rw-r-- 1 greg greg    0 Aug 20 10:40 test
$ mkdir target
$ install test  target/test
$ install stest  target/stest
$ ls -la target/
total 8
drwxrwxr-x 2 greg greg 4096 Aug 20 10:46 .
drwxrwxr-x 3 greg greg 4096 Aug 20 10:46 ..
-rwxr-xr-x 1 …
Run Code Online (Sandbox Code Playgroud)

command-line coreutils symlink

7
推荐指数
1
解决办法
2360
查看次数

下周一是什么时候?

在我的家用电脑(Xubuntu 14.04)上,我有

zev@home:~$ 日期 +%F
2015-10-05

zev@home:~$ date +%F -d "下周一"
2015-10-12

而在工作中(Red Hat 5.11),我有

zev@work:~$ 日期 +%F
2015-10-05

zev@work:~$ date +%F -d "下周一"
2015-10-05

(请注意,今天是星期一。)我最初的猜测是,对该短语的不同解释next Monday是由于系统具有不同版本的 coreutil date

zev@home:~$ 日期 --version | 头-2
日期 (GNU coreutils) 8.21
版权所有 (C) 2013 Free Software Foundation, Inc.

zev@work:~$ 日期 --version | 头-2
日期 (GNU coreutils) 5.97
版权所有 (C) 2006 Free Software Foundation, Inc.

我的问题是:

  • date程序版本的差异是唯一的原因,还是系统中是否有其他因素会影响其对日期字符串的解释?

  • 在不运行命令直接检查的情况下,我如何知道系统是否会有一种解释?如果唯一影响结果的是 的版本date,那么根据这个 unix.SE 线程(X 的哪个版本引入了特性 Y?),我应该能够在date程序的变更日志中找到哪个版本引入了新行为,但我在这里 …

version coreutils date

7
推荐指数
1
解决办法
1216
查看次数

shuf 文件 --output 文件:就地改组

shuf命令有一个--output标志,您可以使用它来指定将其输出写入何处(而不是写入 stdout)。

我想就地随机播放文件。shuf file --output file使用相同的文件名作为输出文件名和要读取的文件是否安全?

或者这会导致文件损坏吗?它是特定于平台的吗?当我在一个小文件上进行测试时,它似乎工作正常,但是手册页没有说明这一点,我不确定是否要担心。

io-redirection coreutils text-processing random files

7
推荐指数
1
解决办法
5239
查看次数

调用 echo 二进制文件的最安全、最便携的方法是什么?

echocoreutils似乎是无处不在的,但不是每个系统都会有它在同一个地方(一般/bin/echo)。在echo不知道它在哪里的情况下调用它的最安全方法是什么?

如果echo系统上不存在coreutils二进制文件,我对命令失败感到满意——这比回显与我想要的不同。

注意:这里的动机是找到echo二进制文件,而不是找到一组参数,其中每个 shell 的echo 内置函数都是一致的。例如,似乎没有一种方法可以通过内置的 echo 安全地打印连字符,而不知道您是否在zsh或 中bash

linux echo coreutils portability

7
推荐指数
3
解决办法
1480
查看次数

选择选项 status=progress 时,如何解释 dd 的输出?

dd 手册是在这个非常有限的:`

status=LEVEL
              The LEVEL of information to print to stderr; 'none' suppresses
              everything but error messages, 'noxfer' suppresses the final
              transfer statistics, 'progress' shows periodic transfer
              statistics
Run Code Online (Sandbox Code Playgroud)

这并没有说明实际输出,当我复制一个大图像文件时,它看起来像这样,例如:
dd if=input.img of=output.img status=progress

结果是:

在此处输入图片说明

到目前为止的传输速度和复制时间是显而易见的,但前三个数字是什么意思?

dd coreutils

7
推荐指数
1
解决办法
2614
查看次数

grep 是 coreutils 的一部分吗?(如果不是,为什么?)

我在一些网站上读到了 coreutils 附带的 grep(例如https://wiki.archlinux.org/index.php/Core_Utilities

但是,在构建它们之后,我注意到 grep 丢失了。我想知道我是否错误地构建了 coreutils。如果 grep 不是 coreutils 的一部分,那么排除它的理由是什么?

grep coreutils

6
推荐指数
1
解决办法
1947
查看次数

如何删除名为“--append”的文件?

我错误地创建了一个名为 : 的文件--append

如何删除它?

简单地输入通常的命令rm -f --append, 是行不通的。

options coreutils rm

6
推荐指数
1
解决办法
313
查看次数

使用 coreutils 换行和缩进文本

精简版

我想创建一个多行文本的表格显示,类似于以下内容:

all       Build all targets
document  Create documentation of source files in the subfolders
          `src` and `script`, and write it to `man`
test      Run unit tests
Run Code Online (Sandbox Code Playgroud)

目前,我对此的输入如下所示,但这当然可以更改:

all---Build all targets
document---Create documentation of source files in the subfolders `src` and `script`, and write it to `man`
test---Run unit tests
Run Code Online (Sandbox Code Playgroud)

我已经尝试通过awkwrap/的组合来实现这一点,pr但是虽然换行有效,但缩进却没有。这是我目前的方法:

…
| awk -F '---' "{ printf '%-10s %s\n', $1, $2 }" \
| fold -w $(($COLUMNS - 1)) -s
Run Code Online (Sandbox Code Playgroud)

它生成输出

all       Build …
Run Code Online (Sandbox Code Playgroud)

make coreutils text-processing text-formatting fold

6
推荐指数
2
解决办法
2346
查看次数

使用 find 命令预先添加到文件名

有没有办法只用 find 命令在文件名前加上一个字符串?

所以这个:

201a.txt
201b.png
...
Run Code Online (Sandbox Code Playgroud)

变成这样:

foo_201a.txt
foo_201b.png
...
Run Code Online (Sandbox Code Playgroud)

这个:

find . -name '201*' -execdir mv {} foo_{} \;
Run Code Online (Sandbox Code Playgroud)

不起作用,因为该{}部分包含./文件名中的前导,因此尝试写入foo_./201*.

如果仅使用 find 无法做到这一点,那么将字符串添加到文件名的最便携(阅读:只有 coreutils,没有 shell 脚本,最容易理解)的方法是什么?

command-line find coreutils

6
推荐指数
1
解决办法
1816
查看次数