Рассмотрите следующую команду.Псевдоним ввода. Unix
grep -rn "someString" . --color
И я хочу, чтобы псевдоним его в моем .cshrc
и выполнить команду:
myGrep someString
Есть ли способ сделать это?
Рассмотрите следующую команду.Псевдоним ввода. Unix
grep -rn "someString" . --color
И я хочу, чтобы псевдоним его в моем .cshrc
и выполнить команду:
myGrep someString
Есть ли способ сделать это?
csh
записывает команду в списке истории до расширяющихся псевдонимами, так что вы можете использовать расширение истории для доступа аргументы псевдонима, когда он используется.
% alias myGrep grep -rn \!:1 . --color
При использовании myGrep foo
, что команда из двух слов записано в истории, то она расширяется до grep -rn !:1 . --color
. В этой команде !:1
ссылается на первый аргумент предыдущей команды (myGrep foo
), в результате чего выполняется grep -rn foo . --color
.
Правильный способ создания псевдонима, который принимает параметр, - это функция. В функциях Bash аргументы оцениваются как $1
, $2
и так далее. Зачеркнутая конкатенация неявна. Рассмотрим:
hello() {
echo 'Hello' $1
}
Я просто называется так:
$ hello Eduard
Hello Eduard
'csh' не имеет функций. – chepner
Используйте функцию. – Cyrus
Вы пробовали псевдоним mygrep = 'grep something .....' –
'csh' не имеет функций, поэтому псевдонимы могут принимать параметры. (Или, может быть, 'csh' не имеет функций *, потому что * псевдонимы могут принимать параметры, я не уверен в причинах и последствиях здесь.) – chepner