.config
每次程序无法按预期运行时,我都需要更改文本文件。我希望能够在终端中执行此操作,最好使用别名并按照以下逻辑:
alias config='change line 17 to this THEN run this command THEN replace line 17 with what was at beginning'
因此,当我进入config
终端时,有问题的行将被更改,之后将运行一个命令,之后该行将设置为开始时的状态
答案1
这听起来很像创可贴和XY问题最好弄清楚核心问题。不过,这些命令可以满足您的需要。我已将其编写为 shell 函数,而不是别名,只需将这些行添加到您的~/.bashrc
文件中:
fix_config(){
## Change current working directory to the directory where .config file is located
cd /path/to/config_file
## The original 17th line
old="$(sed '17q;d' .config)"
## The one you will replace it with
new="new line"
## The sed command that does the replacing
sed -i.bak "17 s/$old/$new/" .config
## Run whatever needs to be run with the modified file
command
## Copy the file back
cp .config.bak .config
## Go back to the old working directory
cd $OLDPWD
}
然后您可以通过运行来运行它fix_config
。
答案2
以下是一个详细的 Python 脚本解决方案。虽然不是您真正想要的,但仍然是一个解决方案:
#!/usr/bin/python3
import os
# change the lines below to the correct paths
path_to_configfile = "path_to_configfile" # the real one in /etc/dhcp/dhclient.conf
path_toconfigfile_a = "path_toconfigfile_a"
path_toconfigfile_b = "path_toconfigfile_b"
# change the line to the default line in the config file (leave the \n)
old_line = "old_line\n"
# change to the line number to check as an indicator
line_number = 17 # first line = 1
# change to the messages you'd like to see
config1_message = "config 1 is activated"
config2_message = "config 2 is activated"
with open(path_to_configfile) as defaultconfig:
defaultconfig = defaultconfig.readlines()
if defaultconfig[line_number-1] == old_line:
os.system('gksudo cp '+"'"+path_toconfigfile_a+"'"+" "+"'"+path_to_configfile+"'")
os.system('zenity --info --text '+'"'+config1_message+'"')
else:
os.system('gksudo cp '+"'"+path_toconfigfile_b+"'"+" "+"'"+path_to_configfile+"'")
os.system('zenity --info --text '+'"'+config2_message+'"')
使用方法:
- 在安全目录中创建一个文件夹来存储配置文件的两个版本。
- 创建一个
~/bin
文件夹。 - 将上面的代码复制到一个文件中,并将其命名为 toggle_config(或任何您喜欢的名称)。
- 将头部部分的线条更改为您希望在切换设置时看到的正确路径、线条和消息
- 保存文件并使其可执行。将其存储在中
~/bin
,或将其复制到/usr/bin
以获得更高的安全性。
注销/登录后,您可以通过以下命令在两个设置版本之间切换
toggle_config
系统将要求您输入密码,并且您将看到如下消息:
或者,您可以使用命令创建一个.desktop 文件并将其锁定到启动器,以便在设置之间快速切换。