首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >取消注释更大文件中的特定代码

取消注释更大文件中的特定代码
EN

Unix & Linux用户
提问于 2015-09-09 13:08:38
回答 3查看 518关注 0票数 2

我在Ubuntu 15中的/etc/bash.bashrc文件中有这些代码行。我如何才能取消对命令行的注释,而不破坏文件中的任何其他注释呢?

代码语言:javascript
复制
# enable bash completion in interactive shells
#if ! shopt -oq posix; then
#  if [ -f /usr/share/bash-completion/bash_completion ]; then
#    . /usr/share/bash-completion/bash_completion
#  elif [ -f /etc/bash_completion ]; then
#    . /etc/bash_completion
#  fi
#fi

所需的输出应该如下所示:

代码语言:javascript
复制
# enable bash completion in interactive shells
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

请记住,这个文件中还有其他代码行,我不想搞砸,这应该由bash脚本自动完成。

EN

回答 3

Unix & Linux用户

发布于 2015-09-09 13:35:02

实际上,要求它做多配置文件bashrc的方法是非常错误的。您应该有几个不同的.bashrc文件,比如.bashrc_1、.bashrc_rc2,在这里您可以从基本的.bashrc文件中定义不同的需求,并在需要时对它们进行源化。

就这样。

票数 1
EN

Unix & Linux用户

发布于 2015-09-09 16:07:26

如果您知道您的块从哪一行开始(例如,第30行),则可以使用

代码语言:javascript
复制
sed '31,+6s/^.//' </etc/bash.bashrc >/etc/bash.bashrc-uncommented

然后检查您的新文件bash.bashrc-uncommented,确保它在复制之前是正确的。

代码语言:javascript
复制
mv /etc/bash.bashrc-uncommented /etc/bash.bashrc

sed语句所做的是查找第31行(块启动后的行),并将正则表达式应用到所要求的6行。

对于每一行,正则表达式查找行^的开头和下面的字符.,并将其替换为nothing (即删除它)。

</etc/...>/etc/...正在告诉sed在哪里找到您的文件,以及在哪里发送命令的结果。

票数 0
EN

Unix & Linux用户

发布于 2015-09-09 16:12:44

我想出的这个提议的解决方案需要一些准备,但对我来说没问题。

首先,我将源文件复制到一个临时文件夹中。

代码语言:javascript
复制
cp /etc/bash.bashrc /var/ldt/bash.bashrc_modifed

然后,我只编辑/var/ldt/bash.bashrc_ edit中所需的内容。

通过运行以下命令创建修补程序:

代码语言:javascript
复制
diff -u /etc/bash.bashrc /var/ldt/bash.bashrc_modifed > /var/ldt/bash.bashrc_patch

现在,我只可以将更改应用到我想要的内容上。

代码语言:javascript
复制
patch /etc/bash.bashrc < /var/ldt/bash.bashrc_patch
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/228562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档