<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>运维 on 个人技术随想</title>
        <link>https://www.dhao2001.com/tags/%E8%BF%90%E7%BB%B4/</link>
        <description>Recent content in 运维 on 个人技术随想</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <lastBuildDate>Mon, 06 Jul 2026 11:00:00 +0800</lastBuildDate><atom:link href="https://www.dhao2001.com/tags/%E8%BF%90%E7%BB%B4/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Linux运维(折腾)小技巧一览</title>
            <link>https://www.dhao2001.com/2024/08/19/linux-operation-tricks/</link>
            <pubDate>Mon, 19 Aug 2024 11:00:00 +0800</pubDate>
            <guid>https://www.dhao2001.com/2024/08/19/linux-operation-tricks/</guid>
            <description>&lt;h2 id=&#34;虚拟化篇&#34;&gt;&lt;a href=&#34;#%e8%99%9a%e6%8b%9f%e5%8c%96%e7%af%87&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;虚拟化篇&#xA;&lt;/h2&gt;&lt;h3 id=&#34;qemukvm便捷地创建桥接网络&#34;&gt;&lt;a href=&#34;#qemukvm%e4%be%bf%e6%8d%b7%e5%9c%b0%e5%88%9b%e5%bb%ba%e6%a1%a5%e6%8e%a5%e7%bd%91%e7%bb%9c&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;QEMU/KVM便捷地创建桥接网络&#xA;&lt;/h3&gt;&lt;p&gt;有时候，我们希望把虚拟机暴露到局域网LAN中，方便局域网内其他机器访问。然而，在&lt;em&gt;Debian&lt;/em&gt;系统上使用&lt;em&gt;QEMU/KVM&lt;/em&gt;虚拟化技术，配合&lt;em&gt;libvirt&lt;/em&gt;，其默认创建的&lt;code&gt;default&lt;/code&gt;网络是NAT模式的，不能满足以上要求。&lt;/p&gt;&#xA;&lt;p&gt;目前网络上关于创建&lt;em&gt;QEMU&lt;/em&gt;桥接网络的方法有很多，但通常很复杂，而且常常要求机器上有两个网卡。&lt;/p&gt;&#xA;&lt;p&gt;问题在于，普通家用电脑上，通常很难找到两个同时连接到网络的网卡。&lt;/p&gt;&#xA;&lt;p&gt;因此，这里推荐一种相对方便的，使用&lt;code&gt;macvtap&lt;/code&gt;的桥接网络创建方法。&lt;/p&gt;&#xA;&lt;h4 id=&#34;宿主机创建macvtap网络接口&#34;&gt;&lt;a href=&#34;#%e5%ae%bf%e4%b8%bb%e6%9c%ba%e5%88%9b%e5%bb%bamacvtap%e7%bd%91%e7%bb%9c%e6%8e%a5%e5%8f%a3&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;宿主机创建&lt;em&gt;macvtap&lt;/em&gt;网络接口&#xA;&lt;/h4&gt;&lt;p&gt;在宿主机上使用以下命令创建一个&lt;em&gt;macvtap&lt;/em&gt;网络接口：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;nmcli connection add type macvlan dev eth0 mode bridge tap yes ifname macvtap0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;其中，&lt;code&gt;eth0&lt;/code&gt;是连接到网络，也就是虚拟机希望桥接到的网络的物理网卡接口。&lt;code&gt;ifname&lt;/code&gt;后的&lt;code&gt;macvtap0&lt;/code&gt;是可以任意指定的接口名称。&lt;/p&gt;&#xA;&lt;p&gt;再执行以下命令：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;nmcli connection modify macvlan-macvtap0 ipv6.method disabled&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;nmcli connection modify macvlan-macvtap0 ipv4.method disabled&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;根据前面接口名称的不同，&lt;code&gt;modify&lt;/code&gt;后面的连接名称可能也有差异。&lt;/p&gt;&#xA;&lt;p&gt;重新启动以上网络连接。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;nmcli connection down macvlan-macvtap0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;nmcli connection up macvlan-macvtap0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h4 id=&#34;虚拟机连接到macvtap网络接口&#34;&gt;&lt;a href=&#34;#%e8%99%9a%e6%8b%9f%e6%9c%ba%e8%bf%9e%e6%8e%a5%e5%88%b0macvtap%e7%bd%91%e7%bb%9c%e6%8e%a5%e5%8f%a3&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;虚拟机连接到&lt;em&gt;macvtap&lt;/em&gt;网络接口&#xA;&lt;/h4&gt;&lt;p&gt;打开&lt;code&gt;virt-manager&lt;/code&gt;界面，修改虚拟机网卡NIC设置，网络类型选择&lt;code&gt;Macvtap device&lt;/code&gt;。网络设备名称填写上面创建的接口名，例如&lt;code&gt;macvtap0&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;p&gt;保存后启动虚拟机，此时虚拟机就桥接连接到网卡所在网络中了。&lt;/p&gt;&#xA;&lt;h4 id=&#34;宿主机和虚拟机的访问&#34;&gt;&lt;a href=&#34;#%e5%ae%bf%e4%b8%bb%e6%9c%ba%e5%92%8c%e8%99%9a%e6%8b%9f%e6%9c%ba%e7%9a%84%e8%ae%bf%e9%97%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;宿主机和虚拟机的访问&#xA;&lt;/h4&gt;&lt;p&gt;&lt;code&gt;macvtap&lt;/code&gt;的一大局限是，默认配置下，宿主机不能和虚拟机通过此网卡通信。即便分配到了局域网地址，宿主机访问虚拟机的局域网地址也是不通的。&lt;/p&gt;&#xA;&lt;p&gt;为了允许宿主机也可以和虚拟机通信，一种解决方法是，额外在虚拟机上创建一个NIC，并连接到默认的NAT连接上。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;基础运维篇&#34;&gt;&lt;a href=&#34;#%e5%9f%ba%e7%a1%80%e8%bf%90%e7%bb%b4%e7%af%87&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;基础运维篇&#xA;&lt;/h2&gt;&lt;h3 id=&#34;systemd限制用户计算资源&#34;&gt;&lt;a href=&#34;#systemd%e9%99%90%e5%88%b6%e7%94%a8%e6%88%b7%e8%ae%a1%e7%ae%97%e8%b5%84%e6%ba%90&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Systemd限制用户计算资源&#xA;&lt;/h3&gt;&lt;p&gt;在多人使用的Linux服务器上，会遇到这样的情况：某些淘气的小伙伴把服务器资源都占满了，其他人完全无法使用，能不能做点限制呢？&lt;/p&gt;&#xA;&lt;h4 id=&#34;限制用户cpu使用&#34;&gt;&lt;a href=&#34;#%e9%99%90%e5%88%b6%e7%94%a8%e6%88%b7cpu%e4%bd%bf%e7%94%a8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;限制用户CPU使用&#xA;&lt;/h4&gt;&lt;p&gt;假设服务器上一共有32个逻辑CPU（线程），如果有一个用户运行的程序将32个逻辑核全部吃满，会导致其他所有用户程序，即使是一些简单的小工作，都很难正常运行。&lt;/p&gt;&#xA;&lt;p&gt;在这种时候，若希望保障其他用户进行小工作处理的能力，可以用Systemd对占满大量资源的用户进行限制。&lt;/p&gt;&#xA;&lt;p&gt;在Systemd中，用户进程和服务都会受到&lt;code&gt;user-&amp;lt;UID&amp;gt;.slice&lt;/code&gt;配置文件的管理。其中，就提供了计算资源限制相关的属性。&lt;/p&gt;&#xA;&lt;p&gt;首先来看最简单的限制方法：&lt;strong&gt;限制用户使用的最大CPU时间&lt;/strong&gt;。假设服务器上有32个逻辑核，可以只允许某一用户最多使用等价24个核的CPU计算时间。这样一来，CPU就有余力处理其他用户的请求。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;USER_UID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;id -u &amp;lt;限制目标用户名&amp;gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl set-property &lt;span class=&#34;s2&#34;&gt;&amp;#34;user-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;USER_UID&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.slice&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;CPUQuota&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;2400%&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;如果有需要，甚至可以把该用户的进程全部赶到前24个逻辑核上，这样其他用户就稳定地还有8个核可用，非常划得来。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl set-property &lt;span class=&#34;s2&#34;&gt;&amp;#34;user-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;USER_UID&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.slice&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;CPUQuota&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;2400% &lt;span class=&#34;nv&#34;&gt;AllowedCPUs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0-23&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;但这种方法会导致，即使没有其他用户使用服务器，被限制的用户也最多只能使用2400%的CPU时间，没法充分利用CPU算力资源。&lt;/p&gt;&#xA;&lt;p&gt;而理想状态下，我们其实只是希望，要长时间高负载占用CPU的用户，能在其他用户使用时，稍微让出一条路，让其他用户的小工作能正常进行。&lt;/p&gt;&#xA;&lt;p&gt;所以有第二种方法：&lt;strong&gt;限制用户的进程优先级&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;通过设置进程调度，可以将某个用户的进程优先级拉低，这样，其他用户进程会被分配更多时间片以保证交互流畅，而长时任务在没其他人时，依然可以满负载运行。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl set-property &lt;span class=&#34;s2&#34;&gt;&amp;#34;user-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;USER_UID&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.slice&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;CPUQuota&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;CPUWeight&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;25&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;IOWeight&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;25&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;Linux默认的&lt;code&gt;CPUWeight&lt;/code&gt;是100，权重越大，得到的CPU时间就越多。在这里，IOWeight也是同理，且IO优先级对一些程序的交互体验影响更加明显。&lt;/p&gt;&#xA;&lt;h4 id=&#34;限制内存使用&#34;&gt;&lt;a href=&#34;#%e9%99%90%e5%88%b6%e5%86%85%e5%ad%98%e4%bd%bf%e7%94%a8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;限制内存使用&#xA;&lt;/h4&gt;&lt;p&gt;假设系统总内存128G，若希望限制所有用户内存总使用量在限定范围内，杜绝OOM，可以试着这样操作：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl set-property user.slice &lt;span class=&#34;nv&#34;&gt;MemoryHigh&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;96G &lt;span class=&#34;nv&#34;&gt;MemoryMax&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;112G&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;实战中只拿来阻止过某个程序的 OOM Bug.&lt;/p&gt;&#xA;&lt;h4 id=&#34;限制用户gpu访问&#34;&gt;&lt;a href=&#34;#%e9%99%90%e5%88%b6%e7%94%a8%e6%88%b7gpu%e8%ae%bf%e9%97%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;限制用户GPU访问&#xA;&lt;/h4&gt;&lt;p&gt;有时，资源管理也颇为无奈，曾遇到一个情况，已经脱离团队的人，却仍然在使用组内的GPU。&lt;/p&gt;&#xA;&lt;p&gt;这时，其他成员急着用卡，碍于身份难以开口让其停止使用。而且，更不可能直接强制删除用户数据，再怎么说都要给人家下载数据的时间，怎么办呢？&lt;/p&gt;&#xA;&lt;p&gt;能不能悄悄地把这名用户的GPU访问权限下掉，但同时保留正常的用户登录、文件访问权限呢？&lt;/p&gt;&#xA;&lt;p&gt;这也可以通过Systemd设备管理实现。对于需要限制的用户，创建一个文件夹&lt;code&gt;/etc/systemd/system/user-&amp;lt;UID&amp;gt;.slice.d/&lt;/code&gt;：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir /etc/systemd/system/user-&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;USER_UID&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;.slice.d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;然后创建一个文件&lt;code&gt;override.conf&lt;/code&gt;，填入以下内容：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# /etc/systemd/system/user-1001.slice.d/override.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[Slice]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DevicePolicy=closed&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Interactive terminals&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DeviceAllow=/dev/tty rw&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DeviceAllow=char-pts rw&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;实际上，这种限制等级比较高，对于该用户来说，不仅GPU无法使用，系统上位于&lt;code&gt;/dev&lt;/code&gt;下的设备，包括未挂载的硬盘、USB等都无法访问。当然，在科学计算服务器上，普通用户往往也无需访问这些设备。&lt;/p&gt;&#xA;&lt;p&gt;施加这一设置后，对被限制的用户来说，其运行&lt;code&gt;nvidia-smi&lt;/code&gt;只会提示找不到GPU设备。同时，还不影响其访问&lt;code&gt;/home&lt;/code&gt;路径下的数据，可以让其自行将数据导出带走。&lt;/p&gt;&#xA;&lt;h3 id=&#34;密码强度设置&#34;&gt;&lt;a href=&#34;#%e5%af%86%e7%a0%81%e5%bc%ba%e5%ba%a6%e8%ae%be%e7%bd%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;密码强度设置&#xA;&lt;/h3&gt;&lt;p&gt;在Debian/Ubuntu下，怎么设置系统用户密码的最低强度标准？&lt;/p&gt;&#xA;&lt;p&gt;首先需要安装&lt;code&gt;libpam-pwquality&lt;/code&gt;包：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install libpam-pwquality&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;然后编辑&lt;code&gt;/etc/security/pwquality.conf&lt;/code&gt;文件，可参考文件注释进行调整：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Number of characters in the new password that must not be present in the&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# old password.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;difok = 3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Minimum acceptable size for the new password (plus one if&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# credits are not disabled which is the default). (See pam_cracklib manual.)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Cannot be set to lower value than 6.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;minlen = 12&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# The maximum credit for having digits in the new password. If less than 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# it is the minimum number of digits in the new password.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dcredit = -1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# The maximum credit for having uppercase characters in the new password.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# If less than 0 it is the minimum number of uppercase characters in the new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# password.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ucredit = -1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# The maximum credit for having lowercase characters in the new password.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# If less than 0 it is the minimum number of lowercase characters in the new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# password.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lcredit = -1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# The maximum credit for having other characters in the new password.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# If less than 0 it is the minimum number of other characters in the new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# password.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ocredit = -1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;上面的配置对应于以下密码强度约束：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;修改密码与原密码必须有3个字符以上不同&lt;/li&gt;&#xA;&lt;li&gt;密码最小长度为12字符&lt;/li&gt;&#xA;&lt;li&gt;密码必须包含大小写字母、数字、其他字符（标点）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;debian系统列出可升级软件包所含bug&#34;&gt;&lt;a href=&#34;#debian%e7%b3%bb%e7%bb%9f%e5%88%97%e5%87%ba%e5%8f%af%e5%8d%87%e7%ba%a7%e8%bd%af%e4%bb%b6%e5%8c%85%e6%89%80%e5%90%abbug&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Debian系统列出可升级软件包所含Bug&#xA;&lt;/h3&gt;&lt;p&gt;前不久，Debian Testing更新内核版本号至6.10，导致默认软件源中的NVIDIA驱动535版本DKMS模块无法正常编译。看来，即使是风评比Ubuntu更稳定的Debian Testing，作为桌面系统也会产生严重Bug啊！&lt;/p&gt;&#xA;&lt;p&gt;大家都知道，Debian软件包上发现的Bug，都会在&lt;a class=&#34;link&#34; href=&#34;https://bugs.debian.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Debian bug tracking system&lt;/a&gt;里被跟踪，但在近乎滚动更新的Debian Testing上，一次更新可能超过200个软件包，不可能一个个手动分开查询。&lt;/p&gt;&#xA;&lt;p&gt;我们可以使用&lt;code&gt;apt-listbugs&lt;/code&gt;工具完成这一操作。如果系统上没有，使用APT即可快速安装。&lt;/p&gt;&#xA;&lt;p&gt;接着只需要执行以下命令，待更新的软件包中有哪些严重Bug就都知道了。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt-listbugs -s critical,grave,serious list &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;apt list --upgradable 2&amp;gt;/dev/null &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk -F/ &lt;span class=&#34;s1&#34;&gt;&amp;#39;{print $1}&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -v &lt;span class=&#34;s2&#34;&gt;&amp;#34;Listing&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tr &lt;span class=&#34;s1&#34;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;其中，&lt;code&gt;-s&lt;/code&gt;参数指定了查询的Bug严重程度，默认就是上例中的&lt;code&gt;critical,grave,serious&lt;/code&gt;，如果希望无论轻重列出所有Bug，只需要把这一串参数改成&lt;code&gt;all&lt;/code&gt;即可。&lt;code&gt;$()&lt;/code&gt;中的一大串是，将APT命令列出的可升级软件包列表格式化成&lt;code&gt;apt-listbugs&lt;/code&gt;可接受的空格列表。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;用户应用篇&#34;&gt;&lt;a href=&#34;#%e7%94%a8%e6%88%b7%e5%ba%94%e7%94%a8%e7%af%87&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;用户应用篇&#xA;&lt;/h2&gt;&lt;h3 id=&#34;修复skn键盘在fn键工作异常&#34;&gt;&lt;a href=&#34;#%e4%bf%ae%e5%a4%8dskn%e9%94%ae%e7%9b%98%e5%9c%a8fn%e9%94%ae%e5%b7%a5%e4%bd%9c%e5%bc%82%e5%b8%b8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;修复SKN键盘在FN键工作异常&#xA;&lt;/h3&gt;&lt;p&gt;手上有一块SKN青龙3.0机械键盘，平时用起来倒也比较舒适，但在Linux下总是无法正常地使用F系列按键。&lt;/p&gt;&#xA;&lt;p&gt;更具体来说，最顶上的一排F1-F12按键，总是只能触发对应的Fn功能，无论是否按下Fn，都不能正常触发F数字按钮的功能。&lt;/p&gt;&#xA;&lt;p&gt;查看&lt;code&gt;lsusb&lt;/code&gt;输出，发现键盘竟然被Linux系统识别成了苹果的外接键盘：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bus &lt;span class=&#34;m&#34;&gt;005&lt;/span&gt; Device 004: ID 05ac:024f Apple, Inc. Aluminium Keyboard &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;ANSI&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;然而，我没能在5分钟之内，在网络上搜索到如何让Linux纠正键盘型号的方法，只得另寻他法。&lt;/p&gt;&#xA;&lt;p&gt;尽管暂时没有简便的切换键盘型号方法，但是，只要能让顶部的F数字按钮正常工作，取消掉默认的Fn键锁定，那是否将键盘误认为苹果键盘也无所谓。&lt;/p&gt;&#xA;&lt;p&gt;解决这一问题的参考链接🔗：&lt;a class=&#34;link&#34; href=&#34;https://wiki.debian.org/InstallingDebianOn/Apple/PageFragmentKeyboard&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;InstallingDebianOn / Apple / PageFragmentKeyboard&lt;/a&gt;和&lt;a class=&#34;link&#34; href=&#34;https://help.ubuntu.com/community/AppleKeyboard&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;AppleKeyboard&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h4 id=&#34;先试试水&#34;&gt;&lt;a href=&#34;#%e5%85%88%e8%af%95%e8%af%95%e6%b0%b4&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;先试试水&#xA;&lt;/h4&gt;&lt;p&gt;首先简单测试本方法是否有效，请在终端中输入：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /sys/module/hid_apple/parameters/fnmode&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;这里的数字2代表Fn键的功能模式，该模式的取值可以是：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;0&lt;/code&gt; = &lt;code&gt;disabled&lt;/code&gt;: Disable the &amp;lsquo;fn&amp;rsquo; key. Pressing &amp;lsquo;fn&amp;rsquo; has no effect&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;1&lt;/code&gt; = &lt;code&gt;fkeyslast&lt;/code&gt;: Enable the &amp;lsquo;fn&amp;rsquo; key. Pressing &amp;lsquo;F1-F12&amp;rsquo; keys will act as special keys. Pressing &amp;lsquo;fn&amp;rsquo;+&amp;lsquo;F1-F12&amp;rsquo; will behave like &amp;lsquo;F1-F12&amp;rsquo;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;2&lt;/code&gt; = &lt;code&gt;fkeysfirst&lt;/code&gt;: Enable the &amp;lsquo;fn&amp;rsquo; key. Pressing &amp;lsquo;F1-F12&amp;rsquo; keys will behave like the real &amp;lsquo;F1-F12&amp;rsquo;. Pressing &amp;lsquo;fn&amp;rsquo;+&amp;lsquo;F8&amp;rsquo; will act as the special key (play/pause in this case).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;这里我们希望使用2模式，也就是，默认不按Fn时按下F1-F12键即为对应的F数字功能；按下Fn后再按F数字键，则执行对应的特殊Fn键功能（如音乐播放、屏幕亮度调整等）。&lt;/p&gt;&#xA;&lt;p&gt;执行上述命令后，试一试，F5键是否已经能正常刷新网页？&lt;/p&gt;&#xA;&lt;p&gt;如果到此为止没有任何效果，那么说明遇到的问题和本案例不同。需要另外寻找解决方案。如果已达到目标效果，那么已经成功一半了！&lt;/p&gt;&#xA;&lt;h4 id=&#34;持久化设置&#34;&gt;&lt;a href=&#34;#%e6%8c%81%e4%b9%85%e5%8c%96%e8%ae%be%e7%bd%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;持久化设置&#xA;&lt;/h4&gt;&lt;p&gt;上述方法通过直接修改内核参数调整键盘的Fn行为，但每次重启后，该修改就会丢失。怎么将这一修改持久化呢？&lt;/p&gt;&#xA;&lt;p&gt;两种方法。第一种是设置模块的参数：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; options hid_apple &lt;span class=&#34;nv&#34;&gt;fnmode&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee -a /etc/modprobe.d/hid_apple.conf &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo modprobe --dry-run hid_apple&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo update-initramfs -u &lt;span class=&#34;c1&#34;&gt;# If the above line does not throw error.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;或者直接编辑GRUB启动内核的参数，编辑&lt;code&gt;/etc/default/grub&lt;/code&gt;，找到&lt;code&gt;GRUB_CMDLINE_LINUX_DEFAULT&lt;/code&gt;变量定义，并在双引号里追加内容（双引号多项内容通过空格分隔）：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hid_apple.fnmode&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;然后重新生成GRUB：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo update-grub&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;重启系统，应该就一切都好啦。&lt;/p&gt;&#xA;&lt;h3 id=&#34;ssh-host-key遗忘&#34;&gt;&lt;a href=&#34;#ssh-host-key%e9%81%97%e5%bf%98&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;SSH Host Key遗忘&#xA;&lt;/h3&gt;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;我，毋畏遗忘&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;虽然SSH Host Key在不可信网络上确实是验证SSH连接可信性的重要手段，但是，在会频繁刷新Host Key的如容器、虚拟机场景下，又显得不太方便。&lt;/p&gt;&#xA;&lt;p&gt;然而，SSH并没有直接提供诸如“不记录本机Host Key”等功能，有一个选项&lt;code&gt;StrictHostKeyChecking no&lt;/code&gt;，但其仍然会在Host Key不匹配时弹出大大的警告窗口。&lt;/p&gt;&#xA;&lt;p&gt;这样的目标可以简单变通实现，只需要在 SSH Config 配置中设置 &lt;code&gt;UserKnownHostsFile&lt;/code&gt;，将其指向黑洞即可。&lt;/p&gt;&#xA;&lt;p&gt;例如：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Host myserver&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Hostname 192.168.1.2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Port 22&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    User root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    IdentityFile ~/.ssh/id_rsa&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    StrictHostKeyChecking no&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    # Linux&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    # UserKnownHostsFile /dev/null&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    # Windows&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    UserKnownHostsFile \\.\NUL&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h3 id=&#34;更方便的环境变量组织&#34;&gt;&lt;a href=&#34;#%e6%9b%b4%e6%96%b9%e4%be%bf%e7%9a%84%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f%e7%bb%84%e7%bb%87&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;更方便的环境变量组织&#xA;&lt;/h3&gt;&lt;p&gt;众所周知，在Linux中给普通应用设置环境变量，一般只需要在&lt;code&gt;~/.bashrc&lt;/code&gt;等Shell配置文件中直接写&lt;code&gt;export&lt;/code&gt;语句即可。&lt;/p&gt;&#xA;&lt;p&gt;不过，有时候存在下面需求：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;希望给不同的命令指定同名环境变量的不同值，例如&lt;code&gt;MYENV=abc cmd1&lt;/code&gt;和&lt;code&gt;MYENV=def cmd2&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;不希望环境变量对所有命令全局生效，只对特定命令生效&lt;/li&gt;&#xA;&lt;li&gt;在&lt;code&gt;.bashrc&lt;/code&gt;中用更加简洁的语法管理环境变量&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;那么，相较于原始的大量独立&lt;code&gt;export&lt;/code&gt;语句写法，可以试试下面的写法。&lt;/p&gt;&#xA;&lt;p&gt;假设原先的&lt;code&gt;.bashrc&lt;/code&gt;如下：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;MYAPP_ENV_1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;abcd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;MYAPP_ENV_2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;efg&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;MYAPP_ENV_3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;hijk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;再假设需要设置上述环境变量的命令为&lt;code&gt;myapp&lt;/code&gt;，那么可以将上面的&lt;code&gt;export&lt;/code&gt;语句换成下面这种写法：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;MYAPP_ENVS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;MYAPP_ENV_1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;abcd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;MYAPP_ENV_2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;efg&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;MYAPP_ENV_3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;hijk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;myapp&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    env &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;MYAPP_ENVS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; myapp &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$@&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;这样设置的好处包括：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;在Shell中调用&lt;code&gt;myapp&lt;/code&gt;命令&lt;strong&gt;与常规调用等价&lt;/strong&gt;，不影响参数传递，也不影响&lt;code&gt;argv&lt;/code&gt;等参数内容&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;MYAPP_ENVS&lt;/code&gt;中定义的变量只影响&lt;code&gt;myapp&lt;/code&gt;一个命令，&lt;strong&gt;对其他命令全无影响&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;增删环境变量只需直接按行修改，可按行注释掉不想要的环境变量，&lt;strong&gt;维护方便&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;若定义了多个环境变量数组，只需要在&lt;code&gt;env&lt;/code&gt;命令后，程序命令之前添加即可：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ANOTHER_MYAPP_ENVS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;MYAPP_ENV_4&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;hijk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;MYAPP_ENV_5&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;xyz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;myapp&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    env &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;MYAPP_ENVS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ANOTHER_MYAPP_ENVS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; myapp &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$@&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h3 id=&#34;claude-code-快速安装使用&#34;&gt;&lt;a href=&#34;#claude-code-%e5%bf%ab%e9%80%9f%e5%ae%89%e8%a3%85%e4%bd%bf%e7%94%a8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Claude Code 快速安装使用&#xA;&lt;/h3&gt;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;达里奥，你模什么时候送啊？&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;注意：&lt;code&gt;npm&lt;/code&gt;安装方式未来可能有变动，请先行查阅&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/getting-started#install-with-npm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;官方文档&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;首先执行 &lt;code&gt;npm install -g @anthropic-ai/claude-code&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;p&gt;安装完成就要开始配置。如果使用A社官方模型API，记得设置好网络。&lt;/p&gt;&#xA;&lt;p&gt;当然，我用的是Deepseek，其他第三方模型也可以参考下面的配置方法。&lt;/p&gt;&#xA;&lt;p&gt;新建一个&lt;code&gt;~/.claude.json&lt;/code&gt;文件，按需填写：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;env&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;ANTHROPIC_BASE_URL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://api.deepseek.com/anthropic&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;ANTHROPIC_AUTH_TOKEN&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sk-12345678&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;ANTHROPIC_MODEL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;deepseek-v4-pro[1m]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;ANTHROPIC_DEFAULT_OPUS_MODEL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;deepseek-v4-pro[1m]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;ANTHROPIC_DEFAULT_SONNET_MODEL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;deepseek-v4-pro[1m]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;ANTHROPIC_DEFAULT_HAIKU_MODEL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;deepseek-v4-flash&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;CLAUDE_CODE_SUBAGENT_MODEL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;deepseek-v4-pro[1m]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;CLAUDE_CODE_EFFORT_LEVEL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;max&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;DISABLE_AUTOUPDATER&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;ENABLE_TOOL_SEARCH&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;IS_SANDBOX&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// 这一行很重要，否则会在启动时连接A社API并提示地区不支持&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;hasCompletedOnboarding&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;桌面应用篇&#34;&gt;&lt;a href=&#34;#%e6%a1%8c%e9%9d%a2%e5%ba%94%e7%94%a8%e7%af%87&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;桌面应用篇&#xA;&lt;/h2&gt;&lt;h3 id=&#34;gnome应用列表按字母表排序&#34;&gt;&lt;a href=&#34;#gnome%e5%ba%94%e7%94%a8%e5%88%97%e8%a1%a8%e6%8c%89%e5%ad%97%e6%af%8d%e8%a1%a8%e6%8e%92%e5%ba%8f&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Gnome应用列表按字母表排序&#xA;&lt;/h3&gt;&lt;p&gt;至今，我依然没有弄明白，GNOME的应用列表里，图标究竟遵循了怎样的排序规律。&lt;/p&gt;&#xA;&lt;p&gt;或许翻阅源代码可以弄明白，但或许也不需要了，因为我更习惯按应用名称字母表排序。想要设置按字母表排序，只需要在命令行中执行以下命令即可：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;gsettings set org.gnome.shell app-picker-layout &amp;#34;[]&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h3 id=&#34;修复桌面系统中文显示异常&#34;&gt;&lt;a href=&#34;#%e4%bf%ae%e5%a4%8d%e6%a1%8c%e9%9d%a2%e7%b3%bb%e7%bb%9f%e4%b8%ad%e6%96%87%e6%98%be%e7%a4%ba%e5%bc%82%e5%b8%b8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;修复桌面系统中文显示异常&#xA;&lt;/h3&gt;&lt;p&gt;如果安装了英文的系统，又在之后切换为中文，有时候会发现中文渲染不太正常，比方说突然有个字体只有一半宽度，或者笔画字形怪怪的。&lt;/p&gt;&#xA;&lt;p&gt;这是因为，系统中安装的CJK字体 &lt;code&gt;Noto Sans CJK&lt;/code&gt;，在无特殊配置时，日文变体&lt;code&gt;JP&lt;/code&gt;优先级高于中文的&lt;code&gt;SC&lt;/code&gt;（字母表排序），导致部分汉字按日文字形渲染。这就是我们所看到的异常由来。&lt;/p&gt;&#xA;&lt;p&gt;解决办法自然就围绕，怎么告诉系统优先加载&lt;code&gt;SC&lt;/code&gt;字体进行。这里的方法参考了 &lt;a class=&#34;link&#34; href=&#34;https://wiki.archlinux.org/title/Localization/Simplified_Chinese&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ArchLinux Wiki&lt;/a&gt;：&lt;/p&gt;&#xA;&lt;p&gt;在&lt;code&gt;/etc/fonts/conf.d/&lt;/code&gt;（系统全局生效）或&lt;code&gt;~/.fonts.conf&lt;/code&gt;（仅用户生效）下创建一个新文件&lt;code&gt;64-language-selector-prefer.conf&lt;/code&gt;，并填入：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34;?&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;!DOCTYPE fontconfig SYSTEM &amp;#34;fonts.dtd&amp;#34;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;fontconfig&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;alias&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;family&amp;gt;sans-serif&amp;lt;/family&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;prefer&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;lt;family&amp;gt;Noto Sans CJK SC&amp;lt;/family&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;lt;family&amp;gt;Noto Sans CJK TC&amp;lt;/family&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;lt;family&amp;gt;Noto Sans CJK JP&amp;lt;/family&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;/prefer&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;/alias&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;alias&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;family&amp;gt;serif&amp;lt;/family&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;prefer&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;lt;family&amp;gt;Noto Serif CJK SC&amp;lt;/family&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;lt;family&amp;gt;Noto Serif CJK TC&amp;lt;/family&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;lt;family&amp;gt;Noto Serif CJK JP&amp;lt;/family&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;/prefer&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;/alias&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;alias&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;family&amp;gt;monospace&amp;lt;/family&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;prefer&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;lt;family&amp;gt;Noto Sans Mono CJK SC&amp;lt;/family&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;lt;family&amp;gt;Noto Sans Mono CJK TC&amp;lt;/family&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;lt;family&amp;gt;Noto Sans Mono CJK JP&amp;lt;/family&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;/prefer&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;/alias&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;/fontconfig&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;接着执行：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fc-cache -fv&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;并验证：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fc-match -s &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep &lt;span class=&#34;s1&#34;&gt;&amp;#39;Noto Sans CJK&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;重启电脑，解决问题。&lt;/p&gt;&#xA;&lt;h3 id=&#34;中文输入法之选雾凇拼音&#34;&gt;&lt;a href=&#34;#%e4%b8%ad%e6%96%87%e8%be%93%e5%85%a5%e6%b3%95%e4%b9%8b%e9%80%89%e9%9b%be%e5%87%87%e6%8b%bc%e9%9f%b3&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;中文输入法之选：雾凇拼音&#xA;&lt;/h3&gt;&lt;p&gt;Linux中文输入法中，&lt;em&gt;libpinyin&lt;/em&gt; 虽然开箱即用，但在我的GNOME下存在卡顿、响应不灵敏、不跟手、词库简陋等缺点，充其量就是一个能用的状态。&lt;/p&gt;&#xA;&lt;p&gt;过去Linux还有搜狗输入法可用，就流畅度和输入体验来说是T1水平，可惜依赖的古老Fcitx已经很难在最新Wayland和GNOME下使用。&lt;/p&gt;&#xA;&lt;p&gt;Rime输入法虽然提供了极其丰富的扩展空间，但是配置非常复杂，并不是每次都有一下午时间查资料调配置。&lt;/p&gt;&#xA;&lt;p&gt;幸好，有人帮我们踩过了坑，我们不需要自己手动调整，只需要使用：&lt;a class=&#34;link&#34; href=&#34;https://github.com/iDvel/rime-ice&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;iDvel/rime-ice&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;h4 id=&#34;系统安装rime&#34;&gt;&lt;a href=&#34;#%e7%b3%bb%e7%bb%9f%e5%ae%89%e8%a3%85rime&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;系统安装Rime&#xA;&lt;/h4&gt;&lt;p&gt;以GNOME为例，默认使用的是IBus输入框架，在比较新版本的Debian或者Ubuntu上，使用&lt;code&gt;apt&lt;/code&gt;安装&lt;code&gt;ibus-rime&lt;/code&gt;包即可。&lt;/p&gt;&#xA;&lt;p&gt;如果系统源中提供的&lt;code&gt;librime&lt;/code&gt;版本号小于&lt;code&gt;1.85&lt;/code&gt;，那么需要想办法自行升级&lt;code&gt;librime&lt;/code&gt;，具体参见：&lt;a class=&#34;link&#34; href=&#34;https://github.com/iDvel/rime-ice/issues/840&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Linux 用户须知：如需使用本库配置，推荐使用以下 Rime 安装方式 #840&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;安装rime-ice&#34;&gt;&lt;a href=&#34;#%e5%ae%89%e8%a3%85rime-ice&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;安装rime-ice&#xA;&lt;/h4&gt;&lt;p&gt;项目主页提供了非常多种安装方法，但我们这里回归本真，不用什么复杂的方法，只需要直接在Github下载rime-ice仓库的源码包，然后解压到：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;IBus 需解压到 &lt;code&gt;$HOME/.config/ibus/rime/&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Fcitx5 需解压到 &lt;code&gt;$HOME/.local/share/fcitx5/rime/&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;如果先前有其他配置文件，建议先备份后清空上述文件夹，再安装新的配置文件。&lt;/p&gt;&#xA;&lt;h4 id=&#34;稍作修改&#34;&gt;&lt;a href=&#34;#%e7%a8%8d%e4%bd%9c%e4%bf%ae%e6%94%b9&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;稍作修改&#xA;&lt;/h4&gt;&lt;p&gt;进入上面的安装目录中，打开&lt;code&gt;default.yaml&lt;/code&gt;，根据里面的注释稍作修改。&lt;/p&gt;&#xA;&lt;p&gt;可以删除掉其他不需要的输入方案，可以修改候选词个数，还可以修改Shift键的行为等。&lt;/p&gt;&#xA;&lt;h4 id=&#34;花里胡哨1拆字输入&#34;&gt;&lt;a href=&#34;#%e8%8a%b1%e9%87%8c%e8%83%a1%e5%93%a81%e6%8b%86%e5%ad%97%e8%be%93%e5%85%a5&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;花里胡哨1：拆字输入&#xA;&lt;/h4&gt;&lt;p&gt;拆字输入就是将一个不知道怎么读的汉字，通过将其拆分成几个简单易读的偏旁进行依次输入。&lt;/p&gt;&#xA;&lt;p&gt;例如，如果不知道&lt;em&gt;淼&lt;/em&gt;这个字怎么读，可以将其拆解为三个&lt;em&gt;水&lt;/em&gt;进行输入。&lt;/p&gt;&#xA;&lt;p&gt;在本方案中，触发拆字的引导前缀是&lt;code&gt;uU&lt;/code&gt;，也就是输入&lt;code&gt;uUshuishuishui&lt;/code&gt;即可。当然，引导前缀可以自定义。&lt;/p&gt;&#xA;&lt;h4 id=&#34;花里胡哨2以词定字&#34;&gt;&lt;a href=&#34;#%e8%8a%b1%e9%87%8c%e8%83%a1%e5%93%a82%e4%bb%a5%e8%af%8d%e5%ae%9a%e5%ad%97&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;花里胡哨2：以词定字&#xA;&lt;/h4&gt;&lt;p&gt;设想以下场景：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&amp;ldquo;您贵姓？&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;我姓 &lt;em&gt;Ji&lt;/em&gt;。&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;哪个 &lt;em&gt;Ji&lt;/em&gt; 呀？&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;&amp;quot; &lt;em&gt;暨南大学&lt;/em&gt; 的 &lt;em&gt;暨&lt;/em&gt;。&amp;quot;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;百度百科：暨姓是中国罕见姓氏，属汉族古老姓氏，起源于商代彭祖后代受封于暨地&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;许多专有名词、名字中，部分汉字不常出现在候选字的第一屏。此时，与其不断翻页寻找目标字，不如直接打出该字组词，更容易快速定位，上屏后删掉多余的字即可。&lt;/p&gt;&#xA;&lt;p&gt;而以词定字就提供了快速根据词语进行定位的能力，只需要打出对应的二字词，按下&lt;code&gt;[&lt;/code&gt;或者&lt;code&gt;]&lt;/code&gt;，即可确定是输入词组的前一个字还是后一个字，省去上屏后删除的烦恼。&lt;/p&gt;&#xA;&lt;p&gt;例如，上面的案例中，可以输入&lt;code&gt;jinan&lt;/code&gt;，然后按下&lt;code&gt;[&lt;/code&gt;即可把&amp;quot;暨&amp;quot;字快速上屏。（前提是没有匹配到 &lt;em&gt;济南&lt;/em&gt; ）&lt;/p&gt;&#xA;&lt;h4 id=&#34;花里胡哨3候选项水平垂直分布&#34;&gt;&lt;a href=&#34;#%e8%8a%b1%e9%87%8c%e8%83%a1%e5%93%a83%e5%80%99%e9%80%89%e9%a1%b9%e6%b0%b4%e5%b9%b3%e5%9e%82%e7%9b%b4%e5%88%86%e5%b8%83&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;花里胡哨3：候选项水平/垂直分布&#xA;&lt;/h4&gt;&lt;p&gt;在IBus下，修改候选项水平或垂直分布，需要修改&lt;code&gt;$HOME/.config/ibus/rime/build/ibus_rime.yaml&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;style&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;horizontal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h4 id=&#34;花里胡哨4双拼兼容性问题&#34;&gt;&lt;a href=&#34;#%e8%8a%b1%e9%87%8c%e8%83%a1%e5%93%a84%e5%8f%8c%e6%8b%bc%e5%85%bc%e5%ae%b9%e6%80%a7%e9%97%ae%e9%a2%98&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;花里胡哨4：双拼兼容性问题&#xA;&lt;/h4&gt;&lt;p&gt;笔者习惯使用小鹤双拼输入文字，默认方案是针对全拼的，在双拼上还需要一定定制。参阅：&lt;a class=&#34;link&#34; href=&#34;https://github.com/iDvel/rime-ice/issues/133&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;常见问题 #133&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h5 id=&#34;拆字输入&#34;&gt;&lt;a href=&#34;#%e6%8b%86%e5%ad%97%e8%be%93%e5%85%a5&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;拆字输入&#xA;&lt;/h5&gt;&lt;p&gt;对双拼用户来说，在输入例如&lt;em&gt;淼&lt;/em&gt;这样的字时，可能会更希望以&lt;code&gt;uUuvuvuv&lt;/code&gt;输入。此时需要修改一下配置文件。可以直接修改&lt;code&gt;radical_pinyin.schema.yaml&lt;/code&gt;，也可以创建一个patch文件&lt;code&gt;radical_pinyin.custom.yaml&lt;/code&gt;，修改以下值：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;patch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 修改为双拼的拼写派生规则，因为不在同一个文件了，前面要加上文件名&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;speller/algebra&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# __include: radical_pinyin.schema.yaml:/algebra_pinyin         # 全拼&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# __include: radical_pinyin.schema.yaml:/algebra_double_pinyin  # 自然码双拼&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;__include&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;radical_pinyin.schema.yaml:/algebra_flypy           &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 小鹤双拼&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# __include: radical_pinyin.schema.yaml:/algebra_mspy           # 微软双拼&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# __include: radical_pinyin.schema.yaml:/algebra_sogou          # 搜狗双拼&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# __include: radical_pinyin.schema.yaml:/algebra_abc            # 智能ABC双拼&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# __include: radical_pinyin.schema.yaml:/algebra_ziguang        # 紫光双拼&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h5 id=&#34;自定义短语库&#34;&gt;&lt;a href=&#34;#%e8%87%aa%e5%ae%9a%e4%b9%89%e7%9f%ad%e8%af%ad%e5%ba%93&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;自定义短语库&#xA;&lt;/h5&gt;&lt;p&gt;双拼短语库文件不同于全拼的短语库文件&lt;code&gt;custom_phrase.txt&lt;/code&gt;，其名称为&lt;code&gt;custom_phrase_double.txt&lt;/code&gt;，需要自行创建并填入内容。&lt;/p&gt;&#xA;&lt;p&gt;当然，也可以懒得弄。&lt;/p&gt;&#xA;&lt;h5 id=&#34;融合拼音输入&#34;&gt;&lt;a href=&#34;#%e8%9e%8d%e5%90%88%e6%8b%bc%e9%9f%b3%e8%be%93%e5%85%a5&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;融合拼音输入&#xA;&lt;/h5&gt;&lt;p&gt;虽然我也没弄懂&lt;a class=&#34;link&#34; href=&#34;https://github.com/tumuyan/rime-melt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;融合拼音&lt;/a&gt;是啥，起什么作用。但总之是要修改&lt;code&gt;melt_eng.schema.yaml&lt;/code&gt; 文件，或创建一个&lt;code&gt;melt_eng.custom.yaml&lt;/code&gt;文件，修改或填入：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;patch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 修改为双拼的拼写派生规则，因为不在同一个文件了，前面要加上文件名&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;speller/algebra&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# __include: melt_eng.schema.yaml:/algebra_rime_ice       # 全拼&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# __include: melt_eng.schema.yaml:/algebra_double_pinyin  # 自然码双拼&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;__include&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;melt_eng.schema.yaml:/algebra_flypy           &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 小鹤双拼&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# __include: melt_eng.schema.yaml:/algebra_mspy           # 微软双拼&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# __include: melt_eng.schema.yaml:/algebra_sogou          # 搜狗双拼&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# __include: melt_eng.schema.yaml:/algebra_abc            # 智能ABC双拼&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# __include: melt_eng.schema.yaml:/algebra_ziguang        # 紫光双拼&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h5 id=&#34;输入显示双拼原始输入或全拼拼音&#34;&gt;&lt;a href=&#34;#%e8%be%93%e5%85%a5%e6%98%be%e7%a4%ba%e5%8f%8c%e6%8b%bc%e5%8e%9f%e5%a7%8b%e8%be%93%e5%85%a5%e6%88%96%e5%85%a8%e6%8b%bc%e6%8b%bc%e9%9f%b3&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;输入显示双拼原始输入或全拼拼音&#xA;&lt;/h5&gt;&lt;p&gt;这个选项控制的是，在例如输入&lt;code&gt;uhhd&lt;/code&gt;双拼编码时，屏幕上显示的是原始输入&lt;code&gt;uhhd&lt;/code&gt;，还是显示转译后的&lt;code&gt;shanghai&lt;/code&gt;。这一选项同步影响&lt;code&gt;Shift + Enter&lt;/code&gt;后上屏的输入结果。&lt;/p&gt;&#xA;&lt;p&gt;默认情况下，显示的是转译后的全拼编码&lt;code&gt;shanghai&lt;/code&gt;。如果希望显示原始输入，需要创建一个 &lt;code&gt;double_pinyin_flypy.custom.yaml&lt;/code&gt;文件：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;patch:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  # （按需选择）清空 preedit_format 中的内容，输入时显示双拼编码&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  translator/preedit_format: []&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h4 id=&#34;常见问题&#34;&gt;&lt;a href=&#34;#%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a2%98&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;常见问题&#xA;&lt;/h4&gt;&lt;p&gt;参阅：&lt;a class=&#34;link&#34; href=&#34;https://github.com/iDvel/rime-ice/issues/133&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;常见问题 #133&lt;/a&gt;&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
