首页/新闻资讯/正文详情

Multipass 实例命令别名(alias)完整使用指南:创建、列表、运行与删除

发布时间:2026/9/26 2:52:49 来源:云帆数科 栏目:资讯中心
Multipass 实例命令别名(alias)完整使用指南:创建、列表、运行与删除
虚拟化开发工具云原生【免费下载链接】multipassMultipass orchestrates virtual Ubuntu instances项目地址https://gitcode.com/gh_mirrors/mu/multipass点击查看免费下载Multipass 允许用户为运行在虚拟 Ubuntu 实例中的命令定义持久化别名alias从而把冗长的multipass exec instance -- command调用简化为multipass alias甚至直接输入alias。本文基于 use-instance-command-aliases.md 的官方指南结合仓库源码与参考文档完整讲解别名的创建、上下文context切换、工作目录映射、列表查看、两种运行方式以及删除操作并深入说明其底层实现原理。读完本文你将掌握别名机制的完整知识能够在日常开发中高效复用实例内的命令。前置知识别名机制概览别名alias本质上是一份存储在 Multipass 客户端本地、按上下文context组织的记录每条别名记录绑定一个实例、一条命令以及一个工作目录策略同时在系统中生成一个可执行的包装脚本alias script从而让别名可以像本地命令一样被直接调用。从源码角度看别名的核心数据结构定义在 include/multipass/alias_definition.h 中struct AliasDefinition { std::string instance; // 目标实例名例如 crazy-cat std::string command; // 在实例中要运行的命令例如 ls std::string working_directory; // 工作目录策略map 或 default }; typedef typename std::unordered_mapstd::string, AliasDefinition AliasContext;其中AliasContext就是上下文它把别名名称映射到AliasDefinition。同一个名称可以在不同上下文里指向不同的定义——这正是在不同实例中定义同名别名这一场景的底层支撑。该结构还定义了基于 boost::json 的序列化/反序列化tag_invoke说明别名记录会持久化保存并在客户端启动时被读取。创建别名基本语法创建别名使用alias命令语法为multipass alias instance:command [name]instance:command别名定义格式为实例名:命令name可选别名的名称。若省略别名名称默认取command的名称对/path/to/cmd这类带路径的命令取文件名部分。例如为实例crazy-cat中的ls命令创建名为lscc的别名multipass alias crazy-cat:ls lscc执行后lscc被定义为在实例crazy-cat上运行ls。若省略名称直接写multipass alias crazy-cat:ls则别名名称默认为ls。参数校验逻辑可从源码 src/client/cli/cmd/alias.cpp 中看到细节定义字符串必须以:分隔且冒号两侧都非空否则分别报错No command given或No instance name given别名名称必须是合法文件名QFileInfo(...).fileName()校验若别名与当前上下文中已有别名同名或与 Multipass 既有命令名冲突parser-findCommand均会报错拒绝创建。此外创建前还会通过 gRPC 调用 daemon 的info方法确认目标实例存在若实例不存在则提示Instance xxx does not exist。完整选项列表参见 docs/reference/command-line-interface/alias.md。工作目录映射Working directory mapping默认情况下如果你从宿主机上已挂载到该实例的目录中调用别名实例内的工作目录会自动切换到对应的挂载目录。若想避免这一行为创建别名时加--no-map-working-directory短选项-n即可例如multipass alias crazy-cat:pwd pwdcc --no-map-working-directory这个开关在源码中直接决定了AliasDefinition::working_directory的取值src/client/cli/cmd/alias.cppauto working_directory parser-isSet(no_alias_dir_mapping_option) ? default : map;即带-n时取default在实例默认工作目录运行通常是/home/ubuntu不带时取map尝试把宿主机调用目录映射到实例中对应的挂载目录。别名上下文Alias contexts上下文是别名的集合。默认只有一个名为default的上下文大多数场景下直接使用它即可。上下文的主要价值在于可以在不同实例中定义同名别名而不互相冲突。使用prefer命令切换当前上下文该命令自 Multipass 1.11.0 起引入详见 docs/reference/command-line-interface/prefer.mdmultipass prefer secondary若secondary上下文尚不存在prefer会自动创建它。切换到新上下文后用通常的方式定义别名即可名称可以与已有别名相同例如multipass alias cozy-canary:ls lscc此后lscc在default上下文指向crazy-cat:ls在secondary上下文指向cozy-canary:ls。alias、unalias以及运行别名时都作用于当前上下文。需要特别注意的是prefer切换的是客户端本地保存的上下文状态别名记录本身仍存储在客户端不会修改实例内部任何内容。别名创建时的平台脚本生成创建别名不只是记录一条数据它还会在宿主机上生成可执行包装脚本。核心逻辑在 src/client/cli/cmd/create_alias.cpp 中先把别名加入本地字典aliases.add_alias调用平台层MP_PLATFORM.create_alias_script(active_context . alias_name, definition)生成上下文限定脚本例如default.lscc若别名名称在全局范围内唯一再生成不带上下文前缀的脚本例如lscc若脚本生成失败抛出std::runtime_error会回滚刚才加入的别名记录并清理已生成的脚本保证状态一致。这意味着一个别名通常对应两个包装脚本alias和context.alias分别支持multipass alias、multipass context.alias以及不加multipass前缀的直接调用。脚本实际被写入平台相关的别名脚本目录例如 Linux 下常见为~/snap/multipass/common/bin见下文运行别名。列出已有别名使用multipass aliases命令查看当前已定义的所有别名multipass aliases输出类似Alias Instance Command Context Working directory lscc crazy-cat ls default map pwdcc crazy-cat pwd default default lscc cozy-canary ls secondary* map解读要点当前上下文以*号标记上例中为secondaryWorking directory列说明别名将在宿主机哪个目录上运行default别名在实例的默认工作目录通常为/home/ubuntu中运行map若用户调用别名时所在的宿主机目录已挂载到实例则别名在实例中对应的挂载目录下运行。仅当创建别名时带有--no-map-working-directory时该列才为default。aliases命令还支持--format选项可选择table默认、json、csv、yaml四种输出格式见 src/client/cli/cmd/aliases.cpp。其中Working directory的语义说明直接来自该命令的选项帮助文本与官方文档表述一致。运行别名别名有两种运行方式multipass aliasalias直接将别名当成本地命令方式一multipass aliasmultipass lscc这条命令相当于在实例cozy-canary当前上下文指向的实例中执行ls并返回宿主命令行行为类似一次exec。由于我们在default与secondary上下文中都定义了lscc运行的是当前上下文中的那一个。若想运行当前上下文之外的别名使用全限定名fully-qualified alias namemultipass default.lscc别名同样支持参数但需要先用--分隔选项multipass lscc -- -l multipass default.lscc -- -l--之后的内容会原样作为参数传给实例内的命令。方式二alias直接以别名作为命令这种方式分两步把 Multipass 别名脚本目录加入系统 PATH直接运行别名。第一步把别名脚本目录加入 PATH首次创建别名时Multipass 会提示需要把别名脚本目录加入 shell 配置提示内容形如Youll need to add this to your shell configuration (.bashrc, .zshrc or so) for aliases to work without prefixing with multipass: PATH$PATH:/home/user/snap/multipass/common/bin不同平台的配置方法如下。Linux大多数 Linux 发行版默认 shell 为bash编辑用户主目录下的.bashrcnano ~/.bashrc在文件末尾追加export PATH$PATH:/home/user/snap/multipass/common/bin注意请务必替换为 Multipass 命令实际输出的目录并重启 shell 使配置生效。若你的 shell 是zsh而非bash修改的文件是.zshrc流程完全相同。macOSmacOS 默认 shell 为zsh编辑用户主目录下的.zshrc追加export PATH$PATH:/Users/username/Library/Application Support/multipass/bin同样记得替换为实际目录并重启 shell。Windows在 PowerShell 中修改系统环境变量 PATH将别名目录永久加入$old_path (Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment -Name PATH).path $new_path $old_path;C:\Users\user\AppData\Local\Multipass\bin Set-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment -Name PATH -Value $new_path然后重启终端目录即被永久加入 PATH。从源码看这条提示与各平台的脚本目录由平台层实现Platform::get_alias_scripts_folder()返回脚本目录Platform::alias_path_message()生成上面的提示文本见 src/platform/platform_unix.cpp、src/platform/platform_linux.cpp、src/platform/platform_osx.cpp、src/platform/platform_win.cpp。create_alias仅在首次创建别名别名字典从空变为非空且目录尚未出现在 PATH 中时才打印该提示src/client/cli/cmd/create_alias.cpp。第二步直接运行别名PATH 配置完成后即可直接以命令形式运行别名无需再输入multipasslscc或使用全限定名default.lscc由于脚本目录已在 PATH 中这两条命令分别等价于multipass lscc与multipass default.lscc。与multipass alias方式不同直接调用时参数不需要--分隔lscc -l其原因是包装脚本会把命令行参数原样转发给 Multipass再由 Multipass 转交给实例内的命令。删除别名使用unalias命令删除别名参考文档见 docs/reference/command-line-interface/unalias.md。删除lsccmultipass unalias lscc或使用全限定名multipass unalias default.lsccunalias支持一次传入多个名称一次性删除多个别名multipass unalias lscc pwdcc也可以使用--all选项一次删除当前上下文中的所有别名multipass unalias --all从 src/client/cli/cmd/unalias.cpp 的解析逻辑看--all与指定别名参数二者不可同时使用check_for_name_and_all_option_conflict逐个删除时每个名称都会先解析为上下文 别名二元组get_context_and_alias解析失败的名称会被汇总报错为Nonexistent alias: xxx。执行删除时除了从字典移除记录还会调用MP_PLATFORM.remove_alias_script清理对应的包装脚本——先删context.alias若该名称在其他上下文已不存在exists_alias返回 false再删不带前缀的alias脚本避免误删仍被其他上下文引用的共享脚本。随实例删除而清理别名会随实例被删除并 purge 而一并清除。也就是说multipass delete crazy-cat --purge会同时删除为crazy-cat定义的lscc与pwdcc等别名参见 src/client/cli/cmd/delete.cpp 与 src/client/cli/cmd/purge.cpp 中的别名清理逻辑。注意仅delete而不purge时实例处于可恢复状态别名是否同步清理以实际删除流程为准。小结与最佳实践命名建议为别名取有含义的名称便于在multipass aliases输出中快速识别避免与 Multipass 内置命令同名如list、start创建时会被直接拒绝。上下文使用场景当需要在多个实例中定义同名别名时例如多个实例都定义lscc用multipass prefer context切换上下文即可互不干扰日常单实例使用默认的default上下文即可。工作目录策略依赖调用目录与实例内挂载目录的映射如配合mount使用时保持默认map只关心实例内固定目录时创建别名加--no-map-working-directory更可预期。直接调用体验把别名脚本目录加入 PATH 后别名就像本地命令一样使用且参数无需--分隔适合高频命令lscc、pwdcc等。清理删除别名用unalias支持批量与--all删除并 purge 实例会自动清理其别名无需手工逐个删除。更多细节可继续阅读 docs/reference/command-line-interface/alias.md、docs/reference/command-line-interface/aliases.md、docs/reference/command-line-interface/unalias.md 与 docs/reference/command-line-interface/prefer.md 参考页面以及 include/multipass/alias_definition.h 等源码文件。赞分享虚拟化开发工具云原生【免费下载链接】multipassMultipass orchestrates virtual Ubuntu instances项目地址https://gitcode.com/gh_mirrors/mu/multipass点击查看免费下载相关推荐Multipass unalias 命令详解删除实例命令别名Alias的完整指南Multipass unalias 命令详解删除实例命令别名Alias的完整指南 multipass unalias 是 Multipass https:虚拟化开发工具云原生Multipass alias 命令详解为 Ubuntu 实例创建持久化命令别名Multipass alias 命令详解为 Ubuntu 实例创建持久化命令别名 multipass alias 是 Multipass 提供的一条核心客户端虚拟化开发工具云原生ArchiveBox 标签管理命令 archivebox tag 完整实战指南创建、列表、重命名与删除ArchiveBox 标签管理命令 archivebox tag 完整实战指南创建、列表、重命名与删除 本篇技术指南围绕 ArchiveBox 的 archi后端数据工程上一篇XGBoost CPU-only Python 包xgboost-cpu安装与使用指南下一篇智慧树刷课插件5分钟实现视频学习自动化的终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Minecraft局域网联机1小时速通:PCL启动器避坑指南
Minecraft局域网联机1小时速通:PCL启动器避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 2:52:43

