На этот вопрос уже есть ответ здесь:
Я хотел бы переключиться с csh на bash, тогда мне нужно установить .bashrc с командами, которые я использую. Перевод псевдонима с параметрами кажется не таким простым, как я думал. csh:
alias gr 'xmgrace -legend load -nxy \!* -free -noask&'
параметр \! *
означает все параметры в командной строке; Затем я попробовал использовать bash:
alias gr='xmgrace -legend load -nxy $@ -free -noask&'
alias gr='xmgrace -legend load -nxy $(@) -free -noask&'
Но ни один из них не работал.
Другая проблема возникает из-за запоминания текущего каталога csh:
alias t 'set t=\`pwd\``;echo $t'
alias tt 'cd $t'
Я много чего пробовал, но безрезультатно.
Это не путь bash
работа псевдонимов, все psoitional параметры в bash
, псевдонимы являются appened в конце команды, а не места, которое Вы определили. Для преобладания над ним, необходимо использовать bash
функции.
пример сделает Вас более ясными:
$ cat file.txt
foo
$ cat bar.txt
foobar
spamegg
$ grep -f file.txt bar.txt
foobar
$ alias foo='grep -f "$1" bar.txt' ## Alias 'foo'
$ foo file.txt
grep: : No such file or directory
$ spam () { grep -f "$1" bar.txt ;} ## Function 'spam'
$ spam file.txt
foobar
, Как Вы видите, поскольку первый аргумент в случае псевдонима foo
добавляется в конце, таким образом, команда foo file.txt
расширяется до:
grep -f "" bar.txt file.txt
, в то время как в случае функции spam
команда правильно расширяется до:
grep -f file.txt bar.txt
Так в Вашем случае, можно определить функцию как:
gr () { xmgrace -legend load -nxy "$@" -free -noask & ;}
~/.local/share/applications/
– Katu 23 November 2016 в 05:08