标签: pipe

一个班轮ffmpeg(或其他)只获得分辨率?

我不是很精通命令行,所以希望这不是一个太愚蠢的问题。

如果我运行:

ffmpeg -i videofile.avi
Run Code Online (Sandbox Code Playgroud)

我得到这样的输出:

ffmpeg version git-2013-11-21-6a7980e Copyright (c) 2000-2013 the FFmpeg develop    ers
  built on Nov 21 2013 12:06:32 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration: --prefix=/home/user/ffmpeg_build --extra-cflags=-I/home/user/ffmpeg_build/include --extra-ldflags=-L/home/user/ffmpeg_build/lib --b        indir=/home/user/bin --extra-libs=-ldl --enable-gpl --enable-libass --enable    -libfdk-    aac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-l    ibx264 --enable-    nonfree
  libavutil      52. 53.100 / 52. 53.100
  libavcodec     55. 44.100 / 55. 44.100
  libavformat    55. 21.100 / 55. 21.100
  libavdevice    55.  5.100 / 55.  5.100
  libavfilter     3. 91.100 /  3. 91.100
  libswscale      2.  5.101 / …
Run Code Online (Sandbox Code Playgroud)

bash regex ffmpeg pipe

10
推荐指数
3
解决办法
1万
查看次数

使用 Moreutils ts 进行管道铺设

我在串行端口有一个传入流,新行大约每秒出现一次

wren@Raven:~$ cat /dev/ttyUSB0

A_Sensor1,B_22.00,C_50.00

A_Sensor1,B_22.00,C_50.00

A_Sensor1,B_22.00,C_50.00

A_Sensor1,B_22.00,C_50.00

A_Sensor1,B_22.00,C_50.00
Run Code Online (Sandbox Code Playgroud)

我想去除空行并对其余部分进行时间戳。

sed 将剔除空行并添加时间戳,但我无法更新时间戳,它只报告调用它的时间:

wren@Raven:~$ cat /dev/ttyUSB0 | sed -e '/^$/d' -e "s/$/`date +\,%F\,%T`/"
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
^C
Run Code Online (Sandbox Code Playgroud)

我找到了 ts,Moreutils 的一部分,并且可以通过管道输入它以获得更新时间戳。

wren@Raven:~$ cat /dev/ttyUSB0 |  ts
May 14 09:49:26 A_Sensor1,B_22.00,C_50.00
May 14 09:49:26
May 14 09:49:27 A_Sensor1,B_22.00,C_50.00
^C
Run Code Online (Sandbox Code Playgroud)

但是,我无法将 ts 与 sed 正确结合。

这看起来应该做我想做的事,根本不产生任何输出

wren@Raven:~$ cat /dev/ttyUSB0 | sed -e '/^$/d' | ts
^C
wren@Raven:~$
Run Code Online (Sandbox Code Playgroud)

然而,颠倒管道的顺序确实会产生输出,但当然不会去除不再空白的线条。其他替换工作正常,所以我知道 sed 的管道正在工作。

wren@Raven:~$ cat /dev/ttyUSB0 |  ts | sed -e '/^$/d'
May …
Run Code Online (Sandbox Code Playgroud)

command-line pipe sed

9
推荐指数
1
解决办法
2121
查看次数

如何在单个管道中收集 while 循环的输出?

我有一个由 while 循环组成的脚本,其中包含一个回声:

while my_condition
do
echo [my_output]
done
Run Code Online (Sandbox Code Playgroud)

如何在单个管道中收集输出?

我需要column在输出管道之后使用'

bash pipe

9
推荐指数
1
解决办法
4781
查看次数

如何将输入拆分到两个管道

我想做一些与此等效的事情:

some-expensive-command > /tmp/mytempfile
grep -v "pattern" /tmp/mytempfile >> output.txt
grep "pattern" /tmp/mytempfile | yet-another-command
Run Code Online (Sandbox Code Playgroud)

最好是优雅且不需要tempfile. 我正在考虑通过管道tee,但我能想到的最好的可能是将三行中的两行组合起来,并且仍然需要中间存储:

some-expensive-command | tee /tmp/mytempfile | grep -v "pattern" >> output.txt
grep "pattern" /tmp/mytempfile | yet-another-command
Run Code Online (Sandbox Code Playgroud)

command-line pipe

9
推荐指数
2
解决办法
8411
查看次数

这个命令是如何工作的?(反壳)

有一种简单的方法可以连接两个系统并使用nc命令获取 shell,如下所示。

但是,-e选项不再存在,手册页建议按照以下方式执行命令

我确实知道(命名管道)背后的概念mkfifo以及重定向和管道的工作原理。但这仍然让我困惑。

command-line bash networking pipe netcat

