Articles of bash

在Linux中禁用历史logging

要在Linux环境中禁用历史logging,我已经执行了以下命令: export HISTFILESIZE=0 export HISTSIZE=0 unset HISTFILE 这样的命令组合是否足够,或者我还必须执行history -c或其他东西? 即使重新启动服务器,这种情况是否会使历史logging被禁用,或者在重新启动后需要执行这些命令?

用空格循环数组string

我试图通过包含其他数组的数组循环,这些数组由包含空格的string组成。 问题是,我似乎无法保留string中的间距。 如果我将IFS更改为\ n,或者将数组的所有元素都视为1项,如果我将IFS保持不变,则这些包含空格的string将被分成多个项目: #!/bin/sh low1=("AA QQ" "BB LL") low2=("CC" "DD") low3=("EE" "FF") high=(low1 low2 low3) for high_item in ${high[@]} do eval arrayz=\${$high_item[@]} #IFS=$'\n' for item in $arrayz do echo $item done done 输出: AA QQ BB 二 CC DD EE FF 正如你所看到的,“AA QQ”和“BB LL”的元素已经被拆分了。 如果我取消注释将IFS设置为\n的行,我会得到以下结果: AA QQ BB LL CC DD EE FF 现在“AA […]

如何在linux中使用objdump和bash函数在共享对象文件中find函数?

我有一个在Linux中的文件夹,其中包含几个共享对象文件(* .so)。 如何在linux中使用objdump和bash函数在共享对象文件中find函数? 例如,下面的例子在mylib.so中find我函数func1 : objdump -d mylib.so | grep func1 但是我想在包含共享对象文件的文件夹中findfunc1 。 我不知道bash语言和如何组合linuxterminal命令。

无法写入到命名pipe道

我试图写入一个命名的pipe道,用mkfifo 。 但是当我运行这个命令时,(ex) ls > myNamedPipe ,我不能再把命令input到bash中。 我仍然可以写字符,这是非常多的。

最快的方式来比较目录状态,或哈希为乐趣和利润

我们有一个PHP应用程序,并且认为让应用程序知道自从上次执行以来是否发生了更改。 主要是由于pipe理caching等,并且知道我们的应用程序有时被不记得清除caching的人访问。 (改变人是显而易见的答案,但唉,不是真的可以实现的) 我们已经提出了这个问题,这是我们设法实现的最快速度,对于一个典型的项目,开发人员平均运行0.08。 我们已经尝试了shasum,md5和crc32,这是最快的。 我们基本上是每个文件的内容,然后输出。 安全并不是一个问题,我们只是希望通过不同的校验和来检测文件系统的变化。 time (find application/ -path '*/.svn' -prune -o -type f -print0 | xargs -0 md5 | md5) 我想问题是,这可以进一步优化吗? (我意识到修剪svn将会花费一些代价,但是查找只花费最less的时间,所以它会非常小,我们正在testing这个工作副本atm)

找不到列表中的文件

我有一个file.lst文件的列表。 现在,我想查找目录dir所有文件,除了file.lst文件中的文件之外,它们都是7天以前的文件。 如何修改find​​命令或从结果中删除file.lst中的所有条目? 例: file.lst : a b c 执行: find -mtime +7 -print > found.lst found.lst : a d e 所以我期望的是: d e

如果目录存在,则使用Unix Bash Shell编程

所以我试图进入一个bash shell脚本中的if语句,但我认为我做错了什么,反正这里是我的示例代码。 #!/bin/bash read sd if [ -d "~/tmp/$sd" ]; then echo "That directory exists" else echo "That directory doesn't exists" fi ;; 我是否指向正确的目录? 我想要用户input一些东西,将被放入“SD”,如果该子目录存在,那么它会说,如果不是,那么它会去其他人说,它不存在。

惊喜! shell提示命令行开关

我注意到bash shell可以为你的命令build议命令行开关。 只需input你的命令,一个破折号( – )和types选项卡。 shell将显示您可用的开关。 例如,尝试: andy@andyx:~$ java – 并按下标签 – 惊喜! 问题是: 我如何与此function接口。 也就是说,如果我编写一个要从控制台运行的程序,那么告诉shell哪些交换机可用的API是什么?

插入字符在bash中的string?

我需要把string"125959"变成"12:59:59" 。 显然,string是正则expression式在这里不太好的时候。

在Bash脚本中的正则expression式

你好真棒社区, 当涉及正则expression式我是一个完整的涂料。 我推迟了学习..现在我的懒惰已经赶上了我。 我在做什么: 检查一个string是否符合这个格式: 10_06_13 即。 今天的date,或与“2digits_2digits_2digits”类似的date 我做了什么: regex='([0-9][0-9][_][0-9][0-9][_][0-9][0-9])' if [[ "$incoming_string" =~ $regex ]] then # Do awesome stuff here fi 这在一定程度上起作用。 但是,当传入的string等于011_100_131 …它仍然通过正则expression式检查。 如果有人能帮助我指出正确的方向,我将不胜感激。 干杯