2015-08-31 3 views
1

Рассмотрите следующую команду.Псевдоним ввода. Unix

grep -rn "someString" . --color 

И я хочу, чтобы псевдоним его в моем .cshrc и выполнить команду:

myGrep someString 

Есть ли способ сделать это?

+2

Используйте функцию. – Cyrus

+0

Вы пробовали псевдоним mygrep = 'grep something .....' –

+0

'csh' не имеет функций, поэтому псевдонимы могут принимать параметры. (Или, может быть, 'csh' не имеет функций *, потому что * псевдонимы могут принимать параметры, я не уверен в причинах и последствиях здесь.) – chepner

ответ

2

csh записывает команду в списке истории до расширяющихся псевдонимами, так что вы можете использовать расширение истории для доступа аргументы псевдонима, когда он используется.

% alias myGrep grep -rn \!:1 . --color 

При использовании myGrep foo, что команда из двух слов записано в истории, то она расширяется до grep -rn !:1 . --color. В этой команде !:1 ссылается на первый аргумент предыдущей команды (myGrep foo), в результате чего выполняется grep -rn foo . --color.

-2

Правильный способ создания псевдонима, который принимает параметр, - это функция. В функциях Bash аргументы оцениваются как $1, $2 и так далее. Зачеркнутая конкатенация неявна. Рассмотрим:

hello() { 
    echo 'Hello' $1 
} 

Я просто называется так:

$ hello Eduard 
Hello Eduard 
+0

'csh' не имеет функций. – chepner

Смежные вопросы