用于操作conf文件的BASH工具?

用于操作conf文件的BASH工具?

我想知道是否有任何可在 bash 脚本中使用的工具可以轻松地让您操纵添加、删除、更新)conf 文件中的指令?

例如,fail2ban.conf 已分组指令,每个指令都在自己的部分下。

[proftpd]
enabled  = true
port     = ftp,ftp-data,ftps,ftps-data

[postfix]
enabled  = true
port     = smtp,465,submission

而 pagespeed.conf 有混合指令,有些在自己的部分中,有些则排列在各处。

<Location /pagespeed_admin>
        Order allow,deny
        Allow from localhost
        Allow from 127.0.0.1
        SetHandler pagespeed_admin
    </Location>
    <Location /pagespeed_global_admin>
        Order allow,deny
        Allow from localhost
        Allow from 127.0.0.1
        SetHandler pagespeed_global_admin
    </Location>

    ModPagespeedMessageBufferSize 100000
    ModPagespeedStatisticsLogging on
    ModPagespeedEnableCachePurge on
    ModPagespeedPurgeMethod PURGE
    ModPagespeedFileCacheSizeKb 2048000
    ModPagespeedFileCacheCleanIntervalMs 3600000
    ModPagespeedFileCacheInodeLimit 500000

你明白了。

是否有任何工具允许您:例如操作fail2ban.conf 的“proftpd”部分中的“enabled”指令?

或者操纵 pa​​gespeed.conf 的“Location /pagespeed_admin”部分中的“Allow from”指令?

或者操纵 pa​​gespeed.conf 的“无特定”部分中的“ModPagespeedMessageBufferSize”指令?

谢谢

答案1

不,原因很简单,配置文件可能使用的格式太多。我认为,你能做的最好的事情就是使用文本处理工具来推出你自己的。

可能有针对某些格式(例如 JSON)的库,但工具作者可以自由使用他们喜欢的任何格式,因此通用工具是不可能的。为了说明这一点,以下是一些conf文件中的几行:

  1. emacs

    ;; Are we running XEmacs or Emacs?
    (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
    
    ;; disable menu bar when running in terminal
    (when (not (display-graphic-p))
      (menu-bar-mode -1))
    
    ;;My libraries, ebib, wordcount etc
    (add-to-list 'load-path "~/.emacs-lisp/")
    
  2.   highlight Normal guibg=grey90
      highlight Cursor guibg=Green guifg=NONE
      highlight lCursor guibg=Cyan guifg=NONE
      highlight NonText guibg=grey80
      highlight Constant gui=NONE guibg=grey95
      highlight Special gui=NONE guibg=grey95
    
  3. 着色

    #---------------------------------------------
    # BACKGROUND AND BORDER
    #---------------------------------------------
    # general panel settings
    rounded = 7
    border_width = 2
    #background_color = #B4B2B2 10
    background_color = #000000 30 
    border_color = #8F0004 0 
    
  4. 虚拟LC

    # Trigger button (string)
    #gestures-button=left
    
    [motion] # motion control interface
    
    [oldrc] # Remote control interface
    
    # Show stream position (boolean)
    rc-show-pos=0
    
  5. sshd

    AuthorizedKeysFile  .ssh/authorized_keys
    ChallengeResponseAuthentication no
    UsePAM yes
    

等等等等

答案2

不是真的,但您可以为特定的配置布局构建一些东西。就像是

sed -E "/\[proftpd]/,/\[/{s/(enabled\s*=\s*).*/\1false/}" input.file

例如,可以将其设计为更改fail2ban.conf 的函数。

如果有趣的话我可以扩展。

相关内容