如何隐藏bash中的命令输出

前端之家收集整理的这篇文章主要介绍了如何隐藏bash中的命令输出前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想让我的bash脚本更为优雅的终端用户。我如何隐藏输出当bash正在执行commmands
例如
当bash执行时
  1. yum install nano

以下将显示给执行bash的用户

  1. Loaded plugins: fastestmirror
  2. base | 3.7 kB 00:00
  3. base/primary_db | 4.4 MB 00:03
  4. extras | 3.4 kB 00:00
  5. extras/primary_db | 18 kB 00:00
  6. updates | 3.4 kB 00:00
  7. updates/primary_db | 3.8 MB 00:02
  8. Setting up Install Process
  9. Resolving Dependencies
  10. --> Running transaction check
  11. ---> Package nano.x86_64 0:2.0.9-7.el6 will be installed
  12. --> Finished Dependency Resolution
  13.  
  14. Dependencies Resolved
  15.  
  16. ================================================================================
  17. Package Arch Version Repository Size
  18. ================================================================================
  19. Installing:
  20. nano x86_64 2.0.9-7.el6 base 436 k
  21.  
  22. Transaction Summary
  23. ================================================================================
  24. Install 1 Package(s)
  25.  
  26. Total download size: 436 k
  27. Installed size: 1.5 M
  28. Downloading Packages:
  29. nano-2.0.9-7.el6.x86_64.rpm | 436 kB 00:00
  30. warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature,key ID c105b9de: NOKEY
  31. Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
  32. Importing GPG key 0xC105B9DE:
  33. Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>
  34. Package: centos-release-6-4.el6.centos.10.x86_64 (@anaconda-CentOS-201303020151.x86_64/6.4)
  35. From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
  36. Running rpm_check_debug
  37. Running Transaction Test
  38. Transaction Test Succeeded
  39. Running Transaction
  40. Installing : nano-2.0.9-7.el6.x86_64 1/1
  41. Verifying : nano-2.0.9-7.el6.x86_64 1/1
  42.  
  43. Installed:
  44. nano.x86_64 0:2.0.9-7.el6
  45.  
  46. Complete!

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

  1. Installing nano ......

我如何完成这个任务。我一定会帮助使脚本更加用户友好。如果错误发生,那么应该向用户显示

编辑我想知道如何显示同一个消息,同时执行一组命令

用这个。
  1. {
  2. /your/first/command
  3. /your/second/command
  4. } &> /dev/null

说明

要消除命令的输出,您有两个选项:

>关闭输出描述符文件,使其不再接受任何输入。看起来像这样:

  1. your_command "Is anybody listening?" >&-

通常,输出文件描述符1(stdout)或2(stderr)。如果关闭文件描述符,则必须对每个编号的描述符执行此操作,如&> (下面)是与& – :不兼容的特殊BASH语法:

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

小心注意顺序:>& – closes stdout,这是你想做的; &> – 将stdout和stderr重定向到名为 – (连字符)的文件,这不是您想要做的。它首先看起来是一样的,但后者在你的工作目录中创建一个离散文件。很容易记住:>& 2将stdout重定向到描述符2(stderr),>& 3将stdout重定向到描述符3,并且& – 重定向stdout到死端(即它关闭stdout)。

还要注意一些命令可能不能处理特别好的关闭文件描述符(“写错误:坏文件描述符”),这就是为什么更好的解决方案可能是…
> Redirect output to /dev/null,它接受所有输出,不做任何操作。它看起来像这样:

  1. your_command "Hello?" > /dev/null

对于到文件输出重定向,您可以非常简洁地将stdout和stderr定向到同一个位置,但只能在bash中:

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

最后,对一些命令做同样的事,用大括号括起整个东西。 Bash将此处理为a group of commands,聚合输出文件描述符,以便可以一次重定向所有。如果你熟悉,而不是subshel​​ls使用(command1; command2;)语法,你会发现大括号的行为几乎完全相同的方式,除了除非你涉及他们在一个管道大括号不会创建一个subshel​​l,因此将允许你可以在里面设置变量。

  1. {
  2. /your/first/command
  3. /your/second/command
  4. } &> /dev/null

有关更多详细信息,选项和语法,请参阅bash manual on redirections

猜你在找的Bash相关文章