Articles of bash

如何使用bash监视目录中新创build的文件?

我有一个由大量日志文件组成的日志目录,一旦系统事件发生,就会创build一个日志文件。 我想写一个总是监视文件列表并在terminal上显示新创build文件的内容的online bash脚本。 这是它的样子: 目前,我所拥有的只是显示整个目录的内容: for f in *; do cat $f; done 它缺乏我想要的监视function。 我的系统的一个局限是我没有 watch命令。 我也没有任何包pipe理器来安装花哨的工具。 原始的BSD是我所有的。 我有tail ,我正在想像tail -F $(ls)但这尾巴每个文件,而不是文件列表。 总之,我想修改我的脚本,以便我可以监视所有新创build的文件的内容。

Bash脚本命令不能在cron中工作

我有以下bash脚本来读取日志,并检查蛮力,然后阻止使用iptables IP。 #!/bin/bash #blah blah run some commands to get the IP iptables -A INPUT -s $p -j REJECT –reject-with icmp-host-prohibited echo "BANNED $p FOR $COUNT ATTEMPTS" |wall 我做了chmod 755.当我从terminal运行命令,它工作正常。 但是当我使用crontab -e作为root设置一个cronjob时,它得到IP,并且回显“BANNED …”消息到墙上,但是没有任何东西被添加到iptables列表中。 PS。 我试过#!/bin/bash和#!/bin/sh但没有运气。

使用AWK从两个文件中分解n个列

我有两个N列数的文件 文件1: A 1 2 3 ……. Na1 B 2 3 4 ……. Nb1 文件2: A 2 2 4 ……. Na2 B 1 3 4 ……. Nb2 我想要一个输出从File1的第一列值将被从File2的第一列中减去,这样直到列N如下所示: A -1 0 -1 …….. (Na1-Na2) B 1 0 0 …….. (Nb1-Nb2) 如何在Linux环境中执行AWK或Perl脚本?

如何使用awk将文件的某个字段更改为大写?

我有这样的文本文件: 1 http http 3 4 5 2 dns dns 4 3 ftp ftp 4 5 6 8 我想输出是这样的: 1 HTTP http 3 4 5 2 DNS dns 4 3 FTP ftp 4 5 6 8 我想把第二个字段从小写变成大写,只有第二个字段。 请注意,某一行中的字段数量不固定。 我可以用awk完成这个目标吗?

freeTDS bash:在Microsoft SQL Server中执行sql查询

我可以使用freeTSD和命令行通过Mint Linux VM连接到Microsoft SQL Server 2008实例,以在其上执行sql语句。 现在我想在bash脚本中自动化这个。 我能够成功login我的bash脚本: TDSVER=8.0 tsql -H servername -p 1433 -D dbadmin -U domain\\Administrator -P password 然后我有我的SQL查询: USE dbname GO delete from schema.tableA where ID > 5 GO delete from schema.tableB where ID > 5 GO delete from schema.tableC where ID > 5 GO exit 这在通过freeTSD命令行手动执行时有效,但不能在我放入bash文件时使用。 我跟着这个post: freeTSD&bash 。 这是我的bash脚本示例: echo […]

使用input/输出redirect在后台运行进程

我很想知道,当进程有input/输出redirect来在后台运行进程时,在代码中使用“&”运算符是否有所不同 在后台运行进程方面,这两行代码之间有什么区别? 如果有的话,我怎样才能确定分歧将是什么? setsid python script.py < /dev/zero &> log.txt & setsid python script.py < /dev/zero & > log.txt & setsid python script.py < /dev/zero > log.txt & setsid python script.py & < /dev/zero > log.txt

recursion地“规范化”文件名

