<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Bash on Keith's Site</title><link>https://cqroot.github.io/docs/bash/</link><description>Recent content in Bash on Keith's Site</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 23 Aug 2026 20:17:12 +0800</lastBuildDate><atom:link href="https://cqroot.github.io/docs/bash/index.xml" rel="self" type="application/rss+xml"/><item><title>Bash 速查表</title><link>https://cqroot.github.io/docs/bash/01-cheatsheets/</link><pubDate>Sun, 23 Aug 2026 19:50:11 +0800</pubDate><guid>https://cqroot.github.io/docs/bash/01-cheatsheets/</guid><description>&lt;h2 id="1-bash-set-选项"&gt;1. Bash set 选项&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;选项&lt;/th&gt;
 &lt;th&gt;说明&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;-e&lt;/td&gt;
 &lt;td&gt;在有错误时退出&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;-n&lt;/td&gt;
 &lt;td&gt;读一遍脚本中的命令但不执行，用于检查脚本中的语法错误&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;-v&lt;/td&gt;
 &lt;td&gt;一边执行脚本，一边将执行过的脚本命令打印到标准错误输出&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;-x&lt;/td&gt;
 &lt;td&gt;提供跟踪执行信息，将执行的每一条命令和结果依次打印出来&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="2-条件判断"&gt;2. 条件判断&lt;/h2&gt;
&lt;h3 id="21-字符串"&gt;2.1. 字符串&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;条件&lt;/th&gt;
 &lt;th&gt;说明&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ -z &amp;quot;$STR&amp;quot; ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;字符串为空&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ -n &amp;quot;$STR&amp;quot; ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;字符串非空&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ &amp;quot;$STR1&amp;quot; == &amp;quot;$STR2&amp;quot; ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;字符串相等&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ &amp;quot;$STR1&amp;quot; != &amp;quot;$STR2&amp;quot; ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;字符串不相等&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ &amp;quot;$STR1&amp;quot; == *&amp;quot;$STR2&amp;quot;* ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;字符串包含子字符串&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="22-数字"&gt;2.2. 数字&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;条件&lt;/th&gt;
 &lt;th&gt;说明&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ NUM1 -eq NUM2 ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;NUM1 等于 NUM2&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ NUM1 -ne NUM2 ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;NUM1 不等于 NUM2&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ NUM1 -lt NUM2 ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;NUM1 小于 NUM2&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ NUM1 -le NUM2 ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;NUM1 小于等于 NUM2&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ NUM1 -gt NUM2 ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;NUM1 大于 NUM2&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ NUM1 -ge NUM2 ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;NUM1 大于等于 NUM2&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="23-文件"&gt;2.3. 文件&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;条件&lt;/th&gt;
 &lt;th&gt;说明&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ -f FILE ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;文件存在&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ -d FILE ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;目录存在&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ -e FILE ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;文件或目录存在&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ -h FILE ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;文件是符号链接&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ -r FILE ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;文件可读&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ -w FILE ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;文件可写&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ -x FILE ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;文件可执行&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;[[ -s FILE ]]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;文件尺寸大于 0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="3-位置参数"&gt;3. 位置参数&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;变量&lt;/th&gt;
 &lt;th&gt;说明&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;$@&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;所有位置参数，每个参数作为独立的参数传递。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;$*&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;所有位置参数合并为一个单词，由 IFS 的第一个字符分隔（通常为空格）。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;$#&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;位置参数数量&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="4-退出状态码"&gt;4. 退出状态码&lt;/h2&gt;
