Articles of shell

从github下载tarball而不curl

我有一个embedded式系统,我不能安装任何东西,唯一的工具,我可能用来获取的东西是wget。 事实certificate,你不能用wget做同样的事情,你可以用curl来做。 我也不能交叉编译这个系统,所以我需要求助于Python或shell脚本。 有一个名为Dulwich的git的纯Python实现实际上有一些我需要交叉编译的C代码…所以我甚至用这个方法来看看这个,FYI。 我需要的是从github仓库获取代码,显而易见的解决scheme是使用他们提供的tarball。 我通常复制链接从存储库页面下载zipbutton,并使用授权令牌,而不是用户名和密码。 它的工作原理很简单,就像这样: curl -L https://<token>@github.com/<org|user>/<repo>/archive/master.tar.gz | tar xz 事实certificate,wget是更尴尬,无论我尝试只是工作。

./a.out的redirect不捕获分段错误

我运行命令 ./a.out <in&> output.txt 我也想把错误放在output.txt 。 命令的exit状态是139,在terminal输出的是: 分割故障(核心转储) 和output.txt文件是空的。

为什么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'没有存储任何东西。