Questions tagged «pipe»

Unix管道连接两个进程的文件描述符。使用在<unistd.h>中声明的POSIX pipe()函数创建管道。外壳程序使用“ |”在进程之间提供管道创建。

3
在管道中较早获取命令的PID
我正在编写一个bash脚本,用于inotifywait监视目录并在检测到更改时启动操作。就像是: inotifywait -m ... | while read f; do something; done 由于inotifywait不会自行终止,因此该脚本不会停止。 所以我的计划是获取inotifywait进程的PID,将其保存到文件中,然后让另一个进程将其杀死,例如: inotifywait -m ... | { echo ??PID?? &gt; pid-file; while ... } 但我不知道如何获取PID。有没有简单的方法可以做到这一点?另一种方法是将shell脚本的PID保存$$到文件中并杀死整个shell脚本,但是我想在while循环后进行一些清理。 我已经尝试过使用coproc,但我认为它会起作用,但似乎比所需的更为复杂。
11 bash  pipe  pid 

1
如何将HTML传送到lynx?
我正在从控制台测试一些ajax调用。我喜欢摆脱HTML标记的元信息干扰,而只是读取内容,因此我喜欢将其通过管道传输到终端浏览器,例如lynx。 然而: curl www.google.de | lynx 只是打开一个新的天猫实例。 我不想: curl www.google.de &gt; someFile.html &amp;&amp; lynx someFile.html
11 pipe  curl  html  stdin  lynx 

2
通过stdin在`ssh-copy-id`中发送密码
我需要自动化一些身份部署,最好使用ssh-copy-id。 我正在尝试通过stdin提供密码,这可以ssh通过使用-S标志来实现。我知道可以在命令中ssh使用该-o标志发送其他选项,ssh-copy-id但是手册页中没有该标志的用法示例。 因此,我尝试ssh-copy-id使用以下方式通过stdin 传递SSH密码: $# echo $TMP_PASS | ssh-copy-id -p2222 -i key.pub user@host -o "-S" 但是我得到的是: /bin/ssh-copy-id: ERROR: command-line: line 0: Bad configuration option: -s 编辑: 我正在尝试通过stdin提供密码,这可以 ssh通过使用-S标志来实现。 这个说法是错误的。我实际上已经从sudo人那里读到了这个标志。

2
如何使用sed保持彩色输出
我正在使用该sed命令,并且希望保留前一个命令的彩色输出。的输出ls是彩色的,但sed的输出不是。我正在使用OSX。 ls -la | sed -En '/Desktop/q;p'
10 sed  osx  pipe  ls  colors 

3
是否可以将Linux中的TCP隧道公开为特殊字符设备?
最近,我在QNX文档中发现,它允许使用串行设备(dev/serX)在单独的物理计算机上的进程之间建立基于消息的IPC ,这使我感到奇怪: 在Linux中是否可以为TCP / UDP隧道创建系统范围的特殊设备?像nc标准输入/输出/ dev /下的东西公开曝光。 最后,我希望能够在一台机器上向此类文件写入内容,然后在另一端接收该文件,例如: #machine1: echo "Hello" &gt; /dev/somedev #machine2: cat &lt; /dev/somedev 我看了看人,nc但是除了stdio之外,我没有找到任何指定io源/目标的选项。

2
如何将参数传递给输入bash的脚本
现在我有一个这样的班轮: curl -fsSL http://git.io/vvZMn | bash 它正在下载脚本并将其作为stdin文件传递到bash。我想使用其他参数运行此脚本print。 也许是这样的吗? curl -fsSL http://git.io/vvZMn | bash -- print 但这是行不通的。
10 bash  pipe  curl  input 

2
如何将所有输出发送到POSIX Shell中的`logger`?
我想在.xprofile使用中分别记录标准输出和标准错误logger。在Bash中,我认为这看起来像这样: exec 1&gt; &gt;(logger --priority user.notice --tag $(basename $0)) \ 2&gt; &gt;(logger --priority user.error --tag $(basename $0)) 我将如何以POSIX /bin/sh兼容的方式进行操作?
10 shell  pipe  posix 

3
用“读取”将脚本管道化为bash
我需要通过管道它运行一个脚本bash用wget(而不是直接使用bash运行它)。 $ wget -O - http://example.com/my-script.sh | bash 它不起作用,因为我的脚本中包含read语句。由于某些原因,在进行bash传输时这些命令不起作用: # Piping to bash works in general $ echo 'hi' hi $ echo "echo 'hi'" | bash hi # `read` works directly $ read -p "input: " var input: &lt;prompt&gt; # But not when piping - returns immediately $ echo 'read …
10 bash  shell  pipe  read 

