如何在Vi(m)中执行我正在编辑的文件并在分割窗口中获取输出(如在SciTE中)? 当然,我可以这样执行: :!scriptname 但避免编写脚本名称,以及如何在分割窗口而不是在屏幕底部输出输出是否可行呢?
今天我得到了一个命令,但是似乎并没有工作。 这是命令: find /home/me/download/ -type f -name "*.rm" -exec ffmpeg -i {} -sameq {}.mp3 && rm {}\; shell返回 find: missing argument to `-exec' 我基本上试图做的是通过一个目录recursion(如果它有其他目录),并运行ffmpeg命令的.rm文件types,并将其转换为.mp3文件types。 完成此操作后,请删除刚刚转换的.rm文件。 我感谢任何帮助。
任何人都可以用简单的例子来解释exec命令在shell脚本中的用法吗?
我试图设置一个PHP触发器文件,将引发一个后台进程。 (看这个问题 ) 我正在Windows Wampserver环境中执行此操作。 所以例如我有trigger.php运行exec函数,调用我的backgroundProcess.php来parsing和执行。 然而,问题是我的trigger.php文件正在等待exec()命令在停止之前完成运行backgroundProcess.php 。 后台进程运行大约20-30秒,并且trigger.php一直在等待,直到backgroundProcess.php完成。 这是有道理的吗? 这里是运行exec()命令的trigger.php文件 exec('C:\wamp\bin\php\php'.phpversion().'\php.exe -f C:\path\to\backgroundProcess.php > C:\wamp\bin\php\php'.phpversion().'\dev\null &'); 基本上,我想trigger.php只是触发backgroundProcess而不是等待它完成。 编辑 用下面的命令解决了问题: $WshShell = new COM("WScript.Shell"); $oExec = $WshShell->Run("C:\wamp\bin\php\phpVERSIONNUMBER\php-win.exe -f C:/wamp/www/path/to/backgroundProcess.php", 0, false);
我以为这会打印3,但它打印1: def f(): a = 1 exec("a = 3") print(a)
我有一个脚本,如: #!/bin/bash exec /usr/bin/some_binary > /tmp/my.log 2>&1 问题是some_binary将所有的日志logging发送到标准输出,而缓冲使得我只能看到几行输出。 这是令人讨厌的东西卡住了,我需要看看最后一行说什么。 有没有办法使stdout无缓冲之前,我会执行这将影响some_binary,所以它有更多有用的日志logging? (包装脚本只是在exec之前设置一些环境variables,所以perl或python中的解决scheme也是可行的。)
我尝试着spawn一个rm -rf node_modules然后是npm install (在windows 7上; n x命令由一个透明安装的CygWin提供,所有n个 x命令都可以在命令行上parsing)。 我最初使用exec ,但想要捕捉stdout / stderr信息,所以我想我会使用spawn ,并重写代码使用它。 然而,这打破了一切。 rm命令改写成这样: var spawn = require("child_process").spawn, child = spawn("rm", ["-rf", "node_modules"]); child.stdout.on('data', function (data) { console.log(data.toString()); }); child.stderr.on('data', function (data) { console.log(data.toString()); }); child.on('error', function() { console.log(arguments); }); 但是,运行这将产生以下错误: rm: unknown option — , Try `rm –help' for more information. npm命令改写成这样: […]
我有以下代码: pid_t pid = fork(); if (pid == -1) { // … } else if (pid == 0) { stdin = someopenfile; stdout = someotherfile; stderr = somethirdopenfile; execvp(args[0], args); // handle error … } else { // … } 问题是, execvp()调用的input/输出仍然是控制台,而不是文件。 显然我做错了什么,做这个的正确方法是什么?
我有一个应用程序应该使用一些shell命令将文件从SD卡复制到/ system / media /。 这将需要根,我正在根植设备上进行testing。 我正在使用运行时执行shell命令,但它不起作用。 这是我的运行时间 public void RunAsRoot{String[] commands = {"sysrw", "rm /data/local/bootanimation.zip", "sysro"};{ Process p = Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(p.getOutputStream()); for (String tmpCmd : commands) { os.writeBytes(tmpCmd+"\n"); } os.writeBytes("exit\n"); os.flush(); } 但我的logcat只显示其中两个没有被拒绝 07-30 03:14:11.112: WARN/su(3593): request rejected (10047->0 /system/bin/sh) 07-30 03:14:11.132: DEBUG/su(3592): 10047 com.bba.stormdroid executing 0 /system/bin/sh using shell […]
Java应用程序是否可以以独立于平台的方式使用其名称(而不是其位置)在单独的进程中加载? 我知道你可以通过执行一个程序… Process process = Runtime.getRuntime().exec( COMMAND ); …这个方法的主要问题是这样的调用是特定于平台的。 理想情况下,我会把一个方法包装成一些简单的… EXECUTE.application( CLASS_TO_BE_EXECUTED ); …并作为CLASS_TO_BE_EXECUTED应用程序类的完全限定名称。