我想让我的Bash脚本对最终用户来说更加优雅。当Bash执行命令时,如何隐藏输出?
例如,当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 ......
我怎样才能完成这项任务?我一定会帮助使脚本更加用户友好。如果发生错误,则应向用户显示。
我想知道如何显示相同的消息,而一组命令正在执行。
匿名用户
一个进程通常有两个输出到屏幕:stdout(标准输出)和stderr(标准错误)。
通常情况下,信息消息会进入sdout
,错误和警报会进入stderr
。
您可以通过执行以下操作来关闭命令的stdout
MyCommand >/dev/null
然后通过执行以下操作关闭stderr:
MyCommand 2>/dev/null
如果你想两者都关闭,你可以这样做:
MyCommand 2>&1 >/dev/null
2
您可以将标准输出重定向到/dev/null。
yum安装nano
或者您可以重定向stdout和stderr,
yum安装nano
但是如果程序有一个安静的选项,那就更好了。
{
/your/first/command
/your/second/command
} &> /dev/null
要消除命令的输出,有两个选项:
>
关闭输出描述符文件,以防止其接受更多输入。看起来是这样的:
your_command "Is anybody listening?" >&-
通常,输出到文件描述符1(stdout)或2(stderr)。如果关闭文件描述符,则必须对每个编号描述符执行此操作,如
/your/first/command >&- 2>&-
注意顺序:
还要注意,某些命令可能无法很好地处理封闭的文件描述符(“写入错误:错误的文件描述符”),这就是为什么更好的解决方案可能是。。。
将输出重定向到
/dev/null
,它接受所有输出,但不处理任何输出。看起来是这样的:
your_command "Hello?" > /dev/null
对于文件的输出重定向,可以非常简洁地将stdout和stderr定向到同一位置,但只能在bash中:
/your/first/command &> /dev/null
最后,要同时对多个命令执行相同的操作,请将整个命令用花括号括起来。Bash将其视为一组命令,聚合输出文件描述符,以便可以一次重定向所有文件。如果您熟悉使用
(command1;command2;)的子shell
语法,您会发现大括号的行为方式几乎完全相同,只是除非将它们包含在管道中,否则大括号不会创建子shell,从而允许您在其中设置变量。
{
/your/first/command
/your/second/command
} &> /dev/null
有关详细信息、选项和语法,请参阅关于重定向的bash手册。
问题内容: 我知道命令行界面(例如Git等)能够隐藏用户的输入(对于密码有用)。有没有办法用Java编程地做到这一点?我正在从用户那里输入密码,我希望他们的输入在该特定行(而不是所有用户)上被“隐藏”。这是我的代码(尽管我怀疑这会有所帮助…) 问题答案: 尝试。不过,您至少必须运行Java 6。 请注意,这不适用于Eclipse控制台。您必须从 真实的 console / shell / term
我正在使用Jasypt加密并在属性文件的ENC()中指定属性值。解密密码是通过命令行参数发送的,如下。一切正常,但问题是当我搜索正在运行的进程时,它也显示密码。有没有办法通过从某处读取来隐藏加密密码? 我曾想过使用环境变量,但这也可能会暴露密码。所以,决定反对。 更新:有一个解决方案,在另一个所以Spring开机后如何隐藏密码在属性文件? 我遵循的解决方案是创建一个名为JASYPT\u ENCRY
我是bash的新手。当我尝试使用命令进行比较时,我遇到了如下问题: 在我的教程中,应该等于
输入一个语句后按回车键,MATLAB自动在屏幕上显示结果,但如果该行命令是以";"结尾,则MATLAB仍会进行运算赋值,但不显示任何输出结果.这一点在生成复杂矩阵时特别有用.例如: A = magic(100);
问题内容: 我在Ubuntu上使用,并且有一个Python 2.7脚本可以打印并说出一条消息: 产生所需的声音,但由于一些错误(,没有套接字连接)而使外壳混乱,因此我无法轻松读取之前打印的内容。退出代码为0。 不幸的是,没有记录的选项可以关闭它的冗长性,因此我正在寻找一种方法,仅在视觉上使其静音并保持打开的外壳干净以进行进一步的交互。 我怎样才能做到这一点? 问题答案: 将输出重定向到DEVNUL
我想使用Selenium ChromeDriver打开Chrome浏览器,而不让Chrome消息输出到控制台。 我想隐藏输出消息"DevTools监听..." 但这一信息仍在显现。如何隐藏输出消息“DevTools侦听…”用Python?