shell - Shell命令 
更新: 2025/7/20 字数: 0 字 时长: 0 分钟
shell即Unix Shell,在类Unix系统提供与操作系统交互的一系列命令。很多程序可以用来执行shell命令,例如终端模拟器。
Bot.js Pro 9也内置了终端用于执行npm, node等命令,而本模块创建的Shell对象或者exec函数执行的shell命令,在非打包应用的情况下均支持node和npm命令,除非修改了PATH环境变量。
本模块主要提供了创建新的Shell对象的函数createShell用于持续地执行多条shell命令并监听结果,以及exec函数一次性执行一条shell命令并获取结果。
目录 
接口 
类型别名 
函数 
- InputText
 - SendKey
 - Swipe
 - Tap
 - checkAccess
 - createShell
 - exec
 - getDefaultShellOptions
 - isRootAvailable
 - setDefaultShellOptions
 
类型别名 
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 | 
返回值
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实例
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选项。
参见
返回值
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
