shell sed修改linux终端的配置文件

这是一个简单,但是完整的案例,实现

1,对修改配置的恢复./set_spaceos.sh  -r

2,执行后,在main.conf配置文件内容里,添加指定内容

#! /bin/bash
##############################################################################
# Date Created: 2021-08-03
#       Author: EbowTang
#  Description: set x64 spaceos
#       object: H3C Workspace E1009h10
#    Return  0: Success
#-----------------------------------------------------------------------------
#  Modification History:
#  DATE        NAME             DESCRIPTION
#  2021-08-03  set_spaceos      set spaceos audio(disable audio by hdmi) and set phone redirect in workspace client
#  Examples of usage:
#  SCRIPT            PARAMETER  DESCRIPTION
#  ./set_spaceos.sh             #set spaceos audio(disable audio by hdmi) set phone redirect in workspace client
#  ./set_spaceos.sh  -r         #remove all set and restore to initial state
#-----------------------------------------------------------------------------
#  Other tips:
#  1, If the script has been executed once, all settings will not take effect after the second execution
##############################################################################
LOG_FILE=/var/log/set_spaceos.log
exec >>$LOG_FILE 2>&1
echo $(date) >$LOG_FILE

if [ `whoami` != 'root' ]; then
	echo -e "User checking failure: You need root privileges to run this script."
	exit 1
fi

CLIENT_VERSION=$(cat /userdata/H3C/Workspace/CURRENT)
SPACEOS_VERSION=$(cat /etc/spaceos-version | awk '{print $2}')

key=$1
if [ "$key" == "-r" ]; then
	#restore to initial state
	cd "/userdata/H3C/Workspace/$CLIENT_VERSION/Device Redirect/"
	cp main.conf.back main.conf
	cd /etc/pulse/
	cp default.pa.back default.pa
	rm -rf /root/doneset.flag
	echo "remove all successful"
	#sed -i 's/#set-default-sink alsa_output.pci-0000_00_01.1.hdmi-stereo/set-default-sink alsa_output.pci-0000_00_01.1.hdmi-stereo/g' /etc/pulse/default.pa
	#sed -i 'set-card-profile alsa_card.pci-0000_00_14.2 output:analog-stereo+input:analog-stereo/d' /etc/pulse/default.pa
	#sed -i 'set-default-sink alsa_output.pci-0000_00_14.2.analog-stereo/d' /etc/pulse/default.pa
	#sed -i 'set-default-source alsa_input.pci-0000_00_14.2.analog-stereo/d' /etc/pulse/default.pa
	exit 1
fi

if [ -f /root/doneset.flag ]; then
	echo work had done!
	exit 1
fi

#1,set spaceos audio(disable audio by hdmi)
echo “pacmd dump before”
pacmd dump
if [ ! -f /etc/pulse/default.pa ]; then
	echo there is no default.pa,please check!
	exit 1
fi
if [ ! -f /etc/pulse/default.pa.back ]; then
	cp /etc/pulse/default.pa /etc/pulse/default.pa.back
fi
cd /etc/pulse/
echo "start to set........."
sed -i 's/set-default-sink alsa_output.pci-0000_00_01.1.hdmi-stereo/#set-default-sink alsa_output.pci-0000_00_01.1.hdmi-stereo/g' /etc/pulse/default.pa
echo "set-card-profile alsa_card.pci-0000_00_14.2 output:analog-stereo+input:analog-stereo" >> /etc/pulse/default.pa
echo "set-default-sink alsa_output.pci-0000_00_14.2.analog-stereo" >> /etc/pulse/default.pa
echo "set-default-source alsa_input.pci-0000_00_14.2.analog-stereo" >> /etc/pulse/default.pa
sleep 1
echo “pacmd dump after”
pacmd dump


#2,set phone redirect in workspace client
cd "/userdata/H3C/Workspace/$CLIENT_VERSION/Device Redirect/"
if [ ! -f "/userdata/H3C/Workspace/$CLIENT_VERSION/Device Redirect/main.conf" ]; then
	echo there is no main.conf,please check!
	exit 1
fi
if [ ! -f main.conf.back ]; then
	cp main.conf main.conf.back
