简单地说,我怎样才能让 GPG 不打印该消息?以下是我正在使用的命令:
echo "test input" > test.in
echo "test" | gpg -q -c --passphrase-fd 0 --output test.enc --yes --force-mdc test.in
echo "test" | gpg -q -d --passphrase-fd 0 test.enc > test.out
Run Code Online (Sandbox Code Playgroud)
并运行它:
$ echo "test input" > test.in
$ echo "test" | gpg -q -c --passphrase-fd 0 --output test.enc --yes --force-mdc test.in
Reading passphrase from file descriptor 0
$ echo "test" | gpg -q -d --passphrase-fd 0 test.enc > test.out
Reading passphrase from file descriptor 0
Run Code Online (Sandbox Code Playgroud)
编辑:重定向 stderr …
我之前在这里问过一个问题。我的问题是我试图通过管道将密码提供给 scp
echo mypassword | scp tim@xxx.xxx.xxx.xxx:project/* ~/project/
Run Code Online (Sandbox Code Playgroud)
但是它仍然要求我手动输入密码。我应该如何在命令中将 mypassword 指定为 scp?
我仍然不明白其中一个答复。例如,TTY 的输入流是什么?输入流的常用方法有哪些?如何知道命令的 stdin 输入是什么类型的输入流?例如 ssh/scp。
我正在运行以下命令:
[user@server ~]$ /usr/sbin/ntpdate -d IPREMOVEDFORSECURITY | egrep 'transmit timestamp' | tail -1 | awk '{print $4, $5, $6, $7, $8}'
host found : HOSTREMOVEDFORSECURITY
Tue, Feb 15 2011 12:38:38.321
Run Code Online (Sandbox Code Playgroud)
所以问题是,无论我使用哪种类型的重定向,我总是得到“找到主机:”行。我尝试了以下方法:
0>/dev/null
1>/dev/null
2>/dev/null
2>&1
2>&/dev/null
Run Code Online (Sandbox Code Playgroud)
以及我能想到的或能够在网上找到的所有其他变体。我需要并希望返回的是该命令输出的第二行(时间戳)。我不明白为什么我似乎无法影响“主机找到:”行?!?!
我通过 perl 运行这些命令,但是在 bash 中直接运行它们时我看到了相同的行为。我需要抑制该 host: 行,因为在 perl 中,我使用反引号运行命令将输出分配给变量,并根据其他一些条件输出干净的响应。无论如何,该主机行显示并混淆了我的脚本输出,尽管它不会影响实际分配给变量的内容。
我的假设是这条线没有使用普通的 STDIN、STDOUT、STDERR 线程,但我似乎无法确定关于第 4 种输出方法的任何特定信息。我发现的每个网站都只谈论这三个。
如果有人对此有答案,请告诉我!
PS:这不是显示此行为的唯一命令,chkconfig 和其他一些命令也执行此操作,我真的很想弄清楚如何抑制这种不必要的输出。
这是一种常见情况:您希望将命令 'foo' 作为管道的一部分包含在内,但不幸的是,命令 'foo' 只接受 I/O 的实际文件名,并且不从 stdin/stdout 读/写。我知道有一个 Unix 命令可以作为诸如“foo”之类的错误命令的包装器,但我不记得它的名字。它是什么?
我正在使用以下/etc/init/jsonlog.conf新贵工作:
description "jsonlog"
start on runlevel [23]
stop on runlevel [06]
respawn
script
cd /tmp
echo "about to listen"
/bin/nc -l 3333
echo "finished listening"
end script
post-stop script
sleep 1
end script
Run Code Online (Sandbox Code Playgroud)
问题是nc每次客户端连接时都会立即退出。
所需的行为是接收到的所有数据(即 utf8 json)应以/var/log/upstart/jsonlog.log. 该服务器运行的是 Ubuntu 12.04LTS。
nc从 bash shell 运行时该命令可以正常工作。
我假设这与stdin. 我尝试过使用一个-q -1选项,但没有帮助。
PS 我很满意这样一个事实,即它一次只会听一个客户。