Bash grep隐藏命令的输出

Bash grep隐藏命令的输出,bash,grep,Bash,Grep,我有这样的命令: bin/deploy staging --profile my_profile | grep 'UploadError' 典型的 bin/deploy staging --profile my_profile 将许多日志行打印到控制台,但是在执行grep时,所有内容都会被静音。是否有一个标志可用于取消日志输出 基本上打印出命令通常打印到控制台的内容,并执行grep grep的目的是我有一些逻辑来处理部署期间的上传错误。我想要打印完整输出的原因是,我希望看到部署期间发生了

我有这样的命令:

bin/deploy staging --profile my_profile | grep 'UploadError'
典型的

bin/deploy staging --profile my_profile  
将许多日志行打印到控制台,但是在执行grep时,所有内容都会被静音。是否有一个标志可用于取消日志输出

基本上打印出命令通常打印到控制台的内容,并执行grep

grep的目的是我有一些逻辑来处理部署期间的上传错误。我想要打印完整输出的原因是,我希望看到部署期间发生了什么,而不是抑制日志

当前,如果grep未找到字符串,则不会打印任何内容。如果它执行以下操作,则会打印:

[web] UploadError

[worker] UploadError
如果我删除grep命令,控制台会显示如下内容:

[web] INFO: Uploading archive to s3 location: my-app/app-27b50-
170829_133831-stage-170829_133831.zip
[web] INFO: Creating AppVersion app-27b50-170829_133831-stage-
170829_133831
[web] WARNING: Deploying a previously deployed commit.
[web] Uploading my-app/app-27b50-170829_133831-stage-
170829_133831.zip to S3. This may take a while.
[web] Upload Complete.
所以我要做的是执行grep,无论是否找到字符串,也要将原始命令的输出打印到控制台

/dev/tty

与该流程的流程组(如果有)关联。它是 对于希望确保 无论如何向终端写入消息或从终端读取数据 输出已被重定向。它还可用于以下应用程序: 当需要输入输出时,要求输出文件名,并且 弄清楚目前使用的是什么终端是令人厌烦的。各 进程,控制终端的同义词

例如

akshay@db-3325:/tmp$ cal | tee /dev/tty | grep -i august
    August 2017       
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30 31        

    August 2017 
akshay@db-3325:/tmp$ myvar=$(cal | tee /dev/tty | grep -i august)
    August 2017       
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30 31        

akshay@db-3325:/tmp$ echo $myvar
August 2017
保存在变量中

akshay@db-3325:/tmp$ cal | tee /dev/tty | grep -i august
    August 2017       
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30 31        

    August 2017 
akshay@db-3325:/tmp$ myvar=$(cal | tee /dev/tty | grep -i august)
    August 2017       
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30 31        

akshay@db-3325:/tmp$ echo $myvar
August 2017
您可以进一步检查变量,如eblow

akshay@db-3325:/tmp$ myvar=$(cal | tee /dev/tty | grep -i september)
    August 2017       
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30 31        

akshay@db-3325:/tmp$ [ -z "$myvar" ] && echo "Not found" || echo "Found september"
Not found
/dev/tty

与该流程的流程组(如果有)关联。它是 对于希望确保 无论如何向终端写入消息或从终端读取数据 输出已被重定向。它还可用于以下应用程序: 当需要输入输出时,要求输出文件名,并且 弄清楚目前使用的是什么终端是令人厌烦的。各 进程,控制终端的同义词

例如

akshay@db-3325:/tmp$ cal | tee /dev/tty | grep -i august
    August 2017       
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30 31        

    August 2017 
akshay@db-3325:/tmp$ myvar=$(cal | tee /dev/tty | grep -i august)
    August 2017       
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30 31        

akshay@db-3325:/tmp$ echo $myvar
August 2017
保存在变量中

akshay@db-3325:/tmp$ cal | tee /dev/tty | grep -i august
    August 2017       
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30 31        

    August 2017 
akshay@db-3325:/tmp$ myvar=$(cal | tee /dev/tty | grep -i august)
    August 2017       
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30 31        

akshay@db-3325:/tmp$ echo $myvar
August 2017
您可以进一步检查变量,如eblow

akshay@db-3325:/tmp$ myvar=$(cal | tee /dev/tty | grep -i september)
    August 2017       
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30 31        

akshay@db-3325:/tmp$ [ -z "$myvar" ] && echo "Not found" || echo "Found september"
Not found
基本上打印出命令通常打印到控制台的内容,并执行grep

我不相信grep有办法做到这一点,但是greplike工具有
--passthru
选项正是出于这个原因。它将输出输入的所有行,并突出显示找到的匹配项

基本上打印出命令通常打印到控制台的内容,并执行grep


我不相信grep有办法做到这一点,但是greplike工具有
--passthru
选项正是出于这个原因。它将输出输入的所有行,并突出显示找到的匹配项。

请编辑Q以显示预期输出<代码>grep设计为flter,保持所有常规输出的目的是什么?你怎么知道什么被标记为问题。。为什么不删除
| grep'UploadError'
?祝你好运。感谢@shellter-更新了我的帖子。@HosseinK,希望下面的例子能帮助你,我看到你在几分钟前更新了你的问题,基本上如果你在
grep
之前使用
tee/dev/tty
,您仍然可以显示程序日志,也可以grep任何您想要的内容您可以使用注入vt100转义序列的shell脚本以彩色/粗体文本和彩色背景突出显示
grep
搜索目标吗?否则,下面有一些好的建议。祝你好运。请编辑你的Q以显示你的预期输出<代码>grep设计为flter,保持所有常规输出的目的是什么?你怎么知道什么被标记为问题。。为什么不删除
| grep'UploadError'
?祝你好运。感谢@shellter-更新了我的帖子。@HosseinK,希望下面的例子能帮助你,我看到你在几分钟前更新了你的问题,基本上如果你在
grep
之前使用
tee/dev/tty
,您仍然可以显示程序日志,也可以grep任何您想要的内容您可以使用注入vt100转义序列的shell脚本以彩色/粗体文本和彩色背景突出显示
grep
搜索目标吗?否则,下面有一些好的建议。祝你好运。谢谢@Akshay的回复,但是当我尝试时,我得到了:tee:/dev/tty:没有这样的设备或消息address@HosseinK,好的,如果不存在,那么您可以这样创建,然后成为root用户
mknod/dev/tty_mine c 5 0;chmod 666/dev/tty_mine;chown root.root/dev/tty_mine
然后是
cal|tee/dev/tty_mine | grep-i august
,hint do
ls-ltr/dev/-1
,你会发现很多
tty
谢谢你的回复@Akshay,但是当我尝试得到:tee:/dev/tty:address@HosseinK,好的,如果不存在,则可以这样创建,然后成为root用户
mknod/dev/tty_mine c50;chmod 666/dev/tty_mine;chown root.root/dev/tty_mine
然后
cal | tee/dev/tty_mine | grep-i august
,hint do
ls-ltr/dev/-1
,你会发现很多
tty
这正是我要找的。谢谢@andyth这正是我想要的。谢谢@Andy