Articles of shell

在Linux中使用CLI only工具生成磁盘使用情况图表/图表

在这个问题中,有人要求在Linux中显示磁盘使用的方法。 我想进一步沿着这条路线走一步…如何从一个合理的答案的输出获取输出的shell脚本,并从中产生一个graphics/图表(输出在PNG文件或东西)? 这可能是一个普通的问题要求太多的代码,但我的猜测是,有人已经有一个oneliner铺设在某处…

HUP什么时候停止发送,我该怎么办?

早在我年轻的时候,Unix就是新事物,创build一个在注销时不会被杀的进程是一个挑战。 我们使用nohup命令来保护HUP信号中的持续进程。 如果我们不小心,当我们注销时,我们的进程就会被杀死,甚至closures我们启动它们的shell。 快进到今天,我发现我很惊讶,默认情况恰恰相反。 在Ubuntu和Red Hat系统上,我发现我几乎可以在后台放置任何进程,杀死父shell,注销,任何事情,只是继续下去。 我看到与Bash脚本,Python脚本和C程序相同的行为。 我从xterm或ssh会话中获得相同的行为。 例如,在xterm或ssh窗口中input: while [ 1 ]; do date; sleep 10; done > /tmp/out & 现在从另一个窗口运行 tail -f /tmp/out 看它每10秒打印一次date,然后用Ctrl-Dclosures原来的父shell。 仍在运行。 注销并返回。仍在运行。 发送一个HUP信号,它立即死亡。 我可以展示与Python脚本或C程序相同的行为。 睡或不要紧。 例如,这个丑陋的C程序行为相同: #include <stdio.h> void main() { while(1) { printf("*\n"); fflush(stdout); int i, j, k = 0; for(i=0; i < 10000; i++) { for(j=0; j […]

如何检查文件是否只包含在Linux shell中的零?

如何在Linux中使用shell命令检查大文件是否只包含零字节( '\0' )? 我可以写一个小程序,但这似乎是一个矫枉过正。

在shell脚本中获取规范时区名称

有没有从Linux shell脚本获取规范时区名称的方法? 例如,如果我configuration的时区是PDT,那么我想获得“America / Los_Angeles”。 我知道我可以从符号连接/ etc / localtime得到,如果它被configuration,但因为它可能没有configuration在所有的服务器我不能依靠那个。 另一方面,我可以使用命令date +%Z得到短时区名称,但是我仍然需要规范名称。 有没有办法获得当前时区的规范名称,或者转换使用date +%Z命令获取的时区,即使没有设置符号链接/ etc / localtime?

如何检查sed命令是否replace了一些string?

这个命令用旧的stringreplace旧的string(如果存在的话)。 sed "s/$OLD/$NEW/g" "$source_filename" > $dest_filename 我如何检查replace是否发生? (或者发生了多less次?)

列出目录1中但不是目录2中的文件,反之亦然?

嘿,我开始bash shell脚本,我试图做一个脚本分配,当你进入两个目录,它会检查它们是否存在,并根据错误信息显示,如果两个目录存在,它会列出之间的差异当前目录。 $ cd dir-1 $ myshellscript . dir-2 (comparing . aka dir-1 against dir-2) 输出: Files that are in . but not in dir-2 -rw——- 1 ddddd users 1 2011-03-1 01:26 123123123 Files that are in dir-2 but not in . -rw——- 1 ddddd users 1 2011-03-1 01:26 zzzzzzzzzzzz 我到目前为止似乎没有检测到目录是否存在,也没有列出差异: dir-1=$1 dir-2=$2 if [ […]

符号链接中的环境variables

我们可以在符号链接中使用$ HOME或其他环境variables吗? 我知道使用相对path../../.config但有时是很多../ :)像~/.config东西会更舒适,或使用$ HOME。 编辑: habbie回答psmears的评论是答案,对不起,我的问题是不完整的。 虽然(如其他答案所示),当创build符号链接时(与任何shell命令一样),您可以使用环境variables,但在符号链接本身中实际上不能包含环境variables(或“〜”)引用

在Linux中重新启动文件更改过程

有一个简单的解决scheme(使用常见的shell utils,通过由大多数分布提供的util,或一些简单的python / …脚本)来重新启动一个进程时,一些文件的变化? 只要简单地称呼一下,就好像watch -cmd "./the_process -arg" deps/* 。 更新:一个简单的shell脚本和build议的inotify-tools(nice!)一起适合我的需求(适用于不带参数的命令): #!/bin/sh while true; do $@ & PID=$! inotifywait $1 kill $PID done

在bash中打开默认的文本编辑器?

我正在写一个shell脚本,遇到了一个问题。 有没有办法使用用户指定的文本编辑器打开文件?

shell脚本工作正常,没有shebang线? 为什么?

我正在写一个简单的shell脚本,发现我的shell脚本不需要shebang行 #!/bin/sh 如果我给予我的脚本执行权限并执行使用./myscript.sh 。 它运行良好。 我正在使用bash shell, /bin/sh实际上是指向bash 。 lrwxrwxrwx 1 root root /bin/sh -> bash 我知道shebang行用于告诉shell哪个解释器用于脚本的其余部分。 如果我错过了perl中的shebang行,给予执行权限并运行./myscript.pl ,它不起作用。 这里究竟发生了什么? 如果我用./ ,什么时候真的需要?