第一个管道工作正常(打印“c”):
echo "a" | sed 's/a/b/' | sed 's/b/c/'
Run Code Online (Sandbox Code Playgroud)
这个不符合我的预期(当我将“a”输入到我的 fifo 中时没有打印任何内容):
mkfifo fifo;
cat fifo | sed 's/a/b/' | sed 's/b/c/'
Run Code Online (Sandbox Code Playgroud)
但是,如果我从后一个管道中删除第二个“sed”命令,则会打印“b”。我认为我对管道和重定向的理解太简单了。有人可以向我解释如何解决第二种情况,以便我可以对 fifo 的内容运行两个连续的命令吗?
(请注意,这不是特定于 fifo 的问题,netcat 也会出现相同的行为。我发布了一个关于 netcat的类似问题,但没有得到答案)
当我需要抑制某种输出时,例如
foo | grep -v bar
Run Code Online (Sandbox Code Playgroud)
但 foo 有时只给出:
bar
bar
bar...
Run Code Online (Sandbox Code Playgroud)
grep 将返回 -1。如何将退出代码 1 转换为 0?
我正在深入设置和学习 git,同时学习 bash。我正在尝试做一些简单的事情,如查看帮助部分
$ git config
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我输入帮助时,帮助的输出会从屏幕上消失。做一些谷歌搜索,我发现我想用来滚动的程序较少。
我试过
$ git config | less
Run Code Online (Sandbox Code Playgroud)
没有成功。有任何想法吗?谢谢!
我是一名 Linux 新手,试图了解管道在 Ubuntu 终端中的工作原理。我尝试按文件大小排序:
ls -al | sort -k5
Run Code Online (Sandbox Code Playgroud)
这些文件按以下顺序列出:
drwx------ 19 min10 domain users 0 2010-10-07 12:38 .
drwx------ 29 min10 domain users 0 2010-02-16 22:30 MSI
drwx------ 2 min10 domain users 0 2009-11-25 19:53 www
drwx------ 2 min10 domain users 0 2010-02-05 09:14 .cache
drwx------ 2 min10 domain users 0 2010-03-02 08:11 My Pictures
drwx------ 2 min10 domain users 0 2010-03-02 10:41 regu
drwx------ 2 min10 domain users 0 2010-03-31 13:08 elec
drwx------ 2 min10 domain users …Run Code Online (Sandbox Code Playgroud) 我有两个本地进程进行通信以让其他进程执行命令。我想知道他们在说什么。
经过一些初步调查,它不是通过Sockets或Loopback,但似乎它们正在使用(named-)pipes(至少两者都打开了其中的一些,不能说它们是否相同)。
如何嗅探这些进程之间的所有通信?
我在 Debian 上使用 mkfifo pipe.in. 我想从 Matlab 写入这个管道。
为此,我使用以下 matlab 命令:
unix( 'cat <myfile> > pipe.in' )
Run Code Online (Sandbox Code Playgroud)
哪里<myfile>是文本文件,pipe.in是我用mkfifo.
在许多情况下,与管道关联的进程因多种原因崩溃(但除了使用 unix 和 cat 命令之外的任何原因)。在几种情况下,崩溃可能是正常的。
执行上述命令导致 Matlab 冻结,我无法重新获得控制权CTRL+C。
有没有另一种方法可以在不需要我终止进程的情况下发布 Matlab?
我想将 bash 中的两个单独命令 <2,3> 的输出通过管道传输。这样做的最佳方法是什么?目前,我有以下脚本:
command source > output
command2 output &
command3 output &
Run Code Online (Sandbox Code Playgroud)
输出文件大约为 100G,一种次优的方式是分别通过管道传输到命令 2 和 3。我认为有可能做得更有效。
我开始看到一些非常奇怪的问题,管道命令在我的机器上的 Windows 7 64 位上不起作用。像这样的命令:
echo test | more
Run Code Online (Sandbox Code Playgroud)
过去可以正常工作,但现在它们失败并显示以下错误消息:
'.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC' is not recognized as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
管道左侧和右侧的内容似乎也无关紧要,任何带有管道的命令行指令都会失败。如果管道的右侧根本不是正确的可执行文件,它似乎也没有什么区别。
例如,以下都表现出相同的失败行为:
type file1 | findstr blah
dir | thisdoesnotexist
Run Code Online (Sandbox Code Playgroud)
一周前所有这些都运行良好,我不确定会发生什么变化。在它停止工作时可能发生了 Windows 更新,但我不确定。
我的%PATH%和%PATHEXT%环境变量看起来也不错。它们的内容如下所示:
Path=C:\Program Files\Common Files\Microsoft Shared\Microsoft Online Services;
C:\Program Files (x86)\Common Files\Microsoft Shared\Microsoft Online Services;
C:\Windows\system32;
C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;
C:\Program Files (x86)\Common Files\Roxio Shared\10.0\DLLShared\;
C:\Programs\WinMerge;
C:\Programs\TortoiseHg\;
C:\Programs\MySQL\MySQL Server 5.1\bin;
C:\Programs\Aldec\Active-HDL 9.1\bin;
C:\Programs\Tcl\bin;
C:\Programs\modeltech_pe_10.0b\win32pe;
C:\Programs\Atlassian\atlassian-plugin-sdk-3.2.3\bin; …Run Code Online (Sandbox Code Playgroud) 我对 grep 有奇怪的问题(2.12-2,debian 测试)。
在某些情况下,当我执行以下操作时:
grep -rni '."spacer">.' .grep 返回几行空行:

如果我添加--color=none所有行变得可见。
.bashrc 中的 grep 选项:
export GREP_COLORS='fn=01;34:ms=01;33:ln=33'
alias grep='grep --color=auto'
Run Code Online (Sandbox Code Playgroud) 在 bash 中,如果我执行以下操作,我将获得其中的所有环境变量wd。
env | grep "wd"
Run Code Online (Sandbox Code Playgroud)
现在,在 Powershell 中,我知道我可以做到
get-childitem env:wd*
Run Code Online (Sandbox Code Playgroud)
但是我想通过管道将 select-string 作为一种更通用的方法,以便过滤来自管道的内容,无论管道左侧是什么。就像 grep 一样。
这不会过滤任何东西,我得到了所有的环境变量。
get-childitem env: | out-string | select-string -Pattern wd
Run Code Online (Sandbox Code Playgroud)
这让我一无所获:
get-childitem env: | select-string -Pattern "wd"
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用以下内容,如果我只过滤环境变量的名称,它实际上是一个更好的匹配。但是如果我想要一个快速而肮脏的过滤器呢?尤其是,不知道从管道进来的东西的属性。
get-childitem env: | where-object {$_.Name -like "wd*"}
Run Code Online (Sandbox Code Playgroud)
即是否有等效于grep的 Powershelll可在管道上下文中使用,而不仅仅是在文件搜索的上下文中,这select-string似乎覆盖得很好。