&lt;p&gt;常见的退出状态码：&lt;/p&gt;</description></item><item><title>Bash 代码片段</title><link>https://cqroot.github.io/docs/bash/02-snippets/</link><pubDate>Sun, 23 Aug 2026 20:15:48 +0800</pubDate><guid>https://cqroot.github.io/docs/bash/02-snippets/</guid><description>&lt;h2 id="1-获取脚本所在路径"&gt;1. 获取脚本所在路径&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 脚本所在路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SCRIPT_DIR&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;cd -- &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;dirname -- &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;BASH_SOURCE[0]&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &amp;amp;&amp;gt;/dev/null &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; pwd&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 脚本所在路径的父路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;PARENT_DIR&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;dirname &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;SCRIPT_DIR&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2-逐行处理输出"&gt;2. 逐行处理输出&lt;/h2&gt;
&lt;h3 id="21-逐行处理文件"&gt;2.1. 逐行处理文件&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; IFS&lt;span style="color:#f92672"&gt;=&lt;/span&gt; read -r line; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;line&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;done&lt;/span&gt; &amp;lt;FILENAME
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果不添加 &lt;code&gt;IFS=&lt;/code&gt;，读到的 &lt;code&gt;line&lt;/code&gt; 会删除行首和行尾的 IFS 空白字符（默认是空格和制表符），保留中间空白。&lt;/p&gt;
&lt;p&gt;例如对于以下字符串：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt; line 1
line 2
line 3
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;如果不添加 &lt;code&gt;IFS=&lt;/code&gt;，获取到的字符串是 &lt;code&gt;line 1&lt;/code&gt;、&lt;code&gt;line 2&lt;/code&gt;、&lt;code&gt;line 3&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;如果添加 &lt;code&gt;IFS=&lt;/code&gt;，获取到的字符串是 &lt;code&gt; line 1&lt;/code&gt;、&lt;code&gt;line 2&lt;/code&gt;、&lt;code&gt;line 3 &lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="22-逐行处理命令输出"&gt;2.2. 逐行处理命令输出&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; IFS&lt;span style="color:#f92672"&gt;=&lt;/span&gt; read -r line; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;line&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;done&lt;/span&gt; &amp;lt; &amp;lt;&lt;span style="color:#f92672"&gt;(&lt;/span&gt;ls -l&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="23-逐行处理变量内容"&gt;2.3. 逐行处理变量内容&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sometext&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;ls -l&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; IFS&lt;span style="color:#f92672"&gt;=&lt;/span&gt; read -r line; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;line&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;done&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;sometext&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3-打印连续数字"&gt;3. 打印连续数字&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 打印数字 1 到 10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#f92672"&gt;{&lt;/span&gt;1..10&lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 打印等宽的数字 01 到 10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#f92672"&gt;{&lt;/span&gt;01..10&lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="4-find"&gt;4. Find&lt;/h2&gt;
&lt;h3 id="41-找出大于某个大小的文件"&gt;4.1. 找出大于某个大小的文件&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;find . -type f -size +100M
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;find . -type f -size +100M -printf &lt;span style="color:#e6db74"&gt;&amp;#34;%k KB %p\n&amp;#34;&lt;/span&gt; | sort -rnk &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="42-找出并且打印文件大小"&gt;4.2. 找出并且打印文件大小&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;find . -name &lt;span style="color:#e6db74"&gt;&amp;#39;*.txt&amp;#39;&lt;/span&gt; -exec ls -lh &lt;span style="color:#f92672"&gt;{}&lt;/span&gt; +
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;find . -name &lt;span style="color:#e6db74"&gt;&amp;#39;*.txt&amp;#39;&lt;/span&gt; -printf &lt;span style="color:#e6db74"&gt;&amp;#34;%p %k KB\n&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Bash 常用操作</title><link>https://cqroot.github.io/docs/bash/03-common-actions/</link><pubDate>Sun, 23 Aug 2026 20:17:12 +0800</pubDate><guid>https://cqroot.github.io/docs/bash/03-common-actions/</guid><description>&lt;h2 id="1-比较两个目录"&gt;1. 比较两个目录&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;diff --brief --recursive dir1 dir2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2-输出格式化"&gt;2. 输出格式化&lt;/h2&gt;
&lt;h3 id="21-改变输出的-tab-大小"&gt;2.1. 改变输出的 tab 大小&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;expand -t4 &amp;lt;FILE&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="22-将输出按表格输出"&gt;2.2. 将输出按表格输出&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo STRING | column -t
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3-用户管理"&gt;3. 用户管理&lt;/h2&gt;
&lt;h3 id="31-设置执行-sudo-不需要密码"&gt;3.1. 设置执行 sudo 不需要密码&lt;/h3&gt;
&lt;p&gt;新建文件 &lt;code&gt;/etc/sudoers.d/YOURUSERNAME&lt;/code&gt;，内容如下：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;YOURUSERNAME ALL=(ALL) NOPASSWD: ALL
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;你也可以选择将其追加到 &lt;code&gt;/etc/sudoers&lt;/code&gt; 文件中。&lt;/p&gt;
&lt;h3 id="32-在多次错误输入后用户被锁定"&gt;3.2. 在多次错误输入后用户被锁定&lt;/h3&gt;
&lt;p&gt;可以修改文件 &lt;code&gt;/etc/security/faillock.conf&lt;/code&gt; 来改变用户允许输入密码错误的次数。&lt;/p&gt;
&lt;p&gt;找到以下行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# deny = 3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将注释去掉，将 3 改的足够大即可。&lt;/p&gt;
&lt;h2 id="4-统计某列中所有值出现的次数"&gt;4. 统计某列中所有值出现的次数&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xxx | sort | uniq -c | sort -nr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sort&lt;/code&gt;: 排序。这是为了让重复项排在一起。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uniq -c&lt;/code&gt;: 连续的重复项只会显示一个。&lt;code&gt;-c&lt;/code&gt; 会在每个项目前添加重复次数。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sort -nr&lt;/code&gt;: 排序。&lt;code&gt;-n&lt;/code&gt; 表示按数字排序。&lt;code&gt;-r&lt;/code&gt; 会按照从大到小排序。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="5-替换目录中某个字符串"&gt;5. 替换目录中某个字符串&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;grep -rlZ OLD_STR | xargs -0 sed -i &lt;span style="color:#e6db74"&gt;&amp;#39;s/OLD_STR/NEW_STR/g&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>