fi
#xiaomi 图片传输USB\VID_2717&PID_FF10\C1CF12C4,存储模式USB\VID_0A9D&PID_FF40\C1CF12C4
#oppo   照片模式USB\VID_22D9&PID_2771\776EA019,oppo   存储模式USB\VID_c\776EA019
#rongyao 图片传输USB\VID_12D1&PID_107E&MI_00\6&7C86353&0&0000,rongyao 存储模式USB\VID_12D1&PID_107E&MI_02\6&7C86353&0&0002
#one plus 存储模式USB\VID_22D9&PID_2771\DD9329EB,one plus 图片传输USB\VID_22D9&PID_2771\DD9329EB
#huawei 图片传输/存储模式,USB\VID_12D1&PID_107E&MI_00\6&3B387317&0&0000
#iphone 默认支持,无需配置
srckey=$(cat main.conf)
#注意全部需要改为小写
#如果需要增加新的手机设备,可以在keyset=$srckey"2717:ff10;0a9d:ff40;22d9:2771;22d9:2764;12d1:107e;"末尾加上该设备"VID:PID"(不包含引号,全部小写);
#比如某品牌手机VID是0000,PID是1010,则直接在下列命令尾部后引号加上"0000:1010;",即
#添加前:keyset=$srckey"2717:ff10;0a9d:ff40;22d9:2771;22d9:2764;12d1:107e;"
#添加后:keyset=$srckey"2717:ff10;0a9d:ff40;22d9:2771;22d9:2764;12d1:107e;0000:1010;"
keyset=$srckey"2717:ff10;0a9d:ff40;22d9:2771;22d9:2764;12d1:107e;339b:107d;2717:ff48;"
sed -i "s#$srckey#$keyset#g" main.conf
sleep 1
touch /root/doneset.flag
reboot

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用sed命令实现取消配置文件中的注释。 假设配置文件名为config.ini,注释符号为#,可以使用以下命令: ``` sed -i 's/#.*$//' config.ini ``` 这个命令会将config.ini文件中每一行的#及其后面的内容都删除,从而实现取消注释的效果。其中-i选项表示直接修改文件,不需要输出到终端;s表示替换操作,#.*$表示匹配以#开头的任意字符直到行尾的内容。 ### 回答2: 使用Shell脚本取消配置文件中的注释可以使用以下步骤: 1. 创建一个Shell脚本文件,比如"remove_comments.sh",并确保该文件具有执行权限。 2. 在Shell脚本中,使用 `sed` 命令来处理配置文件。`sed` 命令可以用于执行文本编辑操作,包括删除和替换指定的文本。 3. 在Shell脚本中使用 `sed` 命令,将配置文件中以"#"开头的行删除掉。这些行通常是被视为注释的行。 4. 在Shell脚本中,运行 `sed` 命令来处理配置文件,例如:`sed '/^#/d' file.conf > file_without_comments.conf`。该命令将会在处理后生成一个没有注释的新配置文件。 5. 运行Shell脚本,例如:`./remove_comments.sh`。 6. 命令执行完毕后,你将会得到一个新的配置文件"file_without_comments.conf",其中已经取消了原始配置文件中的注释行。 请注意,这个Shell脚本只会删除配置文件中以"#"开头的行,而如果注释行中包含有用的信息,可能会影响配置文件的正确性。因此,在运行脚本之前,请确保对配置文件进行备份,以免造成不必要的损失。 ### 回答3: 要使用shell脚本取消配置文件中的注释,可以采取以下步骤: 1. 首先,使用shell脚本读取配置文件的内容,并将每一行保存到一个临时文件中。 ```shell #!/bin/bash config_file="config.txt" temp_file="temp.txt" while read line; do echo "$line" >> $temp_file done < $config_file ``` 2. 接下来,使用sed命令在临时文件中删除以井号(#)开头的注释行。 ```shell sed -i '/^#/d' $temp_file ``` 3. 最后,将临时文件的内容重新写回到原始的配置文件中。 ```shell cp $temp_file $config_file ``` 完成上述步骤后,配置文件中的注释行将被取消,只保留非注释部分的内容。注意,这个脚本假设配置文件是以config.txt的名称存在,并将修改后的内容覆盖到原始文件中。如果需要保留原始文件的备份,可以在复制之前先创建一个备份文件。 这个脚本可以在Linux、Unix和Mac OS等系统上运行,只需将其保存为一个可执行文件并运行即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值