鱼别名中间有一个变量?

鱼别名中间有一个变量?

我有阅读障碍,所以我使用 fish 作为我的 shell,因为它在预测、纠正和别名方面很出色。我正在尝试弄清楚如何创建一个别名,其中变量在后面,然后是别名的其余部分。

例如:现在我有别名ppa="sudo add-apt-repository"。我只需输入ppa然后复制 repo 的ppa:foo-bar/ppa之后,最终sudo apt-add-repository ppa:foo-bar/ppa

这足够方便,所以如果下一部分太难或者根本无法完成,不用担心。

我想将此别名修改为ppa="sudo add-apt-repository"; upd (where upd is also aliased asupd="sudo apt update"`)。有什么办法吗?如果我说得不够清楚,下面是我想在这种情况下使用 cli 执行的操作:

带变量的别名:
$ ppa [variable]

带变量的解码别名:
$ sudo sudo add-apt-repository [variable] ; upd

如上示例:带变量的别名:
$ ppa ppa:foo-bar/ppa

解码后的带变量的别名:
$ sudo sudo add-apt-repository ppa:foo-bar/ppa ; upd

有办法吗?同样,如果没有办法或者如果方法太复杂,也没问题。

非常感谢!我非常感激!

〜埃夫

附言——如果有人希望我帮助他们为他们经常输入的命令创建自己的别名,并希望使用 fish 来实现,请随时提出。我很乐意提供帮助!

答案1

不,您不能使用 fish 别名来执行此操作。但是 fish 函数要好得多:

function upd
    sudo apt update
end
funcsave upd

function ppa
    sudo add-apt-repository $argv
    upd
end
funcsave ppa

将其复制并粘贴到您的终端中就可以了。

请记住

alias foo=bar

只是一种快捷方式

function foo; bar $argv; end

答案2

这已经很老了,所以可能对 OP 没什么用,但可以做到几乎正如 OP 所希望的那样,甚至可能是更有用的东西。

鱼有缩写,我更喜欢尽可能使用别名或函数,因为:

  1. 显示实际命令,以便我仍然记得实际的命令是,这在购买新电脑、新工作或使用别人的电脑时很有用。
  2. 它具有--set-cursor充当“光标中缀”的作用,解决了 OP 的问题。

abbr--set-cursor

我使用多个 Kubernetes 命名空间(环境),但 90% 的时间都在使用我们称之为的开发命名空间hot-deploy。因此,我做了一个缩写,以始终添加命名空间:

abbr -a k --set-cursor -- "kubectl % -n hot-deploy"

这使我只需输入字母k(和空格)即可显示以下命令,将光标置于kubectl和之间-n

kubectl <CURSOR HERE> -n hot-deploy

我也用许多其他缩写做过同样的操作,甚至还使用了一个技巧,使得按下空格后,光标位于我输入内容的末尾:

abbr -a rep --set-cursor -- "cd /home/mike-williamson/repos/myapp/%"

把放在%最后,意味着输入rep+ 空格后,会输出:

cd /home/mike-williamson/repos/myapp/<CURSOR HERE>

然后我就可以输入rep+ 空格,然后立即输入fro+ tab,它就会进入frontend(或者输入任何内容让我进入我想要去的子目录)。

我经常使用缩写,有时我需要用缩写abbr -l来列出它们,因为我已经忘记它们了。

答案3

我会为此创建一个脚本,并让别名调用该脚本。类似这样的脚本(未经测试):add_ppa_and_update.sh

#!/bin/bash
# Take first argument and use it to add the repository
add-apt-repository $1
# Update
apt update

现在授予脚本运行权限sudo chmod 755 add_ppa_and_update.sh并创建使用 sudo 调用该脚本的别名sudo add_ppa_and_update.sh [variable]

相关内容