Articles of bash

Bash – 如何在将stdoutredirect到文件时添加时间戳

我有一个程序(服务器),我正在寻找一种方式(脚本),将redirect(或更好地复制)其所有的stdout文件,并为每个条目添加时间戳。 我已经做了一些研究,最远的我可以得到感谢如何添加时间戳STDERRredirect 。 它redirectstdout但添加的时间戳是脚本结束的时间: #!/bin/bash ./server | ./predate.sh > log.txt predate.sh代码: #!/bin/bash while read line ; do echo "$(date): ${line}" done 我是一个Linux初学者,我显然错过了一些非常重要的东西,因为看起来服务器输出在程序退出后被刷新(没有redirect它工作正常)。 另外,如果我尝试使用predate.sh在给定的例子中提到的线程,它完美的作品。 我知道这很容易添加一个时间戳到主程序,但我宁愿避免编辑它的代码。 编辑:唯一的工作答案在评论

bash pid和$$之间的区别

我是一个bash脚本初学者,我有一个“功课”去做。 我想到了大部分的东西,但有一部分说,我必须呼应父bash的pid和我将要运行的两个子壳的pid。 所以我看了网上,发现这个(Linux文档项目) : #!/bin/bash4 echo "\$\$ outside of subshell = $$" # 9602 echo "\$BASH_SUBSHELL outside of subshell = $BASH_SUBSHELL" # 0 echo "\$BASHPID outside of subshell = $BASHPID" # 9602 echo ( echo "\$\$ inside of subshell = $$" # 9602 echo "\$BASH_SUBSHELL inside of subshell = $BASH_SUBSHELL" # 1 echo "\$BASHPID inside […]

为什么ps o / p列出pipe道后的grep进程?

当我做 $ ps -ef | grep cron 我明白了 root 1036 1 0 Jul28 ? 00:00:00 cron abc 21025 14334 0 19:15 pts/2 00:00:00 grep –color=auto cron 我的问题是为什么我看到第二行。 从我的理解, ps列出的进程和pipe道列表grep 。 grep甚至没有开始运行,而ps正在列出进程,那么如何将grep进程列在o / p? 相关第二个问题: 当我做 $ ps -ef | grep [c]ron 我只得到 root 1036 1 0 Jul28 ? 00:00:00 cron 第一次和第二次grep执行有什么区别?

如何将通配符parameter passing给bash文件

我试图编写一个bash脚本,允许用户使用通配符传递目录path。 例如, bash show_files.sh * 在这个目录下执行 drw-r–r– 2 root root 4.0K Sep 18 11:33 dir_a -rw-r–r– 1 root root 223 Sep 18 11:33 file_b.txt -rw-rw-r– 1 root root 106 Oct 18 15:48 file_c.sql 会输出: dir_a file_b.txt file_c.sql 它现在的方式是输出: dir_a show_files.sh内容: #!/bin/bash dirs="$1" for dir in $dirs do echo $dir done

串行端口环回/双工testing,在Bash或C? (过程替代)

我有一个串行设备设置为回送(这意味着它只会回显它收到的任何字符),我想测量有效的吞吐速度。 为此,我希望可以利用time time bash -c '…' 哪里“ … ”将是我可以运行的一些命令。 现在,第一个问题是我想用2000000 bps的设备,所以我不能使用ttylog或屏幕 (他们似乎只能达到115200 bps)。 但是,使用/dev/ttyUSB0作为文件(使用文件redirect和cat )似乎工作正常: # initialize serial port stty 2000000 -ixon icanon </dev/ttyUSB0 # check settings stty -a -F /dev/ttyUSB0 # in one terminal – read from serial port while (true) do cat -A /dev/ttyUSB0 ; done # in other terminal – write to […]

如何创build一个dynamicvariables并为其赋值?

我正在尝试创build一个dynamicvariables并将其分配给它 #!/bin/bash . . active_id=$p_val flag_$active_id=100 但是我这样做是错误的,有什么帮助?

创build新文件,但如果文件名已存在于bash中,则添加数字

我发现了类似的问题,但不是在Linux / Bash中 我想我的脚本创build一个给定名称的文件(通过用户input),但如果文件名已经存在,最后添加数字。 例: $ create somefile Created "somefile.ext" $ create somefile Created "somefile-2.ext" 谢谢阅读

如何从awk中的variables中裁减空白?

假设$ 2是我的variables。 我试过从 awk -F\, '{print $2 ":"}' 至 awk -F\, '{print gsub(/[ \t]+$/, "", $2) ":"}' 但是从印刷到印刷什么都没有。

在bash脚本中使用curl并curl:(3)在URL中find非法字符

所以我有一个非常简单的bash脚本,它正在卷起一个头部的auth服务器。 标题url被写入一个var,然后在下一个curl调用中使用。 当在第一次curl调用中使用var集合时,我得到“curl:(3)在URL中find非法字符”。 我能够回显变种和所有看起来不错,我甚至能够重置变种(在我的例子下面),它的工作原理。 Bash脚本 URL=$(curl -i -X GET -H "X-Auth-User: MyUserna,e" -H "X-Auth-Key: MyAPIKey" "https://urlToAuthServer.tld/auth/v1.0/" | grep "X-Storage-Url:" | awk '{print $2}') curl -X GET -H "X-Auth-Token: MyAuthTok" "${URL}/folder/myfile.txt" -o ./myfile.txt 运行上面的例子时,我得到: curl: (3) Illegal characters found in URL URL var看起来像这样(没有非法字符) https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534 当我在terminal做这个工作时, $ URL = $(curl -i -X GET -H“X-Auth-User:MyUserna,e”-H“X-Auth -Key:MyAPIKey”“ https://urlToAuthServer.tld/auth/v1.0/ “| […]

从Linux中的数字获取天花板整数(BASH)

我将如何做这样的事情: ceiling(N/500) N代表一个数字。 但在一个Linux Bash脚本