Как установить псевдоним на основе на каталог?

egrep -r '^([^/]/?)*std::cout' .
18
27.10.2012, 01:49
5 ответов

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

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;
}

В случае, если у Вас есть больше вариантов, Вы могли лучше использовать выбирающую структуру.

16
27.01.2020, 19:46

Я получаю чувство, что Вы - очень "каталог, ориентированный", и, в этом случае, этот мог бы комплект Ваш менталитет лучше.

(Но честно говоря, я думаю, что это - плохая идея в целом, Вы хотели бы, чтобы команды были глобальны.)

В .bashrc, поместить alias go="./.cmd" (затем source ~/.bashrc).

Затем в каждом таком каталоге, помещает названный сценарий .cmd, затем chmod +x .cmd, затем просто go сделайте свою вещь.

4
27.01.2020, 19:46
  • 1
    Это - большая работа..., вот вариант использования: При запущении тестов я хочу исказить rspec-все для запущения определенных тестов. Но какие тесты зависят от проекта. И это определяется каталогом. –  B Seven 27.10.2012, 06:11
  • 2
    Что я вижу, у Вас есть две опции, любое использование одна функция (как @Bernhard, описанный выше), и ответвление в зависимости от каталога (точно так же, как он сказал), или, Вы могли поместить параметры в каталоги. Задумайтесь о нем, это не должны быть сценарии, Вы могли просто поместить файл (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
}

Подобной вещью, но принятием "движение" является команда, от которой Вы хотите другую функциональность в определенном каталоге.

1
27.01.2020, 19:46

Estoy trabajando en un proyecto que logra precisamente eso. Échale un vistazo:localalias .

Aquí hay una demostración:

enter image description here

Curiosamente, usé gocomo 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 lason ​​locales en el directorio en el que están definidas.

2
27.01.2020, 19:46

Я довольно долго искал способ сделать это, и сегодня я придумал решение, которое представляет собой синтез некоторых других ответов, но с секретным ингредиентом, придающим остроту соусу; 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;"'
1
27.01.2021, 13:15

Теги

Похожие вопросы