node.js 里面执行shell命令如何escape string

今天碰到一个问题,用node.js  执行shell命令时,会碰到有空格的目录和文件名。

按照常识应该要escape,当然可以自己写escape,但是要想处理复杂的escape,不是那么容易的。那么系统有没有提供呢?

google后发现可以使用

child_process.execFile(file, [args], [options], [callback])

中的args数组来帮自己escape。

上代码:

      var execFile = require('child_process').execFile;
      var cmd = "avconvert";
      var args = ['-p', 'PresetAppleM4A','-s',oldname,'-o',newname];

      execFile(cmd,args,
        function (error, stdout, stderr) {
          console.log('stdout: ' + stdout);
          console.log('stderr: ' + stderr);
          if (error !== null) {
            console.log('exec('+cmd+') error: ' + error);
          }
        });

上面代码片段中 oldname 和 newname 有可能是包含空格,标点的文件名。

通过传递到arg数组,系统会帮助你escape。

时间: 2024-10-01 17:37:16

node.js 里面执行shell命令如何escape string的相关文章

node.js执行shell命令

nodejs功能强大且多样,不只是可以实现 服务器端 与 客户端 的实时通讯,另一个功能是用来执行shell命令 首先,引入子进程模块 var process = require('child_process'); 然后,调用该模块暴露出来的方法exec process.exec('shutdown -h now',function (error, stdout, stderr) { if (error !== null) { console.log('exec error: ' + error

批量执行shell命令

虽然目前都实现了自动化如puppet saltstack在环境中的应用,但工作中不可避免的要自己写一些简单的批量执行shell命令的脚本. python paramiko模块是目前使用得较为顺手的模块,执行命令时基本无需要转换,直接将shell命令扔进去执行就OK 简单示例,10个线程同时执行ssh或scp动作,未设置timeout时间,如执行长时间无反应会导致脚本执行问题: #!/usr/bin/python # _*_ coding: utf-8 _*_ import paramiko im

使用sh库执行shell命令

python中执行shell命令 之前执行shell命令多是通过os.system(shell命令)的方式来执行,比较麻烦. 了解到sh是一个比subprocess好的库,能够执行shell命令 1.查看ip: [[email protected] myblog]# ifconfigeth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.31.253.193 netmask 255.255.240.0 broadcas

Python之路35-subprocess模块和Python3中常用执行shell命令方法

import subprocess #执行命令,返回命令执行状态 , 0 or 非0 retcode = subprocess.call(["free","-m"])    #返回值可判断执行是否正确,命令执行结果直接返回到屏幕 #执行命令,如果命令结果为0,就正常返回,否则抛异常 result = subprocess.check_call(["ls","-l"]) #执行命令,并返回结果,注意是返回结果,不是打印,下例结果

vim中执行shell命令

1):!command 不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容 例如 :!ls -l 特别的可以运行:!bash来启动一个bash shell并执行命令,不需要退出vim 2):r !command 将shell命令command的结果插入到当前行的下一行 例如 :r !date,读取时间并插入到当前行的下一行.

java执行shell命令,chmod 777 xxx,改变权限无效的解决办法。

在java程序中执行shell命令,改变文件的权限,可以在命令行中执行 chmod 777 <span style="font-family: Arial, Helvetica, sans-serif;">/data/misc/123.sh"</span> 来改变权限,但是在java代码中执行这个命令时使用 Runtime.getRuntime().exec("chmod 777 /data/misc/123.sh"): 无效,使用

在 Ruby 中执行 Shell 命令的 6 种方法

我们时常会与操作系统交互或在 Ruby 中执行 Shell 命令.Ruby为我们提供了完成该任务的诸多方法. Exec Kernel#exec 通过执行给定的命令来替换当前进程,例如: $ irb >> exec 'echo "hello $HOSTNAME"' hello codefun $ 注意 exec 利用 echo 命令替换了 irb 进程,然后退出.因为 Ruby 实际上结束了该方法,所以只能有限使用.该方法的缺点是,你无法从 Ruby 脚本中知道命令是执行成功

vim 执行shell命令技巧

:!cmd不退出vim 执行命令 cmd:r !cmd不退出vim执行命令cmd,并将cmd的输出内容插入当前文本中.:shell切换到shell里(此时并没有退出vim,可以理解成vim转入后台),你可以在shell中做任何操作,退出shell(比如用exit)后,会切换回原来的vim中vim 执行shell命令技巧,布布扣,bubuko.com

python执行shell命令

python执行shell命令 #!/usr/bin/python2.7 #coding=utf-8 import shlex import datetime import subprocess import time def execute_command(cmdstring, cwd=None, timeout=None, shell=False): # 执行一个SHELL命令 ## 封装了subprocess的Popen方法, 支持超时判断,支持读取stdout和stderr ## 参数: