Bash (Git) - Функции, псевдонимы и файлы сценариев SH

Сценарии, которые получают IP-адрес и информацию о системе, будут запускаться при загрузке, поэтому я перезапускаю getty @ tty1 в том же скрипте, и он сработал.

2
09.12.2015, 01:41
3 ответа

Вы можете добавить в свою среду список необходимых функций.

Создайте файл ~ / .bash_functions и загрузите его из ~. / Bashrc .
Так же, как источник ./ bash_aliases :

if [ -f ~/.bash_functions ]; then
    . ~/.bash_functions
fi

Затем определите столько (и столько сложных) функций, сколько захотите.
Вы можете определить псевдонимы (внутри ~ / .bash_aliases, чтобы поддерживать порядок) для функций. Но на самом деле это не нужно, поскольку вы можете напрямую вызывать исходные функции. Определив:

stash() {
    if [[ -z $1 ]]; then
        stash list;
    else
        git stash $1;
    fi;
}

Вы можете вызвать его просто с помощью stash или stash this , псевдоним не требуется.

2
29.04.2021, 00:20
{   cat >myfunction.fn
    .  ./myfunction.fn
    fn  1 2 3 4 5
} <<""
    fn(){
        printf %s\\n "$@"
    }

1
2
3
4
5

оболочки. Команда будет источником именованного файла в среде выполнения текущей оболочки. Любые функции, переменные, псевдонимы или другие типы состояний оболочки, определенные в нем, сохранятся, когда он вернет s.

Вы можете выполнить определение функции типа автозагрузки , например, определив функцию-заглушку:

fn(){ . ./fn.file && fn "$@"; }

... где исходный файл содержит переопределение fn () :

fn(){
   : a whole new fn
}
: any other init state commands you might like to run
0
29.04.2021, 00:20

Я не понимаю, зачем вы вставляете определения функций в псевдонимы. Ваш псевдоним stash определяет функцию, вызывающую f , а затем немедленно вызывает ее таким образом, чтобы получить аргументы, переданные псевдониму. Для повседневного использования это эквивалентно определению функции с именем stash :

function stash {
  if (($# == 0)); then
     git stash list;
  else
     git stash "$@";
  fi;
}

По сравнению с тем, что указано в псевдониме:

  • Вы можете использовать stash функции {…} или stash () {…} для определения функции. Они эквивалентны, за исключением того, что если вы уже определили псевдоним с именем stash , он будет расширен при попытке определить функцию, поэтому определение не будет делать то, что вы хотите. . При определении функции либо убедитесь, что имя функции еще не определено как псевдоним, либо используйте синтаксис function .
  • Я использую (($ # == 0)) , чтобы проверить, есть ли у функции какие-либо аргументы, а не проверять, пуст ли первый аргумент. Намерение яснее. (И это позволяет использовать пустой аргумент, но здесь это все равно не имеет смысла.)
  • Всегда используйте двойные кавычки для раскрытия переменных .
  • Я использую "$ @" вместо "$ 1" при вызове git. «$ @» передает все аргументы функции.

Вы можете поместить определения функций в то же место, что и определения псевдонимов: в вашем .bashrc , в .bash_aliases или в другом файле, источником которого является .bashrc , например

. ~/lib/git-functions.bash
1
29.04.2021, 00:20

Теги

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