Вопрос или проблема
В bash вы можете развернуть алиас, который вы вводите. Например, если у меня есть алиас cmd="cd ~/user"
, то ввод cmd
и нажатие Ctrl+Alt+e изменит его на cd ~/user
. Есть ли способ сделать это в fish?
В fish команда alias
просто создает тривиальную функцию. Например,
alias cmd 'cd ~/user'
это всего лишь сокращение для
function cmd
cd ~/user
end
Поскольку это функция в fish, вы не можете развернуть тело команды в командной строке, когда вводите алиас. Для вашей ситуации я рекомендую использовать сокращение; например, abbr cmd 'cd ~/user'
.
Поскольку это функция, вы также можете использовать functions
, чтобы развернуть функции алиаса.
functions [вашалиас]
например.
$ alias ll="ls -l"
$ functions ll
# Определено через `source`
function ll --wraps=ls --wraps="ls -l" --description 'alias ll=ls -l'
ls -l $argv
end
Ответ или решение
В оболочке Fish создание псевдонимов осуществляется с помощью команды alias
, которая фактически создает тривиальную функцию. Например, команда:
alias cmd 'cd ~/user'
на самом деле эквивалентна следующему определению функции:
function cmd
cd ~/user
end
Из-за того, что псевдонимы в Fish реализуются как функции, вы не можете расширить тело команды при вводе псевдонима на командной строке, как это делается в Bash. Однако для вашей ситуации я рекомендую использовать сокращения, которые позволяют добиться желаемого результата.
Вы можете создать сокращение с помощью команды abbr
, например:
abbr cmd 'cd ~/user'
После этого, когда вы наберете cmd
и нажмете клавишу Tab
, Fish покажет соответствующую команду, и вы можете использовать её.
Если вам нужно получить информацию о теле функции, связанной с вашим псевдонимом, вы можете воспользоваться командой functions
. Например, если у вас определен псевдоним ll
как:
alias ll='ls -l'
Вы можете узнать его определение, выполнив:
functions ll
В результате получите что-то вроде:
# Defined via `source`
function ll --wraps=ls --wraps="ls -l" --description 'alias ll=ls -l'
ls -l $argv
end
Таким образом, используя функции и сокращения, вы сможете эффективно управлять своими командами и получать информацию о них в Fish.
Если вам необходима более детальная информация о функции, вы также можете использовать functions --all
, чтобы получить список всех определенных функций и их содержимого в текущем сеансе.
Этот подход позволяет вам по-прежнему обладать значительной гибкостью и контролем над вашими командами в Fish, несмотря на отсутствие прямой возможности развертывания псевдонимов, как в Bash.