能够用鼠标点两下解决的事,我从未考虑过输入长长的命令来实现
能够用鼠标点两下解决的事,我从未考虑过输入长长的命令来实现
写自动化脚本初始化系统用
写自动化脚本初始化系统用
确实,如果搞清楚了大部分自己使用的应用的配置文件位置,直接写成脚本以后重装系统时配置贼啦快~
不要用windows的思路去看待linux
找到了,归档管理器和文本编辑器在23beta2中都是玲珑应用,所以配置文件是需要进入到相应的玲珑环境中的,以归档管理器为例:
# 进入归档管理器的玲珑应用环境
ll-cli run org.deepin.compressor --exec /bin/bash
# 覆盖写入归档管理器的配置项
cat << EOF > ~/.config/deepin/deepin-compressor/deepin-compressor.conf
[base.decompress.create_folder]
value=false
[base.decompress.open_folder]
value=true
EOF
# 退出归档管理器的玲珑应用环境
exit
注意,以上是手动操作的,并非实际脚本。(制作成脚本时,还需要进行其它修改)
文本编辑器同理:
# 进入文本编辑器的玲珑应用环境
ll-cli run org.deepin.editor --exec /bin/bash
# 追加写入文本编辑器的配置项
cat << EOF >> ~/.config/deepin/deepin-editor/config.conf
[base.font.showblankcharacter]
value=true
[base.font.showbookmark]
value=true
EOF
# 退出文本编辑器的玲珑应用环境
exit
注意cat << EOF
之后 一个箭头>
是覆盖写入,两个箭头>>
是追加写入。具体哪个,由自己任意决定。
关于第一个问题,它的配置文件在这里:/usr/share/dsg/configs/dde-dock/com.deepin.dde.dock.json
具体是这一段配置(大致在这个文件的倒数第二项配置):
"Dock_Quick_Plugins": {
"value": ["power", "network", "shutdown", "show-desktop", "multitasking"],
"serial": 0,
"flags": [],
"name": "Quick Plugins show on dock",
"name[zh_CN]": "显示在任务栏上的快捷插件",
"description": "记录哪些插件的图标在任务栏启动的时候显示在任务栏上",
"permissions": "readwrite",
"visibility": "private"
},
你想要去掉的就是这里的"show-desktop", "multitasking"
这两项。
找到了,归档管理器和文本编辑器在23beta2中都是玲珑应用,所以配置文件是需要进入到相应的玲珑环境中的,以归档管理器为例:
# 进入归档管理器的玲珑应用环境
ll-cli run org.deepin.compressor --exec /bin/bash
# 覆盖写入归档管理器的配置项
cat << EOF > ~/.config/deepin/deepin-compressor/deepin-compressor.conf
[base.decompress.create_folder]
value=false
[base.decompress.open_folder]
value=true
EOF
# 退出归档管理器的玲珑应用环境
exit
注意,以上是手动操作的,并非实际脚本。(制作成脚本时,还需要进行其它修改)
文本编辑器同理:
# 进入文本编辑器的玲珑应用环境
ll-cli run org.deepin.editor --exec /bin/bash
# 追加写入文本编辑器的配置项
cat << EOF >> ~/.config/deepin/deepin-editor/config.conf
[base.font.showblankcharacter]
value=true
[base.font.showbookmark]
value=true
EOF
# 退出文本编辑器的玲珑应用环境
exit
注意cat << EOF
之后 一个箭头>
是覆盖写入,两个箭头>>
是追加写入。具体哪个,由自己任意决定。
关于第一个问题,它的配置文件在这里:/usr/share/dsg/configs/dde-dock/com.deepin.dde.dock.json
具体是这一段配置(大致在这个文件的倒数第二项配置):
"Dock_Quick_Plugins": {
"value": ["power", "network", "shutdown", "show-desktop", "multitasking"],
"serial": 0,
"flags": [],
"name": "Quick Plugins show on dock",
"name[zh_CN]": "显示在任务栏上的快捷插件",
"description": "记录哪些插件的图标在任务栏启动的时候显示在任务栏上",
"permissions": "readwrite",
"visibility": "private"
},
你想要去掉的就是这里的"show-desktop", "multitasking"
这两项。
大神那,谢谢大佬😄
确实,如果搞清楚了大部分自己使用的应用的配置文件位置,直接写成脚本以后重装系统时配置贼啦快~
我的环境比较复杂,每次重装系统都费大半天时间,能自动配置的,全写在脚本里自动初始化
我的环境比较复杂,每次重装系统都费大半天时间,能自动配置的,全写在脚本里自动初始化
还是提醒一下,上面那个暂时还不算脚本,需要进一步处理,比如怎么让脚本在进入玲珑环境后执行修改配置的那段指令,我暂时还没找到办法。如果你找到了,记得也告诉我哈让我也了解了解~
搞明白了,脚本中这样写就可以直接改玲珑容器里的配置文件了:
#!/bin/bash
echo "覆盖玲珑应用org.deepin.compressor的配置项"
ll-cli run org.deepin.compressor --exec "/bin/bash -c 'cat << EOF > ~/.config/deepin/deepin-compressor/deepin-compressor.conf
[base.decompress.create_folder]
value=false
[base.decompress.open_folder]
value=true
EOF'"
echo "写入完成..."
echo "追加玲珑应用org.deepin.editor的配置项"
ll-cli run org.deepin.editor --exec "/bin/bash -c 'cat << EOF >> ~/.config/deepin/deepin-editor/config.conf
[base.font.showblankcharacter]
value=true
[base.font.showbookmark]
value=true
EOF'"
echo "写入完成..."
搞明白了,脚本中这样写就可以直接改玲珑容器里的配置文件了:
#!/bin/bash
echo "覆盖玲珑应用org.deepin.compressor的配置项"
ll-cli run org.deepin.compressor --exec "/bin/bash -c 'cat << EOF > ~/.config/deepin/deepin-compressor/deepin-compressor.conf
[base.decompress.create_folder]
value=false
[base.decompress.open_folder]
value=true
EOF'"
echo "写入完成..."
echo "追加玲珑应用org.deepin.editor的配置项"
ll-cli run org.deepin.editor --exec "/bin/bash -c 'cat << EOF >> ~/.config/deepin/deepin-editor/config.conf
[base.font.showblankcharacter]
value=true
[base.font.showbookmark]
value=true
EOF'"
echo "写入完成..."
谢谢大佬, 你的脚本更简洁👍 👍
我是这么写的,
第一种方式:
ll-cli run org.deepin.compressor --exec "/mnt/test.sh"
这里的配置文件路径写成绝对路径, 相对路径~/无效,
/mnt/test.sh文件内容:
#!/bin/bash
# org.deepin.editor的配置项
deepinCompressorConfig="/home/user/.config/deepin/deepin-compressor/deepin-compressor.conf"
cat << EOF > ${deepinCompressorConfig}
[base.decompress.create_folder]
value=false
[base.decompress.open_folder]
value=true
EOF
第二种方式:
直接覆盖配置文件
ll-cli run org.deepin.compressor --exec "cp /mnt/test ~/.config/deepin/deepin-compressor/deepin-compressor.conf"
第三种方式:
如果配置项存在的话, 用sed命令替换
ll-cli run org.deepin.compressor --exec "sed -i -e '/base.decompress.create_folder/{n;s/^value=.*/value=false/;}' ~/.config/deepin/deepin-compressor/deepin-compressor.conf"
谢谢大佬, 你的脚本更简洁👍 👍
我是这么写的,
第一种方式:
ll-cli run org.deepin.compressor --exec "/mnt/test.sh"
这里的配置文件路径写成绝对路径, 相对路径~/无效,
/mnt/test.sh文件内容:
#!/bin/bash
# org.deepin.editor的配置项
deepinCompressorConfig="/home/user/.config/deepin/deepin-compressor/deepin-compressor.conf"
cat << EOF > ${deepinCompressorConfig}
[base.decompress.create_folder]
value=false
[base.decompress.open_folder]
value=true
EOF
第二种方式:
直接覆盖配置文件
ll-cli run org.deepin.compressor --exec "cp /mnt/test ~/.config/deepin/deepin-compressor/deepin-compressor.conf"
第三种方式:
如果配置项存在的话, 用sed命令替换
ll-cli run org.deepin.compressor --exec "sed -i -e '/base.decompress.create_folder/{n;s/^value=.*/value=false/;}' ~/.config/deepin/deepin-compressor/deepin-compressor.conf"
第三种收藏了收藏了~
第三种收藏了收藏了~
哎呀,尬住了😂 ,刚留意到不用进玲珑修改,在当前用户目录就可以直接修改了,就是那个~/.linglong/
目录。
#!/bin/bash
echo "覆盖玲珑应用org.deepin.compressor的配置项"
cat << EOF > ~/.linglong/org.deepin.compressor/config/deepin/deepin-compressor/deepin-compressor.conf
[base.decompress.create_folder]
value=false
[base.decompress.open_folder]
value=true
EOF
echo "写入完成..."
echo "追加玲珑应用org.deepin.editor的配置项"
cat << EOF >> ~/.linglong/org.deepin.editor/config/deepin/deepin-editor/config.conf
[base.font.showblankcharacter]
value=true
[base.font.showbookmark]
value=true
EOF
echo "写入完成..."
哎呀,尬住了😂 ,刚留意到不用进玲珑修改,在当前用户目录就可以直接修改了,就是那个~/.linglong/
目录。
#!/bin/bash
echo "覆盖玲珑应用org.deepin.compressor的配置项"
cat << EOF > ~/.linglong/org.deepin.compressor/config/deepin/deepin-compressor/deepin-compressor.conf
[base.decompress.create_folder]
value=false
[base.decompress.open_folder]
value=true
EOF
echo "写入完成..."
echo "追加玲珑应用org.deepin.editor的配置项"
cat << EOF >> ~/.linglong/org.deepin.editor/config/deepin/deepin-editor/config.conf
[base.font.showblankcharacter]
value=true
[base.font.showbookmark]
value=true
EOF
echo "写入完成..."
太棒了,能直接修改太好了,你是怎么找到的,玲珑文档上没看到说明
太棒了,能直接修改太好了,你是怎么找到的,玲珑文档上没看到说明
昨天写脚本时在主目录里找各种配置文件,突然留意到.lingling,进去一看就发现了。
昨天写脚本时在主目录里找各种配置文件,突然留意到.lingling,进去一看就发现了。
优秀
大佬,问下,系统代理中的SOCKS地址和端口,怎么通过命令设置?
大佬,问下,系统代理中的SOCKS地址和端口,怎么通过命令设置?
控制中心的还真不知道😂 你研究研究
@hotime 大佬能分享下你的脚本吗? 学习学习
我的脚本一开始是尽量把各种配置文件都写到脚本里,后来发现内容太多看着不方便,就把配置文件都尽量抠出来做单独的文件,放在各自单独的文件夹里,只留下那种简单替换内容的一些留在脚本里,大部分配置文件都用cp或者async同步。
脚本目录是这个样子:
脚本 start.sh
内容是这样的(需要以当前用户使用sudo执行):
#!/bin/bash
echo "# --------------------------------- #"
echo "# 自动化脚本,用于进行系统安装后的特殊配置 #"
echo "# --------------------------------- #"
#######################################
# :::::: V A R I A B L E S :::::: #
#######################################
user=$(who | awk '{print $1}' | sort -u)
host=$HOSTNAME
homedir="/home/$user"
curdir=$(pwd)
ping_test_url="community-packages.deepin.com"
git_name="hotime"
git_email="[email protected]"
github_ssh_url="https://github.com/settings/ssh/new"
deepin_unstable_source="deepin-unstable-source"
sublime_text="com.sublimetext.sublime-text-4"
firefox="com.mozilla.firefox-zh"
pkg_basic=("git" "apt-file" "dcc-insider-plugin" "uos-recovery")
pkg_special=("steam++")
pkg_apps=($sublime_text $firefox)
pkg_zh_dictionary=("fcitx5-pinyin-sougou" "fcitx5-pinyin-zhwiki-data")
#######################################
# :::::: F U N C T I O N S :::::: #
#######################################
function run_all_sets() {
check_curdir
check_network_connection
correct_permission_for_source_dir_and_files
change_punctuation_for_fcitx5 # 修改fcitx5标点符号映射,以支持【】符号
add_history_search_backward_support_for_inputrc # 支持在终端中使用PgUp、PgDn根据当前输入快速补全历史命令
join_unstable_source_if_not_joined # 加入内测源
apt update # 更新apt可用软件包列表
install_all_packages # 安装常用软件包
apt-file update # 从apt源更新内容文件,以便使用apt-file查询功能
import_root_sets # 导入root配置
import_user_sets # 导入用户配置
#add_permission_for_watt_toolkit # 为watt_toolkit添加权限
adjust_grub_theme_deepin # 根据最佳分辨率更新deepin的grub主题
generate_ssh_key_for_github
}
function echo_start_message() {
echo "开始执行配置脚本..."
}
function split_message() {
echo "执行完成..."
echo "-----------------------------------------------------------------------"
}
function echo_end_message() {
echo "脚本执行成功,请重启计算机"
}
function check_curdir() {
if [[ $curdir != $homedir/* ]]; then
echo "警告:目录异常!请将此脚本目录复制到用户目录中,重新执行脚本"
echo "脚本已退出..."
exit 1
fi
echo "脚本目录位置正常..."
split_message
}
function check_network_connection() {
ping -c 3 $ping_test_url > /dev/null 2>&1
if [[ $? -ne 0 ]]; then
echo "警告:网络异常!请尝试连接网络,重新执行脚本"
echo "脚本已退出..."
exit 1
fi
echo "网络连接正常..."
split_message
}
function correct_permission_for_source_dir_and_files() {
echo "准备修改当前目录下各配置文件及目录的权限"
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod +x my-scripts/*
chmod +x start.sh
echo "当前目录下的各配置文件及目录权限已成功修改..."
split_message
}
function import_root_sets() {
echo "准备导入root配置"
if [[ $host == 'Miix4' ]]; then
import 0 "Miix4-configs" "/usr/share/X11/xorg.conf.d"
fi
import 0 "etc_vim" "/etc/vim"
import 0 "firefox-zh_files_distribution" "/opt/apps/com.mozilla.firefox-zh/files/distribution"
#import 0 "my-scripts" "/usr/local/bin" # 复制常用脚本
}
function import_user_sets() {
echo "准备导入用户配置"
import 1 "homedir" "${homedir}"
import 1 "homedir_config_deepin" "${homedir}/.config/deepin"
import 1 "homedir_config_deepin_deepin-terminal" "${homedir}/.config/deepin/deepin-terminal"
import 1 "linglong_deepin-compressor" "${homedir}/.linglong/org.deepin.compressor/config/deepin/deepin-compressor"
import 1 "homedir_fonts" "${homedir}/.fonts"
import 1 "homedir_config_fcitx5" "${homedir}/.config/fcitx5"
import 1 "homedir_local_share_fcitx5_themes" "${homedir}/.local/share/fcitx5/themes"
import 1 "homedir_config_sublime-text" "${homedir}/.config/sublime-text"
}
function import() {
local flag=$1 # 0表示root配置,1表示用户配置,两者需要的用户权限不同
local src_dir=$2
local dest_dir=$3
if [[ $flag -ne 0 && $flag -ne 1 ]]; then
echo "错误:第一个参数错误,应为0或1"
return 1
fi
if [[ ! -d $src_dir ]]; then
echo "警告:在当前目录中未找到:$src_dir,准备跳过..."
return 1
fi
if [[ ! -d $dest_dir ]]; then
echo "提示:目标目录:$dest_dir 不存在,准备创建..."
if [[ $flag -eq 1 ]]; then
sudo -u $user mkdir -p $dest_dir
else
mkdir -p $dest_dir
fi
fi
echo "准备复制或同步:$src_dir"
if [[ $flag -eq 1 ]]; then
rsync -aXS --include='.*' $src_dir/ $dest_dir # 因为cp命令复制.开头的隐藏文件会比较麻烦,所以这里使用rsync命令进行同步
else
cp -R $src_dir/* $dest_dir
fi
split_message
}
function join_unstable_source_if_not_joined() {
install_apt_packages $deepin_unstable_source
}
function install_all_packages() {
install_apt_packages "${pkg_basic[@]}" # 安装基础软件包
#install_apt_packages "${pkg_special[@]}" # 安装特殊工具
install_apt_packages "${pkg_apps[@]}" # 安装常用应用
install_apt_packages "${pkg_zh_dictionary[@]}" # 安装中文词库
}
function install_apt_packages() {
local packages=("$@")
for package in "${packages[@]}"; do
if ! dpkg -s $package >/dev/null 2>&1; then
echo "准备安装:${package}"
apt install -y --allow-unauthenticated $package
else
echo "${package} 已安装,准备跳过..."
fi
done
split_message
}
# 未来的fcitx5版本中,punctuation文件内容会有所不同,此函数可能废弃。
function change_punctuation_for_fcitx5() {
local config_file="/usr/share/fcitx5/punctuation/punc.mb.zh_CN"
echo "准备修改配置文件:$config_file"
echo "以支持方头括号【 】"
sed -i -e "s/^\[ .*/[ 【 】/" $config_file
sed -i -e "s/^\] .*/] 「 」/" $config_file
split_message
}
function add_history_search_backward_support_for_inputrc() {
local config_file="/etc/inputrc"
local file_content=$(cat "$config_file")
echo "准备取消在终端中使用PgUp、PgDn根据当前输入快速补全历史命令配置项的注释:"
sed -i 's/^# \"\\e\[5~\": history-search-backward/\"\\e\[5~\": history-search-backward/' $config_file
sed -i 's/^# \"\\e\[6~\": history-search-forward/\"\\e\[6~\": history-search-forward/' $config_file
split_message
}
function add_permission_for_watt_toolkit() {
# TODO 提供权限
chmod a+w /etc/hosts
split_message
}
function adjust_grub_theme_deepin() {
local default_grub='/etc/default/grub'
if [[ $(df -h /boot | grep '/boot' | awk '{print $5}' | cut -d'%' -f1) -gt 90 ]]; then
echo "警告:/boot 分区可用空间不足10%,准备跳过此步骤..."
return 1
fi
local default_grub_resolution=$(cat $default_grub | grep 'GRUB_GFXMODE' | cut -d'=' -f2)
local best_resolution=$(xrandr | grep -o '[0-9]\{4\}x[0-9]\{3,4\}' | awk 'NR==1')
if [[ $default_grub_resolution == $best_resolution ]]; then
echo "默认grub分辨率已是最佳,无需更新grub,准备跳过此步骤..."
return 1
fi
echo "当前默认grub分辨率为:$default_grub_resolution, 最佳分辨率为:${best_resolution},准备修改默认grub分辨率为最佳分辨率"
sed -i "s/GRUB_GFXMODE=.*/GRUB_GFXMODE=${best_resolution}/" $default_grub
echo "准备更新grub"
update-grub || true
echo "准备更新grub主题:deepin"
/usr/lib/deepin-api/adjust-grub-theme || true
split_message
}
function generate_ssh_key_for_github() {
local dest_dir="${homedir}/.ssh"
local private_key_name="github_${user}_${host}_deepin_ed25519"
local public_key_name="${private_key_name}.pub"
sudo -u ${user} mkdir -p $dest_dir
sudo -u ${user} ssh-keygen -t ed25519 -f ${dest_dir}/${private_key_name} -C ${git_email}
sudo -u $user git config --global user.name ${git_name}
sudo -u $user git config --global user.email ${git_email}
echo "Title:"
echo ${private_key_name}
echo "Key:"
echo "$(cat $dest_dir/${public_key_name})"
echo "请访问链接:${github_ssh_url},将SSH Key添加至github"
split_message
}
function echo_variabled_tips() {
echo "准备展示现有信息:"
echo "当前用户:$user"
echo "主机名:$host"
echo "当前用户目录:$homedir"
echo "当前脚本目录:$curdir"
echo "网络连接测试链接:$ping_test_url"
echo "git_name:$git_name"
echo "git_email:$git_email"
echo "内测源:$deepin_unstable_source"
split_message
}
#############################
# :::::: M A I N :::::: #
#############################
echo_start_message # 开始提示
echo_variabled_tips # 展示现有信息
run_all_sets # 执行脚本
echo_end_message # 结束提示
还不太完善,比如控制中心里配置的各种东西都没弄,比如选择屏幕缩放、主题、fcitx5双拼之类的还没搞。(目前自己这边暂时可以凑合用用)
Popular Ranking
ChangePopular Events
More
怎么用命令取消任务栏的应用图标?
归档管理器,用命令怎么设置以下两项
记事本-怎么命令怎么设置以下几项