例如
当bash执行时
- yum install nano
- 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 ......
我如何完成这个任务。我一定会帮助使脚本更加用户友好。如果错误发生,那么应该向用户显示。
编辑我想知道如何显示同一个消息,同时执行一组命令
- {
- /your/first/command
- /your/second/command
- } &> /dev/null
说明
要消除命令的输出,您有两个选项:
- your_command "Is anybody listening?" >&-
通常,输出到文件描述符1(stdout)或2(stderr)。如果关闭文件描述符,则必须对每个编号的描述符执行此操作,如&> (下面)是与& – :不兼容的特殊BASH语法:
- /your/first/command >&- 2>&-
小心注意顺序:>& – closes stdout,这是你想做的; &> – 将stdout和stderr重定向到名为 – (连字符)的文件,这不是您想要做的。它首先看起来是一样的,但后者在你的工作目录中创建一个离散文件。很容易记住:>& 2将stdout重定向到描述符2(stderr),>& 3将stdout重定向到描述符3,并且& – 重定向stdout到死端(即它关闭stdout)。
还要注意一些命令可能不能处理特别好的关闭的文件描述符(“写错误:坏文件描述符”),这就是为什么更好的解决方案可能是…
> Redirect output to /dev/null
,它接受所有输出,不做任何操作。它看起来像这样:
- your_command "Hello?" > /dev/null
对于到文件的输出重定向,您可以非常简洁地将stdout和stderr定向到同一个位置,但只能在bash中:
- /your/first/command &> /dev/null
最后,对一些命令做同样的事,用大括号括起整个东西。 Bash将此处理为a group of commands,聚合输出文件描述符,以便可以一次重定向所有。如果你熟悉,而不是subshells使用(command1; command2;)语法,你会发现大括号的行为几乎完全相同的方式,除了除非你涉及他们在一个管道大括号不会创建一个subshell,因此将允许你可以在里面设置变量。
- {
- /your/first/command
- /your/second/command
- } &> /dev/null
有关更多详细信息,选项和语法,请参阅bash manual on redirections。