9
推荐指数
1
解决办法
4918
查看次数

彩色打印的 Pipable 命令?

我对 bash 脚本有点陌生,我想知道是否有程序或内置命令可以通过管道以指定的颜色打印?或者是否有一个 echo 参数可以这样做?

就像我可以做的:

echo Hi | commandhere -arguement blue
Run Code Online (Sandbox Code Playgroud)

它会以蓝色打印“嗨”?

command-line bash scripts pipe

8
推荐指数
1
解决办法
3334
查看次数

手表在管道传输时切断 ps 辅助输出

在处理一个在这里无关紧要的(Python)脚本时,我遇到了一个非常奇怪的行为,涉及watchand ps aux,当后者通过管道传输到其他东西时。

我已经设法将问题减少到一行。跑步时

watch "ps aux | grep 'ps aux'"
Run Code Online (Sandbox Code Playgroud)

在终端中,正如预期的那样,您通常会得到几行输出。

输出显示 5 个结果

请注意,前三行被切断,ps aux最后几乎不适合。当您将终端的尺寸减小到不再适合的位置时,它会完全从结果中删除。

输出显示 2 个结果

这意味着 grep 只接收截止输出。我对此感到最困惑的是发生这种情况的范围极其有限。这不会发生在任何一个

ps aux | grep "ps aux"
watch "ps u -C ps"
watch "ssh localhost 'ps aux | grep \"ps aux\"'"
Run Code Online (Sandbox Code Playgroud)

在所有这些情况下,列表都按预期环绕。

在 Ubuntu 15.04 上,bash 和 sh 似乎都是这种情况。

虽然我设法在我的脚本中解决了这个问题,但有人对这种行为有任何解释吗?

command-line grep pipe watch-command

7
推荐指数
1
解决办法
5081
查看次数

Bash 函数将终端输出稳健地通过管道传输到 vim

我经常以这种方式将我的终端输出重定向到 vim,我厌倦了一直输入:

ls | vim -
Run Code Online (Sandbox Code Playgroud)

我想定义一个函数v来为我做这件事,即我希望能够输入:

v ls 并且这以某种方式“扩展”到上一个命令。

我可以用这种脚本在简单的情况下做到这一点(当然,这可以重构为一个小函数):

#!/bin/bash 
 
touch crrt_cmd

while (( "$#" )); do 
  echo -n $1 >> crrt_cmd
  echo -n " " >> crrt_cmd
  shift 
done

chmod +x crrt_cmd
bash crrt_cmd | vim -

rm crrt_cmd
Run Code Online (Sandbox Code Playgroud)

这适用于非常简单的命令,例如lsor ls -l,但是当存在一些管道时它根本不起作用,例如。

关于如何执行类似操作的任何想法,但适用于任何有效的 bash 命令?


所以只是要清楚,如果可能的话,我希望事情以这种方式工作:

v ls | grep keyword | head -5
Run Code Online (Sandbox Code Playgroud)

会翻译成:

ls | grep keyword | head -5 | vim -
Run Code Online (Sandbox Code Playgroud)

vim command-line bash pipe

7
推荐指数
2
解决办法
1226
查看次数

如何通过命令管道所有 bash 终端输出

我希望能够通过某个命令传输所有 bash 终端命令(除了对某人恶作剧之外,没有其他充分的理由)。我只想将任何已执行命令的标准输出通过管道传输到预先确定的程序中,而无需做任何特别的事情。

例如:如果该预定程序是 cowsay

echo "Hello World"
Run Code Online (Sandbox Code Playgroud)

应该输出

 _____________
< Hello World >
 -------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?(一些有趣的节目,我想用它来恶作剧别人包括revcowsaylolcat

command-line bash pipe cowsay

6
推荐指数
1
解决办法
1823
查看次数

bash 内置“read”在管道“|”之后 不等待用户输入

当我卷曲存储在网络服务器上的脚本时,它会无休止地回显我编码的提示,直到我发送 ^c。我所做的只是一个简单的curl https://server/test.sh | bash。这是通过管道运行的代码

while true
do
        read -r -p "[Y/n] " input

        case $input in
            [yY][eE][sS]|[yY])
                        echo "y"
                        break
                        ;;
            [nN][oO]|[nN])
                        echo "n"
                        break
                        ;;
            *)
                echo "y/n"
                ;;
        esac
done
Run Code Online (Sandbox Code Playgroud)

command-line bash scripts pipe

6
推荐指数
1
解决办法
1284
查看次数

标签 统计

pipe ×10

command-line ×8

bash ×7

scripts ×2

cowsay ×1

ffmpeg ×1

grep ×1

netcat ×1

networking ×1

regex ×1

sed ×1

vim ×1

watch-command ×1