模具水路清洗总洗不净?关键在于温度与流速的精准控制
模具水路清洗总洗不净?关键在于温度与流速的精准控制

模具水路结垢这个问题,干注塑和压铸的兄弟应该都不陌生。模温机显示温度波动大、产品缩痕缺陷突然增多、冷却周期越拖越长,十有八九是水路内壁挂了水垢、锈泥或者生物膜。很多人第一反应是“用清洗剂泡一泡”,但同样一瓶清洗剂,有… · 2026/9/26 2:52:43

轻量级人脸识别考勤系统:树莓派部署、离线识别与生产级报表
轻量级人脸识别考勤系统:树莓派部署、离线识别与生产级报表

简介:这是一套面向计算机专业本科生的高分毕业设计项目资源,基于Python与深度学习技术实现完整的人脸识别考勤系统,适用于毕设开发、课程设计及项目实战训练。资源包含可直接运行的全量代码、详细文档说明与部署指南,覆盖人脸检测… · 2026/9/26 2:52:43

python中int的用法是什么
python中int的用法是什么

[][]本教程的操作是这样的, 你的电脑系统是用的是点九版的, 电脑牌子是Dell的, 型号为G3, 可是这个办法对所有品牌的电脑都是适用的。关于int, 它是怎么被使用的情况。描述int() 这个函数,它的功能是专门拿来用, 把一个字符串或者是数字, 统统转换去那个整型的类型。… · 2026/9/26 4:09:34

