Я заканчиваю тем, что ввел
grep -Rni pattern .
и куча. Как я превращаю это в псевдоним как
alias gr='grep -Rni $@ .'
Выполнение, которое дает:
$ gr pattern
grep: pattern: No such file or directory
Даже при том, что псевдоним выглядит хорошо:
$ type gr
gr is aliased to `grep -R $@ .'
Кажется что $ и. будьте подкачаны, когда это будет на самом деле выполняться.
сделайте функцию вместо псевдонима. Сохраните ее в файле, например mylibrary.sh, и всякий раз, когда вы захотите использовать функцию, обращайтесь к файлу
например mylibrary.sh
myfunction(){
grep -Rni ...
}
#!/bin/bash
source mylibrary.sh
myfunction
Попробуйте следующее:
$ alias gr='grep -Rnif /dev/stdin . <<<'
$ gr pattern
./path/file:42: here is the pattern you were looking for
Это также работает:
$ alias gr='grep -Rnif - . <<<'