小编nod*_*kai的帖子

在less(1) 中终止文本搜索并继续通过Unix 管道读取

gunzip < 100terabytes.txt.gz | less
Run Code Online (Sandbox Code Playgroud)

less(1)根据需要读取尽可能多的行以填满您的屏幕,然后停止到read(2). 结果,当管道变满时gunzip(1)被阻塞write(2)

当您向下滚动时,less(1)问题read(2)一次又一次,并且随着管道被消耗,gunzip(1)允许发出write(2). 您可以完全灵活地在此处来回切换(假设gunzip < 100terabytes.txt.gz未完成。)

到目前为止一切都很好。

你可以开始在文本搜索中less(1)使用/。但是当在 中找不到搜索字符串时100terabytes.txtless(1)基本上变得无响应。您可以使用 终止搜索Ctrl-C它似乎关闭了gunzip(1)和之间的管道less(1)。我不喜欢这个。gunzip(1)在我放弃文本搜索后,我想手动向下滚动以消耗更多行。这可能吗?

不是在寻求类似的建议gunzip < 100terabytes.txt.gz | grep pattern | less

更新

你可以尝试 od -v /dev/zero | less

less pipe

5
推荐指数
1
解决办法
133
查看次数

Shell:两个命令的STDIN/STDOUT的相互管道

当我们使用 POSIX shell 运行它时,

$ cmd0 | cmd1
Run Code Online (Sandbox Code Playgroud)

cmd0 的 STDOUT 通过管道传输到 cmd1 的 STDIN。

问:除此之外,我如何将 cmd1 的 STDOUT 通过管道传输到 cmd0 的 STDIN?

必须使用重定向自/进入命名管道 (FIFO) 吗?我不太喜欢命名管道,因为它们占用了一些文件系统路径,我需要担心名称冲突。或者我必须通过 C、Python 或一些通用编程语言调用 pipe(2) 吗?

(cmd0 和 cmd1 都执行一些网络 I/O,因此它们不会永远相互阻塞。)

pipe io-redirection shell-script ipc

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

为什么“touch -a”也会设置ctime?

是来自 coreutils-8.4-37.el6.x86_64 的 touch(1) 还是我的大脑坏了?

$ touch abc
$ LANG=C stat abc
  File: `abc'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd04h/64772d    Inode: 10485773    Links: 1
Access: (0664/-rw-rw-r--)  Uid: (3060399/ nodakai)   Gid: (  418/   quant)
Access: 2016-10-14 18:42:06.189751847 +0800
Modify: 2016-10-14 18:42:06.189751847 +0800
Change: 2016-10-14 18:42:06.189751847 +0800
$ touch -a abc
$ LANG=C stat abc
  File: `abc'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd04h/64772d    Inode: 10485773    Links: 1
Access: (0664/-rw-rw-r--)  Uid: …
Run Code Online (Sandbox Code Playgroud)

filesystems coreutils timestamps files

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