如何避免终端向下滚动到bash中的最后一条消息?


2

我编写了一个bash脚本,在新终端中运行一些其他命令:

#!/bin/bash
# Sample script
gnome-terminal --title="blah blah" -x bash -c ffmpeg -i udp://239.1.2.1:60001?fifo_size=50000000 -acodec copy -vcodec copy -preset ultrafast \
-flags -global_header -f hls -hls_time 20 -hls_wrap 5 /var/www/html/ts/1.m3u8 &

sleep 1

gnome-terminal --title="blah blah" -x bash -c ffmpeg -i udp://239.1.2.2:60002?fifo_size=50000000 -acodec copy -vcodec copy -preset ultrafast \
-flags -global_header -f hls -hls_time 20 -hls_wrap 5 /var/www/html/ts/2.m3u8

每个的输出 ffmpeg line是多个页面,它类似于:

libavutil      54.  7.100 / 54.  7.100
  libavcodec     56.  1.100 / 56.  1.100
  libavformat    56.  4.101 / 56.  4.101

  ... many pages after ....

[h264 @ 0xc04c60] decode_slice_header error
[h264 @ 0xc04c60] no frame!
[h264 @ 0xc04c60] non-existing PPS 0 referenced

.... many pages after .... 

  Program 105 
    Metadata:
      service_name    : IRIB-TV5
      service_provider: IRIB
[adts @ 0xf943e0] Using AVStream.codec.time_base as a timebase hint to the muxer is deprecated. Set AVStream.time_base instead.
Output #0, hls, to '/home/stream/Desktop/tst/1.m3u8':
  Metadata:
    encoder         : Lavf56.4.101
    Stream #0:0: Video: h264 (libx264), yuv420p, 720x576 [SAR 12:11 DAR 15:11], q=-1--1, 25 fps, 90k tbn, 25 tbc
    Metadata:
      encoder         : Lavc56.1.100 libx264
    Stream #0:1(per): Audio: aac, 48000 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc56.1.100 aac
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (aac_latm (native) -> aac (native))
Press [q] to stop, [?] for help
[h264 @ 0xf42120] reference picture missing during reorder
[h264 @ 0xf42120] Missing reference picture, default is 65716
[h264 @ 0xf42120] reference picture missing during reorder
[h264 @ 0xf42120] Missing reference picture, default is 65717

当我在新终端中运行此脚本并启动命令时(在这种情况下) ffmpeg ),它会立即显示许多输出行,有时会显示许多页面 自动转到上一条消息 ...

如何在终端中向上和向下滚动到第一条消息,或者在第一页停止?


好的,现在这是另一个问题。使用 | more 要么 | less 在第一页后停止输出(然后你需要按回车...例子 gnome-terminal --title="blah blah" -x bash -c ' find ~ | less'
Hastur

以及我必须做什么才能进入最后一页?
combo_ci

请参阅下面的更新答案或在您的计算机上搜索 man less 要么 man more
Hastur

完美... tnx很多
combo_ci

别客气。我试图让你的文字更清晰。感觉你自由 编辑 再次或到 “回滚” 修改。顺便说一句,第一条消息是隐藏在终端中的更多(更多),而不是最后一条消息:为此,很难理解你...... :-) ps>欢迎使用SuperUser。
Hastur

Answers:


1

之后更新问题完全重新制定:

您可以使用 | more 要么 | less 在第一页之后停止输出。

 gnome-terminal --title="blah blah" -x bash -c  ' find  ~  | less'

注意 :你需要使用 '' 说它完成bash命令的位置。
less 你可以搬家:

  • 结束 到页面的开头和结尾。
  • PgUp键 PgUp键 一页向下或向上。
  • 向上 DN 一线向上或向下。

您的脚本中的一行可以类似于

gnome-terminal --title="blah blah" -x bash -c                                 \
'ffmpeg -i udp://239.1.2.1:60001?fifo_size=50000000 -acodec copy -vcodec copy \
-preset ultrafast -flags -global_header -f hls -hls_time 20 -hls_wrap 5       \
/var/www/html/ts/1.m3u8 | less ' &

有一些快捷方式:

  • 按Ctrl + 转移 + 向上 要么 DN 向上或向下滚动一行
  • 转移 + PgUp键 要么 PgDn键 向上或向下滚动页面
  • 转移 + 要么 结束 向上滚动到开头或向下滚动到结尾

您可以直接阅读其他快捷方式 gnome帮助页面


但我想在bash中做到这一点,例如在我的工作结束时......是否可能?
combo_ci

我误解了它(你的好版本可能会更清楚 ;-) ):添加一个 | less 要么 | more 对你的命令。例 tree . | less。 BTW这重定向了标准输出。如果你想重定向甚至stderr你必须明确写。 (例 tree . 2>&1 | less )。它能解决你的问题吗?
Hastur

我使用dvblast(一个直播电视节目的程序)...我开始dvblast 10次10​​通道...当我开始dvblast它显示终端中的许多按摩,我想看到最后的消息...我运行dvblast与我说的问题的代码,我想在那段代码中这样做
combo_ci

1
@combo_ci我的 这是你第三次改变你的问题......现在你问的是另一个问题(和一个特定问题)。花点时间阅读 怎么问 。它将帮助您获得所需的答案和其他人,以避免浪费时间回答不必要的问题。与个人无关。 BTW做另一个问题,添加一个典型的输出,所需的输出和信息,如果你运行所有10 dvblast 来自同一个shell ...
Hastur

Tnx的回复,但我认为我的问题很明确...我从bash运行终端...终端的输出是太行,不显示在一个pge ....我想迫使终端scoll下来到最后的消息.. 。只是它
combo_ci
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.