MCP Server 开发全流程指南:从架构到部署
MCP Server 开发全流程指南:从架构到部署

这份关于 MCP 开发全流程的指南, 将从架构设计一直到最终的部署工作, 一步步为你展开详细的介绍, 首先我们要对 MCP 的核心概念进行深入且清晰的解析。MCP, 也就是Multi-, 作为一种在分布式系统里面所使用到的那种核心的通信协议机制, 它主要的用途是拿来去实现多个节点彼此之间… · 2026/9/26 4:09:34

好消息!Delphi 的VCL  FMX 图形用户界面库在python中免费使用
好消息!Delphi 的VCL FMX 图形用户界面库在python中免费使用

#春日领好运#也许你正处于学习的那个阶段, 而且绝大多数时间都在忙着做一些计算啊或者画个图之类的活儿。这种情况下, print这个函数被用到的机会特别多, 还有一些其他的库也经常被调用来派上用场。可是如果你心里头突然冒出一个想法, 想要去弄一个好看点的图形界面出来面对用户… · 2026/9/26 4:09:34

三步搭建MCP Agent,腾讯云大模型知识引擎上线MCP插件
三步搭建MCP Agent,腾讯云大模型知识引擎上线MCP插件

在4月14日这一天, 腾讯云对外宣布了大模型知识引擎进行了升级, 这次升级使得它支持接入MCP协议, 这意味着用户在构建应用的过程中, 不仅可以调用平台方精心挑选的MCP插件, 还可以将自己定制的MCP插件插入进来, 供大模型知识引擎直接调用。当前, 知识引擎平台已经筛选出了好几种… · 2026/9/26 4:09:34

python threading和multiprocessing模块基本用法实例分析
python threading和multiprocessing模块基本用法实例分析

现在本文给大家详细讲讲这个情况, 就是关于那个模块的基本用法怎么操作。下面我会把它分享出来, 大家看一看可以参考一下, 具体的内容如下所示:前言这几天, 为了做一个小项目, 我研究了一下并发编程。所谓并发, 无非就是多线程和多进程。最初找到的模块是那个, 因为我的印象中认… · 2026/9/26 4:09:34

LabVIEW FPGA 实时处理 2 GHz 通感信号
LabVIEW FPGA 实时处理 2 GHz 通感信号

用一套覆盖 71 至 76 GHz 的 mmWave 收发系统,做 6G 通感一体的波形验证,实时带宽 2 GHz,信号由板载 FPGA 实时处理。从公开招标到把结果写进同行评审论文,这条路走的不是定制硬件,而是通用硬件加软件框架。01 要做什么… · 2026/9/26 4:09:28

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码