Это не абсолютно уверено, что Вы спрашиваете, но псевдоним просто расширяется до того, что находится в псевдониме. Если у Вас есть два псевдонима, можно добавить различные команды, даже псевдонимы.
alias "foo=cd /path/to/foo; go"
alias "foo2=cd /path/to/foo2; go"
В любой другой ситуации Вы могли указать функцию в Вашем .bashrc
function go ()
{
if [ "$PWD" == "/path/to/foo" ]; then
cmd1
elif [ "$PWD" == "/path/to/go" ]; then
cmd2
fi;
}
В случае, если у Вас есть больше вариантов, Вы могли лучше использовать выбирающую структуру.
Я получаю чувство, что Вы - очень "каталог, ориентированный", и, в этом случае, этот мог бы комплект Ваш менталитет лучше.
(Но честно говоря, я думаю, что это - плохая идея в целом, Вы хотели бы, чтобы команды были глобальны.)
В .bashrc
, поместить alias go="./.cmd"
(затем source ~/.bashrc
).
Затем в каждом таком каталоге, помещает названный сценарий .cmd
, затем chmod +x .cmd
, затем просто go
сделайте свою вещь.
touch .TESTNO; echo 2 > .TESTNO
) в каждом каталоге, и затем, в Вашей функции, ищут тот файл и ответвление согласно тому, что тестовое число содержит.TESTNO файл. Хотя нисколько не трудный, Вы, вероятно, не можете использовать псевдоним для этого; необходимо использовать функцию.
– Emanuel Berg
27.10.2012, 08:17
function go() {
if [ ! -e "./.cmd1" ]
then command go -a $1
else command go -b $1
fi
}
Подобной вещью, но принятием "движение" является команда, от которой Вы хотите другую функциональность в определенном каталоге.
Estoy trabajando en un proyecto que logra precisamente eso. Échale un vistazo:localalias .
Aquí hay una demostración:
Curiosamente, usé go
como ejemplo en la demostración. No mostré el cambio de directorios (, algo que debería cambiar sobre la demostración ), pero las funciones con el comando la
son locales en el directorio en el que están definidas.
Я довольно долго искал способ сделать это, и сегодня я придумал решение, которое представляет собой синтез некоторых других ответов, но с секретным ингредиентом, придающим остроту соусу; direnv
.
Проблема с .aliases
, которая читается каждый раз, как было предложено @teknopaul, заключается в том, что вы накапливаете определения, и они никогда не выгружаются.direnv
решает эту проблему путем загрузки и выгрузки переменных среды для каждого -каталога. Тем не менее, это просто обрабатывает переменные окружения , но мы можем использовать это вместе с функциями!
Так вот мой псевдоним дляnpm
(который, конечно, не псевдоним, а функция):
function npm(){ if [[ -z "$NPMBIN" ]]; then $(which npm) $@; else $NPMBIN $@; fi; }
Вы также можете переписать приведенное выше в истинное alias
, выполнив логику в оболочке sub -, но тогда вам нужно следить за экранированными кавычками!
alias npm='bash -c "if [[ -z \"$NPMBIN\" ]]; then $(which npm) $@; else \"$NPMBIN\" $@; fi;"'