Articles of bash

Tee的pipe道标准输出会影响其文件的输出

我遇到了答案如何发送一个进程的标准输出到多个进程使用Unix(或Windows)(最好是未命名的)pipe道? 当我注意到一个奇怪的问题时,正在玩弄grep 。 以下工作如我所料: $ while [ 1 ]; do sleep 1 ; echo tick; done | tee >(grep -o ti) >(grep -o ic) >(grep tick) >/dev/null ic ti tick ic tick ti ^C 所有三个grep命令都应用于​​循环的输出。 但是,如果我将tee的输出传输到grep(而不是将其redirect到/ dev / null),则文件上的grep停止工作: $ while [ 1 ]; do sleep 1 ; echo tick; done | tee >(grep -o […]

.bashrc代码在首次login时每天执行一次

有没有办法让我的.bashrc文件中的特定代码只在第一个特定的一天的第一次login时执行? 我已经知道使用命令replace“$(date +%u)”会给我一个从1到7的数字,对应于一周的每一天(1是星期一)。 但是,我不希望此代码执行整个一天,每一个后续login。 任何提示将不胜感激。 提前致谢!

linux bash:在一个case中对-c和 – 作出反应

我正在尝试编写一个脚本,作为参数与-cinput作出反应。 它应该以大写打印下一个参数。 第二个是input – [0-9],您可以input0到9之间的任意一个数字。然后打印下一个参数,就像input的数字一样多。 这是我的代码: function print_info(){ echo mijn CPU-type is: $CPU echo mijn Totaal beschikbare RAM is: $RAMTOTAAL kB echo mijn IP-adres is $IP_ADDR en mijn Default Gateway is: $GW echo momenteel is er $RAMUSEDPROCENT % van mijn geheugen in gebruik } while : do param=1 params=$# CPU=$(cat /proc/cpuinfo | grep model | […]

用gnuplot进行绘图的Bash脚本

嗨! 我有编写bash脚本运行50次我的脚本生成数据文件,然后将其绘图文件的问题。 我这样写了,但是不起作用 #!/bin/bash for i in {1..50} do ./ampl ampltst1 # generates different res.txt file each time /usr/bin/gnuplot <<\__EOF set xrange [-2:2] set yrange [-2:2] set term png set output "image-${i}.png" plot "res.txt" u 1:2 w lines, "res.txt" u 3:4 w lines, "res.txt" u 5:6 w li$ pause -1 __EOF done 请帮我解决这个脚本!

bash在Linux上删除具有特定文件扩展名的文件

我想删除文件夹及其子文件夹中除了名为“* Original.fal”之外的所有具有特定扩展名的文件 – “ .fal ”。 问题是我想删除具有相同扩展名的其他文件: * Original.fal.ds * Original.fal.ds.erg * Original.fal.ds.erg.neu 还有其他的“ .fal ”我也想删除,那里面没有“Original”。 名称随时都有变化,所以我不能删除特定的名称。 * Original.fal不会改变。 我只能到这里: $find /disk_2/people/z183464/DOE-Wellen -name "*.fal" \! -name "*Original.fal" -type f -exec echo rm {} \; 如果该命令只能在已经被调用(执行)的文件夹(及其子文件夹)中删除, 当我运行代码时,它给了我一个错误: / disk_2 / people / z183464 / DOE-Wellen:是一个目录

背景上的Bash脚本:如何杀死subprocess

那么,我基本上试图让一个bash脚本永远运行一个节点脚本。 我做了下面的bash脚本: #!/斌/庆典 而真实的; 做 cd / myscope / 取消连接nohup.out 节点myscript.js 睡6 完成&echo $! > pid 我期待它运行时,它启动与给定的脚本节点,检查节点是否退出,如果睡眠6秒,如果重新打开节点。 另外,我期待它在后台运行,并将它的pid(bash pid)写在名为“pid”的文件中。 上面解释的所有东西都按预期工作,显然,但是我也期待在bash脚本的pid被杀的时候,节点脚本将会停止运行,我不知道为什么在我的脑海中有意义,但是当它去练习,这是行不通的。 bash脚本确实被杀死了,但是节点脚本一直在运行,这吓跑了我。 我已经在terminal上testing过了,不要把bash脚本发送到后台,然后进入ctrl + c,这两个脚本都会被终止。 我显然很想理解后台进程的工作方式。 为了上帝的缘故,任何人都可以帮助我吗?

如何将file_name.csv.gz文件解压缩为.csv

我想将* .csv.gz格式的文件解压缩为.csv格式。 当我尝试使用这些命令$ gzip -d file.gz和$ gzip -f file.gz ,它显示为 gzip: IQ.gz: No such file or directory gzip: Envoy.gz: No such file or directory gzip: compressed data not read from a terminal. Use -f to force decompression. For help, type: gzip -h 请帮我解决这个问题。 提前致谢。

Linux:正则expression式执行之间的延迟? /读取目录中的每个文件?

我有一个有数百个文件的Linux机器上的目录。 他们是相对较短的文件,可以很容易地在一两个命令行中显示和阅读。 有没有办法以自动的方式将所有文件打印到命令行中,类似于input“cat *”,但每次打印之间有一个或两个秒的延迟,以便我可以读取每个文件? 我曾尝试制作一个bash脚本: cat $1 sleep 2 然后调用“bash script.sh *”,但它只打印其中一个文件,然后停止。 有什么build议么?

Bash脚本退出没有错误

我有一个bash脚本,我从DVD上运行。 此脚本将DVD中的多卷tar文件复制到本地计算机。 在复制的部分path中,脚本提示用户插入第二张DVD,此时复制剩余的文件。 该脚本存在于第一张DVD上,但不在第二张。 该脚本只是在复制最后一个文件之后停止,而不是在启动tar多卷提取操作和后续处理之前停止。 没有报告的错误或消息。 我试着用'-x'运行bash,但是没有什么可疑的 – 甚至没有退出语句。 更不幸的是,这种行为是不一致的。 有时脚本会停止,但有些时候会继续没有问题。 我在脚本上运行strace。 在复制操作结束之后,我看到这样的结果: read(255, "\0\0\0\0\0\0\0\0\0\0"…, 5007) = 1302 read(255, "", 5007) = 0 exit_group(0) = ? 我知道bash将脚本文件读入内存并从那里执行它,但它有可能在某个时刻重新读取脚本文件并失败(因为它不再存在)? tar文件非常大,从脚本开始到复制最后一个文件(从第二张DVD)开始,大约需要10-15分钟。

每次unix“发现”都是一样的吗?

如果我运行find (Ubuntu,具体),我可以期望它每次都给我相同的结果顺序吗? (当然,假设实际文件没有改变。) 换句话说,如果我跑步 $ find foo 它给了我 bar.txt foo.txt 我能期待它永远不会给我 foo.txt bar.txt ?