我的意思是摆脱特殊字符的文件名等 我已经做了一个脚本,可以recursion重命名文件[http://pastebin.com/raw.php?i=kXeHbDQw]: 例如:之前: THIS is my file (1).txt 运行脚本之后: This-is-my-file-1.txt 好。 这里是: 但是:当我想要“完全”testing它,像这样的文件名: ¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÂÃÄÅÆÇÈÊËÌÎÏÐÑÒÔÕ×ØÙUÛUÝÞßàâãäåæçèêëìîïðñòôõ÷øùûýþÿ.txt áíüűúöőóéÁÍÜŰÚÖŐÓÉ!"#$%&'()*+,:;<=>?@[\]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ''“”•–—˜™š›œžŸ¡¢£.txt 它失败[http://pastebin.com/raw.php?i=iu8Pwrnr]: $ sh renamer.sh directorythathasthefiles mv: cannot stat `./áíüűúöőóéÁÍÜŰÚÖŐÓÉ!"#$%&\'()*+,:;<=>?@[]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ''“”•–—˜™š›œžŸ¡¢£': No such file or directory mv: cannot stat `./áíüűúöőóéÁÍÜŰÚÖŐÓÉ!"#$%&\'()*+,:;<=>?@[]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ''“”•–—˜™š›œžŸ¡¢£': No such file or directory mv: cannot stat `./áíüűúöőóéÁÍÜŰÚÖŐÓÉ!"#$%&\'()*+,:;<=>?@[]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ''“”•–—˜™š›œžŸ¡¢£': No such file or directory mv: cannot stat `./áíüűúöőóéÁÍÜŰÚÖŐÓÉ!"#$%&\'()*+,:;<=>?@[]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ''“”•–—˜™š›œžŸ¡¢£': No such file or […]

使用排除列表查找在bash中查找的目录

现在,在你认为“之前已经完成”的情况下,请继续阅读。 和大多数试图findbash脚本的人一样,你最终将脚本硬编码为一行命令,但最终会在接下来的几个月/几年里编辑这个东西,所以你最终希望你做对了第一次。 我正在编写一个小的备份程序来做备份目录,并且需要find它们,而不是需要排除的directorie列表。 说起来容易做起来难。 让我来设置舞台: #!/bin/bash BasePath="/home/adesso/baldar" declare -a Iggy Iggy=( "/cgi-bin" "/tmp" "/test" "/html" "/icons" ) IggySubdomains=$(printf ",%s" "${Iggy[@]}") IggySubdomains=${IggySubdomains:1} echo $IggySubdomains exit 0 现在在这个结尾你得到/ cgi-bin,/ tmp,/ test,/ html,/图标这certificate了这个概念的作用,但现在需要进一步我需要使用find来searchBasePath并search只有一个级别的所有子目录,并排除列表中的子目录… 如果我手工input它将是: find /var/www/* \( -path '*/cgi-bin' -o -path '*/tmp' -o -path '*/test' -o -path '*/html' -o -path '*/icons' \) -prune -type d 我应该也许想循环到每个子目录,并做同样的事情…我希望你明白我的观点。 所以我试图做的似乎是可能的,但我有一个问题, printf“,%s”不喜欢我使用所有这些发现-path或-o选项。 […]

为什么`read -t`不能在RHEL的bash中超时?

为什么read -t在RHEL5或RHEL6上从pipe道读取时没有超时? 这里是我的例子,它不会在我的RHEL盒上超时从pipe道读取: tail -f logfile.log | grep 'something' | read -t 3 variable 如果我正确read -t 3应该在3秒后超时? 提前谢谢了。 克里斯 GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)

在unix / linux命令行(例如BASH)中定义函数

有时候,我有一个单独的内容,我为了一个特定的任务重复了很多次,但是可能永远不会以完全相同的forms再次使用。 它包含一个我从目录列表中粘贴的文件名。 之间的某处并创build一个bash脚本我想也许我可以在命令行创build一个单线程函数,如: numresults(){ ls "$1"/RealignerTargetCreator | wc -l } 我已经尝试了一些使用eval的方法,使用了numresults=function… ,但还没有find正确的语法,到目前为止还没有发现任何东西。 (所有的东西都是关于bash函数的教程)。