Questions tagged «shell-script»

有关shell脚本,由shell解释的可执行文件(bash,zsh等)的问题。

3
在屏幕上运行脚本
我想在分离的屏幕上运行bash脚本。该脚本会多次调用一个程序,每次等待都花费很长时间。我的第一个想法是只打开一个屏幕,然后调用该脚本,但是似乎无法ctrl-a d在脚本运行时分离(by )。因此,我进行了一些研究,发现此指令将shebang替换为以下内容: #!/usr/bin/screen -d -m -S screenName /bin/bash 但这也不起作用(选项无法识别)。有什么建议么? PS这只是我现在想到的screen -dmS name ./script.sh,可能可以满足我的目的,但是我仍然很好奇如何将其合并到脚本中。谢谢。

2
连接文件的最快方法
我有10k +个文件,总计超过20GB,我需要将它们串联成一个文件。 有没有比这更快的方法 cat input_file* >> out ? 首选方式是bash命令,即使不是相当慢,Python也是可以接受的。
25 bash  shell-script  files  cat 


2
Bash脚本编写-循环直到返回值为0
我需要在脚本中卸载某些内容,但有时需要先卸载所有数据,然后再完成卸载,导致卸载失败。我正在寻找一种方法来进行“阻止”卸载,但是我什么也没找到。因此,我尝试编写一个脚本来循环,直到可以将其卸载为止,但是它不起作用。 while [ `sudo umount mount` ] do sleep 0.1 done rmdir mount 运行时输出: umount: /home/evantandersen/mount: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) rmdir: failed to remove `mount': Device or resource busy 它不应该循环直到返回值sudo umount mount0表示已成功卸载吗?

4
在find -exec调用中执行用户定义的函数
我在Solaris 10上,并且已经使用ksh(88),bash(3.00)和zsh(4.2.1)测试了以下内容。 以下代码不会产生任何结果: function foo { echo "Hello World" } find somedir -exec foo \; 这一发现不匹配多个文件(如更换-exec ...用-print),并从外面叫时功能完美的作品find调用。 这是该man find页面所说的-exec: -exec命令如果执行的命令返回a,则为true。 零值作为退出状态。结尾 命令必须由逃逸者标点 分号(;)。命令参数{}是 替换为当前路径名。如果 -exec的最后一个参数是{},而您 指定+而不是分号(;), 该命令被调用的次数更少, {}替换为路径名组。如果 该命令的任何调用都会返回一个 非零值作为退出状态,找到 返回非零退出状态。 我可能会逃脱做这样的事情: for f in $(find somedir); do foo done 但是我担心要处理字段分隔符问题。 是否可以从调用中调用Shell函数(在同一脚本中定义,让我们不用担心范围问题)find ... -exec ...? 我尝试了两者/usr/bin/find,/bin/find并得到了相同的结果。

4
使用回显打印彩色文本
我知道使用回声(例如红色)打印彩色文本的代码是:echo -e "\e[1;31m This is red text \e[0m" 并且我知道在此示例中,31是红色代码,其他颜色的数量是: Black 0;30 Dark Gray 1;30 Blue 0;34 Light Blue 1;34 Green 0;32 Light Green 1;32 Cyan 0;36 Light Cyan 1;36 Red 0;31 Light Red 1;31 Purple 0;35 Light Purple 1;35 Brown 0;33 Yellow 1;33 Light Gray 0;37 White 1;37 对于背景色,数字是40到47 我的问题是:\e和[和m(31岁以后)在这里到底是什么意思?我在手册页中读到\ …


5
如果一起测试和查找命令,如何使用bash的?
我有一个包含崩溃日志的目录,并且我想在基于查找命令的bash脚本中使用条件语句。 日志文件以以下格式存储: /var/log/crashes/app-2012-08-28.log /var/log/crashes/otherapp-2012-08-28.log 我希望if语句仅在存在最近5分钟内已修改的特定应用程序的崩溃日志时才返回true。find我将使用的命令是: find /var/log/crashes -name app-\*\.log -mmin -5 我不确定如何if正确地将其合并到语句中。我认为这可能有效: if [ test `find /var/log/crashes -name app-\*\.log -mmin -5` ] then service myapp restart fi 我不清楚一些地方: 我已经看过if标志,但是我不确定应该使用哪一个(如果有的话)。 我是否需要该test指令,还是应该直接针对find命令的结果进行处理,还是可以find... | wc -l用来获取行数? 回答这个问题不是100%必要的,而是test用于测试命令返回的返回码吗?而且它们在stdout/ 之外是看不见的stderr。我阅读了该man页面,但对于何时使用test以及如何对其进行调试仍然不清楚。



6
同时计算多个摘要(md5,sha256)?
在磁盘I / O和可用RAM成为瓶颈(而CPU时间不受限制)的假设下,是否存在可以同时计算多个消息摘要的工具? 我对计算大型文件(以GB为单位)的MD-5和SHA-256摘要(特别是并行)特别感兴趣。我试过了openssl dgst -sha256 -md5,但是它仅使用一种算法来计算哈希。 预期行为的伪代码: for each block: for each algorithm: hash_state[algorithm].update(block) for each algorithm: print algorithm, hash_state[algorithm].final_hash()


2
将grep输出重定向到/ dev / null有什么意义?
考虑这一行: ${libdir}/bin/licenseTool check "${SERIAL}" "${VERSION}" "${PRODUCT}" ${libdir} | grep '^200' >/dev/null 什么是寻找在输出模式如果结果的点是被扔掉? 而且,如果这样的行在bash脚本中最后显示,它的退出值是返回给脚本的调用者还是被忽略了?(我正在推测我们是否可以假设这仅是出于副作用而已,还是以某种方式将某些内容返回给调用者。)

2
bash的export -f的zsh等效项是什么
因此我开始使用zsh。我喜欢它。看起来很酷,很漂亮,并且当前的工作目录和实际的命令行位于不同的行是一个很好的事实,但是与此同时,我注意到这zsh可能会比慢一些bash,尤其是在将文本打印到屏幕。 我最喜欢的事情是,它zsh与我在中定义的所有功能“向后兼容” .bashrc。 虽然有一个抱怨。这些功能都可以完美地工作,但是我无法弄清楚导出系统是如何工作的。 我.bashrc导出了其中一些功能,以便可以在其他地方使用它们,例如在脚本和外部程序中使用export -f。 在zsh中,似乎甚至没有谈论导出。它是自动加载吗?这两件事是一样的吗?我很难解决这个问题。

8
如何在Bash中将文本追加到多个文本文件的开头和结尾?
我有一个充满文本文件的目录。我的目标是将文本添加到所有文本的开头和结尾。每个文件开头和结尾的文本都相同。 根据我从网上获得的代码,这是用于追加到文件开头的代码: echo -e 'var language = {\n$(cat $BASEDIR/Translations/Javascript/*.txt)' > $BASEDIR/Translations/Javascript/*.txt 这是用于附加到文件末尾的代码。目的是};在每个文件的末尾添加文本: echo "};" >> $BASEDIR/Translations/Javascript/*.txt 我从中提取的示例是针对单个文件执行的。我以为我会尝试使用通配符来处理多个文件*.txt。 我可能还会犯其他错误。无论如何,如何将文本附加到多个文件的开头和结尾?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.