Articles of bash

用setlock执行多个命令

在一个bash脚本中,我想执行多个命令,同时使用setlocklocking一个文件。 但是Setlock只支持以下用法: setlock [-NnXx] [locking文件] [命令] 除了使用单独的脚本之外,是否有一种方法可以将多个命令一起包装?

通过SSH连接导出bashrc文件

我有我的bashrc文件设置为我喜欢。我通常工作在一个硬件插入远程服务器。我ssh进入该远程服务器。我希望我的.bashrc运行时,我ssh进入远程服务器,而是在服务器上的bashrc。无论如何,我可以做到这一点。

通过删除环境variables名来防止带有FSpath值的环境variables的bash选项卡完成

朋友们, 我在Linux上使用GNU bash作为我的shell: $ bash –version GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu) Copyright (C) 2011 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $ 当我设置一个FSpath作为它的值的环境variables时,它的行为非常奇怪。 假设我想将/ opt / database […]

可能/如何获取在最后一个命令之前执行的命令的返回码?

Linux bash(或其他shell)。你有没有发过“echo $?”? 变成类似“echo $ 4”的东西,从而永久地阻止你知道前一个命令的返回码? 我经常这样做(这太令人讨厌了),所以我想我会问:bash和/或linux是否有一个“返回代码栈”或数组,或者包含前一个命令返回代码的东西,而不仅仅是最后一个你跑了? 我正在谈论不涉及pipe道的简单命令。

在tcpdump返回数据包之前的一秒延迟

使用Ubuntu,我试图将tcpdump嗅探与来自客户端设备的自我识别“ping”进行同步。 问题在于,通过看起来像tcpdump中的内置延迟,获得精确的启动和停止是困难的。 以下是我的脚本中的关键字: sudo timeout .5s tcpdump -i wlan0 -e 当我设置超时停止tcpdump(比如在我的例子中)时,比如半秒,没有数据包被返回。 实际上,低于1.1s的任何值都不能返回数据包(而1.1和更长的时间则工作得很好)。 我已经尝试添加-n参数来禁止DNS,但没有任何区别。 我也试过这两个完全不同的WiFi卡(英特尔迅驰和TP-Link N900),以确保它不只是一个硬件“function”。 我不是一个开发人员,但我grep的tcpdump源代码的“延迟”,“延迟”,“超时”,但没有出现这似乎是负责任的。 有任何想法吗?

如何在没有答案的情况下获得挖掘+简短的回报?

dig +short的行为是当运行一个不返回任何结果的查询(与超时无关,只是一个空的答案)时不返回空(null)。 当自己运行查询时,这是可以的,但是当与-f参数结合并运行一批查询时,它是不好的! dig +short -f queries.txt queries.txt: A somedomain.com TXT otherdomain.com A somedomain.com 现在,如果DNS服务器没有为TXT otherdomain.com(即ANSWER:0)返回任何内容,而不是超时或其他内容,那么上述dig命令的输出将如下所示: dig +short -f queries.txt 1.2.3.4 1.2.3.4 即只有2行。 对“粘贴”和其他类似的命令不好。 你不能再合并queries.txt的输出和dig的输出。 有什么优雅的可以在这里完成?

如何将命令输出作为多个parameter passing给另一个命令

我有一个命令产生这样的输出: $。/命令1 word1 word2 word3 我想把这三个字作为parameter passing给另一个命令: $ command2 word1 word2 word3 如何将command1输出作为三个不同的参数$ 1 $ 2 $ 3传递给command2? 提前致谢。

sshconfiguration文件环境variables?

在我的pipe理员工作期间,我需要login到几个远程的ssh服务器。 我与三个不同的计算机客户端工作,所有这些都是Debian GNU / Linux系统。 我保留一个工作空间目录,我把我需要做的所有工作都放在这个目录下,该目录包含一个bashrc文件和一个ssh_config文件。 我手动同步该目录内容与脚本,使用rsync从一台客户端计算机到其他客户端,因为我移动并开始使用不同的客户端。 三个客户端上的本地用户都需要最less的configuration,所以如果我需要创build一个新的本地用户或重新安装一个客户端,我只需要rsync工作空间,并添加一个引用到我的自定义workspace/bashrc在真实用户的$HOME/.bashrc 。 我的自定义workspace/bashrc创build了几个别名,我得到我平常的环境,无论我使用的客户端。 我的自定义workspace/bashrc创build别名以这种方式连接到远程服务器: alias s1='ssh -F ~/workspace/etc/ssh_config server1.example.com' 我只需在任何客户端的terminal中键入s1loginserver1,因为我的自定义ssh_config设置了所需的公钥authentication选项,正确的端口server1正在侦听并且正确的用户。 现在这就像一个魅力,只要ssh命令是我所需要的。 不幸的是,一旦我需要另外一个使用ssh命令,事情变得更加混乱。 例如,如果我需要rsync什么东西到其中一台服务器,我不得不写下整个ssh命令: rsync -Pavz –delete -e "ssh -F $HOME/workspace/etc/ssh_config" … 其他命令(如scp , ssh-copy-id等) scp发生类似的情况。 我希望能写 rsync -Pavz –delete -e "ssh" … 而是让ssh从环境variables中取出它的configuration文件名,这样我就可以在我的bashrc设置这个环境variables,并且每个ssh调用都能自动工作。 有这样的环境variables还是有不同的解决scheme?

哈希从string创buildhex颜色代码(在bash中)

我想要使​​用rrdtool生成我的服务器通信量的graphics,但是它需要graphics上每行的hex颜色代码。 由于我想遍历一堆不同的域数据文件,我想以编程方式生成这些颜色代码 。 我也希望他们保持一个给定的域数据文件的一致性 – 所以我认为这个域名的散列是一个很好的方法来使用。 问题是,我不知道从哪里开始。 有一个简单的algorithm,我可以在bash中使用散列string(域名)到hex颜色代码 ?

Bash在Ubuntu和RHEL之间的诡计

同伴们, 我正在玩一个RHEL 5.4盒子里的单线程,并且完美的工作: TOTAL_RAM=`free | grep Mem: | awk '{ print $2 }'`; \ ps axo rss,comm,pid | awk -v total_ram=$TOTAL_RAM \ '{ proc_list[$2] += $1; } END { for (proc in proc_list) \ { proc_pct = (proc_list[proc]/total_ram)*100; printf("%d\t%s\t%0.2f%\n", proc_list[proc],proc,proc_pct); }}' \ | sort -n | tail -n 10 在RHEL框中输出如下所示的内容: 3736 logmon 0.01% 4156 EvMgrC […]