Articles of shell

为什么unix读取时不读最后一行?

我的脚本 export IFS=":" cat hello | while read abcd; do echo $a,$b,$c,$d done 我的文件hello 1:1:1:1 2:2:2:2 3:3:3:3 我的输出 1,1,1,1 2,2,2,2 如果我在3:3:3:3之后input一个空行,那么输出就变成了 1,1,1,1 2,2,2,2 3,3,3,3 任何人都知道我可以如何解决这个问题,所以我不需要在你最后一个空行?

如何处理shell脚本中的错误/exception?

下面是我在bash中执行的脚本。 它工作正常。 fileexist=0 for i in $( ls /data/read-only/clv/daily/Finished-HADOOP_EXPORT_&processDate#.done); do mv /data/read-only/clv/daily/Finished-HADOOP_EXPORT_&processDate#.done /data/read-only/clv/daily/archieve-wip/ fileexist=1 done 问题陈述:- 在我上面的shell脚本中必须每天使用cron job运行,我没有任何error/exception handling mechanism 。 假设有什么不对的地方,我不知道发生了什么事情? 在执行上面的脚本之后,还有some other scripts that will be dependent on the data provided by above script ,所以我总是从其他依赖脚本数据的人那里投诉,发生了错误。 那么有什么办法可以get notified if anything wrong has happened在我的脚本中get notified if anything wrong has happened了get notified if anything wrong has […]

克伦使用反引号的错误

下面的命令行工作正常 /usr/bin/mysqldump -uUser -pPass Db_name > /var/www/db_backup/db.`date +%Y%m%d%H%M`.sql 但是当我尝试在cron中这样做时,我得到错误: bad ` sign errors in crontab file, can't install 我看到网上的其他人通过转义百分号来解决同样的问题,但是这并没有帮助,我用没有格式说明符的反引号在date内试过了,仍然有错误。 我也看到了用单引号或双引号括起来的date参数,但这也没有帮助。 当然,我可以把它写入一个脚本并执行,我想 – 但是有什么好玩的呢? 有任何想法吗? 我正在使用RHEL 5。

如何捕获任何用户在Unix / Linux中input的所有命令?

我想要捕获任何用户在Unix / Linux中input的所有命令。 有几个select像使用脚本命令或acct实用程序。 但是,他们的问题是他们从terminal到文件愚蠢的一切,或只是提供命令的摘要。 我正在寻找一个实用程序,它将为我提供所有用户使用命令参数键入的命令。 可能吗? 有没有其他的select,如挂钩到系统调用来获得这个?

如何通过shell脚本执行vim命令

嗨,我有一个情况 我写了一个shell脚本,我必须将input传递给vim 。 详细解释 在这里我已经写了我不能改变的shell脚本。 这是它的代码。 sudo vim /mnt/etc/{hosts,hostname,ports} 由于这个主机文件被打开,我们可以通过:n和类似的端口文件手动去主机名文件旁边。 但是我必须从我的.sh文件执行相同的操作。 另外我必须编辑端口文件,完成后我必须保存并完成:wq命令。 我该怎么做?

Tmux .tmux.conf无法正常加载

我是一个新的Tmux用户。 我有一个.tmux.conf文件与一堆设置,但是当我尝试源文件,它会引发一堆错误。 ############ # Settings # ############ # http://alexyu.se/content/2012/04/tmux-and-irssi-sitting-tree # Define default shell set -g default-command /bin/zsh # Start numbering at 1 set -g base-index 1 setw -g pane-base-index 1 # Allows for faster key repetition set -s escape-time 0 # Rather than constraining window size to the maximum size of any client # connected […]

在bash中使用前面的命令的输出

在Mathematica中,通过使用%可以重复使用前一个命令的输出。 是什么类似的可能为bash(或其他一些shell)? 例如,我运行了一个警告,但我想find所有的警告。 所以,我input make | grep "warning" 但是我无法看到make的输出。 我想input这样的东西,而不是: make % | grep "warning"

如何将git命令的输出存储在variables中?

我想要的是将一个git命令的输出(如git status)存储在shell脚本中的一个variables中。 当我说输出时,我正在讨论在terminal执行某个命令时返回的文本,例如:在我的repo之外做一个git状态: fatal: Not a git repository (or any of the parent directories): .git 我试过这个: var=$(git status) 但'var'没有存储任何东西。

在Linux中使用CLI only工具生成磁盘使用情况图表/图表

在这个问题中,有人要求在Linux中显示磁盘使用的方法。 我想进一步沿着这条路线走一步…如何从一个合理的答案的输出获取输出的shell脚本,并从中产生一个graphics/图表(输出在PNG文件或东西)? 这可能是一个普通的问题要求太多的代码,但我的猜测是,有人已经有一个oneliner铺设在某处…

HUP什么时候停止发送,我该怎么办?

早在我年轻的时候,Unix就是新事物,创build一个在注销时不会被杀的进程是一个挑战。 我们使用nohup命令来保护HUP信号中的持续进程。 如果我们不小心,当我们注销时,我们的进程就会被杀死,甚至closures我们启动它们的shell。 快进到今天,我发现我很惊讶,默认情况恰恰相反。 在Ubuntu和Red Hat系统上,我发现我几乎可以在后台放置任何进程,杀死父shell,注销,任何事情,只是继续下去。 我看到与Bash脚本,Python脚本和C程序相同的行为。 我从xterm或ssh会话中获得相同的行为。 例如,在xterm或ssh窗口中input: while [ 1 ]; do date; sleep 10; done > /tmp/out & 现在从另一个窗口运行 tail -f /tmp/out 看它每10秒打印一次date,然后用Ctrl-Dclosures原来的父shell。 仍在运行。 注销并返回。仍在运行。 发送一个HUP信号,它立即死亡。 我可以展示与Python脚本或C程序相同的行为。 睡或不要紧。 例如,这个丑陋的C程序行为相同: #include <stdio.h> void main() { while(1) { printf("*\n"); fflush(stdout); int i, j, k = 0; for(i=0; i < 10000; i++) { for(j=0; j […]