Режим IDE / Emacs для сценариев Shell в Bash/Sh, и т.д.

Вы считали, что просто делаете то, что хотите сделать в if, а не смотрите, прежде чем прыгать?

IE, если вы хотите проверить наличие каталога перед его вводом, попробуйте сделать это:

if pushd /path/you/want/to/enter; then
    # commands you want to run in this directory
    popd
fi

Если путь, который вы даете pushd, существует, вы введете его, и он выйдет с 0, что означает then часть оператор выполнит. Если он не существует, ничего не произойдет (кроме некоторого выхода, говорящего о том, что каталог не существует, что, вероятно, является полезным побочным эффектом в любом случае для отладки).

Кажется лучше, чем это, что требует повторяя себя:

if [ -d /path/you/want/to/enter ]; then
    pushd /path/you/want/to/enter
    # commands you want to run in this directory
    popd
fi

То же самое работает с cd, mv, rm и т. д. ... если вы попробуете их в файлах, которые не существуют, они выйдут с ошибка и напечатать сообщение о том, что его не существует, и ваш блок then будет пропущен. Если вы попробуете их в существующих файлах, команда выполнит и выйдет со статусом 0, что позволит выполнить ваш блок then.

17
задан Fernando Briano 17 June 2009 в 18:33
поделиться

4 ответа

Ну, есть встроенный режим оболочки, который выделяет синтаксис, если он еще не включен, Mx shell-script-mode сделает это за вас.

Относительно инструмента для упрощения написания сценариев. Существует отладчик оболочки bash , поэтому, если вы программируете на bash, это немного поможет.

Конечно, есть eshell , оболочка, написанная на Emacs lisp, так что вы можете получить всю подсветку синтаксиса, которую вы ожидаете от lisp, автозаполнения и отладчика emacs lisp.

18
ответ дан 30 November 2019 в 13:54
поделиться

Я не очень знаком Emacs, но я полагаю, что это не удобно. Как я вижу, хороший язь всегда может делать:

  1. Скачок в декларацию
  2. Находят ссылки
  3. Кодовая Схема & Покажите Символы
  4. случаи Основного момента
  5. Кодовое завершение

, Таким образом, я рекомендую Идею Jetbrain (с bashsupport плагином) и Визуальный Кодекс Студии (с язем удара и расширением формата раковины).

пикосекунда:

bashsupport - https://plugins.jetbrains.com/plugin/4230-bashsupport /

язь удара - https://marketplace.visualstudio.com/items? itemName=mads-hartmann.bash-ide-vscode

-1
ответ дан 30 November 2019 в 13:54
поделиться

Я не думаю, что есть какой-либо режим для завершения кода для сценариев оболочки, по крайней мере, не в Emacs. (На самом деле я никогда не чувствовал в этом необходимости.) Однако в bash есть поддержка завершения при интерактивном запуске (пакет называется «bash-Completion» или что-то подобное). Это обеспечивает завершение табуляции для многих команд оболочки.

1
ответ дан 30 November 2019 в 13:54
поделиться
1
ответ дан 30 November 2019 в 13:54
поделиться
Другие вопросы по тегам:

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