-1

У меня есть около 10 терминальных команд, которые выполняют синхронизацию с Git-репозиторием и live-сервером. Как я могу свести это в одну команду? Это сценарий использования для сценариев?

Шаги включают в себя:

  • Перейдите в локальный каталог.
  • Добавить / зафиксировать / отправить изменения в Git.
  • SSH в live-сервер.
  • Синхронизировать изменения из Git.

1 ответ1

0

Да, вы можете использовать либо скрипт, либо функцию оболочки. Они написаны практически одинаково - начните с простого перечисления всех команд, как если бы они выполнялись вручную, затем постепенно добавляйте такие вещи, как проверка на наличие ошибок.


Функции оболочки настраиваются в самой оболочке, в файле ~/.bashrc для bash (аналогично zsh и т.д.) И могут использоваться только в интерактивной оболочке. Синтаксис name() { commands...; }:

allthethings() {
    cd ~/things
    thing2 --whatever
    git thingify origin/master
}

Примечание: При редактировании ~/.bashrc он получает только перечитать при открытии нового терминала, или когда вы вручную перечитать его с помощью команды . ~/.bashrc .

Функции могут быть созданы непосредственно в интерактивной оболочке; они просто не будут помнить.


Скрипты - это автономные файлы, обычно в ~/bin или /usr/local/bin , начинающиеся с #! строка интерпретатора, за которой следует сам скрипт - в сценариях оболочки это почти то же самое, что и написание функции; в основном отличается тем, используете ли вы exit против return и влияют ли переменные и cd на интерактивную оболочку.

#!/usr/bin/env bash
cd ~/things
thing2 --whatever
git thingify origin/master

Обратите внимание, что вам нужно выполнить chmod +x файлы сценариев, прежде чем их можно будет запускать напрямую, без необходимости каждый раз указывать 'bash'. (Если вы используете #!/usr/bin/env python , остальные будут интерпретироваться Python или Ruby или любым другим языком по вашему выбору.)

Также каталог скриптов должен быть указан в $PATH . Пользовательские местоположения, такие как ~/bin часто нужно добавлять вручную, редактируя ~/.profile:

export PATH="$PATH:$HOME/bin"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .