我们知道,有时我们的snap应用的名称很长,不便于输入.在snap 2.20+和snapcraft 2.24+以后的版本中,我们提供了别名从而使得我们可以用我们喜欢的名字来调用我们的应用.
我们可以参考我们在snapcraft中的一个项目:
https://github.com/snapcore/snapcraft/tree/master/integration_tests/snaps/alias
这个项目的snapcraft.yaml定义如下:
snapcraft.yaml
name: my-alias
version: '0.1'
summary: command alias example
description: |
Command alias example
grade: devel
confinement: devmode
apps:
hello:
command: hello.sh
aliases: [hi.sh, howdy.sh]
parts:
aliases:
plugin: dump
source: .
在这个应用中,我们为我们的应用my-alias.hello定义了两个别名:hi.sh及howdy.sh.这里的hello.sh的内容如下:
hello.sh
#!/bin/bash
CMD=$(basename "$0")
if [ "$CMD" == "hi.sh" ]; then
echo "Hi world!"
elif [ "$CMD" == "howdy.sh" ]; then
echo "Howdy world!"
else
echo "Hello world!"
fi
我们打包我们的应用,并安装运行:
liuxg@liuxg:~$ my-alias.hello
CMD: hello.sh
Hello world!
liuxg@liuxg:~$ hi.sh
bash: /snap/bin/hi.sh: No such file or directory
很显然,我们的别名并没有起作用.这是什么原因呢?其实我们可以使用snap的命令来查看一下帮助信息:
liuxg@liuxg:~$ snap alias -h
Usage:
snap [OPTIONS] alias [alias-OPTIONS] [<snap>] [<alias>...]
The alias command enables the given application aliases defined by the snap.
Once enabled the respective application commands can be invoked just using the aliases.
Application Options:
--version Print the version and exit
Help Options:
-h, --help Show this help message
[alias command options]
--reset Reset the aliases to their default state, enabled for automatic aliases,
disabled otherwise
原来为了能够使得我们的别名能够起作用,我们应该通过命令行来启动它.
liuxg@liuxg:~$ sudo snap alias my-alias hi.sh
[sudo] password for liuxg:
通过上面的命令,我们就把别名启动了,让后在我们的命令行中直接打入命令:
liuxg@liuxg:~$ hi.sh
CMD: hello.sh
Hello world!
我们可以通过同样的方法来对howdy.sh来操作.
如果我们重置我们的alias,我们可以通过如下的命令来完成:
$ sudo snap alias --reset my-alias hi.sh
我们的alias可以在Ubuntu Store设置在默认的情况下启动,那么这个reset将会恢复最初的默设置.
或者,我们可以通过如下的命令来完成:
$ sudo snap unalias my-alias hi.sh
最终的代码在:https://github.com/liu-xiao-guo/alias