标签: output

将上一个命令的输出作为参数传递给下一个

我有一个将数据输出到 stdout ( command1 -p=aaa -v=bbb -i=4)的命令。输出行可以具有以下值:

rate (10%) - name: value - 10Kbps
Run Code Online (Sandbox Code Playgroud)

我想 grep 该输出以存储该“速率”(我想管道在这里会很有用)。最后,我希望该速率是第二个命令的参数值(假设command2 -t=${rate}

我这边看起来很棘手;我想更好地了解如何使用管道、grep、sed 等。

我已经尝试了很多这样的组合,但我对这些感到困惑:

$ command1 -p=aaa -v=bbb -i=4 | grep "rate" 2>&1 command2 -t="rate was "${rate}
Run Code Online (Sandbox Code Playgroud)

command-line pipe command-substitution output arguments

179
推荐指数
5
解决办法
47万
查看次数

将所有终端输出保存到一个文件中

有什么方法可以使用命令将所有终端输出保存到文件中吗?

  • 我不是在谈论重定向 command > file.txt
  • 不是历史history > file.txt,我需要完整的终端文本
  • 不是热键!

就像是 terminal_text > file.txt

terminal output

84
推荐指数
2
解决办法
28万
查看次数

将彩色输出转换为 html

有提供彩色输出的工具:

dwdiff -c File1 File2 # word level diff
grep --color=always # we all know this guy
...
Run Code Online (Sandbox Code Playgroud)

问题是:如何将任意程序的彩色输出转换为彩色html文件?

其他输出格式也可能适用(LaTeX 会很棒)。我认为 html 是一个很好的起点,因为很容易将其转换为其他格式。

(对于如何保留终端颜色代码的好奇,请按照答案:https : //unix.stackexchange.com/a/10832/9689... | unbuffer command_with_colours arg1 arg2 | ... - 工具unbufferexpect 的一部分)

command-line colors terminal diff output

66
推荐指数
4
解决办法
5万
查看次数

如何在shell脚本中将文本输出到屏幕和文件?

目前我有一个 shell 脚本,它将消息记录到这样的日志文件中:

log_file="/some/dir/log_file.log"
echo "some text" >> $log_file
do_some_command
echo "more text" >> $log_file
do_other_command
Run Code Online (Sandbox Code Playgroud)

执行此脚本时,屏幕上没有输出,并且由于我通过 putty 连接到服务器,因此我必须打开另一个连接并执行“tail -f log_file_path.log”,因为我无法终止运行脚本,我想实时查看输出。

显然,我想要的是将文本消息打印在屏幕上并打印到文件中,但我想在一行中完成,而不是两行,其中一行没有重定向到文件。

如何实现这一目标?

shell gnu-screen files output

62
推荐指数
3
解决办法
21万
查看次数

如何在命令行上打印的行之间添加换行符?

邮件日志非常难以阅读。如何在命令行上打印的每一行之间输出一个空行?例如,假设我正在搜索日志。这样,多条包装线就不会被混淆。

command-line logs text-processing output text-formatting

35
推荐指数
3
解决办法
6万
查看次数

如何防止随机控制台输出破坏终端?

SE 上有很多问题显示了如何从被cat /dev/urandom. 对于那些不熟悉这个问题的人 - 这里是关于:

  1. 您执行cat /dev/urandom或等效(例如,cat binary_file.dat)。
  2. 垃圾被打印出来。
  3. 那没问题……除非您的终端在命令完成继续打印垃圾!这是实际上是 g++ 输出的错误渲染文本的屏幕截图:

    示例截图

    我想人们对 C++ 错误有时太神秘的看法是正确的!

通常的解决方案是 run stty sane && reset,尽管每次发生这种情况时都运行它有点烦人。

正因为如此,我想在这个问题中关注的是发生这种情况的原始原因,以及在发出此类命令后如何防止终端中断。我不是在寻找解决方案,例如将有问题的命令通过管道传递给tror xxd,因为这要求您在实际运行/打印之前知道程序/文件输出二进制文件,并且每次碰巧输出此类数据时都需要记住.

我注意到 URxvt、PuTTY 和 Linux 帧缓冲区中的相同行为,所以我认为这不是特定于终端的问题。我的主要怀疑是随机输出包含一些翻转字符编码的 ANSI 转义码(事实上,如果你cat /dev/urandom再次运行,它可能会打开终端,这似乎证实了这个理论)。如果这是正确的,这个转义码是什么?是否有任何标准方法可以禁用它?

terminal escape-characters output

24
推荐指数
1
解决办法
2410
查看次数

暂停终端输出

我有一个输出大量数据的命令(例如,带有大量系统调用的 strace,运行几分钟)。

是否有任何选项(例如命令包装器或类似的东西)可以让我暂停命令的输出(只是屏幕上的输出,我不介意在后台运行的命令),然后在我执行后取消暂停看看它的输出?

command-line terminal output

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

zsh 可以访问上次运行程序的标准输出吗?

我经常使用findlocate来查找路径。

(~) locate foobar.mmpz
/home/progo/lmms/projects/foobar.mmpz
Run Code Online (Sandbox Code Playgroud)

下一步通常是打开或以其他方式操作文件。在像上面这样的快乐情况下,我可以这样做:

(~) ls `!!`
ls `locate foobar.mmpz`
/home/progo/lmms/projects/foobar.mmpz
Run Code Online (Sandbox Code Playgroud)

但是当有很多输出行时,没有人会太高兴,其中一些可能不是路径或其他类似的东西。此外,重新运行可能浪费的命令也不是那么优雅。

有没有办法连接 zsh 以将标准输出存储到数组中以供以后操作?毕竟,将流重定向到用户是 shell 的工作。我认为它可以将前 N 行和最后 N 行存储在变量中以供以后立即使用,例如$?和其他。

好的,这很酷:https : //unix.stackexchange.com/a/59704/5674。我现在询问 zsh 专有技术(并将代码移植到 zsh)以在每个运行行之后装配这种捕获。

zsh terminal output

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

附加到管道并传递?

我有一个简单的 bash 函数将两个数字相除:

echo "750/12.5" | bc
Run Code Online (Sandbox Code Playgroud)

我想采取输出bc和追加/24和管道表示结果的另一个实例bc

就像是:

echo "750/12.5" | bc | echo $1 + "/24" | bc
Run Code Online (Sandbox Code Playgroud)

$1管道结果在哪里。

PS我意识到我可以做echo "750/12.5/24" | bc我的问题更多的是关于将文本附加到管道结果。

shell pipe bc output

21
推荐指数
4
解决办法
4万
查看次数

如果成功,则通过管道传输命令的输出

INPUT_FILE=`ls -rt $MY_DIR/FILE.*.xml | head -1 | xargs basename`
Run Code Online (Sandbox Code Playgroud)

我只想head -1在第一个命令成功时执行第二个命令 ( )。如何改进此命令?

shell pipe output

18
推荐指数
2
解决办法
2万
查看次数