3
从管道检查md5sum
我很困惑应该如何md5sum --check工作: $ man md5sum -c, --check read MD5 sums from the FILEs and check them 我有一个文件,可以将其传送到md5sum: $ cat file | md5sum 44693b9ef883e231cd9f90f737acd58f - 当我明天要检查文件的完整性时,如何检查md5sum是否仍然是44693b9ef883e231cd9f90f737acd58f? 注意 cat file可能是流。因此,我想像我的示例一样使用管道,而不是md5sum file。
10 pipe  hashsum 

2
将脚本输出的副本发送到文件
假设我有一个Zsh脚本,我想让它将输出打印到STDOUT,而且还要将其输出复制(转储)到磁盘上的文件中。 此外,脚本以以下选项开头 set -o xtrace 这迫使它变得冗长,并打印它运行的命令。我也想在磁盘上的文件中捕获此输出。 我的理解是,如果我这样做 ./my_script.sh &gt; log.txt 它只会发送STDOUT到log.txt,但是如果我也希望能够在终端中看到输出怎么办? 我已经阅读了Zsh中的tee和MULTIOS选项,但是不确定如何使用它们。 当我做: ./my_script | tee log.txt 我可以在终端上看到输出,但是该文件log.txt似乎无法捕获所有内容(实际上它几乎捕获不到任何内容)。

3
在管道中调用我的函数时未设置环境变量
我具有以下递归函数来设置环境变量: function par_set { PAR=$1 VAL=$2 if [ "" != "$1" ] then export ${PAR}=${VAL} echo ${PAR}=${VAL} shift shift par_set $* fi } 如果我自己调用它,它将设置变量并回显到stdout: $ par_set FN WORKS FN=WORKS $ echo "FN = "$FN FN = WORKS 将stdout重定向到文件也可以: $ par_set REDIR WORKS &gt; out cat out REDIR=WORKS $ echo "REDIR …

4
从命名管道获取标准输入
我想做的是在终端窗口中运行python,并从命名管道重定向它的stdin。然后,我在另一个终端中写入命名管道,并在python上执行该命令。 1号航站楼: mkfifo p1 python &lt; p1 2号航站楼: echo -n "print \"Hello World\"" &gt; p1 发生的是-python打印Hello World并退出。我想做的是保持python运行以接受下一条命令。如何在外壳中执行此操作?

4
在命令行中从尾部执行文本的最简单方法是什么?
有时我正在使用新的(ubuntu)框,然后键入git并收到警告: The program 'git' is currently not installed. You can install it by typing: apt-get install git-core 如果发生这种情况,我知道我可以通过执行以下操作来抓住最后一行: !! 2&gt;&amp;1 | tail -n 1 但是,如何apt-get install git-core最轻松地执行()结果? 我知道我能做 `!! 2&gt;&amp;1 | tail -n 1` 但是还有一种方法可以实际通过管道传输并运行它吗?这似乎不起作用: !! 2&gt;&amp;1 | tail -n 1 | sh 而且该2&gt;&amp;1部分有点麻烦,所以我想知道是否还有一种更简单的方法可以实现这一目标。 编辑 将其以某种方式保存到变量,然后执行该变量也是可以接受的: !! 2&gt;&amp;1 | tail …

3
gzip-重定向还是管道?
我将使用dd将大容量(750GB)磁盘备份到外部USB磁盘。 我应该使用重定向还是管道?哪个更有效?还是有区别? 另外,最佳块大小是多少?USB可能是这里的瓶颈。 dd if=/dev/sda bs=1M | gzip -c &gt; /mnt/sdb1/backups/disk.img.gz gzip -dc /mnt/sdb1/backups/disk.img.gz | dd of=/dev/sda bs=1M 与 dd if=/dev/sda bs=1M | gzip -c | dd of=/mnt/sdb1/backups/disk.img.gz dd if=/mnt/sdb1/backups/disk.img.gz | gzip -dc | dd of=/dev/sda bs=1M 谢谢。
10 linux  gzip  pipe  dd 

4
让Bash脚本等待状态消息再继续
我正在使用bash脚本启动Selenium服务器,正如您从下面的日志中的时间戳中看到的那样,事情完全在线大约需要32秒: Feb 28, 2012 10:19:02 PM org.openqa.grid.selenium.GridLauncher main INFO: Launching a standalone server 22:19:02.835 INFO - Java: Sun Microsystems Inc. 20.0-b11 22:19:02.836 INFO - OS: Linux 2.6.32-220.4.1.el6.x86_64 amd64 22:19:02.852 INFO - v2.19.0, with Core v2.19.0. Built from revision 15849 22:19:02.988 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub 22:19:02.990 INFO …
10 bash  logs  pipe  search  selenium 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.