shell - Shell命令


shell - Shell命令

shell即Unix Shell,在类Unix系统提供与操作系统交互的一系列命令。很多程序可以用来执行shell命令,例如终端模拟器。

CloudControl Pro 9也内置了终端用于执行npm, node等命令,而本模块创建的Shell对象或者exec函数执行的shell命令,在非打包应用的情况下均支持nodenpm命令,除非修改了PATH环境变量。

本模块主要提供了创建新的Shell对象的函数createShell用于持续地执行多条shell命令并监听结果,以及exec函数一次性执行一条shell命令并获取结果。

目录

接口

类型别名

函数

类型别名

ExitResult

Ƭ ExitResult: string | number


PrivilegeType

Ƭ PrivilegeType: "root" | "adb"


StandardOutputType

Ƭ StandardOutputType: "stderr" | "stdout"

函数

InputText

InputText(text): Promise<void>

使用默认的shell示例执行input text命令,模拟输入文字。

默认的shell示例在首次使用Tap, Swipe, SendKey, InputText等操作时会使用默认Shell选项getDefaultShellOptions自动创建。若您想让这些操作使用adb权限或特定Shell选项,应当在执行这些函数前使用setDefaultShellOptions设置Shell选项。

这些操作函数以大写字母开头,表示其通常需要root或adb权限,否则只能在本应用内生效。

示例

"nodejs";
const { InputText } = require("shell");
async function main() {
    await InputText("Hello, World");
}
main();

参数

名称 类型 描述
text string 要输入的文字,只支持ASCII字符,不支持中文

返回值

Promise<void>


SendKey

SendKey(key): Promise<void>

使用默认的shell示例执行input keyevent key命令,模拟发送按键key。

默认的shell示例在首次使用Tap, Swipe, SendKey, InputText等操作时会使用默认Shell选项getDefaultShellOptions自动创建。若您想让这些操作使用adb权限或特定Shell选项,应当在执行这些函数前使用setDefaultShellOptions设置Shell选项。

这些操作函数以大写字母开头,表示其通常需要root或adb权限,否则只能在本应用内生效。

示例

"nodejs";
const { SendKey, setDefaultShellOptions } = require("shell");

async function main() {
    setDefaultShellOptions({
       adb: true,
    });
    await SendKey("HOME");
}
main();

参数

名称 类型 描述
key string | number 按键名或按钮码,比如"HOME"或3表示Home按键,参见KeyEventopen in new window

返回值

Promise<void>


Swipe

Swipe(x1, y1, x2, y2, duration?): Promise<void>

使用默认的shell示例执行input swipe x1 y1 x2 y2 duration命令,模拟从位置(x1, y1)滑动到位置(x2, y2)。

默认的shell示例在首次使用Tap, Swipe, SendKey, InputText等操作时会使用默认Shell选项getDefaultShellOptions自动创建。若您想让这些操作使用adb权限或特定Shell选项,应当在执行这些函数前使用setDefaultShellOptions设置Shell选项。

这些操作函数以大写字母开头,表示其通常需要root或adb权限,否则只能在本应用内生效。

示例

"nodejs";
const { Swipe } = require("shell");
async function main() {
    await Swipe(800, 100, 800, 1000);
}
main();

参数

名称 类型 描述
x1 number -
y1 number -
x2 number -
y2 number -
duration? number 滑动时间,单位毫秒

返回值

Promise<void>


Tap

Tap(x, y): Promise<void>

使用默认的shell示例执行input tab x y命令,模拟点击位置(x, y)。

默认的shell示例在首次使用Tap, Swipe, SendKey, InputText等操作时会使用默认Shell选项getDefaultShellOptions自动创建。若您想让这些操作使用adb权限或特定Shell选项,应当在执行这些函数前使用setDefaultShellOptions设置Shell选项。

这些操作函数以大写字母开头,表示其通常需要root或adb权限,否则只能在本应用内生效。

示例

"nodejs";
const { Tap } = require("shell");
async function main() {
    await Tap(100, 100);
}
main();

参数

名称 类型
x number
y number

返回值

Promise<void>


checkAccess

checkAccess(type): Promise<boolean>

检查是否有特定的特权,比如是否有root权限。

示例

"nodejs";

const { checkAccess } = require("shell");
async function main() {
   const hasRoot = await checkAccess("root");
   const hasAdb = await checkAccess("adb");
   console.log(`hasRoot: ${hasRoot}, hasAdb: ${hasAdb}`);
}
main();

参数

名称 类型 描述
type PrivilegeType 特权类型,比如"root"或"adb"

返回值

Promise<boolean>

是否有该类型的特权的Promise


createShell

createShell(options?): Shell

创建一个Shell实例。

我们通常用exec函数来一次性执行单条命令并获取结果,但如果有多条命令需要执行,用Shell对象的效率更高。这是因为无需每次执行都创建新的shell进程。

通过Shell对象我们也可监听到Shell的输出。

示例

"nodejs";
const { createShell } = require("shell");
const shell = createShell();
shell.on("line", (line) => {
    console.log(line);
});
shell.exec("ls");

const id = $autojs.keepRunning();
shell.exit().then(() => $autojs.cancelKeepRunning(id));

参数

名称 类型 描述
options? ShellOptions Shell选项,将覆盖默认的Shell选项

返回值

Shell

Shell实例


exec

exec(cmd, options?): Promise<ExecutionResult>

创建一个新的shell进程,并执行命令,异步返回结果。

示例

"nodejs";
const { exec, isRootAvailable } = require("shell");
async function main() {
    console.log(await exec("npm"));
    if (await isRootAvailable()) {
       console.log(await exec("ls /data", { root: true }));
    }
}
main();

参数

名称 类型 描述
cmd string 要执行的命令
options? ShellOptions Shell选项,将覆盖默认的Shell选项

返回值

Promise<ExecutionResult>

执行结果的Promise


getDefaultShellOptions

getDefaultShellOptions(): ShellOptions

获取默认的Shell选项。

参见

setDefaultShellOptions

返回值

ShellOptions


isRootAvailable

isRootAvailable(): Promise<boolean>

检查设备是否已Root。需要注意的是,设备已Root不代表本应用已获得Root权限。

示例

"nodejs";

const { isRootAvailable } = require("shell");
async function main() {
   const rootAvailable = await isRootAvailable();
   console.log(`rootAvailable: ${rootAvailable}`);
}
main();

返回值

Promise<boolean>


setDefaultShellOptions

setDefaultShellOptions(options): void

设置默认的Shell选项。这些选项包含是否使用Root权限、adb权限、环境变量等,会在创建新的Shell或RootAutomator实例时使用。

参数

名称 类型 描述
options ShellOptions Shell选项

返回值

void