所以,通常用CTRL + Z来暂停命令,然后你可以执行“bg 1”或者什么都不能恢复命令,而且工作的很好。 如果我开始一个命令发送一堆输出到标准输出,但是我不希望在“解除暂停”命令后再看到这些东西。 我可以做类似“bg 1> file.log”吗?
我有一个bash脚本来初始化iptables。 #!/bin/sh EXTIF="eth0" INTIF="eth1" INTIP="192.168.0.1/32" EXTIP=$(/sbin/ip addr show dev "$EXTIF" | perl -lne 'if(/inet (\S+)/){print$1;last}'); UNIVERSE="0.0.0.0/0" INTNET="192.168.0.1/24" /sbin/iptables-restore -v < iptables.rules 我有iptables.rules文件包含这样的东西: -A OUTPUT -o $EXTIF -s $UNIVERSE -d $INTNET -j REJECT 我如何将这些variables从bash脚本传递给iptables.rules或者评估它们?
我想写一个bash函数,我提供一个string,它将值“hi”赋给一个带有该string名称的variables。 我确信这个答案以前,但我不知道在手册中查找的关键字。 myfunc() { ## some magic with $1 ## please help me fill in here. } myfunc "myvar" echo $myvar > hi 回答之后。 多谢你们。 我写了一个函数来查找一个环境variables,并提示它,如果它不存在。 将不胜感激任何改进。 我相信这是有效的。 get_if_empty() { varname=$1 eval test -z $`echo ${varname}`; retcode=$? if [ "0" = "$retcode" ] then eval echo -n "${varname} value: " read `echo $1` # get […]
有没有一个Unix / Linux的实用程序,也许是内置的shell或外部命令,将限制放入一个bashvariables的字节数? 例如,我想确保STRING从curl (或其他)命令的输出中获得最多1000个字节(或者我select的一些任意数字): STRING=$(curl -s http://localhost:8010/status?) 让我编辑这个来清楚地说明我只是使用curl作为例子,但是我希望这个可以和任何命令一起工作。
在Bash脚本中,我想比较两个date,如果一个大于另一个,则执行一个任务。 我比较的两个date是: svn回购的最后更改date,我得到如下date信息: svn info svn://server.com/reponame -r 'HEAD' | grep 'Last Changed Date' 它给了我这样的东西: Last Changed Date: 2011-06-06 22:26:50 -0400 (Mon, 06 Jun 2011) 然后我find目录中最新的备份文件的date信息,如下所示: ls -lt –time-style="+%Y-%m-%d %H:%M:%S" | head -n 2 | tail -n 1 (我不知道有没有更好的方法来做到这一点,无论是头部和尾部以上) 这给了我这样的东西: -rw-r–r– 1 user1 user1 14 2011-06-09 07:52:50 svn.dump 接下来我要做的是从第一个输出中检索date,并将其与第二个输出date进行比较,如果其中一个大于另一个,我将执行一个svn转储。 什么是最合适的方式来做到这一点? 谢谢。
说我有以下bash脚本,发现所有error.logs给他们一个头,然后尾巴5下线.. #!/bin/bash for ERR in `find -name "error.log"`; do echo -e "—- LOG: $ERR —-"; tail -n 5 $ERR; done; 我想有这样的输出: —- LOG: foo/error.log —- [error ….] [error ….] —- LOG: foo/error.log —- [error ….] [error ….] —- LOG: foo/error.log —- [error ….] [error ….] tail的部分缩进了一些字符(例如4或任何制表符) 我将如何缩小输出的特定部分?
有没有一种方法可以从bash历史中删除重复的命令? 例如:我运行一次mv命令,然后运行ls命令n次。 我必须按向上箭头n次来获得mv命令。 我怎样才能保留一个ls命令而不是n 。
我有脚本,它必须通过文件从他们得到特定的线路。 文件名从variables获得,例如$ FILENAME,我们有这样的情况: cat / path / $ FILENAME 但是当FILENAME==*.some.file出现问题时。 文件*.some.file真的存在,但猫列出的所有文件的path*.some.file ( first.some.file second.some.file *.some.file fourth.some.file等)单引号防止包含variables。 任何想法如何cat (或grep )只有一个*.some.file ?
我有一个无限期运行的程序。 我通过发出以下命令来远程运行该程序: nohup mono program.exe & 虽然我可以closuresterminal并仍然运行program.exe,但是我希望nohup将命令提示符($)返回给我,以便在终止之前发出更多的命令。 我怎么去做这个? 干杯 回答(或解决方法) 做一个显式的标准输出和错误stream的redirect nohup mono program.exe >> nohup.out 2>&1 &
我正在编写一个小的bash脚本,以压缩格式将目录归档到另一个位置,当它们比特定的年龄还要大,并且遇到一些困难时。 这是我正在做的。 #!/bin/bash # Archives completed CDP episodes to compressed storage. Will eventually expand to put these off-site as well. InputDir="/home/wgant/stuff/" OutputDir="/home/wgant/archived/" find $InputDir$ -maxdepth 0 -mtime +1 -type d -exec echo $OutputDir${} \; 我在bash有一点绿色,所以我慢慢来。 对于第一步,我只想转储输出文件将被调用的列表。 但是,当我运行上述,文件名是正确的,但完整的path显然是连接在,我不想要的。 我该如何删除文件名? 很明显,一旦这个工作,我会打电话来创build压缩包,并删除有问题的目录。