Я пытаюсь написать псевдоним grep
:Как использовать аргументы командной строки в сценарии оболочки рыб
# config.fish
alias grepcustom="grep -r $argv ~/"
В основном то, что я хочу, чтобы это сделать, это рекурсивный Grep на моем домашнем каталоге, без необходимости вводить все (я знаю, ленивый).
Когда я перезапустить оболочку и запустить grepcustom
я получаю:
$ grepcustom "hello"
grep: hello: No such file or directory
Существует файл, который содержит «привет». Если я запустил grep -r
в оболочке, он работает правильно. Однако проблема заключается в том, как мой псевдоним идентифицирует аргумент командной строки «привет». Что я делаю не так?
Это интересно. Что такое '-a'? Также в вашем втором примере, почему «$ argv» размещался как после '-r', так и в конце инструкции? – dopatraman
параметр '-a' [команда' function'] (http://fishshell.com/docs/current/commands.html#function) позволяет вам называть аргументы функции. '$ argv' появляется дважды, потому что' alias foo = bar' создает это: 'function foo; bar $ argv; end' - т. е. [$ argv явно добавлено] (http://fishshell.com/docs/current/commands.html#alias), независимо от того, что такое 'bar'. –