Questions tagged «bash»

Bash是Bourne Again SHell,它是经典Unix sh(shell)的继承者。


2
Docker exec / run shell命令嵌套
用例的简短介绍: 我正在使用一个docker容器使用来运行我的go测试go test ./...。使用可以轻松实现docker exec <container> /bin/sh -c "go test ./..."。不幸的是,go test ./...它遍历所有子目录,因此我想排除一个(供应商目录)。 建议的解决方案是使用以下命令:go test $(go list ./... | grep -v '<excluded>',不知何故,我得到以下结果: docker run golang:1.6.2-alpine /bin/sh -c "go test " (我已经在run和exec上进行了测试,但是它们可能使用相同的内核)。 当我使用ssh进入容器docker exec -it <container_id> /bin/sh并运行完全相同的命令时,它就像一个超级按钮。 似乎通过docker exec / run执行shell命令不支持嵌套在$()?
15 bash  docker 

2
Bash提示低于输出-背景日志尾
我曾经在一家拥有定制外壳程序的公司工作,该外壳程序用于管理在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?
15 linux  bash  shell  tail 

3
运行多个会话时奇怪的bash历史记录行为
使用多个终端窗口时如何存储命令行历史记录?我知道它存储在其中,.bash_history但是如果我打开新窗口,则看不到使用什么历史记录的逻辑。从某种意义上来说,几乎感觉不到是不确定的,如果我尝试在新窗口中使用向上箭头,我将永远不知道会看到什么命令。 有人可以解释吗? 有没有一种方法可以控制历史记录,以便可以从特定窗口重用历史记录?

4
bash子进程的PID(imapsync)-如何获得它?
谁能告诉我如何获取以bash执行的命令的PID。 例如,我有一个运行imapsync的bash脚本。 当脚本被杀死时,imapsync进程不会总是被杀死,因此我希望能够从脚本中以编程方式识别imapsync的PID,以便我可以在信号处理程序中自行杀死imapsync进程。 那么,如何从父bash脚本中以编程方式获取子进程的PID?
15 bash  pid  imapsync 

2
在bash脚本中实现试运行
如何在bash脚本中实现试运行选项? 我可以考虑将每个命令都包装在if中,然后回显该命令,而不是在脚本以空运行方式运行时运行它。 另一种方法是定义一个函数,然后将每个命令调用传递给该函数。 就像是: function _run () { if [[ "$DRY_RUN" ]]; then echo $@ else $@ fi } `_run mv /tmp/file /tmp/file2` `DRY_RUN=true _run mv /tmp/file /tmp/file2` 这是错误的,还有更好的方法吗?
15 bash 

7
如何在bash脚本中获取Unix上的全限定名(FQN)?
我已经hostname在多台服务器(RedHat,Ubuntu)上进行了测试,并hostname -f证明了它不可靠,有时只返回短名称(如本问题所述)。 我可以在别名中看到fqn :(hostname -a别名之一是我要查找的fqn),但是别名的顺序不是固定的。 还有另一种方法来可靠地获取完全限定名称,并将其存储在bash变量中吗?
15 unix  bash  hostname 

2
使ssh真正安静
我已经完成了编写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脚本解决方法。
15 ssh  bash  nagios 


8
使ls全部打印在一行上(就像在终端上一样)
ls 根据输出是终端输出还是其他输出,打印结果会有所不同。 例如: $ ls . file1 file2 $ ls . | head file1 file2 有什么方法可以使ls打印在一行上,就像没有打印到终端上一样。有一种-C说法是sorta可以做到这一点,但是它将把它分成几行。 $ ls file1 file10 file11 file12 file13 file14 file15 file16 file17 file18 file19 file2 file3 file4 file5 file6 file7 file8 file9 $ ls -C . | head file1 file11 file13 file15 file17 file19 file3 …

3
如何保存:每周备份一次,每周备份一个月,每月备份一年,之后每年备份一次
我每天需要备份此服务器上的数据和配置文件。我需要保持: 一周的每日备份 每周备份一个月 一年的每月备份 之后每年备份 所有这些都是通过每天从cron运行的shell脚本完成的。 这是运行10年后备份文件的外观: blog-20050103.tar.bz2 blog-20060102.tar.bz2 blog-20070101.tar.bz2 blog-20080107.tar.bz2 blog-20090105.tar.bz2 blog-20100104.tar.bz2 blog-20110103.tar.bz2 blog-20120102.tar.bz2 blog-20130107.tar.bz2 blog-20130902.tar.bz2 blog-20131007.tar.bz2 blog-20131104.tar.bz2 blog-20131202.tar.bz2 blog-20140106.tar.bz2 blog-20140203.tar.bz2 blog-20140303.tar.bz2 blog-20140407.tar.bz2 blog-20140505.tar.bz2 blog-20140602.tar.bz2 blog-20140707.tar.bz2 blog-20140728.tar.bz2 blog-20140804.tar.bz2 blog-20140811.tar.bz2 blog-20140816.tar.bz2 blog-20140817.tar.bz2 blog-20140818.tar.bz2 blog-20140819.tar.bz2 blog-20140820.tar.bz2 blog-20140821.tar.bz2 blog-20140822.tar.bz2
14 linux  backup  bash 

1
Bash可以告诉我使用哪个SSH公钥进行身份验证吗?
假设我想跟踪我的root用户。它们每个都有一个唯一的私钥,其公钥已存储在中/root/.ssh/authorized_keys。 假设每个用户都使用其唯一密钥登录,我如何从BASH会话中得知哪个密钥用于身份验证?登录时,我尝试查看环境变量,但是看不到任何将会话与公钥相关联的信息。
14 bash  ssh-keys 


7
SSH等效于.profile / .bashrc
我正在寻找一种在ssh到的任何服务器上的会话中自动定义一些别名的方法。我无法将它们.bashrc放在服务器上的文件中,因为我登录时使用的用户帐户是由其他人共享的,此外还有许多用户帐户,并且在每台计算机上维护脚本会很麻烦。我知道我可以用来expect自动键入别名,但是我只是想知道OpenSSH是否有内置的东西可以用来实现此目的?
14 ssh  bash 

3
检查是否从bash脚本安装了ruby gem
我需要从bash脚本中检查是否安装了某些Ruby gem。 我以为我可以做类似的事情 if ! gem list <name>; then do_stuff; fi 但是在命令行上使用进行的测试echo $?表明,gem list <name>无论是否实际找到名称,它都会返回0。 这是否意味着我必须使用grep来过滤gem列表的输出,还是有更好的方法来检查是否已安装gem?
14 bash  gem 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.