如何将Linux命令默认的提示结果不显示或者不输出?以及在脚本中如何替代Ctrl + C等关闭命令的终端窗口?

一、问题描述:

当我们想要获取命令的输出结果时,有时候命令会带出一些默认的提示信息输出到屏幕上,如何过滤掉这个提示信息呢?

例如,telnet命令退出时会默认提示“Connection closed by foreign host.”

 例如,执行mysql -uroot -pPassword命令,会默认提示"mysql: [Warning] Using a password on the command line interface can be insecure."

二、解决方法:

1、命令默认输出的相关提示一般为错误输出,可以使用2> 或者 2>&1 将相关输出的提示信息进行重定向到文件中。

标准输入(stdin)    0    /dev/stdin -> /proc/self/fd/0 -> /dev/pts/0
标准输出(stdout)    1    /dev/stdout -> /proc/self/fd/1 -> /dev/pts/0
标准错误输出(stderr)    2    /dev/stderr -> /proc/self/fd/2 -> /dev/pts/0
 

举例:

1)command 2>file :

错误输出到文件file。

>sleep 1 | telnet 127.0.0.1 10050 2> /tmp/test
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
# 标准输出到终端

>cat /tmp/test
Connection closed by foreign host. 
# 错误输出到文件file

2)command 2>&1 >file :

错误输出到终端,标准输出被重定向到文件file。

>sleep 1 | telnet 127.0.0.1 10050 2>&1 > /tmp/test
Connection closed by foreign host. 
# 错误输出到终端

>cat /tmp/test
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
# 标准输出到test文件


3)command >file 2>&1 :

标准输出已经被重定向到文件file,然后错误输出也重定向到和标准输出一样,所以也错误输出到文件file。

>sleep 1 | telnet 127.0.0.1 10050 > /tmp/test 2>&1
# 终端无任何输出

>cat /tmp/test
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Connection closed by foreign host.
# 标准输出和错误输出即提示内容都重定向到test文件

三、在脚本中如何替代Ctrl + C等关闭命令的终端窗口?

可以通过以下方式将telnet命令关闭

sleep 1 | telnet 127.0.0.1 10050


echo -e "\n" | telnet 10.127.0.0.1 10050


echo "" | telnet 127.0.0.1 10050

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值