Псевдоним рыбы с переменной в середине?

У меня дислексия, поэтому я использую рыбу в качестве раковины, так как она хороша для предсказания, коррекции и алиасинга. Я пытаюсь выяснить, как сделать псевдоним с переменной внутри, за которым следует остальная часть псевдонима.

Пример: сейчас у меня есть псевдоним ppa="sudo add-apt-repository", Я могу просто напечатать ppa затем скопируйте ppa репозитория: foo-bar / ppa и получите sudo apt-add-repository ppa:foo-bar/ppa

Это достаточно удобно, поэтому, если следующая часть будет слишком сложной или просто невозможной, не стоит беспокоиться.

Я хотел бы изменить этот псевдоним ppa="sudo add-apt-repository"; обн (where upd is also aliased as upd="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

Есть ли способ сделать это? Опять же, если нет или если его путь слишком усложняет то, что он стоит, нет проблем.

Большое спасибо! Я ценю его!

〜 Ev

PS - Если кто-то хотел бы, чтобы я помог им создать собственные псевдонимы для команд, которые они вводят постоянно и хотят делать это с помощью рыбы, не стесняйтесь спрашивать. Буду рад помочь!

3 ответа

Нет, вы не можете сделать это с псевдонимом рыбы. Но функции рыбы намного лучше:

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

Это довольно старо, поэтому, вероятно, ОП бесполезно, но это можно сделать почти так, как хочет ОП, и, возможно, даже что-то более полезное.

У Fish есть аббревиатуры , которым я предпочитаю использовать псевдонимы или функции, когда это возможно, потому что:

  1. Фактическая команда отображается, так что я все еще помню, что это за команда, что полезно при получении нового компьютера, новой работе или использовании чужого компьютера.
  2. Он имеет , который действует как «инфикс курсора», что решает проблему ОП.

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/%"

Поставив%в конце это означает, что после ввода + пробела выведется:

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

Это позволяет мне печататьrep+ пробел, затем сразу введитеfro+ вкладка, и она появитсяfrontend(или введите что-нибудь, чтобы перейти в подкаталог, в который я хочу перейти).

Я так часто использую сокращения, что иногда мне приходится использоватьabbr -lперечислить их все, потому что я их все забыл.

Я бы создал скрипт для этого и заставил бы псевдоним вызывать скрипт. Примерно так (не проверено): 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],

Другие вопросы по тегам