Articles of shell

shell脚本中的`set -o errtrace`会执行什么?

set -o errtrace shell脚本中的上述语句将执行什么? 特别是-o命令?

如何从目录中列出最近删除的文件?

我甚至不确定这是否容易,但我想列出最近从目录中删除的文件,如果可能的话recursion。 我正在寻找一种解决scheme,不需要创build包含原始目录结构的快照的临时文件,因为写入访问可能不总是可用的。 编辑:如果可以通过将快照存储在shellvariables而不是文件中来实现相同的结果,那将解决我的问题。 就像是: find /some/directory -type f -mmin -10 -deletedFilesOnly 编辑:操作系统:我使用的是Ubuntu 14.04 LTS,但是命令很可能运行在各种Linux机器或Docker容器中,其中大部分或全部应该使用ext4 ,而且我最有可能无法进行修改。

检查“make”的输出,如果失败则退出bash脚本

然而,我不仅仅是一场暴躁的比赛。 我已经写了一个bash脚本来执行我的cmake,make和c ++可执行文件。 #! /bin/bash cmake . make ./pcl_visualizer_demo <– This is my executable 这工作很好,除非我的代码编译失败,执行旧的可执行文件,并留下一团糟。 我希望把make的输出放到只有在make成功的时候运行可执行文件的if语句中。 我已经尝试了很多bash从其他post在这里stackoverflow的东西。 有些问题似乎是make的输出不是string,例如: OUTPUT = make echo $OUTPUT 得到: [100%] Built target pcl_visualizer_demo 但是不能与: if [`expr match "$OUTPUT" '[100%] -eq 5]; then ./pcl_visulizer_demo; fi 更何况我认为这条线可能有不止一个错误。 我也试过: if [diff <(echo "$OUTPUT") <(echo '[100%] Built target pcl_visualizer_demo' -n]; then ./pcl_visulizer_demo; fi 这又可能是我没有正确实施。 […]

在jenkinspipe道上运行bash命令

我想在jenkinspipe道中运行bash命令,而不是在groovy脚本中使用shell命令: 我已经尝试使用“#!/ bin / bash”: stage('Setting the variables values') { steps { sh ''' #!/bin/bash echo "hello world" ''' } } 也尝试使用“bash”而不是“sh” stage('Setting the variables values') { steps { bash ''' #!/bin/bash echo "hello world" ''' } } 显然,我的命令比'回声你好世界'复杂。

linux shell标题大小写

我正在弄一个shell脚本,并有一个像这样的variables: something-that-is-hyphenated 。 我需要在脚本的各个方面使用它: something-that-is-hyphenated , somethingthatishyphenated something-that-is-hyphenated , somethingthatishyphenated something-that-is-hyphenated 我已经设法将其更改为通过剥离-使用sed "s/-//g"来sed "s/-//g" 。 我相信有一个更简单的方法,而且,也需要知道如何获得骆驼套装版本。 编辑:从@Michał的答案派生的工作function function hyphenToCamel { tr '-' '\n' | awk '{printf "%s%s", toupper(substr($0,1,1)), substr($0,2)}' } CAMEL=$(echo something-that-is-hyphenated | hyphenToCamel) echo $CAMEL 编辑:最后,感谢@glenn sed一个class轮 echo a-hyphenated-string | sed -E "s/(^|-)([az])/\u\2/g"

bash:从频率表中获取百分比

我已经做了一个小的bash脚本,以获得在一个文件的某一列的项目的频率。 输出会是这样的 A 30 B 25 C 20 D 15 E 10 我在脚本中使用的命令是这样的 cut -f $1 $2| sort | uniq -c | sort -r -k1,1 -n | awk '{printf "%-20s %-15d\n", $2,$1}' 我怎样才能修改它以显示每种情况下的相对百分比。 所以它会是这样的 A 30 30% B 25 25% C 20 20% D 15 15% E 10 10%

为什么shell在后台进程中忽略SIGINT和SIGQUIT?

如果我在脚本或-c片段中背景进程,后台进程将忽略SIGINT和SIGQUIT: 例: $ alias ps='ps -o pid,ppid,pgrp,sid,stat,tty,ignored,blocked,caught,wchan,min_flt,pmem,args –forest' $ sh -c 'sleep 1000 & sleep 1000 | sleep 1000' & \ sleep 0.01; ps |grep -v -e ps -e grep PID PPID PGRP SID STAT TT IGNORED BLOCKED CAUGHT WCHAN MINFL %MEM COMMAND 6197 2143 6197 6197 Ss pts/28 0000000000380004 0000000000010000 000000004b817efb wait 10039 0.0 […]

bash:迭代通过索引select的JSON数组的成员

我使用jq来parsingJSON文件,将每个JSON数组抽取到一个shell数组中。 我目前的代码如下所示: for ((i = 0; i < ${#nvars[@]}; i++)); do v1=($(cat $INPUT | jq '."config"[i]."var1"[]')) echo $v1 done 错误信息: error: i is not defined 我也换了 v1=($(cat $INPUT | jq '."config"[i]."var1"[]')) 同 v1=($(cat $INPUT | jq '."config"[$i]."var1"[]')) 还是行不通。 任何想法? 任何帮助表示赞赏! 编辑:示例input数据 { "config-vars":[ { "var1":["v1","v2"], "var2":"" }, { "var1":["v3",""], "var2":"v4" } ] }

Linux shell的音译脚本

我有多个.txt文件包含字母表中的文本; 我想把文字音译成另外一个字母; 字母1的一些字符与字母2的字符是1:1(即a变成e ),而另一些字符是1:2(即x变成ch )。 我想用Linux shell的一个简单的脚本做这个。 与TR或SED我可以转换1:1字符: sed -fy/abcdefghijklmnopqrstuvwxyz/nopqrstuvwxyzabcdefghijklm/ a会变成n , b会变成o等等(我认为是凯撒的密码) 但是我怎样才能处理1:2的字符?

使用tee命令将输出redirect到不存在的目录中的文件

我正在尝试使用tee命令将输出redirect到一个文件,并且我想要在尚未创build的目录中创build该文件。 date | tee new_dir/new_file 当new_dir不在那里时,tee命令失败 tee:new_dir / new_file:没有这样的文件或目录 如果在运行tee命令之前创buildnew_dir,那么它可以正常工作,但由于某种原因,我不想手动创buildnew_dir,是否可以使用tee命令创buildnew_dir?