Tag: bash

BASH脚本:使用wget下载连续编号的文件

我有一个Web服务器,保存编号的Web应用程序的日志文件。 一个文件名的例子是: dbsclog01s001.log dbsclog01s002.log dbsclog01s003.log 最后3位是计数器,他们可以达到100。 我通常打开一个网页浏览器,浏览到如下文件: http://someaddress.com/logs/dbsclog01s001.log 并保存这些文件。 当你得到50个日志时,这当然会让人有些恼火。 我试图想出使用wget和传递的BASH脚本 http://someaddress.com/logs/dbsclog01s*.log 但是我的脚本有问题。 无论如何,任何人都有如何做到这一点的样本? 谢谢!

如何从bash执行.sql脚本

基本上,我需要从bash脚本设置数据库。 我有一个脚本db.sql完成这一切。 现在我怎么从bash运行这个脚本? 数据库系统是mysql

如何安排每个月的第一个星期天运行

我在RedHat上使用Bash。 我需要安排一个cron工作,在每个月的第一个星期天上午9:00运行。 我做了一些研究,发现在这个问题上没有简略的手段。 你知道一个最佳的方式吗?

如何获得当前git分支的名字到一个shell脚本中的variables?

我是新的shell脚本,并不能解决这个问题。 如果你不熟悉,命令git分支返回类似 * develop master ,星号标记当前签出的分支。 当我在terminal中运行以下内容时: git branch | grep "*" 我得到: * develop 如预期。 但是,当我跑步 test=$(git branch | grep "*") 要么 test=`git branch | grep "*"` 接着 echo $test ,结果只是目录中的文件列表。 我们如何使test =“* develop”的价值? 然后下一步(一旦我们把“*开发”成一个名为test的variables)就是获取子string。 这只是以下? currentBranch=${test:2} 我正在玩这个子string函数,我得到了很多“不好的replace”错误,不知道为什么。

如果在文件末尾没有换行符,如何使用'read`(Bash)读取文件的最后一行?

比方说,我有以下的Bash脚本: while read SCRIPT_SOURCE_LINE; do echo "$SCRIPT_SOURCE_LINE" done 我注意到,对于最后没有换行符的文件,这将有效地跳过最后一行。 我search了一个解决scheme, 并发现这一点 : 当读取到达文件结束而不是行结束时,读取数据并将其分配给variables,但是它以非零状态退出。 如果你的循环是“读,做,做,做” 因此,不是直接testing读出口状态,而是testing一个标志,并使读命令在循环体内设置该标志。 这样,无论读取退出状态如何,整个循环体都会运行,因为读取只是循环中的命令列表之一,而不是决定循环是否可以运行的决定性因素。 DONE=false until $DONE ;do read || DONE=true # process $REPLY here done < /path/to/file.in 我怎样才能重写这个解决scheme,使其行为与我之前的while循环完全相同,即不对input文件的位置进行硬编码?

有没有任何语言编译为Bash?

我既爱又恨编写Bash。 我喜欢这样简化操作文件和处理stream程(我同意这个stream行的问题 ,在这方面比Python,Ruby等更好),但我讨厌的语法,特别是在条件,循环等。 (这是主观的,但我觉得这两个令人困惑和烦人。例如,当阅读时,无功,但无论写作时;写入静静地失败,如果有空格左右;;如果使用正则expression式双括号;有时双分号和单分号其他人等) 作为一个编译为JS的CoffeeScript的狂热粉丝,我一直在想:是否有任何语言具有像Python / Ruby / CoffeeScript这样的语言的美学/语法,但是它们是作为Bash而不是其他运行时? 例如,我希望能够使用更简单的语法来编写大部分Bash: $AGGREGATE_FILENAME = 'allfiles.txt' if not exists $AGGREGATE_FILENAME touch $AGGREGATE_FILENAME for $file in files/* cat $file >> $AGGREGATE_FILENAME switch $1 case 'test' run-tests echo 'Tests finished!' case 'deploy' echo 'Packaging…' mv foo bar/ deploy-bar 这是一个超级人为的例子,语法是一个稻草人(主要来自CoffeeScript,但保留了一stream命令的基本Bash概念,与variables分开,以及松散的打字)。 无论如何,只是一个问题和思考的食物。 我希望能够写出比Bash更好的脚本。 =)谢谢!

防止重复被保存在bash历史中

我试图阻止bash保存重复的命令到我的历史logging。 这是我得到的: shopt -s histappend export HISTIGNORE='&:ls:cd ~:cd ..:[bf]g:exit:h:history' export HISTCONTROL=erasedups export PROMPT_COMMAND='history -a' 这工作正常,而我login和.bash_history在内存中。 例如: $ history 1 vi .bashrc 2 vi .alias 3 cd /cygdrive 4 cd ~jplemme 5 vi .bashrc 6 vi .alias $ vi .bashrc $ history 1 vi .alias 2 cd /cygdrive 3 cd ~jplemme 4 vi .alias 5 vi […]

如何让Perl和Python打印正在执行的程序的每一行?

我知道bash -x script.sh将在实际执行之前执行脚本打印每一行。 如何使Perl和Python解释器做同样的事情?

为什么在非交互式Bash shell中的别名不起作用

我正在尝试在非交互式bash shell中使用别名。 我在~/.bashrc定义了别名,并且设置了variablesBASH_ENV=~/startUpFile 。 startUpFile的内容是source〜 source ~/.bashrc 。 我可以看到,当我执行alias命令时,我的别名被识别。 但是,如果我尝试使用~/.bashrc定义的别名,Bash将无法识别它。 它给了我未知的命令错误。 使用TCSHshell很容易做到这一点,因为总是读取~/.cshrc文件。 任何想法,我可以做一个Bash shell这个?

replacesh中的源代码

我需要设置环境variables,通常我们这样做 source script.sh 但是现在,我在启动过程中将其自动化,并且它看起来像默认情况下使用sh shell启动的根目录。 我如何在shinput这个脚本?