Использование определенного символа для комментариев, например, например. #, в конфигурационных файлах зависит от...?

Была та же проблема (, что и стоило, на OS X 10.11, стоковый bash 3.2.57, bash -завершение 1.3 через brew ). Следуя этому совету я расширил тильду в файле завершения ssh(/usr/local/etc/bash_completion.d/sshв моем случае или /etc/bash_completion.d/sshв противном случае )следующим образом:

_scp_local_files()
{
    local IFS=$'\n'

    local dirsonly=false
    if [ "$1" = -d ]; then
        dirsonly=true
        shift
    fi

    cur="${cur/#\~/$HOME}" # <<< Expand tilde

    if $dirsonly ; then
        COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* 2>/dev/null | \
            sed -e "s/$_scp_path_esc/\\\\&/g" -e '/[^\/]$/d' -e "s/^/$1/") )
    else
        COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* 2>/dev/null | \
            sed -e "s/$_scp_path_esc/\\\\&/g" -e 's/[*@|=]$//g' \
            -e 's/[^\/]$/& /g' -e "s/^/$1/") )
    fi

    COMPREPLY="${COMPREPLY/#$HOME/~}" # <<< Contract tilde

Я также обнаружил, что удобно сжимать тильду в конце, сохраняя пути красивыми и короткими (в том виде, в каком они были изначально введены ).

-1
05.11.2019, 13:14
2 ответа

Программа, которая читает файл конфигурации, может делать с содержимым файла все, что захочет. То есть это полностью зависит от прихоти программиста. Нет ничего, что отделяло бы файл конфигурации от любого другого файла данных, большинство из которых, по крайней мере, в некоторой степени -специфичны для приложения. Итак, если бы я хотел, я мог бы сделать букву aмаркером комментария или объявить, что не -пробел в определенном столбце отмечает комментарий (, как в старых версиях Фортрана.).

Тем не менее, оба из них были бы совершенно неожиданными для любого пользователя, поэтому было бы лучше использовать #или какой-либо другой часто используемый символ (, например;). Но причиной использования #является только из-за того, что он общий , а не потому, что Bash (или любая оболочка )имеет какое-либо непосредственное отношение к нему.

Как правило, большинство конфигурационных файлов не являются сценариями, даже если они могут содержать назначения, как в сценариях, или блоки фигурных скобок в стиле C -({... };). Это хорошо для простоты, но, возможно, не для тех действительно крайних случаев, когда вам нужно сделать что-то ужасно сложное.

Но в некоторых случаях файл конфигурации может быть сценарием Bash, кодом Javascript, кодом Lua, кодом Python или чем-то еще. Например, файлы в /etc/default/в Debian являются сценариями оболочки, они читаются сценариями инициализации различных программ (в любом случае до -времени systemd ). И если ваша программа реализована на Lua, то чтение Lua-скрипта в виде конфигурационного файла чрезвычайно просто реализовать.

6
28.01.2020, 05:06

Не существует категории под названием «файлы конфигурации», каждая программа и, соответственно, каждый программист может использовать все, что ему нравится. Я не знаю никаких источников,но я могу привести несколько примеров конфигурационных файлов, в которых используются различные символы (, просто выбрав один случайный пример для каждой категории):

  1. #:/etc/nfsmount

  2. ;:/etc/php/php.ini

  3. %:/etc/slsh.rc

  4. //:/etc/java11-openjdk/security/policy/unlimited/default_local.policy

Это только те, которые я нашел после беглого просмотра /etc. Я уверен, что вы также найдете где-нибудь файлы конфигурации в стиле python -, где комментарии могут быть либо #, либо просто """.

Так что нет, жесткого правила нет, все делают как хотят, но многие по умолчанию #.

5
28.01.2020, 05:06

Теги

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