Articles of shell

如何在PHP中处理shell输出

我正在尝试编写一些PHP报告function的shell脚本。 所以我开始使用diskusage报告 我想要以下格式 drive path ————total-size ——–free-space 没有其他的 我的脚本是 $output = shell_exec('df -h -T'); echo "<pre>$output</pre>"; 其输出如下所示 Filesystem Type Size Used Avail Use% Mounted on /dev/sda6 ext3 92G 6.6G 81G 8% / none devtmpfs 3.9G 216K 3.9G 1% /dev none tmpfs 4.0G 176K 4.0G 1% /dev/shm none tmpfs 4.0G 1.1M 4.0G 1% /var/run none tmpfs […]

相对shebang:如何编写一个运行它的可移植解释器的可执行脚本

比方说,我们有一个程序/软件包,它有自己的解释器和一组脚本,应该在执行时调用它(使用shebang)。 假设我们想保持它的可移植性,即使只是复制到不同的位置(不同的机器),它仍然可以运行,而不需要调用setup / install或者修改环境(PATH)。 系统解释器不应该混入这些脚本。 给定的约束条件不包括像绝对path这样的已知方法: #!/usr/bin/python 并在环境中search #!/usr/bin/env python 单独的发射器看起来很丑,不能接受。 我发现了很好的总结了shebang局限性,这些局限性描述了为什么shebang中的相对path是无用的,解释者不能有多于一个参数: http : //www.in-ulm.de/~mascheck/various/shebang/ 而且我也用“多线社帮”技巧find了大多数语言的实用解决scheme 。 它允许写这样的脚本: #!/bin/sh "exec" "`dirname $0`/python2.7" "$0" "$@" print copyright 但是有时候,我们不希望用这种方法来扩展/修补依赖于shebang的现有脚本和绝对path的解释器。 例如,Python的setup.py支持–executable选项,它基本上允许为它生成的脚本指定shebang内容: python setup.py build –executable=/opt/local/bin/python 所以,特别是,可以指定–executable=为了使所需的种类的可移植性? 或换句话说,因为我想保持这个问题不是太具体到Python … 这个问题 如何写一个指定解释器的shebang,其path与正在执行的脚本的位置有关?

从PL / SQL调用shell脚本,但shell作为网格用户而不是oracle执行

我正在尝试使用Runtime.getRuntime().exe执行Oracle数据库内的shell脚本。 运行在Red Hat 5.5上的Oracle 11.2.0.4 EE CREATE OR REPLACE procedure pr_executa_host(p_cmd varchar2) as language java name 'Util.RunThis(java.lang.String)'; / public class Util extends Object { public static int RunThis(java.lang.String args) { Runtime rt = Runtime.getRuntime(); int rc = -1; try { Process p = rt.exec(args); int bufSize = 4096; BufferedInputStream bis = new BufferedInputStream(p.getInputStream(), bufSize); int […]

如何获取NIC卡的逻辑名称,给出与其相关的IP地址?

我正在研究一个shell脚本,它需要知道与给定ip关联的逻辑名(eth0,eth1等)。 我正在使用的当前过程是使用filterparsingifconfig的输出并获取与给定IP关联的NIC卡。 我想知道是否存在一个简单的方法或直接stream水线Linux命令来获得上述细节?

计算input文件中string的出现次数

有一个shell脚本应该处理传入的文本文件。 此文本文件包含分割成多行的string,每个string都存在多次。 shell脚本需要读取这个文本文件并输出每个string的string和计数。 考虑这个文本文件是: 蒂姆 蒂姆 标记 标记 艾伦 艾伦 艾伦 输出应该是这样的: 蒂姆出现2次 马克出现2次 艾伦出现3次 现在,我可以打印string的发生,但重复的string出现的次数,即“Tim出现2次”打印两次。 我试图用NULLreplace一个string,只要我计算它的发生,但由于某种原因,sed不工作,因为也许我不是在正确的地方(或以正确的方式)调用它, #!/bin/bash INPUT_FILE="$1" declare -a LIST_CHARS if [ $# -ne 1 ] then echo "Usage: $0 <file_name>" exit 1 fi if [ ! -f $INPUT_FILE ] then echo "$INPUT_FILE does not exists. Please specify correct file name" exit 2 […]

在cURL命令中使用环境variables – Unix

我的问题很简单。 我想在cURL命令中使用环境variables,类似于: curl -k -X POST -H 'Content-Type: application/json' -d '{"username":"$USERNAME","password":"$PASSWORD"}' 当我运行命令$ USERNAME作为“$ USERNAME”string传递给命令而不是variables的值。 有没有办法摆脱这种情况? 谢谢。

使用SIGKILL杀死父进程和subprocess

我正在写一个shell脚本,在其中我有父进程,它有由sleep &命令创build的subprocess。 现在我想杀死父进程,这样subprocess也会被杀死。 我可以用下面的命令来做到这一点: trap "kill $$" SIGINT trap 'kill -HUP 0' EXIT trap 'kill $(jobs -p)' EXIT 这些命令正在使用kill [parent_process_ID]命令,但是如果我使用kill -9 [parent_process_ID]那么只有父进程将被终止。 请进一步指导我实现此function,以便当我用任何命令杀死父进程时,subprocess也应该被终止。

如何更改Linux shell脚本中的文件扩展名?

我发现了一些类似的情况,但是这是我写的唯一一个除了运行命令之外什么也不做的shell脚本,所以我很努力地将这些例子应用到我自己的情况中,持有<3 我只是试图从MP4批量翻录audio。 这个脚本的作品: for f in *.mp4; ffmpeg -i "$f" -f mp3 -ab 192000 -vn "mp3s/$f.mp3" done 但是这些文件都以.mp4.mp3结尾。 我怎样才能摆脱mp4的一部分?

如何从PHP执行交互式命令?

我需要从PHP脚本(使用浏览器,而不是命令行)在我的桌面机器(localhost)中执行kdiff3命令。 我已经授予执行脚本的用户www-data使用visudo执行kdiff3的权限。 事实上,如果我作为万维网数据login,我可以执行它没有问题( sudo kdiff3 … ,它被configuration为根本不要求密码)。 问题是当我尝试从PHP脚本执行这个命令。 我试过这个: $output = shell_exec("sudo kdiff3 -m $file.def.old $file $file.def -o $file"); 没有任何反应(输出为NULL)。 如果我尝试一个非交互式命令,像ls它的工作: $output = shell_exec("ls"); 发生了什么? 为什么不能执行交互式命令?

shell脚本中$ @和$ *有什么区别?

在我的script.sh : aa=$@ bb=$* echo $aa echo $bb 运行时: source script.sh abcdefg 我得到: abcdefg abcdefg $@和$*什么区别?