Bash Alias ​​Помощь - PullRequest
       15

Bash Alias ​​Помощь

0 голосов
/ 08 марта 2011

Я пишу 4 псевдонима для проекта, и в настоящее время два из них работают. Псевдоним e и ll работает, но псевдоним cx выдает ошибку cx: команда не найдена. Кроме того, мой псевдоним rm просто удаляет указанный файл, но не дает никакого подтверждения.

Вот что я ищу по этим двум псевдонимам ..

  1. псевдоним с именем "cx", который принимает один или несколько файлов / каталогов и добавляет разрешение на выполнение для указанных файлов / каталогов.

  2. псевдоним «rm», который будет отображать подтверждающее сообщение каждый раз, когда вы удаляете файл.

вот мои псевдонимы ...

alias e="exit"
alias ll="ls $1 -l"
alias cx="chmod a+x $1"
alias rm="rm -i"

Ответы [ 3 ]

4 голосов
/ 08 марта 2011

Если вы хотите использовать переданные в параметрах параметры, вам не нужен псевдоним, вам нужна функция

cx(){ chmod a+x $1; }
ll(){ ls $1 -l; }

В этих конкретных случаях вы можете вообще обходиться без позиционных параметров, поскольку параметр находится в самом конце, а псевдонимы по существу встроены и заменены их определением.

alias ll='ls -l'
alias cx='chmod a+x'

Так что cx ./foo сейчас chmod a+x ./foo, а ll ./foo сейчас ls -l ./foo

Подтверждение концепции

$ touch foo && ls -l ./foo
-rw-rw-r-- 1 siegex siegex 0 Mar  7 12:14 ./foo
$ alias cx='chmod a+x'
$ alias ll='ls -l'
$ cx ./foo
$ ll ./foo
-rwxrwxr-x 1 siegex siegex 0 Mar  7 12:14 ./foo
0 голосов
/ 08 марта 2011

Команда shopt -s expand_aliases разрешит расширение псевдонимов в неинтерактивных оболочках Bash. (Это не нужно в командной строке, так как это будет интерактивная оболочка.)

Если вы проверяете псевдонимы в скрипте, это, вероятно, часть вашей проблемы. Попробуйте добавить команду shopt в свой сценарий, прежде чем пытаться выполнить какие-либо команды с псевдонимами.

0 голосов
/ 08 марта 2011

Попробуйте, это должно быть лучше:)

alias e='exit'
alias ll='ls $1 -l'
alias cx='chmod a+x $1'
alias rm='rm -i'

Магия "вместо"

...