一、使用场景和问题来由
1.因为自己的电脑Linux虚拟机要pull一些docker镜像从大家都在使用的测试环境镜像仓库,但是测试环境镜像仓库做了iptables策略只能测试机的网络段才能访问,然后每次不需要访问的时候就要关闭,但是每次都得打开/etc/profile进行手动修改所以要减少不必要的工作量。
2.通过测环境的服务器搭建了一个squid然后本地虚拟机使用设置本地代理访问镜像仓库
二、具体配置步骤
vim /etc/profile
no_prxy_192=$(echo 192.168.{1..255}.{1..255}|sed 's/ /,/g') #不加速的地址,必须包括本地地址,根据自己要求修改
export no_prxy="${no_proxy_192}" #不加速生效,包括220-220主机名和以上私网地址
export https_prxy=127.0.0.1:10809 #https通过本地10809加速
export http_prxy=127.0.0.1:10809 #https通过本地10809加速
:wq
#取消注释
sed -i '/^[^#]*proxy/s/^/#/' /etc/profile' && source /etc/profile
命令的详细解释:
1、sed -i:这部分表示使用 sed 命令进行编辑,并且 -i 选项让更改直接应用于文件(不会在终端显示结果,而是直接修改文件)。
2、'/[#]prxy/: 这是 sed 的模式匹配部分。
/…/: 表示搜索模式的开始和结束。
[#]:这部分是一个正则表达式,^ 表示行的开始,[^#] 表示非 # 字符,* 表示匹配0个或多个前面的字符。[#]* 代表匹配任何不以 # 开头的行的开始部分。
prxy:这部分指明只匹配包含 “prxy” 的行。
3、s/^/#/: 这是替换操作。
s: 表示替换。
^: 表示行的开始。
#: 这是要替换成的字符,也就是在行首插入 #。
/etc/profile: 这部分要替换的目标文件名。
#添加注释
sed -i '/^#.*prxy/s/^#//' /etc/profile' && source /etc/profile
1、sed -i:这表示使用 sed 命令进行编辑,并且 -i 选项使得更改直接应用于文件(而不是在终端显示结果,然后需要手动保存)。
2、'/^#.prxy/': 这是 sed 的模式匹配部分。
/…/: 表示搜索模式的开始和结束。
^#: 这部分匹配以 # 开头的行。
.: 这表示匹配任何数量的任何字符(除了换行符)。
proxy: 指明只匹配包含 “prxy” 的行。
3、s/^#//: 这是替换操作。
s: 表示替换。
^#: 表示匹配行首的 #。
后面跟着的 // 表示用空字符串替换,即删除 #。