如何隐藏在bash命令输出如何隐藏在bash命令输出(How to hide command out

2019-05-13 01:52发布

我想我的bash脚本更优雅的结束user.How做时正在运行bash commmands对于例如当bash执行我隐藏输出

yum install nano

下面将现身谁执行的bash用户

Loaded plugins: fastestmirror
base                                                     | 3.7 kB     00:00
base/primary_db                                          | 4.4 MB     00:03
extras                                                   | 3.4 kB     00:00
extras/primary_db                                        |  18 kB     00:00
updates                                                  | 3.4 kB     00:00
updates/primary_db                                       | 3.8 MB     00:02
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package nano.x86_64 0:2.0.9-7.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package         Arch              Version                Repository       Size
================================================================================
Installing:
 nano            x86_64            2.0.9-7.el6            base            436 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 436 k
Installed size: 1.5 M
Downloading Packages:
nano-2.0.9-7.el6.x86_64.rpm                              | 436 kB     00:00
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
 Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>
 Package: centos-release-6-4.el6.centos.10.x86_64 (@anaconda-CentOS-201303020151.x86_64/6.4)
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : nano-2.0.9-7.el6.x86_64                                      1/1
  Verifying  : nano-2.0.9-7.el6.x86_64                                      1/1

Installed:
  nano.x86_64 0:2.0.9-7.el6

Complete!

现在,我想从用户,而是展示这个隐藏

Installing nano ......

我怎样才能做到这一点task.I无疑将有助于使脚本的详细用户friendly.In话,那么发生错误,应该显示给用户。

编辑我想知道如何显示相同的消息,而正在执行的命令集

Answer 1:

用这个。

{
  /your/first/command
  /your/second/command
} &> /dev/null

说明

为了消除来自命令的输出,你有两个选择:

  • 关闭输出描述符文件,它保持它从接受任何更多的输入。 这看起来是这样的:

     your_command "Is anybody listening?" >&- 

    通常情况下,输出变要么文件描述符1(标准输出)或2(错误)。 如果关闭文件描述符,你必须为每个编号的描述符这样做,因为&> (下图)是一种特殊的BASH语法不兼容>&-

     /your/first/command >&- 2>&- 

    小心注意顺序: >&- 关闭标准输出 ,这是你想要做什么; &>-重定向输出和错误命名文件-连字符),这是不是你想要做什么。 它会看起来是一样的在第一,但后者会在您的工作目录流浪文件。 这很容易记住: >&2重定向标准输出到文件描述符2(错误), >&3标准输出重定向到请求3,和>&-标准输出重定向到一个死胡同(即它关闭标准输出)。

    另外注意,有些命令可能无法处理一个封闭的文件描述符特别好(“写入错误:错误的文件描述符”),这就是为什么更好的解决方案可能是...

  • 输出重定向到/dev/null ,它接受所有的输出,并不会与它无关。 它看起来像这样:

     your_command "Hello?" > /dev/null 

    对于输出重定向到一个文件,你可以直接标准输出和标准错误输出到同一个地方很简洁,但只有在bash:

     /your/first/command &> /dev/null 

最后,做了许多相同的命令一次,围绕在大括号整个事情。 巴什将此视为一组命令 ,聚集输出的文件描述符,所以你可以一次全部重定向。 如果你熟悉,而不是使用子shell ( command1; command2; )语法,你会发现在大括号的行为几乎完全一样,不同的是,除非你在一个管道让他们参与括号不会创建一个子shell,因此将允许你里面设置变量。

{
  /your/first/command
  /your/second/command
} &> /dev/null

查看bash的手册上重定向更多细节,选项和语法。



Answer 2:

您可以重定向标准输出到/ dev / null的。

yum install nano > /dev/null

或者,你可以重定向stdout和标准错误,

yum install nano &> /dev/null

但是,如果程序有一个安静的选择,那就更好了。



Answer 3:

的方法,通常有两个输出到屏幕: 标准输出 (标准输出)和stderr(标准误差)。

通常情况下信息消息去sdout和错误,并提醒前往stderr

您可以关闭stdout做了一个命令

MyCommand >/dev/null

并关闭stderr做:

MyCommand 2>/dev/null

如果你想都关闭 ,你可以这样做:

MyCommand 2>&1 >/dev/null

2>&1表示标准错误发送到相同的地方标准输出。



Answer 4:

您可以将输出重定向到/dev/null 。 有关的/ dev / null的更多信息阅读链接 。

您可以隐藏通过以下方式COMAND的输出:

echo -n "Installing nano ......"; yum install nano > /dev/null; echo " done."; 

重定向标准输出/dev/null ,但不标准的错误。 这将显示错误,在安装过程中发生的,例如,如果yum不能找到一个包。

echo -n "Installing nano ......"; yum install nano &> /dev/null; echo " done.";

虽然因为两个标准误差和标准输出被重定向,从而无效该代码将不会显示在任何终端/dev/null



Answer 5:

你不应该使用bash在此情况下,摆脱输出。 百胜确实有一个选项-q这抑制了输出。

你会发现自己也想用-y

echo "Installing nano..."
yum -y -q install nano

要查看百胜,使用所有选项man yum



Answer 6:

>/dev/null 2>&1将静音两个stdoutstderr

yum install nano >/dev/null 2>&1


Answer 7:

.SILENT:

在脚本的开头没有冒号:键入“.SILENT”。



文章来源: How to hide command output in bash
标签: bash shell