Articles of bash

在Bash脚本中的正则expression式

你好真棒社区, 当涉及正则expression式我是一个完整的涂料。 我推迟了学习..现在我的懒惰已经赶上了我。 我在做什么: 检查一个string是否符合这个格式: 10_06_13 即。 今天的date,或与“2digits_2digits_2digits”类似的date 我做了什么: regex='([0-9][0-9][_][0-9][0-9][_][0-9][0-9])' if [[ "$incoming_string" =~ $regex ]] then # Do awesome stuff here fi 这在一定程度上起作用。 但是,当传入的string等于011_100_131 …它仍然通过正则expression式检查。 如果有人能帮助我指出正确的方向,我将不胜感激。 干杯

Bash中$ {}和$()之间的区别

我有两个问题,可以用一些帮助我理解它们。 ${}和$()之间有什么区别? 我明白, ()意味着在单独的shell中运行命令,并放置$意味着将值传递给variables。 有人能帮我理解这个吗? 如果我错了,请纠正我。 如果我们可以使用/bash$ for ((i=0;i<10;i++)); do echo $i; done /bash$ for ((i=0;i<10;i++)); do echo $i; done /bash$ while ((i=0;i<10;i++)); do echo $i; done为什么我不能使用它作为/bash$ while ((i=0;i<10;i++)); do echo $i; done /bash$ while ((i=0;i<10;i++)); do echo $i; done /bash$ while ((i=0;i<10;i++)); do echo $i; done ? 两者的执行周期有什么不同?

sed将空格插入到特定行

我在开始的时候有一个空格,例如“Hello world”。 我想插入这一行到文件中的特定行。 例如插入“hello world”到下一个文件 hello world 结果: hello hello world world 我正在使用这个sed脚本: sed -i "${line} i ${text}" $file 问题是,我得到了我的新行空间: hello hello world world

awk OR语句

awk是否有一个OR语句, 即给出以下片段: awk '{if ($2=="abc") print "blah"}' 是否有可能添加一个OR语句,以便如果$2==abc OR def -> print ?

具有多个参数的xargs

我有一个源input, input.txt a.txt b.txt c.txt 我想将这些input提供给一个程序,如下所示: my-program –file=a.txt –file=b.txt –file=c.txt 所以我尝试使用xargs ,但没有运气。 cat input.txt | xargs -i echo "my-program –file"{} 它给 my-program –file=a.txt my-program –file=b.txt my-program –file=c.txt 但我想要 my-program –file=a.txt –file=b.txt –file=c.txt 任何想法?

复制文件权限,但不是文件

我有两个相同的目录树的副本。 他们几乎都有相同的文件(一个版本可能有一些额外的或丢失的文件)。 但是,大部分文件对于两个目录是相同的(具有相同的相对path和所有内容)。 假设这些在目录中: version1/ version2/ 问题是版本1中的权限/搞砸了,我想从版本2 /复制权限,但没有replace版本1 /这是更新的文件。 有没有一个自动化的方式来通过bash做到这一点? (它不一定是bash,也可以是其他一些方法/编程语言)。

Bash:使用自定义键盘快捷方式调用脚本?

比方说,我有一个脚本,“ myscript.sh ”,内容只是echo $PWD 。 我想以某种方式将此脚本绑定到bash ( gnome-terminal )中的组合键 – 以便当我按下该组合键时,将“ myscript.sh ”的输出插入(“粘贴”)终点站。 显然, bash历史和行操作是由readline处理的 – 而且我得到的bash键盘快捷键的参考文献可以参考readline : bash键盘快捷键 Bash参考手册:可绑定的Readline命令 我也在Bash参考手册:Readline Init File Syntax中看到bash的键绑定可以通过使用bind -p ( 请参阅help bind [not'man bind'] )来列出。 所以也许这个问题最好被命名为“绑定macros到自定义键盘快捷键在readline ”:)但是在任何情况下,我想要做什么? 我想另一种方法是让脚本像“ pwd | xsel -b ”,然后在terminal上调用它,然后我可以粘贴; 但我仍然喜欢一个单一的键盘快捷键,而不是像Ctrl-Alt-H(这似乎没有用于任何东西),它会立即插入/粘贴脚本输出时按下。 提前致谢, 干杯! 编辑:只是为了澄清 – 这里是我的用例,我想这个设施。 我通常在项目文件myproject-folder-0012a ,通常命名为myproject-folder-0012a ,它由svn修改控制。 还有一堆这些文件夹。 因此,我常常在提交消息的第一个单词的地方是目录名,如下所示: svn ci -m "myproject-folder-0012a: here […]

如何获得在bash中从Ping收到的数据包的百分比?

在ping主机时,我希望我的输出只显示接收的数据包(发送5个)的百分比。 我假设我需要用某种方法使用grep但我无法弄清楚(我是bash编程的新手)。 这里是我的地方: ping -c 5 -q $host | grep ? ping -c 5 -q $host | grep ? 。 什么应该去grep? 我想我必须做一些算术来获得收到的百分比,但我可以处理。 如何从ping将输出的摘要中提取需要的信息?

从网页运行bash文件

好吧,我有一个bash文件,可以在linux服务器上执行各种操作。 我需要将7-8个variables传递给bash文件,这些variables将由用户在简单的网页上设置。 只是想知道这是可能的,或者我需要通过其他语言脚本的bash文件调用吗? 从http://www.tldp.org/LDP/abs/html/functions.html调查一个bash文件的调用函数是正确的吗? 似乎无法find一个很好的资源来引导我,所以任何链接或示例表示赞赏

Bash读取输出?

我在Ubuntu 11.4上运行这个terminal。 说我执行一个bash脚本,输出是: Test1: Some text… Test2: Some text… Test3: Some text… 我如何在同一个bash脚本中将上述输出存储为一个或多个variables? 理想的解决scheme是准备在条件中使用,如下所示:(第一行的输出将存储在$ln1等) if [ $ln1 = "Test1: Some text…" ] ; then