Articles of bash

运行期望代码时发送错误

我做了一个期望的代码: #!/ usr / bin / expect -f 产卵ls 期待“*] $ *” 发送“cd / to / some / path \ n” 期待“*] $ *” 发送“sudo -u root ./program.sh” 期待“*:*” 发送“i_am_password \ n” 相互作用 执行它时,我得到下面的错误: 产卵ls my_pgm.exp abc.sh axyz.zip all.zip test.exp 发送:spawn id exp6未打开 在执行时 “send”cd / to / some / path \ n“” (文件“./my_pgm.exp”第5行) 我在Ubuntu上运行这个代码。 […]

Bash脚本:跳过文件和grep

Bash脚本不是我最强的一点。 我有一个文件结构为 % comment filename1 pattern-to-search1 filename1 pattern-to-search2 … 我想编写一个脚本来为filename的每一行的所有pattern-to-mat的文件名。 到目前为止,我有 while read file p do if [ "${file:0:1}" != "%" ] then grep -o "$p" $file | wc -l fi done echo -e "\nDone." 但是它不会跳过以%开头的文件。 有任何想法吗?

使用sed在脚本中编辑一个urlstring

我需要在configuration文件中编辑这些string <port>8189</port> <service>127.0.0..1:8190</service> <wan-access>localhost</wan-access> 我努力了 . variables.sh cat config.sh | sed -i.bk \ -e 's/\<^port\>\/'$port'/\<\/\port\>/' \ -e 's/\<^service\>\/'$url'/\<\/\service\>/' \ -e 's/\<^wan-access\>\/'$url2'/\<\/\wan-access\>/' config.sh 在脚本中,variables由variables.sh文件提供。 出来应该是 <port>8787</port> <service>my.domain.com:8190</service> <wan-access>my.realdomain.com</wan-access>

我将如何将多个目录压平并叠加到一个目录中?

我想获取一个目录层次结构的列表,并将它们拼合成一个单独的目录。 稍后在列表中的任何重复文件将replace较早的文件。 例如… foo/This/That.pm bar/This/That.pm bar/Some/Module.pm wiff/This/That.pm wiff/A/Thing/Here.pm 这将结束 This/That.pm # from wiff/ Some/Module.pm # from bar/ A/Thing/Here.pm # from wiff/ 我有一个可能复杂的Perl程序来做到这一点。 我对用户可能解决它的聪明方式感兴趣。 大的障碍是“根据需要创build中间目录”,也许有一些basename和dirname的组合。 我正在解决的真正的问题是检查两个安装的Perl库之间的区别。 我首先将每个Perl的多个库目录展平成一个目录,模拟Perl如何search一个模块。 然后我可以把它们分开。

在shell脚本中修改导出的variables

我有一个shell脚本,看起来像下面的代码片段: … export updates=0 processFiles() { updates=$((updates+1)) } export -f processFiles find $path -exec /bin/bash -c "processFiles '{}'" \; echo $updates 用来计算更新,插入和文件的数量。 不幸的是,最后的回声总是打印0。 我已经尝试在函数中使用导出 – 没有工作。

从bash脚本获得userinput(由cron或udev执行)

编辑,这个问题可能还没有完全清楚,简短的版本: 如果脚本在后台运行,而不是在活动的控制台中,如何popup一个询问用户input的对话框? /编辑 当我从udev或cron运行一个bash脚本时,它通常会在后台的某个地方安静地运行。 例如可以插入一个外部硬盘运行rsync进行数据备份。 所以不是每次我插入硬盘驱动器,我想启动这个动作。 什么是最小的方式来触发一些用户input对话框,并询问是或否? 我可以用PyQt编写一些接口,但我希望尽可能less依赖,最好跨窗口pipe理器,甚至可能没有窗口pipe理器。 谢谢!

我如何让树莓派直接启动浏览器?

我在/etc/bash.bashrc文件中放入了以下行: chromium–kiosk www.bbc.co.uk 然而,我然后在启动时得到一个错误: "(chromium:2100): Gtk-WARNING **: cannot open display:" 如果我将Pi设置为在启动时启动到操作系统,它不会显示铬,但是如果我启动一个terminal窗口,它会突然在Kiosk模式下打开铬并显示指定的网页! 我究竟做错了什么?

如何在日志文件中grep下一个variables的实例?

所以我试图parsingFTP日志,看看是否某个用户安全login。 到目前为止,我有这个拉用户login后的几行 cat proftpd.log.2 | grep -B 3 "USER $sillyvariable" 这是它创build的示例输出 ::ffff:127.0.0.0 UNKNOWN ftp [04/Jan/2013:11:03:06 -0800] "AUTH TLS" 234 – ::ffff:127.0.0.0 UNKNOWN ftp [04/Jan/2013:11:03:06 -0800] "USER $sillyvariable" 331 – 现在这是我想要的一个完美的例子,它显示了AUTH TLS消息和IP匹配 。 然而,情况并非总是如此,因为许多用户经常login和注销,大部分时间输出都是混乱的。 有没有办法,我可以grep的USER $sillyvariable并find他/她的匹配的IP包含在前面的行“AUTH TLS”,所以我可以知道他们安全地login? 我想你可以说我想grep的用户,然后grep向后看,如果他们的连接(匹配的IP)是安全的。 我有点卡住了,真的可以用一些帮助。 谢谢!

检查string的第一个N行的bash文件

我想写一个bash脚本,可以通过并只检查文件的前N行以匹配特定的string。 我能够编写一个简单的命令来检查整个文件,但包含在大于N的行中的信息可能不准确。 这是我目前的实施 find . -exec egrep -H -m 1 -l "\<$month/$day/$year\>" {} \; 我正在考虑使用头function修剪文件,但这似乎并没有工作。 有什么build议么? 提前致谢

Bash:使用'at'来编程当前脚本的下一个执行

我想执行一个脚本,并安排下一次执行。 样本将是: #!/bin/bash TMP=/tmp/text.txt SCRIPT=$(readlink -f $0) date >>$TMP at -f $SCRIPT now + 1 minutes >>$TMP 2>&1 echo -e "\n" >>$TMP 样例执行如下: 首先执行OK。 计划到下一分钟 第二次执行写入确定但不计划 结果输出将是: tue mar 5 14:34:01 CET 2013 job 15 at 2013-03-05 14:35 tue mar 5 14:35:00 CET 2013 job 16 at 2013-03-05 14:36 [now at 2013-03-05 14:38] atq输出什么都没有,我没有看到任何/ var […]