例如
当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。