我曾经在一家拥有定制外壳程序的公司工作,该外壳程序用于管理在Linux上运行的其中一种产品,并且我希望复制该外壳程序的关键功能。 所有工作都是通过后台进程完成的,日志的输出显示给所有连接的用户。 日志将在外壳的背景中尾部出现,并且提示行将始终完美地位于底部。 例如 Log line 1 Log line 2 Log line 3 ![ROOT@PRODUCT51-LIVE]:~/ # 我尝试使用bash进行此操作的方法是在用户.bashrc文件中启动一个分离的尾巴,但是当命令的输出发送到stdout时-它出现在bash提示符下,例如 ![ROOT@PRODUCT51-LIVE]:~/ #Log line 1 Log line 2 Log line 3 用户必须按Enter或输入CtrlC干净提示行。 我没有关于如何使提示始终跳到输出底部的想法,并且我认为我使用了错误的术语来在Google上找到任何内容,因为我没有运气-有人知道如何做到这一点用bash?
我已经完成了编写nagios脚本的一半,而SSH却给我带来了烦恼。 根据手册页: -q Quiet mode. Causes all warning and diagnostic messages to be suppressed. 但是,如果我启用了静默标志,然后传递了无效的端口,我仍然会收到错误消息: $ ssh user@localhost -q -p test Bad port 'test' 这是一个问题,因为那将使该消息成为第一行,而这正是Nagios抓住的。在!= 0从ssh 提取退出代码后,我需要输出类似“警告| SSH错误”的内容,但是我可以输出的第一行将是第2行。 如何使SSH TRULY安静? 注意:我不确定是否要在服务器故障,超级用户或stackoverflow上发布此问题。我使用serverfault的原因是,用户群可能最熟悉cli SSH和cli脚本解决方法。
我需要从bash脚本中检查是否安装了某些Ruby gem。 我以为我可以做类似的事情 if ! gem list <name>; then do_stuff; fi 但是在命令行上使用进行的测试echo $?表明,gem list <name>无论是否实际找到名称,它都会返回0。 这是否意味着我必须使用grep来过滤gem列表的输出,还是有更好的方法来检查是否已安装gem?