Псевдоним рыбы с переменной в середине?
У меня дислексия, поэтому я использую рыбу в качестве раковины, так как она хороша для предсказания, коррекции и алиасинга. Я пытаюсь выяснить, как сделать псевдоним с переменной внутри, за которым следует остальная часть псевдонима.
Пример: сейчас у меня есть псевдоним 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 есть аббревиатуры , которым я предпочитаю использовать псевдонимы или функции, когда это возможно, потому что:
- Фактическая команда отображается, так что я все еще помню, что это за команда, что полезно при получении нового компьютера, новой работе или использовании чужого компьютера.
- Он имеет , который действует как «инфикс курсора», что решает проблему ОП.
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]
,