Articles of unix shell

find指向特定文件的所有sym链接

我知道ls -l会给你“链接的数量”,但是我正在寻找一个命令或命令的组合,它们会给我一个指向特定文件的所有符号链接的列表。

通过行号从文本文件中选取一行

在Unix shell中,如何从文本文件的行号中select一行? 说我想要在animals.txt中的第三行被写入stdout(蝙蝠蝙蝠)。 monkey monkey monkey cat cat cat bat bat bat horse horse horse 有没有一个标准的程序或简单的方法来做到这一点? (在这种情况下,文本文件没有足够的行来包含你要求的行号)

有没有简单的方法来插入数据/时间在一个日志文件的前面只是shell脚本?

假设我想在一夜之间监控Java进程的内存使用情况。 我可以做类似的事情 顶部| grep java> out.log 我会得到一大堆线的日志文件。 有没有简单的方法来获得插入每行前面的数据/时间?

如何在shell脚本中编码rdesktop密码参数?

我可以连接这个脚本从Linux到Windows RDP会话: #!/bin/bash /usr/bin/rdesktop -N -xm -u Administrator -p secret123 -d DOMAIN1 127.0.0.1:33891 (远程Windows服务器的rdp端口安全地通过本地主机上的端口33891) 但是这个脚本不能正确地传输密码: #!/bin/bash /usr/bin/rdesktop -N -xm -u Administrator -p #secret$123# -d DOMAIN2 127.0.0.1:33892 我该如何编码密码中的特殊字符? 我也想知道,如果我select/ bin / sh作为脚本的shell是否会有所作为。 编辑: 我发现这个作品: \ #secret \ $ 123 \#

如何检查文件存在

如何使用shell脚本确定文件是否存在? 即: #!/bin/sh if [ Does File Exist? ] then do this thing fi

当我按Ctrl + C时,如何杀死并等待后台进程在shell脚本中完成?

我试图设置一个shell脚本,以便它运行后台进程,当我按Ctrl + C shell脚本,它杀死了孩子,然后退出。 我设法得到的最好的是这个。 看起来在等待发生之前kill 0 -INT也会杀死脚本,所以shell脚本在孩子完成之前死亡。 关于如何让这个shell脚本发送INT后等待孩子死亡的任何想法? #!/bin/bash trap 'killall' INT killall() { echo **** Shutting down… **** kill 0 -INT wait # Why doesn't this wait?? echo DONE } process1 & process2 & process3 & cat # wait forever

有没有一种方法来防止后台任务覆盖shell中的命令行输出?

我希望能够在shell的后台运行任务,而不会将其输出到stdout或stderr覆盖底部的命令行。 通常我需要运行其他命令来与后台进程交互,并希望从同一个shell进行操作,而无需打开另一个terminal或使用多路复用器来拆分terminal,如屏幕。 理想情况下,会有一些设置,我只是不知道(我通常使用bash或ksh),但新的或不同的shell或脚本将罚款由我。 我接受任何build议,并感谢任何帮助,谢谢。 编辑:谢谢你所有的答案,但我的问题有点不清楚。 我仍然需要观察后端任务的输出,我只是希望它不会覆盖任何我可能在命令行input的新命令。 理想情况下,后台程序的输出将显示在shell的底部,而我可以自由地构build新的命令。 这与使用水平分割运行屏幕类似,其中底部窗口只有1-2行高,但使用屏幕对于我的目的有以下缺点: 我不需要/希望这些进程能够在我的注销之后继续存在 它需要额外的一两个命令来设置(即使在.screenrc文件中完成拆分和窗口大小) 我希望能够使用shell的作业控制命令,而无需在屏幕窗口之间切换(即作业,bg,fg,至less在bash的情况下kill%1) 再次感谢您的帮助,这是我的第一个问题,我已经被答案的速度和数量所吓倒了!

在PASE中编辑PATH

我在运行ZendServer6的IBMi上进行一些PHP开发。 我必须调用PHP的完整path/ usr / local / zendsvr6 / bin / php-cli。 是否有我可以在我的主目录中编辑的dotfile文件,或者我可以通过绿屏进行一些configuration更改,或者请求具有QSECOFR的人员将该path添加到我的启动path中?

Shell脚本中的“线程”

我有一个情况,我需要: 在脚本A中执行一些前导码设置 同时启动脚本B,C,D和E,使它们同时运行 当所有四个脚本都退出时,在脚本A中进行一些清理 目前,我已经在脚本B-D中运行标志,设置脚本是否仍在运行,并且在closures这四个脚本之后,脚本A坐在一个等待循环中检查这些标志文件。 有一个更好的方法吗? 后台是使用快照的AIX服务器的备份脚本 – 脚本A在我们希望备份的文件系统上使用JFS2快照(他们都需要同时完成,因为我们有相关的数据分布在不同的文件系统 – 这是无法更改的),脚本B – D从快照(三个rsyncs到另一个服务器和一个磁带备份)做这些文件系统的实际备份,然后脚本A删除所有文件副本(包括到磁带)完成。

sudo和sudo -i访问function

sudo和sudo -i有什么特权区别? 随着sudo它 $sudo echo "search foo.bar.baz" >> /etc/resolv.conf bash: /etc/resolv.conf: Permission denied …和sudo -i $sudo -i #echo "search foo.bar.baz" >> /etc/resolv.conf …有用。 特权是: drwxr-xr-x 166 root root 12288 2009-10-17 21:02 . -rw-r–r– 1 root root 42 2009-10-17 20:55 /etc/resolv.conf 这些命令有不同的行为,让我吃了一惊,是什么原因导致sudo版本失败?