Options
显示所有项
  • 仅显示公有项
  • 显示保护/公有项
  • 显示所有项
Menu

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

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

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

索引

类型别名

ExitResult

ExitResult: string | number

Privilege类型

PrivilegeType: "root" | "adb"

StandardOutput类型

StandardOutputType: "stderr" | "stdout"

函数

InputText

  • InputText(text: string): 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: number | string): 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: number | string

      按键名或按钮码,比如"HOME"或3表示Home按键,参见KeyEvent

    返回 Promise<void>

Swipe

  • Swipe(x1: number, y1: number, x2: number, y2: number, duration?: number): 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: number, y: number): 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

  • 检查是否有特定的特权,比如是否有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();
    

    参数

    返回 Promise<boolean>

    是否有该类型的特权的Promise

createShell

  • 创建一个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

  • 创建一个新的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

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

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

    参数

    返回 void