<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>每天学命令 on 夜云泊</title>
    <link>https://lifeislife.cn/tags/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4/</link>
    <description>feedId:57980998056508425+userId:73222296380546048 Recent content in 每天学命令 on 夜云泊</description>
    <generator>Hugo -- 0.163.1</generator>
    <language>zh</language>
    <lastBuildDate>Sun, 04 Dec 2022 16:32:59 +0000</lastBuildDate>
    <atom:link href="https://lifeislife.cn/tags/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>每天学命令-chown 修改文件拥有者</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-chown%E4%BF%AE%E6%94%B9%E6%96%87%E4%BB%B6%E6%8B%A5%E6%9C%89%E8%80%85/</link>
      <pubDate>Sun, 04 Dec 2022 16:32:59 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-chown%E4%BF%AE%E6%94%B9%E6%96%87%E4%BB%B6%E6%8B%A5%E6%9C%89%E8%80%85/</guid>
      <description>&lt;p&gt;chown 命令用来变更文件或目录的拥有者或所属群组，通过 chown 改变文件的拥有者和群组。用户可以是用户名或者用户 ID；组可以是组名或者组 ID；文件是以空格分开的文件列表，文件名也支持通配符。&lt;/p&gt;
&lt;h2 id=&#34;命令格式&#34;&gt;命令格式&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;chown &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;选项&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;用户或组&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;文件或目录&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-c或--changes           &lt;span class=&#34;c1&#34;&gt;#效果类似“-v”参数，但仅回报更改的部分；&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-f或--quite或—-silent    &lt;span class=&#34;c1&#34;&gt;#不显示错误信息；&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-h或--no-dereference    &lt;span class=&#34;c1&#34;&gt;#只对符号连接的文件作修改，而不更改其他任何相关文件；&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-R或--recursive         &lt;span class=&#34;c1&#34;&gt;#递归处理，将指定目录下的所有文件及子目录一并处理；&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-v或--version           &lt;span class=&#34;c1&#34;&gt;#显示指令执行过程；&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--dereference          &lt;span class=&#34;c1&#34;&gt;#效果和“-h”参数相同；&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--help                 &lt;span class=&#34;c1&#34;&gt;#在线帮助&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--reference&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;参考文件或目录&amp;gt;   &lt;span class=&#34;c1&#34;&gt;#把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同；&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--version    &lt;span class=&#34;c1&#34;&gt;#显示版本信息。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;实例&#34;&gt;实例&lt;/h2&gt;
&lt;p&gt;将文件&lt;code&gt;test.md&lt;/code&gt;拥有者改为&lt;code&gt;nic&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;chown nic test.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将目录&lt;code&gt;/home/nic/develop&lt;/code&gt;及其下面的所有文件、子目录的文件拥有者改为&lt;code&gt;nic&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;chown -R nic /home/nic/develop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<p>chown 命令用来变更文件或目录的拥有者或所属群组，通过 chown 改变文件的拥有者和群组。用户可以是用户名或者用户 ID；组可以是组名或者组 ID；文件是以空格分开的文件列表，文件名也支持通配符。</p>
<h2 id="命令格式">命令格式</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Bash" data-lang="Bash"><span class="line"><span class="cl">chown <span class="o">[</span>选项<span class="o">]</span> <span class="o">[</span>用户或组<span class="o">]</span> <span class="o">[</span>文件或目录<span class="o">]</span>
</span></span><span class="line"><span class="cl">-c或--changes           <span class="c1">#效果类似“-v”参数，但仅回报更改的部分；</span>
</span></span><span class="line"><span class="cl">-f或--quite或—-silent    <span class="c1">#不显示错误信息；</span>
</span></span><span class="line"><span class="cl">-h或--no-dereference    <span class="c1">#只对符号连接的文件作修改，而不更改其他任何相关文件；</span>
</span></span><span class="line"><span class="cl">-R或--recursive         <span class="c1">#递归处理，将指定目录下的所有文件及子目录一并处理；</span>
</span></span><span class="line"><span class="cl">-v或--version           <span class="c1">#显示指令执行过程；</span>
</span></span><span class="line"><span class="cl">--dereference          <span class="c1">#效果和“-h”参数相同；</span>
</span></span><span class="line"><span class="cl">--help                 <span class="c1">#在线帮助</span>
</span></span><span class="line"><span class="cl">--reference<span class="o">=</span>&lt;参考文件或目录&gt;   <span class="c1">#把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同；</span>
</span></span><span class="line"><span class="cl">--version    <span class="c1">#显示版本信息。</span>
</span></span></code></pre></div><h2 id="实例">实例</h2>
<p>将文件<code>test.md</code>拥有者改为<code>nic</code></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Bash" data-lang="Bash"><span class="line"><span class="cl">chown nic test.md
</span></span></code></pre></div><p>将目录<code>/home/nic/develop</code>及其下面的所有文件、子目录的文件拥有者改为<code>nic</code></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Bash" data-lang="Bash"><span class="line"><span class="cl">chown -R nic /home/nic/develop
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-tree 显示目录结构</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-tree%E6%98%BE%E7%A4%BA%E7%9B%AE%E5%BD%95%E7%BB%93%E6%9E%84/</link>
      <pubDate>Sun, 04 Dec 2022 16:31:54 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-tree%E6%98%BE%E7%A4%BA%E7%9B%AE%E5%BD%95%E7%BB%93%E6%9E%84/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&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;-a   &lt;span class=&#34;c1&#34;&gt;#显示所有文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-d   &lt;span class=&#34;c1&#34;&gt;#只显示目录（名称）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-l   &lt;span class=&#34;c1&#34;&gt;#显示链接文件的原始文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-f   &lt;span class=&#34;c1&#34;&gt;#显示所列出的文件或目录的完整目录路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-i   &lt;span class=&#34;c1&#34;&gt;#不以阶梯的形式显示文件或目录名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-q   &lt;span class=&#34;c1&#34;&gt;#将控制字符以?字符代替，显示文件和目录名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-N   &lt;span class=&#34;c1&#34;&gt;#直接显示文件或目录的名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-p   &lt;span class=&#34;c1&#34;&gt;#显示每个文件的权限信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-u   &lt;span class=&#34;c1&#34;&gt;#显示文件所有者或者uid&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-g   &lt;span class=&#34;c1&#34;&gt;#显示文件所属组或者gid&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-s   &lt;span class=&#34;c1&#34;&gt;#显示每个文件的大小信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-h   &lt;span class=&#34;c1&#34;&gt;#以可读的方式显示文件的大小信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-D   &lt;span class=&#34;c1&#34;&gt;#显示最后修改日期&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-v   &lt;span class=&#34;c1&#34;&gt;#按字母数字正序显示文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-r   &lt;span class=&#34;c1&#34;&gt;#按字母数字倒序显示文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-t   &lt;span class=&#34;c1&#34;&gt;#按最后时间排序显示文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-C   &lt;span class=&#34;c1&#34;&gt;#在文件和目录列表上加上色彩，便于区分文件类型&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-P pattern    &lt;span class=&#34;c1&#34;&gt;#只显示匹配正则表式的文件或目录名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-I pattern    &lt;span class=&#34;c1&#34;&gt;#与上结果相反&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;实例&#34;&gt;实例&lt;/h2&gt;
&lt;p&gt;显示当前目录及其子目录下的文件及目录名称&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;$ tree                 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── CODE_OF_CONDUCT.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── CONTRIBUTING.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Fedora-35
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── Dockerfile
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── Readme.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── LICENSE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── README.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Ubuntu-20
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── Dockerfile
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── Readme.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── init_edkrepo_conf.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── ubuntu20_dev_entrypoint.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── Windows-2022
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── Dockerfile
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── Readme.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;m&#34;&gt;3&lt;/span&gt; directories, &lt;span class=&#34;m&#34;&gt;12&lt;/span&gt; files
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;只显示一层目录结构&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;$ tree -L &lt;span class=&#34;m&#34;&gt;1&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── CODE_OF_CONDUCT.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── CONTRIBUTING.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Fedora-35
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── LICENSE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── README.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Ubuntu-20
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── Windows-2022
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;m&#34;&gt;3&lt;/span&gt; directories, &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt; files
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;只显示目录不显示文件&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;$ tree -d           
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Fedora-35
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Ubuntu-20
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── Windows-2022
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;m&#34;&gt;3&lt;/span&gt; directories
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Bash" data-lang="Bash"><span class="line"><span class="cl">-a   <span class="c1">#显示所有文件</span>
</span></span><span class="line"><span class="cl">-d   <span class="c1">#只显示目录（名称）</span>
</span></span><span class="line"><span class="cl">-l   <span class="c1">#显示链接文件的原始文件</span>
</span></span><span class="line"><span class="cl">-f   <span class="c1">#显示所列出的文件或目录的完整目录路径</span>
</span></span><span class="line"><span class="cl">-i   <span class="c1">#不以阶梯的形式显示文件或目录名称</span>
</span></span><span class="line"><span class="cl">-q   <span class="c1">#将控制字符以?字符代替，显示文件和目录名称</span>
</span></span><span class="line"><span class="cl">-N   <span class="c1">#直接显示文件或目录的名称</span>
</span></span><span class="line"><span class="cl">-p   <span class="c1">#显示每个文件的权限信息</span>
</span></span><span class="line"><span class="cl">-u   <span class="c1">#显示文件所有者或者uid</span>
</span></span><span class="line"><span class="cl">-g   <span class="c1">#显示文件所属组或者gid</span>
</span></span><span class="line"><span class="cl">-s   <span class="c1">#显示每个文件的大小信息</span>
</span></span><span class="line"><span class="cl">-h   <span class="c1">#以可读的方式显示文件的大小信息</span>
</span></span><span class="line"><span class="cl">-D   <span class="c1">#显示最后修改日期</span>
</span></span><span class="line"><span class="cl">-v   <span class="c1">#按字母数字正序显示文件</span>
</span></span><span class="line"><span class="cl">-r   <span class="c1">#按字母数字倒序显示文件</span>
</span></span><span class="line"><span class="cl">-t   <span class="c1">#按最后时间排序显示文件</span>
</span></span><span class="line"><span class="cl">-C   <span class="c1">#在文件和目录列表上加上色彩，便于区分文件类型</span>
</span></span><span class="line"><span class="cl">-P pattern    <span class="c1">#只显示匹配正则表式的文件或目录名称</span>
</span></span><span class="line"><span class="cl">-I pattern    <span class="c1">#与上结果相反</span>
</span></span></code></pre></div><h2 id="实例">实例</h2>
<p>显示当前目录及其子目录下的文件及目录名称</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Bash" data-lang="Bash"><span class="line"><span class="cl">$ tree                 
</span></span><span class="line"><span class="cl">.
</span></span><span class="line"><span class="cl">├── CODE_OF_CONDUCT.md
</span></span><span class="line"><span class="cl">├── CONTRIBUTING.md
</span></span><span class="line"><span class="cl">├── Fedora-35
</span></span><span class="line"><span class="cl">│   ├── Dockerfile
</span></span><span class="line"><span class="cl">│   └── Readme.md
</span></span><span class="line"><span class="cl">├── LICENSE
</span></span><span class="line"><span class="cl">├── README.md
</span></span><span class="line"><span class="cl">├── Ubuntu-20
</span></span><span class="line"><span class="cl">│   ├── Dockerfile
</span></span><span class="line"><span class="cl">│   ├── Readme.md
</span></span><span class="line"><span class="cl">│   ├── init_edkrepo_conf.sh
</span></span><span class="line"><span class="cl">│   └── ubuntu20_dev_entrypoint.sh
</span></span><span class="line"><span class="cl">└── Windows-2022
</span></span><span class="line"><span class="cl">    ├── Dockerfile
</span></span><span class="line"><span class="cl">    └── Readme.md
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="m">3</span> directories, <span class="m">12</span> files
</span></span></code></pre></div><p>只显示一层目录结构</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Bash" data-lang="Bash"><span class="line"><span class="cl">$ tree -L <span class="m">1</span>              
</span></span><span class="line"><span class="cl">.
</span></span><span class="line"><span class="cl">├── CODE_OF_CONDUCT.md
</span></span><span class="line"><span class="cl">├── CONTRIBUTING.md
</span></span><span class="line"><span class="cl">├── Fedora-35
</span></span><span class="line"><span class="cl">├── LICENSE
</span></span><span class="line"><span class="cl">├── README.md
</span></span><span class="line"><span class="cl">├── Ubuntu-20
</span></span><span class="line"><span class="cl">└── Windows-2022
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="m">3</span> directories, <span class="m">4</span> files
</span></span></code></pre></div><p>只显示目录不显示文件</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Bash" data-lang="Bash"><span class="line"><span class="cl">$ tree -d           
</span></span><span class="line"><span class="cl">.
</span></span><span class="line"><span class="cl">├── Fedora-35
</span></span><span class="line"><span class="cl">├── Ubuntu-20
</span></span><span class="line"><span class="cl">└── Windows-2022
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="m">3</span> directories
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-chattr 修改文件与目录属性防止误删除</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-chattr%E4%BF%AE%E6%94%B9%E6%96%87%E4%BB%B6%E4%B8%8E%E7%9B%AE%E5%BD%95%E5%B1%9E%E6%80%A7%E9%98%B2%E6%AD%A2%E8%AF%AF%E5%88%A0%E9%99%A4/</link>
      <pubDate>Sun, 25 Sep 2022 11:20:35 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-chattr%E4%BF%AE%E6%94%B9%E6%96%87%E4%BB%B6%E4%B8%8E%E7%9B%AE%E5%BD%95%E5%B1%9E%E6%80%A7%E9%98%B2%E6%AD%A2%E8%AF%AF%E5%88%A0%E9%99%A4/</guid>
      <description>&lt;h2 id=&#34;使用背景&#34;&gt;使用背景&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;chattr&lt;/code&gt;命令可以修改 Linux 的文件属性，在类 Unix 等发行版中，该命令能够有效防止文件和目录被意外的删除或修改。文件在 Linux 中被描述为一个数据结构，&lt;code&gt;chattr&lt;/code&gt; 命令在大多数现代 Linux 操作系统中是可用的，可以修改文件属性，一旦定义文件的隐藏属性，那么&lt;strong&gt;该文件的拥有者和 root 用户也无权操作该文件&lt;/strong&gt;，只能解除文件的隐藏属性。这就可以有效的避免被误删除。&lt;/p&gt;
&lt;h2 id=&#34;命令格式&#34;&gt;命令格式&lt;/h2&gt;
&lt;p&gt;一个完整的命令一般由命令 (chattr)，可选项 (option)，操作符 (operator) 与属性 (attribute) 组成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;chattr &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;option&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;operator&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;attribute&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;  file
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;[option] 可选项：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;-R， 递归更改目录及其内容的属性。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-V， 详细说明chattr的输出并打印程序版本。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-f， 隐藏大多数错误消息。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;[operator] 操作符：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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&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;删除指定属性&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;o&#34;&gt;=&lt;/span&gt;，直接设置文件属性为指定属性
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;[attribute] 属性如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;a， 只能向文件中添加数据
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A，不更新文件或目录的最后访问时间
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;i， 文件或目录不可改变
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;使用实例&#34;&gt;使用实例&lt;/h2&gt;
&lt;h3 id=&#34;lsattr-命令检查文件已有属性&#34;&gt;lsattr 命令检查文件已有属性&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;-d：如果目标是目录，只会列出目录本身的隐藏属性，而不会列出所含文件或子目录的隐藏属性信息
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-R：作用于目录时，会显示所有的子目录和文件的隐藏信息
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&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;$ lsattr clash
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/glados.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/clash-linux-386-v1.10.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/Country.mmdb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/cache.db
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/clash-linux-amd64-v1.10.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/dashboard
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ lsattr -d clash
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ lsattr -R clash
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/glados.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/clash-linux-386-v1.10.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/Country.mmdb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/cache.db
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/clash-linux-amd64-v1.10.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/dashboard
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;clash/dashboard:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/dashboard/manifest.webmanifest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/dashboard/assets
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;clash/dashboard/assets:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/dashboard/assets/logo.b453e72f.png
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/dashboard/assets/index.408383.js
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/dashboard/assets/index.966f8a.css
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/dashboard/assets/vendor.ca5569.js
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/dashboard/sw.js
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/dashboard/workbox-7ce28d.js
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e------- clash/dashboard/index.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;禁止对文件testmd重命名移动或删除也不能修改其内容&#34;&gt;禁止对文件&lt;code&gt;test.md&lt;/code&gt;重命名，移动或删除，也不能修改其内容&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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 chattr +i test.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;尝试修改该文件，将会被拒绝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;$ rm -f ./test.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm: cannot remove &lt;span class=&#34;s1&#34;&gt;&amp;#39;./test.md&amp;#39;&lt;/span&gt;: Operation not permitted
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Hello World!&amp;#39;&lt;/span&gt; &amp;gt; test.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash: ./test.md: Operation not permitted
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ mv ./test.md ./fileDir
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mv: cannot move &lt;span class=&#34;s1&#34;&gt;&amp;#39;./test.md&amp;#39;&lt;/span&gt; to &lt;span class=&#34;s1&#34;&gt;&amp;#39;./fileDir/test.md&amp;#39;&lt;/span&gt;: Operation not permitted
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;禁止修改文件夹filedir及文件夹中的数据&#34;&gt;禁止修改文件夹&lt;code&gt;fileDir&lt;/code&gt;及文件夹中的数据&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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 ./fileDir &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; touch ./fileDir/test.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo chattr +i -R ./fileDir
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;尝试修改文件夹中的内容：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;$ rm -rf ./fileDir
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm: cannot remove &lt;span class=&#34;s1&#34;&gt;&amp;#39;./fileDir/test.md&amp;#39;&lt;/span&gt;: Operation not permitted
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;允许向文件添加内容禁止修改或删除内容禁止移动文件&#34;&gt;允许向文件添加内容，禁止修改或删除内容，禁止移动文件&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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 chattr +a ./test.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ lsattr ./test.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-----a--------e--- ./test.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Hello World!&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; ./test.md   &lt;span class=&#34;c1&#34;&gt;# 追加内容 OK&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;hello&amp;#34;&lt;/span&gt;&amp;gt; ./test.md            &lt;span class=&#34;c1&#34;&gt;# 修改内容 NO&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash: ./test.md: Operation not permitted
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;只允许在目录filedir中建立和修改文件但是禁止删除移动文件&#34;&gt;只允许在目录&lt;code&gt;fileDir&lt;/code&gt;中建立和修改文件，但是禁止删除、移动文件&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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 chattr +a ./fileDir
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;取消某个属性&#34;&gt;取消某个属性&lt;/h3&gt;
&lt;p&gt;使用&lt;code&gt;-&lt;/code&gt;操作符即可：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;c1&#34;&gt;# 先给文件添加属性a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo chattr +a ./test.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ lsattr ./test.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-----a--------e--- ./test.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;c1&#34;&gt;# 取消属性a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo chattr -a ./test.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ lsattr ./test.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--------------e--- ./test.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<h2 id="使用背景">使用背景</h2>
<p><code>chattr</code>命令可以修改 Linux 的文件属性，在类 Unix 等发行版中，该命令能够有效防止文件和目录被意外的删除或修改。文件在 Linux 中被描述为一个数据结构，<code>chattr</code> 命令在大多数现代 Linux 操作系统中是可用的，可以修改文件属性，一旦定义文件的隐藏属性，那么<strong>该文件的拥有者和 root 用户也无权操作该文件</strong>，只能解除文件的隐藏属性。这就可以有效的避免被误删除。</p>
<h2 id="命令格式">命令格式</h2>
<p>一个完整的命令一般由命令 (chattr)，可选项 (option)，操作符 (operator) 与属性 (attribute) 组成：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">chattr <span class="o">[</span>option<span class="o">]</span> <span class="o">[</span>operator<span class="o">]</span> <span class="o">[</span>attribute<span class="o">]</span>  file
</span></span></code></pre></div><p>[option] 可选项：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">-R， 递归更改目录及其内容的属性。
</span></span><span class="line"><span class="cl">-V， 详细说明chattr的输出并打印程序版本。
</span></span><span class="line"><span class="cl">-f， 隐藏大多数错误消息。
</span></span></code></pre></div><p>[operator] 操作符：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">+，追加指定属性到文件已存在属性中
</span></span><span class="line"><span class="cl">-， <span class="nv">删除指定属性</span>
</span></span><span class="line"><span class="cl"><span class="o">=</span>，直接设置文件属性为指定属性
</span></span></code></pre></div><p>[attribute] 属性如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">a， 只能向文件中添加数据
</span></span><span class="line"><span class="cl">A，不更新文件或目录的最后访问时间
</span></span><span class="line"><span class="cl">i， 文件或目录不可改变
</span></span></code></pre></div><h2 id="使用实例">使用实例</h2>
<h3 id="lsattr-命令检查文件已有属性">lsattr 命令检查文件已有属性</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">-d：如果目标是目录，只会列出目录本身的隐藏属性，而不会列出所含文件或子目录的隐藏属性信息
</span></span><span class="line"><span class="cl">-R：作用于目录时，会显示所有的子目录和文件的隐藏信息
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ lsattr clash
</span></span><span class="line"><span class="cl">--------------e------- clash/glados.yaml
</span></span><span class="line"><span class="cl">--------------e------- clash/clash-linux-386-v1.10.0
</span></span><span class="line"><span class="cl">--------------e------- clash/Country.mmdb
</span></span><span class="line"><span class="cl">--------------e------- clash/cache.db
</span></span><span class="line"><span class="cl">--------------e------- clash/clash-linux-amd64-v1.10.0
</span></span><span class="line"><span class="cl">--------------e------- clash/dashboard
</span></span><span class="line"><span class="cl">$ lsattr -d clash
</span></span><span class="line"><span class="cl">--------------e------- clash
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ lsattr -R clash
</span></span><span class="line"><span class="cl">--------------e------- clash/glados.yaml
</span></span><span class="line"><span class="cl">--------------e------- clash/clash-linux-386-v1.10.0
</span></span><span class="line"><span class="cl">--------------e------- clash/Country.mmdb
</span></span><span class="line"><span class="cl">--------------e------- clash/cache.db
</span></span><span class="line"><span class="cl">--------------e------- clash/clash-linux-amd64-v1.10.0
</span></span><span class="line"><span class="cl">--------------e------- clash/dashboard
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">clash/dashboard:
</span></span><span class="line"><span class="cl">--------------e------- clash/dashboard/manifest.webmanifest
</span></span><span class="line"><span class="cl">--------------e------- clash/dashboard/assets
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">clash/dashboard/assets:
</span></span><span class="line"><span class="cl">--------------e------- clash/dashboard/assets/logo.b453e72f.png
</span></span><span class="line"><span class="cl">--------------e------- clash/dashboard/assets/index.408383.js
</span></span><span class="line"><span class="cl">--------------e------- clash/dashboard/assets/index.966f8a.css
</span></span><span class="line"><span class="cl">--------------e------- clash/dashboard/assets/vendor.ca5569.js
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">--------------e------- clash/dashboard/sw.js
</span></span><span class="line"><span class="cl">--------------e------- clash/dashboard/workbox-7ce28d.js
</span></span><span class="line"><span class="cl">--------------e------- clash/dashboard/index.html
</span></span></code></pre></div><h3 id="禁止对文件testmd重命名移动或删除也不能修改其内容">禁止对文件<code>test.md</code>重命名，移动或删除，也不能修改其内容</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo chattr +i test.md
</span></span></code></pre></div><p>尝试修改该文件，将会被拒绝：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ rm -f ./test.md
</span></span><span class="line"><span class="cl">rm: cannot remove <span class="s1">&#39;./test.md&#39;</span>: Operation not permitted
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ <span class="nb">echo</span> <span class="s1">&#39;Hello World!&#39;</span> &gt; test.md
</span></span><span class="line"><span class="cl">bash: ./test.md: Operation not permitted
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ mv ./test.md ./fileDir
</span></span><span class="line"><span class="cl">mv: cannot move <span class="s1">&#39;./test.md&#39;</span> to <span class="s1">&#39;./fileDir/test.md&#39;</span>: Operation not permitted
</span></span></code></pre></div><h3 id="禁止修改文件夹filedir及文件夹中的数据">禁止修改文件夹<code>fileDir</code>及文件夹中的数据</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mkdir ./fileDir <span class="o">&amp;&amp;</span> touch ./fileDir/test.md
</span></span><span class="line"><span class="cl">sudo chattr +i -R ./fileDir
</span></span></code></pre></div><p>尝试修改文件夹中的内容：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ rm -rf ./fileDir
</span></span><span class="line"><span class="cl">rm: cannot remove <span class="s1">&#39;./fileDir/test.md&#39;</span>: Operation not permitted
</span></span></code></pre></div><h3 id="允许向文件添加内容禁止修改或删除内容禁止移动文件">允许向文件添加内容，禁止修改或删除内容，禁止移动文件</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ sudo chattr +a ./test.md
</span></span><span class="line"><span class="cl">$ lsattr ./test.md
</span></span><span class="line"><span class="cl">-----a--------e--- ./test.md
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ <span class="nb">echo</span> <span class="s2">&#34;Hello World!&#34;</span> &gt;&gt; ./test.md   <span class="c1"># 追加内容 OK</span>
</span></span><span class="line"><span class="cl">$ <span class="nb">echo</span> <span class="s2">&#34;hello&#34;</span>&gt; ./test.md            <span class="c1"># 修改内容 NO</span>
</span></span><span class="line"><span class="cl">bash: ./test.md: Operation not permitted
</span></span></code></pre></div><h3 id="只允许在目录filedir中建立和修改文件但是禁止删除移动文件">只允许在目录<code>fileDir</code>中建立和修改文件，但是禁止删除、移动文件</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo chattr +a ./fileDir
</span></span></code></pre></div><h3 id="取消某个属性">取消某个属性</h3>
<p>使用<code>-</code>操作符即可：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 先给文件添加属性a</span>
</span></span><span class="line"><span class="cl">$ sudo chattr +a ./test.md
</span></span><span class="line"><span class="cl">$ lsattr ./test.md
</span></span><span class="line"><span class="cl">-----a--------e--- ./test.md
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 取消属性a</span>
</span></span><span class="line"><span class="cl">$ sudo chattr -a ./test.md
</span></span><span class="line"><span class="cl">$ lsattr ./test.md
</span></span><span class="line"><span class="cl">--------------e--- ./test.md
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-nohup 后台运行</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-nohup%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8C/</link>
      <pubDate>Sat, 10 Sep 2022 17:14:58 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-nohup%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8C/</guid>
      <description>&lt;p&gt;使用 MobaXertm 连接服务器后，想要在运行一个下载任务，使用&lt;code&gt;&amp;amp;&lt;/code&gt;挂在后台后，退出 MobaXterm，后台的任务也随之中断，于是搜到这个&lt;code&gt;nohup&lt;/code&gt;命令，可以完成我的需求。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;nohup&lt;/code&gt;意思是 No Hang Up，不要挂起的意思，即使退出终端也不会中断任务。&lt;/p&gt;
&lt;p&gt;为了方便以后查阅，这里总结一下关于后台运行相关的命令。首先是最常用的&lt;code&gt;&amp;amp;&lt;/code&gt;符号。&lt;/p&gt;
&lt;h2 id=&#34;-后台运行&#34;&gt;&amp;amp; 后台运行&lt;/h2&gt;
&lt;p&gt;比如执行编译任务时通常会占用终端前台，这时候无法再执行其他命令，除非再开一个终端，对于有 GUI 界面时，再开一个终端很方便，但是如果是服务器就只能再想办法了。 &lt;code&gt;&amp;amp;&lt;/code&gt;可以将命令执行过程放在后台运行，如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;$ make  &amp;gt;  make.log  2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;&amp;amp;&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;o&#34;&gt;[&lt;/span&gt;1&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;16586&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;2&amp;gt;&amp;amp;1&lt;/code&gt; 是将标准出错重定向到标准输出，这里的标准输出已经重定向到了&lt;code&gt;make.log&lt;/code&gt;文件，即将标准出错也输出到&lt;code&gt;make.log&lt;/code&gt;文件中。最后一个&lt;code&gt;&amp;amp;&lt;/code&gt;，是让该命令在后台执行。
试想&lt;code&gt;2&amp;gt;1&lt;/code&gt;代表什么，&lt;code&gt;2&lt;/code&gt;与&lt;code&gt;&amp;gt;&lt;/code&gt;结合代表错误重定向，而&lt;code&gt;1&lt;/code&gt;则代表错误重定向到一个文件&lt;code&gt;1&lt;/code&gt;，而不代表标准输出；换成&lt;code&gt;2&amp;gt;&amp;amp;1&lt;/code&gt;，&lt;code&gt;&amp;amp;&lt;/code&gt;与&lt;code&gt;1&lt;/code&gt;结合就代表标准输出了，就变成错误重定向到标准输出。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在后台运行&lt;code&gt;make&lt;/code&gt;进行编译，并将输出结果（错误和正常输出）都保存到&lt;code&gt;make.log&lt;/code&gt;文件中，提交任务成功后，会显示进程 ID，编译的进程 ID 为 &lt;code&gt;16586&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;有了进程 ID 我们可以监控，也可以中断进程：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;c1&#34;&gt;# 查看进程状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ps -ef &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep &lt;span class=&#34;m&#34;&gt;16586&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;c1&#34;&gt;# 中断进程&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;nb&#34;&gt;kill&lt;/span&gt; -9 &lt;span class=&#34;m&#34;&gt;16586&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;但是使用 &lt;code&gt;&amp;amp;&lt;/code&gt;时关闭终端后，进程也会随之关闭。如果想要在后台持续运行程序，就需要&lt;code&gt;nohup&lt;/code&gt;命令。&lt;/p&gt;
&lt;h2 id=&#34;nohup-使用&#34;&gt;nohup 使用&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;$ nohup make  &amp;gt;  make.log  2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;&amp;amp;&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;o&#34;&gt;[&lt;/span&gt;1&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;112233&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;命令功能同上，但是终端关闭，后台程序也会继续执行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;：终端关闭，是指带 GUI 的界面里终端，如果使用 SSH 等登陆，比如使用 MobaXterm，一个 session 相当于一个登陆账户，如果异常退出了这个账户，那么后台执行的程序也会中断。如果需要继续执行，需要正常退出账户，执行&lt;code&gt;exit&lt;/code&gt;命令。&lt;/p&gt;
&lt;h2 id=&#34;汇总&#34;&gt;汇总&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;fg&lt;/span&gt;        &lt;span class=&#34;c1&#34;&gt;# 将后台中的命令调至前台继续运行&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;nb&#34;&gt;bg&lt;/span&gt;        &lt;span class=&#34;c1&#34;&gt;# 将一个在后台暂停的命令，变成继续执行 (在后台执行)&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;nb&#34;&gt;jobs&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;# 查看当前有多少在后台运行的命令&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;nb&#34;&gt;kill&lt;/span&gt; %num &lt;span class=&#34;c1&#34;&gt;# 终止进程num&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;p&#34;&gt;&amp;amp;&lt;/span&gt;         &lt;span class=&#34;c1&#34;&gt;# 加在命令后可以将其置于后台运行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ctrl + z  &lt;span class=&#34;c1&#34;&gt;# 置于后台，并且暂停不可执行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ctrl + c  &lt;span class=&#34;c1&#34;&gt;# 终止前台进程&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ctrl + &lt;span class=&#34;se&#34;&gt;\ &lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 退出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ctrl + d  &lt;span class=&#34;c1&#34;&gt;# 结束当前输入(即用户不再给当前程序发出指令)，那么Linux通常将结束当前程序&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<p>使用 MobaXertm 连接服务器后，想要在运行一个下载任务，使用<code>&amp;</code>挂在后台后，退出 MobaXterm，后台的任务也随之中断，于是搜到这个<code>nohup</code>命令，可以完成我的需求。</p>
<p><code>nohup</code>意思是 No Hang Up，不要挂起的意思，即使退出终端也不会中断任务。</p>
<p>为了方便以后查阅，这里总结一下关于后台运行相关的命令。首先是最常用的<code>&amp;</code>符号。</p>
<h2 id="-后台运行">&amp; 后台运行</h2>
<p>比如执行编译任务时通常会占用终端前台，这时候无法再执行其他命令，除非再开一个终端，对于有 GUI 界面时，再开一个终端很方便，但是如果是服务器就只能再想办法了。 <code>&amp;</code>可以将命令执行过程放在后台运行，如：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ make  &gt;  make.log  2&gt;<span class="p">&amp;</span><span class="m">1</span>  <span class="p">&amp;</span> 
</span></span><span class="line"><span class="cl"><span class="o">[</span>1<span class="o">]</span> <span class="m">16586</span>
</span></span></code></pre></div><blockquote>
<p><code>2&gt;&amp;1</code> 是将标准出错重定向到标准输出，这里的标准输出已经重定向到了<code>make.log</code>文件，即将标准出错也输出到<code>make.log</code>文件中。最后一个<code>&amp;</code>，是让该命令在后台执行。
试想<code>2&gt;1</code>代表什么，<code>2</code>与<code>&gt;</code>结合代表错误重定向，而<code>1</code>则代表错误重定向到一个文件<code>1</code>，而不代表标准输出；换成<code>2&gt;&amp;1</code>，<code>&amp;</code>与<code>1</code>结合就代表标准输出了，就变成错误重定向到标准输出。</p>
</blockquote>
<p>在后台运行<code>make</code>进行编译，并将输出结果（错误和正常输出）都保存到<code>make.log</code>文件中，提交任务成功后，会显示进程 ID，编译的进程 ID 为 <code>16586</code>。</p>
<p>有了进程 ID 我们可以监控，也可以中断进程：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 查看进程状态</span>
</span></span><span class="line"><span class="cl">ps -ef <span class="p">|</span> grep <span class="m">16586</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 中断进程</span>
</span></span><span class="line"><span class="cl"><span class="nb">kill</span> -9 <span class="m">16586</span>
</span></span></code></pre></div><p>但是使用 <code>&amp;</code>时关闭终端后，进程也会随之关闭。如果想要在后台持续运行程序，就需要<code>nohup</code>命令。</p>
<h2 id="nohup-使用">nohup 使用</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Bash" data-lang="Bash"><span class="line"><span class="cl">$ nohup make  &gt;  make.log  2&gt;<span class="p">&amp;</span><span class="m">1</span>  <span class="p">&amp;</span> 
</span></span><span class="line"><span class="cl"><span class="o">[</span>1<span class="o">]</span> <span class="m">112233</span>
</span></span></code></pre></div><p>命令功能同上，但是终端关闭，后台程序也会继续执行。</p>
<p><strong>NOTE</strong>：终端关闭，是指带 GUI 的界面里终端，如果使用 SSH 等登陆，比如使用 MobaXterm，一个 session 相当于一个登陆账户，如果异常退出了这个账户，那么后台执行的程序也会中断。如果需要继续执行，需要正常退出账户，执行<code>exit</code>命令。</p>
<h2 id="汇总">汇总</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Bash" data-lang="Bash"><span class="line"><span class="cl"><span class="nb">fg</span>        <span class="c1"># 将后台中的命令调至前台继续运行</span>
</span></span><span class="line"><span class="cl"><span class="nb">bg</span>        <span class="c1"># 将一个在后台暂停的命令，变成继续执行 (在后台执行)</span>
</span></span><span class="line"><span class="cl"><span class="nb">jobs</span>      <span class="c1"># 查看当前有多少在后台运行的命令</span>
</span></span><span class="line"><span class="cl"><span class="nb">kill</span> %num <span class="c1"># 终止进程num</span>
</span></span><span class="line"><span class="cl"><span class="p">&amp;</span>         <span class="c1"># 加在命令后可以将其置于后台运行</span>
</span></span><span class="line"><span class="cl">ctrl + z  <span class="c1"># 置于后台，并且暂停不可执行</span>
</span></span><span class="line"><span class="cl">ctrl + c  <span class="c1"># 终止前台进程</span>
</span></span><span class="line"><span class="cl">ctrl + <span class="se">\ </span> <span class="c1"># 退出</span>
</span></span><span class="line"><span class="cl">ctrl + d  <span class="c1"># 结束当前输入(即用户不再给当前程序发出指令)，那么Linux通常将结束当前程序</span>
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-生成指定大小文件</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-%E7%94%9F%E6%88%90%E6%8C%87%E5%AE%9A%E5%A4%A7%E5%B0%8F%E6%96%87%E4%BB%B6/</link>
      <pubDate>Sat, 23 Jul 2022 16:14:38 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-%E7%94%9F%E6%88%90%E6%8C%87%E5%AE%9A%E5%A4%A7%E5%B0%8F%E6%96%87%E4%BB%B6/</guid>
      <description>&lt;h2 id=&#34;使用背景&#34;&gt;使用背景&lt;/h2&gt;
&lt;p&gt;在测试下载速度，或者测试加解密文件，亦或者制作文件系统时都需要一些指定大小的文件。Linux 有一些命令可以快速完成这样的任务。接下来介绍几个好用的命令。&lt;/p&gt;
&lt;h3 id=&#34;空洞文件&#34;&gt;空洞文件&lt;/h3&gt;
&lt;p&gt;在 Unix 文件操作中，操作文件的位移量可以大于文件的当前长度，在下一次写操作时，就会把文件撑大（Extend），在文件里创建空洞（Hole），没有被实际写入的部分都是 0。空洞文件是否占用实际磁盘空间由文件系统觉得，&lt;strong&gt;Linux 中空洞文件不占用实际磁盘空间&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;fallocate&#34;&gt;fallocate&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;fallocate&lt;/code&gt;用于将块预分配给文件。对于支持&lt;code&gt;fallocate&lt;/code&gt;系统调用的文件系统，这可以通过分配块并将其标记为未初始化来快速完成，因此不需要对数据块进行 I/O 操作。这是创建文件而不是用零填充的更快的方法。大文件几乎可以立即创建，而不必等待任何 I/O 操作完成。&lt;/p&gt;
&lt;p&gt;语法：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;fallocate &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-n&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-o offset&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; -l length filename
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;d&lt;/code&gt;: 检测零并替换为空洞。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-n&lt;/code&gt;：指定文件的大小，单位为字节。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-o&lt;/code&gt;：指定文件的偏移量，可以跟二进制$2^{N}$后缀&lt;code&gt;KiB&lt;/code&gt;，&lt;code&gt;MiB&lt;/code&gt;，&lt;code&gt;GiB&lt;/code&gt;，&lt;code&gt;TiB&lt;/code&gt;，&lt;code&gt;PiB&lt;/code&gt;和&lt;code&gt;EiB&lt;/code&gt;（&lt;code&gt;iB&lt;/code&gt;为可选，例如，&lt;code&gt;K&lt;/code&gt;的含义与&lt;code&gt;KiB&lt;/code&gt;的含义相同或后缀&lt;code&gt;KB&lt;/code&gt;，&lt;code&gt;MB&lt;/code&gt;，&lt;code&gt;GB&lt;/code&gt;，&lt;code&gt;PB&lt;/code&gt;和&lt;code&gt;EB&lt;/code&gt;的十进制（$10^{N}$）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-l&lt;/code&gt;：指定文件的大小，单位同上。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-p, --punch-hole&lt;/code&gt;: 将某个范围替换为空洞 (连带打开 -n)。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;filename&lt;/code&gt;：指定文件名。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;示例：
分配一个大小为&lt;code&gt;512MB&lt;/code&gt;的文件，文件名为&lt;code&gt;efi.img&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;fallocate -l 512M efi.img
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将&lt;code&gt;efi.img&lt;/code&gt;文件中的&lt;code&gt;0&lt;/code&gt;替换为空洞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;fallocate -d efi.img
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;从偏移 128M 的位置挖一个 10M 大小的洞&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;fallocate -p -o 128M  -l 10M  efi.img
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;dd&#34;&gt;dd&lt;/h2&gt;
&lt;p&gt;Linux &lt;code&gt;dd&lt;/code&gt; 命令用于读取、转换并输出数据。&lt;code&gt;dd&lt;/code&gt; 可从标准输入或文件中读取数据，根据指定的格式来转换数据，再输出到文件、设备或标准输出&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;dd 的原意为 data duplicator，但由于 dd 属于较低阶的资料处理工具，通常都会以管理者（root）权限来执行，如果稍有不慎，也很容易造成严重的后果（例如整颗硬碟的资料不见等等），所以有些人也把 dd 取名为 data destroyer。&lt;a href=&#34;https://blog.gtwang.org/linux/dd-command-examples/&#34;&gt;dd 指令教学与实用范例，备份与回复资料的小工具 - GT Wang&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;if=FILE&lt;/code&gt;     : 指定输入文件，若不指定则从标注输入读取。这里指定为/dev/zero 是 Linux 的一个伪文件，它可以产生连续不断的 null 流（二进制的 0）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;of=FILE&lt;/code&gt;      : 指定输出文件，若不指定则输出到标准输出。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bs=BYTES&lt;/code&gt;     : 每次读写的字节数，可以使用单位 K、M、G 等等。另外输入输出可以分别用 ibs、obs 指定，若使用 bs，则表示是 ibs 和 obs 都是用该参数。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;count=BLOCKS&lt;/code&gt; : 读取的 block 数，block 的大小由 ibs 指定。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;示例：
生成一个&lt;code&gt;1g&lt;/code&gt;大小的文件，内容全为&lt;code&gt;0&lt;/code&gt;，块大小为&lt;code&gt;1M&lt;/code&gt;，文件名为&lt;code&gt;efi.img&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;dd &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/dev/zero &lt;span class=&#34;nv&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;efi.img &lt;span class=&#34;nv&#34;&gt;bs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1M &lt;span class=&#34;nv&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1024&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;生成一个&lt;code&gt;1g&lt;/code&gt;大小的文件，内容为随机数，块大小为&lt;code&gt;10M&lt;/code&gt;，文件名为&lt;code&gt;efi.img&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;dd &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/dev/urandom &lt;span class=&#34;nv&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;efi.img &lt;span class=&#34;nv&#34;&gt;bs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;10M &lt;span class=&#34;nv&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1024&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;truncate&#34;&gt;truncate&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-s&lt;/code&gt;：指定文件的大小，可以跟二进制$2^{N}$后缀&lt;code&gt;KiB&lt;/code&gt;，&lt;code&gt;MiB&lt;/code&gt;，&lt;code&gt;GiB&lt;/code&gt;，&lt;code&gt;TiB&lt;/code&gt;，&lt;code&gt;PiB&lt;/code&gt;和&lt;code&gt;EiB&lt;/code&gt;（&lt;code&gt;iB&lt;/code&gt;为可选，例如，&lt;code&gt;K&lt;/code&gt;的含义与&lt;code&gt;KiB&lt;/code&gt;的含义相同或后缀&lt;code&gt;KB&lt;/code&gt;，&lt;code&gt;MB&lt;/code&gt;，&lt;code&gt;GB&lt;/code&gt;，&lt;code&gt;PB&lt;/code&gt;和&lt;code&gt;EB&lt;/code&gt;的十进制（$10^{N}$）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;示例：
生成一个 100M 大小的文件，文件名为&lt;code&gt;efi.img&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;truncate -s 100M efi.img
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考&#34;&gt;参考&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://lrita.github.io/images/posts/filesystem/Linux_File_Hole_And_Sparse_Files.pdf&#34;&gt;Linux 文件空洞与稀疏文件&lt;/a&gt;&lt;/p&gt;
</description>
      <content:encoded><![CDATA[<h2 id="使用背景">使用背景</h2>
<p>在测试下载速度，或者测试加解密文件，亦或者制作文件系统时都需要一些指定大小的文件。Linux 有一些命令可以快速完成这样的任务。接下来介绍几个好用的命令。</p>
<h3 id="空洞文件">空洞文件</h3>
<p>在 Unix 文件操作中，操作文件的位移量可以大于文件的当前长度，在下一次写操作时，就会把文件撑大（Extend），在文件里创建空洞（Hole），没有被实际写入的部分都是 0。空洞文件是否占用实际磁盘空间由文件系统觉得，<strong>Linux 中空洞文件不占用实际磁盘空间</strong>。</p>
<h2 id="fallocate">fallocate</h2>
<p><code>fallocate</code>用于将块预分配给文件。对于支持<code>fallocate</code>系统调用的文件系统，这可以通过分配块并将其标记为未初始化来快速完成，因此不需要对数据块进行 I/O 操作。这是创建文件而不是用零填充的更快的方法。大文件几乎可以立即创建，而不必等待任何 I/O 操作完成。</p>
<p>语法：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">fallocate <span class="o">[</span>-n<span class="o">]</span> <span class="o">[</span>-o offset<span class="o">]</span> -l length filename
</span></span></code></pre></div><ul>
<li><code>d</code>: 检测零并替换为空洞。</li>
<li><code>-n</code>：指定文件的大小，单位为字节。</li>
<li><code>-o</code>：指定文件的偏移量，可以跟二进制$2^{N}$后缀<code>KiB</code>，<code>MiB</code>，<code>GiB</code>，<code>TiB</code>，<code>PiB</code>和<code>EiB</code>（<code>iB</code>为可选，例如，<code>K</code>的含义与<code>KiB</code>的含义相同或后缀<code>KB</code>，<code>MB</code>，<code>GB</code>，<code>PB</code>和<code>EB</code>的十进制（$10^{N}$）。</li>
<li><code>-l</code>：指定文件的大小，单位同上。</li>
<li><code>-p, --punch-hole</code>: 将某个范围替换为空洞 (连带打开 -n)。</li>
<li><code>filename</code>：指定文件名。</li>
</ul>
<p>示例：
分配一个大小为<code>512MB</code>的文件，文件名为<code>efi.img</code>：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">fallocate -l 512M efi.img
</span></span></code></pre></div><p>将<code>efi.img</code>文件中的<code>0</code>替换为空洞：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">fallocate -d efi.img
</span></span></code></pre></div><p>从偏移 128M 的位置挖一个 10M 大小的洞</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">fallocate -p -o 128M  -l 10M  efi.img
</span></span></code></pre></div><h2 id="dd">dd</h2>
<p>Linux <code>dd</code> 命令用于读取、转换并输出数据。<code>dd</code> 可从标准输入或文件中读取数据，根据指定的格式来转换数据，再输出到文件、设备或标准输出</p>
<blockquote>
<p>dd 的原意为 data duplicator，但由于 dd 属于较低阶的资料处理工具，通常都会以管理者（root）权限来执行，如果稍有不慎，也很容易造成严重的后果（例如整颗硬碟的资料不见等等），所以有些人也把 dd 取名为 data destroyer。<a href="https://blog.gtwang.org/linux/dd-command-examples/">dd 指令教学与实用范例，备份与回复资料的小工具 - GT Wang</a></p>
</blockquote>
<ul>
<li><code>if=FILE</code>     : 指定输入文件，若不指定则从标注输入读取。这里指定为/dev/zero 是 Linux 的一个伪文件，它可以产生连续不断的 null 流（二进制的 0）。</li>
<li><code>of=FILE</code>      : 指定输出文件，若不指定则输出到标准输出。</li>
<li><code>bs=BYTES</code>     : 每次读写的字节数，可以使用单位 K、M、G 等等。另外输入输出可以分别用 ibs、obs 指定，若使用 bs，则表示是 ibs 和 obs 都是用该参数。</li>
<li><code>count=BLOCKS</code> : 读取的 block 数，block 的大小由 ibs 指定。</li>
</ul>
<p>示例：
生成一个<code>1g</code>大小的文件，内容全为<code>0</code>，块大小为<code>1M</code>，文件名为<code>efi.img</code>：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">dd <span class="k">if</span><span class="o">=</span>/dev/zero <span class="nv">of</span><span class="o">=</span>efi.img <span class="nv">bs</span><span class="o">=</span>1M <span class="nv">count</span><span class="o">=</span><span class="m">1024</span>
</span></span></code></pre></div><p>生成一个<code>1g</code>大小的文件，内容为随机数，块大小为<code>10M</code>，文件名为<code>efi.img</code>：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">dd <span class="k">if</span><span class="o">=</span>/dev/urandom <span class="nv">of</span><span class="o">=</span>efi.img <span class="nv">bs</span><span class="o">=</span>10M <span class="nv">count</span><span class="o">=</span><span class="m">1024</span>
</span></span></code></pre></div><h2 id="truncate">truncate</h2>
<ul>
<li><code>-s</code>：指定文件的大小，可以跟二进制$2^{N}$后缀<code>KiB</code>，<code>MiB</code>，<code>GiB</code>，<code>TiB</code>，<code>PiB</code>和<code>EiB</code>（<code>iB</code>为可选，例如，<code>K</code>的含义与<code>KiB</code>的含义相同或后缀<code>KB</code>，<code>MB</code>，<code>GB</code>，<code>PB</code>和<code>EB</code>的十进制（$10^{N}$）。</li>
</ul>
<p>示例：
生成一个 100M 大小的文件，文件名为<code>efi.img</code>：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">truncate -s 100M efi.img
</span></span></code></pre></div><h2 id="参考">参考</h2>
<p><a href="https://lrita.github.io/images/posts/filesystem/Linux_File_Hole_And_Sparse_Files.pdf">Linux 文件空洞与稀疏文件</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-watch 周期执行命令</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-watch%E5%91%A8%E6%9C%9F%E6%89%A7%E8%A1%8C%E5%91%BD%E4%BB%A4/</link>
      <pubDate>Thu, 09 Jun 2022 22:50:54 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-watch%E5%91%A8%E6%9C%9F%E6%89%A7%E8%A1%8C%E5%91%BD%E4%BB%A4/</guid>
      <description>&lt;h2 id=&#34;功能&#34;&gt;功能&lt;/h2&gt;
&lt;p&gt;watch 命令的功能如其名，可以监视命令的执行结果。它实现的原理就是每隔一段时间执行一次命令，然后显示结果。他的用途很广，具体怎么用就靠想象力了。&lt;/p&gt;
&lt;h2 id=&#34;命令参数&#34;&gt;命令参数&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;-n # 或--interval  watch默认每2秒运行一下程序，可以用-n或-interval来指定间隔的时间。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-d # 或--differences  用-d或--differences 选项watch 会高亮显示变化的区域。 而-d=cumulative选项会把变动过的地方(不管最近的那次有没有变动)都高亮显示出来。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-t # 或-no-title  会关闭watch命令在顶部的时间间隔,命令，当前时间的输出。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-h # 或--help # 查看帮助文档
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;实例&#34;&gt;实例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;watch -d &amp;#39;ls -l | grep tmp&amp;#39;       # 监测当前目录中 scf&amp;#39; 的文件的变化
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<h2 id="功能">功能</h2>
<p>watch 命令的功能如其名，可以监视命令的执行结果。它实现的原理就是每隔一段时间执行一次命令，然后显示结果。他的用途很广，具体怎么用就靠想象力了。</p>
<h2 id="命令参数">命令参数</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">-n # 或--interval  watch默认每2秒运行一下程序，可以用-n或-interval来指定间隔的时间。
</span></span><span class="line"><span class="cl">-d # 或--differences  用-d或--differences 选项watch 会高亮显示变化的区域。 而-d=cumulative选项会把变动过的地方(不管最近的那次有没有变动)都高亮显示出来。
</span></span><span class="line"><span class="cl">-t # 或-no-title  会关闭watch命令在顶部的时间间隔,命令，当前时间的输出。
</span></span><span class="line"><span class="cl">-h # 或--help # 查看帮助文档
</span></span></code></pre></div><h2 id="实例">实例</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">watch -d &#39;ls -l | grep tmp&#39;       # 监测当前目录中 scf&#39; 的文件的变化
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-rename 批量重命名</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-rename%E6%89%B9%E9%87%8F%E9%87%8D%E5%91%BD%E5%90%8D/</link>
      <pubDate>Fri, 13 Aug 2021 18:40:16 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-rename%E6%89%B9%E9%87%8F%E9%87%8D%E5%91%BD%E5%90%8D/</guid>
      <description>&lt;h2 id=&#34;commands&#34;&gt;Commands&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;rename [options] &amp;#34;s/oldname/newname/&amp;#34; file
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;格式就很容易看出来怎么用的，就是&lt;code&gt;/&lt;/code&gt;不能丢。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;-v 将重命名的内容都打印到标准输出，v 可以看成 verbose
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-n 测试会重命名的内容，将结果都打印，但是并不真正执行重命名的过程
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-f force 会覆盖本地已经存在的文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-h -m -V 分别为帮助，帮助，版本
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-e 比较复杂，可以通过该选项，写一些脚本来做一些复杂的事情
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;
&lt;h3 id=&#34;替换文件名中的特定字段&#34;&gt;替换文件名中的特定字段&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;rename &amp;#34;s/AA/aa/&amp;#34; *  # 把文件名中的AA替换成aa
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;修改文件后缀&#34;&gt;修改文件后缀&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;rename &amp;#34;s/.html/.php/&amp;#34; *     # 把.html 后缀的改成 .php后缀
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rename &amp;#34;s/.png/.jpg/&amp;#34; *      # 将 png 改为 jpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;添加后缀&#34;&gt;添加后缀&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;rename &amp;#34;s/$/.txt/&amp;#34; *     # 把所有的文件名都以txt结尾
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;$&lt;/code&gt;正则表达式中表示结尾。&lt;/p&gt;
&lt;h3 id=&#34;保留部分文件名&#34;&gt;保留部分文件名&lt;/h3&gt;
&lt;p&gt;假如需要在批量修改的时候保留部分文件名，可以使用引用&lt;code&gt;\1&lt;/code&gt; ，比如有下面格式的文件，只想保留日期部分。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;Screenshot from 2019-01-02 15-56-49.jpg
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rename -n &amp;#34;s/Screenshot from ([0-9\\- ]+).jpg/\1.jpg/&amp;#34; *
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将&lt;code&gt;()&lt;/code&gt; 匹配的内容取出来放到替换部分。&lt;/p&gt;
</description>
      <content:encoded><![CDATA[<h2 id="commands">Commands</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">rename [options] &#34;s/oldname/newname/&#34; file
</span></span></code></pre></div><p>格式就很容易看出来怎么用的，就是<code>/</code>不能丢。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">-v 将重命名的内容都打印到标准输出，v 可以看成 verbose
</span></span><span class="line"><span class="cl">-n 测试会重命名的内容，将结果都打印，但是并不真正执行重命名的过程
</span></span><span class="line"><span class="cl">-f force 会覆盖本地已经存在的文件
</span></span><span class="line"><span class="cl">-h -m -V 分别为帮助，帮助，版本
</span></span><span class="line"><span class="cl">-e 比较复杂，可以通过该选项，写一些脚本来做一些复杂的事情
</span></span></code></pre></div><h2 id="examples">Examples</h2>
<h3 id="替换文件名中的特定字段">替换文件名中的特定字段</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">rename &#34;s/AA/aa/&#34; *  # 把文件名中的AA替换成aa
</span></span></code></pre></div><h3 id="修改文件后缀">修改文件后缀</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">rename &#34;s/.html/.php/&#34; *     # 把.html 后缀的改成 .php后缀
</span></span><span class="line"><span class="cl">rename &#34;s/.png/.jpg/&#34; *      # 将 png 改为 jpg
</span></span></code></pre></div><h3 id="添加后缀">添加后缀</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">rename &#34;s/$/.txt/&#34; *     # 把所有的文件名都以txt结尾
</span></span></code></pre></div><p><code>$</code>正则表达式中表示结尾。</p>
<h3 id="保留部分文件名">保留部分文件名</h3>
<p>假如需要在批量修改的时候保留部分文件名，可以使用引用<code>\1</code> ，比如有下面格式的文件，只想保留日期部分。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Screenshot from 2019-01-02 15-56-49.jpg
</span></span><span class="line"><span class="cl">rename -n &#34;s/Screenshot from ([0-9\\- ]+).jpg/\1.jpg/&#34; *
</span></span></code></pre></div><p>将<code>()</code> 匹配的内容取出来放到替换部分。</p>
]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-apt 安装卸载软件</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-apt%E5%AE%89%E8%A3%85%E5%8D%B8%E8%BD%BD%E8%BD%AF%E4%BB%B6/</link>
      <pubDate>Thu, 12 Aug 2021 18:42:39 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-apt%E5%AE%89%E8%A3%85%E5%8D%B8%E8%BD%BD%E8%BD%AF%E4%BB%B6/</guid>
      <description>&lt;p&gt;这个命令应该是我们平时用的最多的命令之一了，应该早就拿出来讲一下的。但是平时用的太多，总感觉自己都会用了，但是仔细看了所有命令，还是有一些比较实用但是没记住的命令。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt&lt;/code&gt;的全称是&lt;code&gt;Advanced Packaging Tool&lt;/code&gt;是 Linux 系统下的一款安装包管理工具。APT 可以自动下载、配置和安装二进制或源代码格式软件包，简化了 Unix 系统上管理软件的过程。&lt;/p&gt;
&lt;p&gt;APT 主要由以下几个命令组成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;apt-get
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt-cache
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt-file
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;commands&#34;&gt;Commands&lt;/h2&gt;
&lt;h3 id=&#34;搜索软件包&#34;&gt;搜索软件包&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;apt search python3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;安装软件包&#34;&gt;安装软件包&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;apt install python3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;更新源&#34;&gt;更新源&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;sudo apt install update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;更新软件&#34;&gt;更新软件&lt;/h3&gt;
&lt;p&gt;执行完 update 命令后，就可以使用 apt upgrade 来升级软件包了。执行命令后系统会提示有几个软件需要升级。在得到你的同意后，系统即开始自动下载安装软件包。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;sudo apt install upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;卸载软件&#34;&gt;卸载软件&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;apt remove python3  # 移除软件包，但是保留配置文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt purge python3 #移除软件包并移除配置
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt autoremove # 移除孤立的并不被依赖的软件包
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;列出软件清单&#34;&gt;列出软件清单&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;apt list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<p>这个命令应该是我们平时用的最多的命令之一了，应该早就拿出来讲一下的。但是平时用的太多，总感觉自己都会用了，但是仔细看了所有命令，还是有一些比较实用但是没记住的命令。</p>
<p><code>apt</code>的全称是<code>Advanced Packaging Tool</code>是 Linux 系统下的一款安装包管理工具。APT 可以自动下载、配置和安装二进制或源代码格式软件包，简化了 Unix 系统上管理软件的过程。</p>
<p>APT 主要由以下几个命令组成：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">apt-get
</span></span><span class="line"><span class="cl">apt-cache
</span></span><span class="line"><span class="cl">apt-file
</span></span></code></pre></div><h2 id="commands">Commands</h2>
<h3 id="搜索软件包">搜索软件包</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">apt search python3
</span></span></code></pre></div><h3 id="安装软件包">安装软件包</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">apt install python3
</span></span></code></pre></div><h3 id="更新源">更新源</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install update
</span></span></code></pre></div><h3 id="更新软件">更新软件</h3>
<p>执行完 update 命令后，就可以使用 apt upgrade 来升级软件包了。执行命令后系统会提示有几个软件需要升级。在得到你的同意后，系统即开始自动下载安装软件包。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install upgrade
</span></span></code></pre></div><h3 id="卸载软件">卸载软件</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">apt remove python3  # 移除软件包，但是保留配置文件
</span></span><span class="line"><span class="cl">apt purge python3 #移除软件包并移除配置
</span></span><span class="line"><span class="cl">apt autoremove # 移除孤立的并不被依赖的软件包
</span></span></code></pre></div><h3 id="列出软件清单">列出软件清单</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">apt list
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-kill 这个进程</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-kill%E8%BF%99%E4%B8%AA%E8%BF%9B%E7%A8%8B/</link>
      <pubDate>Wed, 11 Aug 2021 15:22:40 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-kill%E8%BF%99%E4%B8%AA%E8%BF%9B%E7%A8%8B/</guid>
      <description>&lt;p&gt;对于在前台运行的程序，我们可以用&lt;code&gt;Ctrl+C&lt;/code&gt;来终止运行，但是在后台的程序就必须用&lt;code&gt;kill&lt;/code&gt;命令来终止了。&lt;/p&gt;
&lt;h2 id=&#34;command&#34;&gt;Command&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;-l  信号，若果不加信号的编号参数，则使用“-l”参数会列出全部的信号名称
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-a  当处理当前进程时，不限制命令名和进程号的对应关系
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-p  指定 kill 命令只打印相关进程的进程号，而不发送任何信号
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-s  指定发送信号
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-u  指定用户
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;
&lt;h3 id=&#34;查看所有信号&#34;&gt;查看所有信号&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;➜   kill -l
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;常用信号&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;HUP    1    终端断线
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;INT     2    中断（同 Ctrl + C）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;QUIT    3    退出（同 Ctrl + \）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TERM   15    终止
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;KILL    9    强制终止
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CONT   18    继续（与 STOP 相反， fg/bg 命令）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;STOP    19    暂停（同 Ctrl + Z）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;用-ps-查找进程然后用-kill-杀掉&#34;&gt;用 ps 查找进程，然后用 kill 杀掉&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;ps -ef | grep &amp;#39;program&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kill PID
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;无条件彻底杀死进程&#34;&gt;无条件彻底杀死进程&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;kill –9 PID
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;杀死指定用户所有进程&#34;&gt;杀死指定用户所有进程&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;kill -9 $(ps -ef | grep username)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kill -u username
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<p>对于在前台运行的程序，我们可以用<code>Ctrl+C</code>来终止运行，但是在后台的程序就必须用<code>kill</code>命令来终止了。</p>
<h2 id="command">Command</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">-l  信号，若果不加信号的编号参数，则使用“-l”参数会列出全部的信号名称
</span></span><span class="line"><span class="cl">-a  当处理当前进程时，不限制命令名和进程号的对应关系
</span></span><span class="line"><span class="cl">-p  指定 kill 命令只打印相关进程的进程号，而不发送任何信号
</span></span><span class="line"><span class="cl">-s  指定发送信号
</span></span><span class="line"><span class="cl">-u  指定用户
</span></span></code></pre></div><h2 id="examples">Examples</h2>
<h3 id="查看所有信号">查看所有信号</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">➜   kill -l
</span></span><span class="line"><span class="cl">HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 
</span></span><span class="line"><span class="cl">SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP 
</span></span><span class="line"><span class="cl">TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
</span></span></code></pre></div><p>常用信号</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">HUP    1    终端断线
</span></span><span class="line"><span class="cl">INT     2    中断（同 Ctrl + C）
</span></span><span class="line"><span class="cl">QUIT    3    退出（同 Ctrl + \）
</span></span><span class="line"><span class="cl">TERM   15    终止
</span></span><span class="line"><span class="cl">KILL    9    强制终止
</span></span><span class="line"><span class="cl">CONT   18    继续（与 STOP 相反， fg/bg 命令）
</span></span><span class="line"><span class="cl">STOP    19    暂停（同 Ctrl + Z）
</span></span></code></pre></div><h3 id="用-ps-查找进程然后用-kill-杀掉">用 ps 查找进程，然后用 kill 杀掉</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">ps -ef | grep &#39;program&#39;
</span></span><span class="line"><span class="cl">kill PID
</span></span></code></pre></div><h3 id="无条件彻底杀死进程">无条件彻底杀死进程</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">kill –9 PID
</span></span></code></pre></div><h3 id="杀死指定用户所有进程">杀死指定用户所有进程</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">kill -9 $(ps -ef | grep username)
</span></span><span class="line"><span class="cl">kill -u username
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-ar 多文件归档为一个文件</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-ar%E5%A4%9A%E6%96%87%E4%BB%B6%E5%BD%92%E6%A1%A3%E4%B8%BA%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6/</link>
      <pubDate>Tue, 10 Aug 2021 11:33:49 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-ar%E5%A4%9A%E6%96%87%E4%BB%B6%E5%BD%92%E6%A1%A3%E4%B8%BA%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6/</guid>
      <description>&lt;p&gt;现在我们有&lt;code&gt;solution.c&lt;/code&gt;,&lt;code&gt;solution.h&lt;/code&gt;两个文件，他们实现了某一个功能，自成一个模块。在其他项目中也可复用。我们就可以把它做成库文件。&lt;code&gt;ar&lt;/code&gt;命令就可以将锁哥文件整合成一个库文件，也可以从一个库中单独提取出某一个文件。&lt;/p&gt;
&lt;h2 id=&#34;commands&#34;&gt;Commands&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;-d 　删除备存文件中的成员文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-m 　变更成员文件在备存文件中的次序。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-p 　显示备存文件中的成员文件内容。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-q 　将文件附加在备存文件末端。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-r 　将文件插入备存文件中。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-t 　显示备存文件中所包含的文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-x 　自备存文件中取出成员文件。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;
&lt;h3 id=&#34;打包文件&#34;&gt;打包文件&lt;/h3&gt;
&lt;p&gt;将&lt;code&gt;solution.c solution.h&lt;/code&gt;两个文件打包成&lt;code&gt;solution.bak&lt;/code&gt;，并显示详细信息&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;➜  ar rv solution.bak solution.c solution.h
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ar: 正在创建 solution.bak
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;a - solution.c
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;a - solution.h
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;显示打包文件内容&#34;&gt;显示打包文件内容&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;➜  ar t solution.bak 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;solution.c
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;solution.h
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<p>现在我们有<code>solution.c</code>,<code>solution.h</code>两个文件，他们实现了某一个功能，自成一个模块。在其他项目中也可复用。我们就可以把它做成库文件。<code>ar</code>命令就可以将锁哥文件整合成一个库文件，也可以从一个库中单独提取出某一个文件。</p>
<h2 id="commands">Commands</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">-d 　删除备存文件中的成员文件。
</span></span><span class="line"><span class="cl">-m 　变更成员文件在备存文件中的次序。
</span></span><span class="line"><span class="cl">-p 　显示备存文件中的成员文件内容。
</span></span><span class="line"><span class="cl">-q 　将文件附加在备存文件末端。
</span></span><span class="line"><span class="cl">-r 　将文件插入备存文件中。
</span></span><span class="line"><span class="cl">-t 　显示备存文件中所包含的文件。
</span></span><span class="line"><span class="cl">-x 　自备存文件中取出成员文件。
</span></span></code></pre></div><h2 id="examples">Examples</h2>
<h3 id="打包文件">打包文件</h3>
<p>将<code>solution.c solution.h</code>两个文件打包成<code>solution.bak</code>，并显示详细信息</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">➜  ar rv solution.bak solution.c solution.h
</span></span><span class="line"><span class="cl">ar: 正在创建 solution.bak
</span></span><span class="line"><span class="cl">a - solution.c
</span></span><span class="line"><span class="cl">a - solution.h
</span></span></code></pre></div><h3 id="显示打包文件内容">显示打包文件内容</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">➜  ar t solution.bak 
</span></span><span class="line"><span class="cl">solution.c
</span></span><span class="line"><span class="cl">solution.h
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>每日学命令-ps 显示进程状态</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E6%97%A5%E5%AD%A6%E5%91%BD%E4%BB%A4-ps%E6%98%BE%E7%A4%BA%E8%BF%9B%E7%A8%8B%E7%8A%B6%E6%80%81/</link>
      <pubDate>Mon, 09 Aug 2021 19:37:38 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E6%97%A5%E5%AD%A6%E5%91%BD%E4%BB%A4-ps%E6%98%BE%E7%A4%BA%E8%BF%9B%E7%A8%8B%E7%8A%B6%E6%80%81/</guid>
      <description>&lt;p&gt;&lt;code&gt;ps&lt;/code&gt;命令显示的信息类似于 Windows 的任务管理器。也是参数超级多的一个命令，所以就不列参数了，需要查看时直接搜索，这里列举一下实例。&lt;/p&gt;
&lt;h2 id=&#34;使用实例&#34;&gt;使用实例&lt;/h2&gt;
&lt;p&gt;显示当前执行的所有程序&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;➜  ~ ps -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    PID TTY          TIME CMD
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;m&#34;&gt;879&lt;/span&gt; tty2     00:03:43 Xorg
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;m&#34;&gt;990&lt;/span&gt; tty2     00:00:00 gnome-session-b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;2653&lt;/span&gt; pts/0    00:00:00 zsh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;m&#34;&gt;12365&lt;/span&gt; pts/0    00:00:00 ps
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;显示所有程序&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;➜  ~ ps -A
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    PID TTY          TIME CMD
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; ?        00:00:01 systemd
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; ?        00:00:00 kthreadd
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; ?        00:00:00 rcu_gp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt; ?        00:00:00 rcu_par_gp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;m&#34;&gt;6&lt;/span&gt; ?        00:00:00 kworker/0:0H-kblockd
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;m&#34;&gt;9&lt;/span&gt; ?        00:00:00 mm_percpu_wq
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;m&#34;&gt;10&lt;/span&gt; ?        00:00:00 ksoftirqd/0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; ?        00:00:02 rcu_sched
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;m&#34;&gt;12&lt;/span&gt; ?        00:00:00 migration/0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;m&#34;&gt;13&lt;/span&gt; ?        00:00:00 idle_inject/0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;m&#34;&gt;14&lt;/span&gt; ?        00:00:00 cpuhp/0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;m&#34;&gt;15&lt;/span&gt; ?        00:00:00 kdevtmpfs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;显示指定用户的信息&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;➜  ~ ps -u root
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;a&lt;/code&gt;显示现行终端机下的所有程序，包括其他用户的程序，&lt;code&gt;u&lt;/code&gt;以用户为主的格式来显示程序状况，&lt;code&gt;x&lt;/code&gt;显示所有程序，不以终端机来区分
&lt;code&gt;USER&lt;/code&gt;－运行该流程的用户。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;%CPU&lt;/code&gt;－进程 CPU 利用率。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;%MEM&lt;/code&gt;－进程驻留集大小占计算机物理内存的百分比。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;VSZ&lt;/code&gt;－KiB 中进程的虚拟内存大小。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;RSS&lt;/code&gt;－进程正在使用的物理内存的大小。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;STAT&lt;/code&gt;－进程状态代码，可以是 Z（zombie），S（休眠），R（运行）..等等。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;START&lt;/code&gt;－命令启动的时间。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;➜  ~ ps aux              
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root           &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;  0.0  0.2 &lt;span class=&#34;m&#34;&gt;102084&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;11540&lt;/span&gt; ?        Ss   09:09   0:01 /sbin/init splash
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root           &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;  0.0  0.0      &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;     &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; ?        S    09:09   0:00 &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;kthreadd&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root           &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;  0.0  0.0      &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;     &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; ?        I&amp;lt;   09:09   0:00 &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;rcu_gp&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;按 CPU 资源的使用量对进程进行排序：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;➜  ~ ps aux &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort -nk &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;avahi        &lt;span class=&#34;m&#34;&gt;492&lt;/span&gt;  0.0  0.0   &lt;span class=&#34;m&#34;&gt;8536&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;3260&lt;/span&gt; ?        Ss   09:09   0:00 avahi-daemon: running &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;hanhan.local&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;avahi        &lt;span class=&#34;m&#34;&gt;552&lt;/span&gt;  0.0  0.0   &lt;span class=&#34;m&#34;&gt;8352&lt;/span&gt;   &lt;span class=&#34;m&#34;&gt;332&lt;/span&gt; ?        S    09:09   0:00 avahi-daemon: chroot helper
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;colord      &lt;span class=&#34;m&#34;&gt;1442&lt;/span&gt;  0.0  0.3 &lt;span class=&#34;m&#34;&gt;255144&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;14408&lt;/span&gt; ?        Ssl  09:09   0:00 /usr/libexec/colord
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dominic     &lt;span class=&#34;m&#34;&gt;1068&lt;/span&gt;  0.0  0.0  &lt;span class=&#34;m&#34;&gt;31244&lt;/span&gt;   &lt;span class=&#34;m&#34;&gt;364&lt;/span&gt; ?        S    09:09   0:00 /usr/bin/VBoxClient --clipboard
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dominic     &lt;span class=&#34;m&#34;&gt;1069&lt;/span&gt;  0.0  0.9 &lt;span class=&#34;m&#34;&gt;163512&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;39088&lt;/span&gt; ?        Sl   09:09   0:00 /usr/bin/VBoxClient --clipboard
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dominic     &lt;span class=&#34;m&#34;&gt;1080&lt;/span&gt;  0.0  0.0  &lt;span class=&#34;m&#34;&gt;31244&lt;/span&gt;   &lt;span class=&#34;m&#34;&gt;364&lt;/span&gt; ?        S    09:09   0:00 /usr/bin/VBoxClient --seamless
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;c1&#34;&gt;# 其中`sort`命令中`-n`为按数值进行排序，`-k  3` 表示以输出结果的第三列来进行排序，&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;c1&#34;&gt;# 从上一个实例中看到，第三列为CPU使用率`%CPU`。&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;c1&#34;&gt;# 同理ps aux | sort -rnk 4 即按内存使用降序排序&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;显示前 5 名最耗 CPU 的进程&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;➜  ~ ps aux --sort&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;-pcpu &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root         &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;  2.6  0.7  &lt;span class=&#34;m&#34;&gt;51396&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;7644&lt;/span&gt; ?        Ss   02:02   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize &lt;span class=&#34;m&#34;&gt;23&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root      &lt;span class=&#34;m&#34;&gt;1249&lt;/span&gt;  2.6  3.0 &lt;span class=&#34;m&#34;&gt;355800&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;30896&lt;/span&gt; tty1     Rsl+ 02:02   0:02 /usr/bin/X -background none :0 vt01 -nolisten tcp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root       &lt;span class=&#34;m&#34;&gt;508&lt;/span&gt;  2.4  1.6 &lt;span class=&#34;m&#34;&gt;248488&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;16776&lt;/span&gt; ?        Ss   02:02   0:03 /usr/bin/python /usr/sbin/firewalld --nofor
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;下面的命令会显示进程 id 为 3150 的进程的所有线程&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;➜  ~ ps -p &lt;span class=&#34;m&#34;&gt;3150&lt;/span&gt; -L
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<p><code>ps</code>命令显示的信息类似于 Windows 的任务管理器。也是参数超级多的一个命令，所以就不列参数了，需要查看时直接搜索，这里列举一下实例。</p>
<h2 id="使用实例">使用实例</h2>
<p>显示当前执行的所有程序</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">➜  ~ ps -a
</span></span><span class="line"><span class="cl">    PID TTY          TIME CMD
</span></span><span class="line"><span class="cl">    <span class="m">879</span> tty2     00:03:43 Xorg
</span></span><span class="line"><span class="cl">    <span class="m">990</span> tty2     00:00:00 gnome-session-b
</span></span><span class="line"><span class="cl">   <span class="m">2653</span> pts/0    00:00:00 zsh
</span></span><span class="line"><span class="cl">  <span class="m">12365</span> pts/0    00:00:00 ps
</span></span></code></pre></div><p>显示所有程序</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">➜  ~ ps -A
</span></span><span class="line"><span class="cl">    PID TTY          TIME CMD
</span></span><span class="line"><span class="cl">      <span class="m">1</span> ?        00:00:01 systemd
</span></span><span class="line"><span class="cl">      <span class="m">2</span> ?        00:00:00 kthreadd
</span></span><span class="line"><span class="cl">      <span class="m">3</span> ?        00:00:00 rcu_gp
</span></span><span class="line"><span class="cl">      <span class="m">4</span> ?        00:00:00 rcu_par_gp
</span></span><span class="line"><span class="cl">      <span class="m">6</span> ?        00:00:00 kworker/0:0H-kblockd
</span></span><span class="line"><span class="cl">      <span class="m">9</span> ?        00:00:00 mm_percpu_wq
</span></span><span class="line"><span class="cl">     <span class="m">10</span> ?        00:00:00 ksoftirqd/0
</span></span><span class="line"><span class="cl">     <span class="m">11</span> ?        00:00:02 rcu_sched
</span></span><span class="line"><span class="cl">     <span class="m">12</span> ?        00:00:00 migration/0
</span></span><span class="line"><span class="cl">     <span class="m">13</span> ?        00:00:00 idle_inject/0
</span></span><span class="line"><span class="cl">     <span class="m">14</span> ?        00:00:00 cpuhp/0
</span></span><span class="line"><span class="cl">     <span class="m">15</span> ?        00:00:00 kdevtmpfs
</span></span><span class="line"><span class="cl">.
</span></span><span class="line"><span class="cl">.
</span></span><span class="line"><span class="cl">.
</span></span></code></pre></div><p>显示指定用户的信息</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">➜  ~ ps -u root
</span></span></code></pre></div><p><code>a</code>显示现行终端机下的所有程序，包括其他用户的程序，<code>u</code>以用户为主的格式来显示程序状况，<code>x</code>显示所有程序，不以终端机来区分
<code>USER</code>－运行该流程的用户。</p>
<p><code>%CPU</code>－进程 CPU 利用率。</p>
<p><code>%MEM</code>－进程驻留集大小占计算机物理内存的百分比。</p>
<p><code>VSZ</code>－KiB 中进程的虚拟内存大小。</p>
<p><code>RSS</code>－进程正在使用的物理内存的大小。</p>
<p><code>STAT</code>－进程状态代码，可以是 Z（zombie），S（休眠），R（运行）..等等。</p>
<p><code>START</code>－命令启动的时间。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">➜  ~ ps aux              
</span></span><span class="line"><span class="cl">USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
</span></span><span class="line"><span class="cl">root           <span class="m">1</span>  0.0  0.2 <span class="m">102084</span> <span class="m">11540</span> ?        Ss   09:09   0:01 /sbin/init splash
</span></span><span class="line"><span class="cl">root           <span class="m">2</span>  0.0  0.0      <span class="m">0</span>     <span class="m">0</span> ?        S    09:09   0:00 <span class="o">[</span>kthreadd<span class="o">]</span>
</span></span><span class="line"><span class="cl">root           <span class="m">3</span>  0.0  0.0      <span class="m">0</span>     <span class="m">0</span> ?        I&lt;   09:09   0:00 <span class="o">[</span>rcu_gp<span class="o">]</span>
</span></span></code></pre></div><p>按 CPU 资源的使用量对进程进行排序：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">➜  ~ ps aux <span class="p">|</span> sort -nk <span class="m">3</span>
</span></span><span class="line"><span class="cl">avahi        <span class="m">492</span>  0.0  0.0   <span class="m">8536</span>  <span class="m">3260</span> ?        Ss   09:09   0:00 avahi-daemon: running <span class="o">[</span>hanhan.local<span class="o">]</span>
</span></span><span class="line"><span class="cl">avahi        <span class="m">552</span>  0.0  0.0   <span class="m">8352</span>   <span class="m">332</span> ?        S    09:09   0:00 avahi-daemon: chroot helper
</span></span><span class="line"><span class="cl">colord      <span class="m">1442</span>  0.0  0.3 <span class="m">255144</span> <span class="m">14408</span> ?        Ssl  09:09   0:00 /usr/libexec/colord
</span></span><span class="line"><span class="cl">dominic     <span class="m">1068</span>  0.0  0.0  <span class="m">31244</span>   <span class="m">364</span> ?        S    09:09   0:00 /usr/bin/VBoxClient --clipboard
</span></span><span class="line"><span class="cl">dominic     <span class="m">1069</span>  0.0  0.9 <span class="m">163512</span> <span class="m">39088</span> ?        Sl   09:09   0:00 /usr/bin/VBoxClient --clipboard
</span></span><span class="line"><span class="cl">dominic     <span class="m">1080</span>  0.0  0.0  <span class="m">31244</span>   <span class="m">364</span> ?        S    09:09   0:00 /usr/bin/VBoxClient --seamless
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 其中`sort`命令中`-n`为按数值进行排序，`-k  3` 表示以输出结果的第三列来进行排序，</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 从上一个实例中看到，第三列为CPU使用率`%CPU`。</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 同理ps aux | sort -rnk 4 即按内存使用降序排序</span>
</span></span></code></pre></div><p>显示前 5 名最耗 CPU 的进程</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">➜  ~ ps aux --sort<span class="o">=</span>-pcpu <span class="p">|</span> head -5
</span></span><span class="line"><span class="cl">USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
</span></span><span class="line"><span class="cl">root         <span class="m">1</span>  2.6  0.7  <span class="m">51396</span>  <span class="m">7644</span> ?        Ss   02:02   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize <span class="m">23</span>
</span></span><span class="line"><span class="cl">root      <span class="m">1249</span>  2.6  3.0 <span class="m">355800</span> <span class="m">30896</span> tty1     Rsl+ 02:02   0:02 /usr/bin/X -background none :0 vt01 -nolisten tcp
</span></span><span class="line"><span class="cl">root       <span class="m">508</span>  2.4  1.6 <span class="m">248488</span> <span class="m">16776</span> ?        Ss   02:02   0:03 /usr/bin/python /usr/sbin/firewalld --nofor
</span></span></code></pre></div><p>下面的命令会显示进程 id 为 3150 的进程的所有线程</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">➜  ~ ps -p <span class="m">3150</span> -L
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-scp 远程拷贝文件</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-scp%E8%BF%9C%E7%A8%8B%E6%8B%B7%E8%B4%9D%E6%96%87%E4%BB%B6/</link>
      <pubDate>Fri, 06 Aug 2021 20:05:56 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-scp%E8%BF%9C%E7%A8%8B%E6%8B%B7%E8%B4%9D%E6%96%87%E4%BB%B6/</guid>
      <description>&lt;p&gt;看到同事要安装自己编译一天的库，本想传授一下“踩坑经验”，结果他用&lt;code&gt;scp&lt;/code&gt;命令直接从已经安装好的电脑里复制了一份。心里一万只 XXX 在奔腾。&lt;/p&gt;
&lt;p&gt;早知道先学学这个命令了。&lt;/p&gt;
&lt;h2 id=&#34;可选参数&#34;&gt;可选参数&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: center&#34;&gt;参数&lt;/th&gt;
					&lt;th style=&#34;text-align: center&#34;&gt;功能&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;-1&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;强制 scp 命令使用协议 ssh1&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;-2&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;强制 scp 命令使用协议 ssh2&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;-4&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;强制 scp 命令使用协议 ssh2&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;-6&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;强制 scp 命令只使用 IPv6 寻址&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;-B&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;使用批处理模式（传输过程中不询问传输口令或短语）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;-C&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;允许压缩&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;-p&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;保留原文件的修改时间，访问时间和访问权限。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;-q&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;不显示传输进度条&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;-r&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;递归复制整个目录&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;-v&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;详细方式显示输出&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;-P&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;注意是大写的 P, port 是指定数据传输用到的端口号&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;使用实例&#34;&gt;使用实例&lt;/h2&gt;
&lt;p&gt;复制文件&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;scp local_file rmot_usr@rmot_ip:rmot_folder
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scp /opt/soft/ root@192.168.120.204:/opt/soft/nginx-0.5.38.tar.gz 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<p>看到同事要安装自己编译一天的库，本想传授一下“踩坑经验”，结果他用<code>scp</code>命令直接从已经安装好的电脑里复制了一份。心里一万只 XXX 在奔腾。</p>
<p>早知道先学学这个命令了。</p>
<h2 id="可选参数">可选参数</h2>
<table>
	<thead>
			<tr>
					<th style="text-align: center">参数</th>
					<th style="text-align: center">功能</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: center">-1</td>
					<td style="text-align: center">强制 scp 命令使用协议 ssh1</td>
			</tr>
			<tr>
					<td style="text-align: center">-2</td>
					<td style="text-align: center">强制 scp 命令使用协议 ssh2</td>
			</tr>
			<tr>
					<td style="text-align: center">-4</td>
					<td style="text-align: center">强制 scp 命令使用协议 ssh2</td>
			</tr>
			<tr>
					<td style="text-align: center">-6</td>
					<td style="text-align: center">强制 scp 命令只使用 IPv6 寻址</td>
			</tr>
			<tr>
					<td style="text-align: center">-B</td>
					<td style="text-align: center">使用批处理模式（传输过程中不询问传输口令或短语）</td>
			</tr>
			<tr>
					<td style="text-align: center">-C</td>
					<td style="text-align: center">允许压缩</td>
			</tr>
			<tr>
					<td style="text-align: center">-p</td>
					<td style="text-align: center">保留原文件的修改时间，访问时间和访问权限。</td>
			</tr>
			<tr>
					<td style="text-align: center">-q</td>
					<td style="text-align: center">不显示传输进度条</td>
			</tr>
			<tr>
					<td style="text-align: center">-r</td>
					<td style="text-align: center">递归复制整个目录</td>
			</tr>
			<tr>
					<td style="text-align: center">-v</td>
					<td style="text-align: center">详细方式显示输出</td>
			</tr>
			<tr>
					<td style="text-align: center">-P</td>
					<td style="text-align: center">注意是大写的 P, port 是指定数据传输用到的端口号</td>
			</tr>
	</tbody>
</table>
<h2 id="使用实例">使用实例</h2>
<p>复制文件</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">scp local_file rmot_usr@rmot_ip:rmot_folder
</span></span><span class="line"><span class="cl">scp /opt/soft/ root@192.168.120.204:/opt/soft/nginx-0.5.38.tar.gz 
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-grep 文本搜索</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-grep%E6%96%87%E6%9C%AC%E6%90%9C%E7%B4%A2/</link>
      <pubDate>Thu, 05 Aug 2021 19:27:48 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-grep%E6%96%87%E6%9C%AC%E6%90%9C%E7%B4%A2/</guid>
      <description>&lt;p&gt;&lt;code&gt;grep&lt;/code&gt;全称&lt;code&gt;global search regular expression(RE) and print out the line&lt;/code&gt;，全面搜索正则表达式并把行打印出来。这名字就怪吓人，如果熟练掌握正则表达式，配上这命令 Linux 里可以横着走了。&lt;/p&gt;
&lt;p&gt;这个命令参数实在太多，加上正则表达式估计一张纸不够。那就直接上实例吧。&lt;/p&gt;
&lt;h2 id=&#34;使用实例&#34;&gt;使用实例&lt;/h2&gt;
&lt;p&gt;在当前目录中，查找后缀带有&lt;code&gt;cpp&lt;/code&gt;字样的文中包含&lt;code&gt;test&lt;/code&gt;字符串的文件，并打印所在行&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;grep test *cpp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grep --colorauto test *cpp      # 用颜色标记
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;通过&amp;quot;-v&amp;quot;参数可以打印出不符合条件行的内容。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;grep -v test *cpp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;系统报警显示了时间，但是日志文件太大无法直接 cat 查看。(查询含有特定文本的文件，并拿到这些文本所在的行)。&lt;code&gt;-n&lt;/code&gt; 或 &lt;code&gt;--line-number&lt;/code&gt; 可以显示符合样式的那一行之前，标示出该行的列数编号。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;grep -n &amp;#39;2019-10-24 00:01:11&amp;#39; *.log
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;grep 静默输出，不会输出任何信息，如果命令运行成功返回 0，失败则返回非 0 值。一般用于条件测试。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;grep -q &amp;#34;test&amp;#34; filename
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在多级目录中对文本进行递归搜索&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;grep &amp;#34;text&amp;#34; . -r -n
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;配合管道，查找指定的进程信息&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;ps -ef | grep svn
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查找指定的进程个数，&lt;code&gt;-c&lt;/code&gt;计数&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;ps -ef | grep svn -c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;常用正则表达式通配符&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: center&#34;&gt;通配符&lt;/th&gt;
					&lt;th style=&#34;text-align: center&#34;&gt;功能&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;c*&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;将匹配 0 个（即空白）或多个字符 c（c 为任一字符）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;.&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;将匹配任何一个字符，且只能是一个字符&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;[xyz]&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;匹配方括号中的任意一个字符&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;[^xyz]&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;匹配除方括号中字符外的所有字符&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;^&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;锁定行的开头&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;$&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;锁定行的结尾&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;在&lt;code&gt;id.txt&lt;/code&gt;中找到所有以 3207 开头的数据&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;grep ^3207 id.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<p><code>grep</code>全称<code>global search regular expression(RE) and print out the line</code>，全面搜索正则表达式并把行打印出来。这名字就怪吓人，如果熟练掌握正则表达式，配上这命令 Linux 里可以横着走了。</p>
<p>这个命令参数实在太多，加上正则表达式估计一张纸不够。那就直接上实例吧。</p>
<h2 id="使用实例">使用实例</h2>
<p>在当前目录中，查找后缀带有<code>cpp</code>字样的文中包含<code>test</code>字符串的文件，并打印所在行</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">grep test *cpp
</span></span><span class="line"><span class="cl">grep --colorauto test *cpp      # 用颜色标记
</span></span></code></pre></div><p>通过&quot;-v&quot;参数可以打印出不符合条件行的内容。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">grep -v test *cpp
</span></span></code></pre></div><p>系统报警显示了时间，但是日志文件太大无法直接 cat 查看。(查询含有特定文本的文件，并拿到这些文本所在的行)。<code>-n</code> 或 <code>--line-number</code> 可以显示符合样式的那一行之前，标示出该行的列数编号。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">grep -n &#39;2019-10-24 00:01:11&#39; *.log
</span></span></code></pre></div><p>grep 静默输出，不会输出任何信息，如果命令运行成功返回 0，失败则返回非 0 值。一般用于条件测试。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">grep -q &#34;test&#34; filename
</span></span></code></pre></div><p>在多级目录中对文本进行递归搜索</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">grep &#34;text&#34; . -r -n
</span></span></code></pre></div><p>配合管道，查找指定的进程信息</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">ps -ef | grep svn
</span></span></code></pre></div><p>查找指定的进程个数，<code>-c</code>计数</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">ps -ef | grep svn -c
</span></span></code></pre></div><p>常用正则表达式通配符</p>
<table>
	<thead>
			<tr>
					<th style="text-align: center">通配符</th>
					<th style="text-align: center">功能</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: center">c*</td>
					<td style="text-align: center">将匹配 0 个（即空白）或多个字符 c（c 为任一字符）</td>
			</tr>
			<tr>
					<td style="text-align: center">.</td>
					<td style="text-align: center">将匹配任何一个字符，且只能是一个字符</td>
			</tr>
			<tr>
					<td style="text-align: center">[xyz]</td>
					<td style="text-align: center">匹配方括号中的任意一个字符</td>
			</tr>
			<tr>
					<td style="text-align: center">[^xyz]</td>
					<td style="text-align: center">匹配除方括号中字符外的所有字符</td>
			</tr>
			<tr>
					<td style="text-align: center">^</td>
					<td style="text-align: center">锁定行的开头</td>
			</tr>
			<tr>
					<td style="text-align: center">$</td>
					<td style="text-align: center">锁定行的结尾</td>
			</tr>
	</tbody>
</table>
<p>在<code>id.txt</code>中找到所有以 3207 开头的数据</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">grep ^3207 id.txt
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-cat 可以查看文件的小猫咪</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-cat%E5%8F%AF%E4%BB%A5%E6%9F%A5%E7%9C%8B%E6%96%87%E4%BB%B6%E7%9A%84%E5%B0%8F%E7%8C%AB%E5%92%AA/</link>
      <pubDate>Wed, 04 Aug 2021 09:57:51 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-cat%E5%8F%AF%E4%BB%A5%E6%9F%A5%E7%9C%8B%E6%96%87%E4%BB%B6%E7%9A%84%E5%B0%8F%E7%8C%AB%E5%92%AA/</guid>
      <description>&lt;p&gt;&lt;code&gt;cat&lt;/code&gt; 可以将文件的内容方便地输出到屏幕上。但是它的全称&lt;code&gt;concatenate&lt;/code&gt;意为“连接”，连接文件也是它的重要功能之一，很多人可能都不常用。只记得输出文件内容了。&lt;/p&gt;
&lt;h2 id=&#34;可选参数&#34;&gt;可选参数&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;-n 或 --number              #由 1 开始对所有输出的行数编号。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-b 或 --number-nonblank     #和 -n 相似，只不过对于空白行不编号。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-s 或 --squeeze-blank       #当遇到有连续两行以上的空白行，就代换为一行的空白行。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-v 或 --show-nonprinting    #使用 ^ 和 M- 符号，除了 LFD 和 TAB 之外。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-E 或 --show-ends           # 在每行结束处显示 $。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-T 或 --show-tabs:          #将 TAB 字符显示为 ^I。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-A, --show-all              #等价于 -vET。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-e                          #等价于&amp;#34;-vE&amp;#34;选项；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-t                          #等价于&amp;#34;-vT&amp;#34;选项；
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;使用实例&#34;&gt;使用实例&lt;/h2&gt;
&lt;p&gt;将文件内容输出到屏幕&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;➜  ~ cat test.txt 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is firt line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is second line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is third line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is fourth line!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将&lt;code&gt;test.txt&lt;/code&gt;的内容输入到&lt;code&gt;test01.txt&lt;/code&gt;中&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;➜  ~ cat test.txt &amp;gt; test01.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ~ cat test01.txt 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is firt line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is second line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is third line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is fourth line!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;带行号输出&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;➜  ~ cat -n test.txt 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     1 This is firt line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     2 This is second line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     3 This is third line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     4 This is fourth line! 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将两个文件内容合并，再写入到第三个文件中&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;➜  ~ cat test.txt test01.txt &amp;gt;&amp;gt; test02.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ~ cat test02.txt 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is firt line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is second line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is third line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is fourth line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is firt line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is second line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is third line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is fourth line!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;清空文件中的内容&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;➜  ~ cat /dev/null &amp;gt; test.txt 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ~ cat test.txt 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ~ 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在类 Unix 系统中，/dev/null 称空设备，是一个特殊的设备文件，它丢弃一切写入其中的数据（但报告写入操作成功），读取它则会立即得到一个 EOF。&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://www.runoob.com/linux/linux-comm-cat.html&#34;&gt;https://www.runoob.com/linux/linux-comm-cat.html&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</description>
      <content:encoded><![CDATA[<p><code>cat</code> 可以将文件的内容方便地输出到屏幕上。但是它的全称<code>concatenate</code>意为“连接”，连接文件也是它的重要功能之一，很多人可能都不常用。只记得输出文件内容了。</p>
<h2 id="可选参数">可选参数</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">-n 或 --number              #由 1 开始对所有输出的行数编号。
</span></span><span class="line"><span class="cl">-b 或 --number-nonblank     #和 -n 相似，只不过对于空白行不编号。
</span></span><span class="line"><span class="cl">-s 或 --squeeze-blank       #当遇到有连续两行以上的空白行，就代换为一行的空白行。
</span></span><span class="line"><span class="cl">-v 或 --show-nonprinting    #使用 ^ 和 M- 符号，除了 LFD 和 TAB 之外。
</span></span><span class="line"><span class="cl">-E 或 --show-ends           # 在每行结束处显示 $。
</span></span><span class="line"><span class="cl">-T 或 --show-tabs:          #将 TAB 字符显示为 ^I。
</span></span><span class="line"><span class="cl">-A, --show-all              #等价于 -vET。
</span></span><span class="line"><span class="cl">-e                          #等价于&#34;-vE&#34;选项；
</span></span><span class="line"><span class="cl">-t                          #等价于&#34;-vT&#34;选项；
</span></span></code></pre></div><h2 id="使用实例">使用实例</h2>
<p>将文件内容输出到屏幕</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">➜  ~ cat test.txt 
</span></span><span class="line"><span class="cl">This is firt line!
</span></span><span class="line"><span class="cl">This is second line!
</span></span><span class="line"><span class="cl">This is third line!
</span></span><span class="line"><span class="cl">This is fourth line!
</span></span></code></pre></div><p>将<code>test.txt</code>的内容输入到<code>test01.txt</code>中</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">➜  ~ cat test.txt &gt; test01.txt
</span></span><span class="line"><span class="cl">➜  ~ cat test01.txt 
</span></span><span class="line"><span class="cl">This is firt line!
</span></span><span class="line"><span class="cl">This is second line!
</span></span><span class="line"><span class="cl">This is third line!
</span></span><span class="line"><span class="cl">This is fourth line!
</span></span></code></pre></div><p>带行号输出</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">➜  ~ cat -n test.txt 
</span></span><span class="line"><span class="cl">     1 This is firt line!
</span></span><span class="line"><span class="cl">     2 This is second line!
</span></span><span class="line"><span class="cl">     3 This is third line!
</span></span><span class="line"><span class="cl">     4 This is fourth line! 
</span></span></code></pre></div><p>将两个文件内容合并，再写入到第三个文件中</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">➜  ~ cat test.txt test01.txt &gt;&gt; test02.txt
</span></span><span class="line"><span class="cl">➜  ~ cat test02.txt 
</span></span><span class="line"><span class="cl">This is firt line!
</span></span><span class="line"><span class="cl">This is second line!
</span></span><span class="line"><span class="cl">This is third line!
</span></span><span class="line"><span class="cl">This is fourth line!
</span></span><span class="line"><span class="cl">This is firt line!
</span></span><span class="line"><span class="cl">This is second line!
</span></span><span class="line"><span class="cl">This is third line!
</span></span><span class="line"><span class="cl">This is fourth line!
</span></span></code></pre></div><p>清空文件中的内容</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">➜  ~ cat /dev/null &gt; test.txt 
</span></span><span class="line"><span class="cl">➜  ~ cat test.txt 
</span></span><span class="line"><span class="cl">➜  ~ 
</span></span></code></pre></div><p>在类 Unix 系统中，/dev/null 称空设备，是一个特殊的设备文件，它丢弃一切写入其中的数据（但报告写入操作成功），读取它则会立即得到一个 EOF。</p>
<h2 id="reference">Reference</h2>
<ol>
<li><a href="https://www.runoob.com/linux/linux-comm-cat.html">https://www.runoob.com/linux/linux-comm-cat.html</a></li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-ln 软硬链接</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-ln%E8%BD%AF%E7%A1%AC%E9%93%BE%E6%8E%A5/</link>
      <pubDate>Tue, 03 Aug 2021 11:57:02 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-ln%E8%BD%AF%E7%A1%AC%E9%93%BE%E6%8E%A5/</guid>
      <description>&lt;p&gt;Linux ln（英文全拼：link files）命令是一个非常重要命令，它的功能是为某一个文件在另外一个位置建立一个同步的链接。这有点像 Windows 环境下的快捷方式。介绍命令前了解一下软链接，硬链接具体是什么。&lt;/p&gt;
&lt;h2 id=&#34;硬链接-hard-link&#34;&gt;硬链接 Hard Link&lt;/h2&gt;
&lt;p&gt;在 Linux 系统中，每个文件对应一个 &lt;code&gt;inode&lt;/code&gt;，文件的内容在存储在 &lt;code&gt;inode&lt;/code&gt; 指向的 &lt;code&gt;data block&lt;/code&gt; 中。要读取该文件的内容，需要通过文件所在的目录中记录的&lt;strong&gt;文件名&lt;/strong&gt;找到文件的 &lt;code&gt;inode&lt;/code&gt; 号，然后通过 &lt;code&gt;inode&lt;/code&gt; 找到存储文件内容的 &lt;code&gt;data block&lt;/code&gt;。当然多个&lt;strong&gt;文件名&lt;/strong&gt;可以指向同一个&lt;code&gt;inode&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;使用&lt;code&gt;ll&lt;/code&gt;命令显示文件的详细信息，&lt;code&gt;-i&lt;/code&gt;参数显示其结点信息，其中最前面的一串数字就是&lt;code&gt;inode&lt;/code&gt;信息。我们以&lt;code&gt;/opt/test.txt&lt;/code&gt;文件为例，查看其结点信息。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;dominic@hanhan:/opt$ ll -i test.txt 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2498138 -rw-r--r-- 1 root root 4 8月   3 12:16 test.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使用 &lt;code&gt;ln&lt;/code&gt; 命令在&lt;code&gt;/opt/temp&lt;/code&gt;目录下创建一个 &lt;code&gt;test.txt&lt;/code&gt; 文件的硬链接，然后观察其文件属性：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;dominic@hanhan:/opt/temp$ sudo ln ../test.txt .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dominic@hanhan:/opt/temp$ ll -i ../test.txt test.txt 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2498138 -rw-r--r-- 2 root root 4 8月   3 12:16 ../test.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2498138 -rw-r--r-- 2 root root 4 8月   3 12:16 test.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;我们再用&lt;code&gt;ll -i&lt;/code&gt;命令查看结点信息，发现这两个文件名的结点信息是一样的。说明这两个文件名指向的是同一个文件。其中第三个字段是&lt;strong&gt;链接数&lt;/strong&gt;，数字&lt;code&gt;2&lt;/code&gt;，表示有两个文件名链接到同一个&lt;code&gt;inode&lt;/code&gt;。&lt;/p&gt;
&lt;h4 id=&#34;硬链接的特点&#34;&gt;硬链接的特点&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;硬链接，以文件副本的形式存在。但不占用实际空间。
由于硬链接只是在目录中添加了一条包含文件名和 对应 inode 的记录，所以它几乎不会消耗额外的磁盘容量。&lt;/li&gt;
&lt;li&gt;不允许给目录创建硬链接&lt;/li&gt;
&lt;li&gt;硬链接只有在同一个文件系统中才能创建&lt;/li&gt;
&lt;li&gt;只要还有一个文件名引用着文件，文件就不会被真正删除
删除硬链接所关联的文件时，其实只是删除了一条目录中的记录，真正的文件并不受影响。只有在删除最后一个硬链接时才会真正删除文件的内容数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;软链接-symbolic-link&#34;&gt;软链接 Symbolic Link&lt;/h2&gt;
&lt;p&gt;软链接的实现方式与硬链接有本质上的不同。创建软链接时会创建一个新的文件 (分配一个&lt;code&gt;inode&lt;/code&gt; 和对应的 &lt;code&gt;data block&lt;/code&gt;)，新文件的 &lt;code&gt;data block&lt;/code&gt; 中存储了目标文件的路径。&lt;/p&gt;
&lt;p&gt;我们以&lt;code&gt;/opt/test.txt&lt;/code&gt;为例，在&lt;code&gt;/opt/temp&lt;/code&gt;目录中，为其创建一个软链接，然后查看其&lt;code&gt;inode&lt;/code&gt;结点信息。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;dominic@hanhan:/opt/temp$ sudo ln -s ../test.txt test2.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dominic@hanhan:/opt/temp$ ll -i ../test.txt test2.txt 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2498139 lrwxrwxrwx 1 root root 11 8月   3 14:01 test2.txt -&amp;gt; ../test.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2498138 -rw-r--r-- 2 root root  4 8月   3 12:16 ../test.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;第一个字段不同，说明是两个文件了&lt;/li&gt;
&lt;li&gt;第二个字段表示权限，第一个字母表示文件类型，&lt;code&gt;l&lt;/code&gt;说明书软链接文件&lt;/li&gt;
&lt;li&gt;第三个字段表示链接数，仍然是&lt;code&gt;2&lt;/code&gt;，说明软链接不增加源文件链接数&lt;/li&gt;
&lt;li&gt;第六个字段是文件大小，新建的软链接文件时 11 字节，这就是&lt;code&gt;/opt/test.txt&lt;/code&gt;的长度。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;软链接特点&#34;&gt;软链接特点&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;软链接，以路径的形式存在。类似于 Windows 操作系统中的快捷方式&lt;/li&gt;
&lt;li&gt;软链接可以 跨文件系统，硬链接不可以&lt;/li&gt;
&lt;li&gt;软链接可以对一个不存在的文件名进行链接&lt;/li&gt;
&lt;li&gt;软链接可以对目录进行链接&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用实例&#34;&gt;使用实例&lt;/h2&gt;
&lt;p&gt;ln [参数][源文件或目录][目标文件或目录]
为文件&lt;code&gt;test.txt&lt;/code&gt;创建一个硬链接&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;sudo ln test.txt /etc/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;删除&lt;code&gt;test.txt&lt;/code&gt;的硬链接，因为是以副本形式存在的，所以直接用&lt;code&gt;rm&lt;/code&gt;命令将其删除即可。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;sudo rm /etc/test.txt 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;为文件&lt;code&gt;test.txt&lt;/code&gt;创建一个软链接&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;sudo ln -s test.txt /etc/test2.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;删除软链接也一样，直接用&lt;code&gt;rm&lt;/code&gt;命令删除软链接的名称即可。&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.runoob.com/linux/linux-comm-ln.html&#34;&gt;https://www.runoob.com/linux/linux-comm-ln.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/lixuze/p/14248559.html&#34;&gt;https://www.cnblogs.com/lixuze/p/14248559.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
      <content:encoded><![CDATA[<p>Linux ln（英文全拼：link files）命令是一个非常重要命令，它的功能是为某一个文件在另外一个位置建立一个同步的链接。这有点像 Windows 环境下的快捷方式。介绍命令前了解一下软链接，硬链接具体是什么。</p>
<h2 id="硬链接-hard-link">硬链接 Hard Link</h2>
<p>在 Linux 系统中，每个文件对应一个 <code>inode</code>，文件的内容在存储在 <code>inode</code> 指向的 <code>data block</code> 中。要读取该文件的内容，需要通过文件所在的目录中记录的<strong>文件名</strong>找到文件的 <code>inode</code> 号，然后通过 <code>inode</code> 找到存储文件内容的 <code>data block</code>。当然多个<strong>文件名</strong>可以指向同一个<code>inode</code>。</p>
<p>使用<code>ll</code>命令显示文件的详细信息，<code>-i</code>参数显示其结点信息，其中最前面的一串数字就是<code>inode</code>信息。我们以<code>/opt/test.txt</code>文件为例，查看其结点信息。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">dominic@hanhan:/opt$ ll -i test.txt 
</span></span><span class="line"><span class="cl">2498138 -rw-r--r-- 1 root root 4 8月   3 12:16 test.txt
</span></span></code></pre></div><p>使用 <code>ln</code> 命令在<code>/opt/temp</code>目录下创建一个 <code>test.txt</code> 文件的硬链接，然后观察其文件属性：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">dominic@hanhan:/opt/temp$ sudo ln ../test.txt .
</span></span><span class="line"><span class="cl">dominic@hanhan:/opt/temp$ ll -i ../test.txt test.txt 
</span></span><span class="line"><span class="cl">2498138 -rw-r--r-- 2 root root 4 8月   3 12:16 ../test.txt
</span></span><span class="line"><span class="cl">2498138 -rw-r--r-- 2 root root 4 8月   3 12:16 test.txt
</span></span></code></pre></div><p>我们再用<code>ll -i</code>命令查看结点信息，发现这两个文件名的结点信息是一样的。说明这两个文件名指向的是同一个文件。其中第三个字段是<strong>链接数</strong>，数字<code>2</code>，表示有两个文件名链接到同一个<code>inode</code>。</p>
<h4 id="硬链接的特点">硬链接的特点</h4>
<ul>
<li>硬链接，以文件副本的形式存在。但不占用实际空间。
由于硬链接只是在目录中添加了一条包含文件名和 对应 inode 的记录，所以它几乎不会消耗额外的磁盘容量。</li>
<li>不允许给目录创建硬链接</li>
<li>硬链接只有在同一个文件系统中才能创建</li>
<li>只要还有一个文件名引用着文件，文件就不会被真正删除
删除硬链接所关联的文件时，其实只是删除了一条目录中的记录，真正的文件并不受影响。只有在删除最后一个硬链接时才会真正删除文件的内容数据。</li>
</ul>
<h2 id="软链接-symbolic-link">软链接 Symbolic Link</h2>
<p>软链接的实现方式与硬链接有本质上的不同。创建软链接时会创建一个新的文件 (分配一个<code>inode</code> 和对应的 <code>data block</code>)，新文件的 <code>data block</code> 中存储了目标文件的路径。</p>
<p>我们以<code>/opt/test.txt</code>为例，在<code>/opt/temp</code>目录中，为其创建一个软链接，然后查看其<code>inode</code>结点信息。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">dominic@hanhan:/opt/temp$ sudo ln -s ../test.txt test2.txt
</span></span><span class="line"><span class="cl">dominic@hanhan:/opt/temp$ ll -i ../test.txt test2.txt 
</span></span><span class="line"><span class="cl">2498139 lrwxrwxrwx 1 root root 11 8月   3 14:01 test2.txt -&gt; ../test.txt
</span></span><span class="line"><span class="cl">2498138 -rw-r--r-- 2 root root  4 8月   3 12:16 ../test.txt
</span></span></code></pre></div><ul>
<li>第一个字段不同，说明是两个文件了</li>
<li>第二个字段表示权限，第一个字母表示文件类型，<code>l</code>说明书软链接文件</li>
<li>第三个字段表示链接数，仍然是<code>2</code>，说明软链接不增加源文件链接数</li>
<li>第六个字段是文件大小，新建的软链接文件时 11 字节，这就是<code>/opt/test.txt</code>的长度。</li>
</ul>
<h4 id="软链接特点">软链接特点</h4>
<ul>
<li>软链接，以路径的形式存在。类似于 Windows 操作系统中的快捷方式</li>
<li>软链接可以 跨文件系统，硬链接不可以</li>
<li>软链接可以对一个不存在的文件名进行链接</li>
<li>软链接可以对目录进行链接</li>
</ul>
<h2 id="使用实例">使用实例</h2>
<p>ln [参数][源文件或目录][目标文件或目录]
为文件<code>test.txt</code>创建一个硬链接</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo ln test.txt /etc/
</span></span></code></pre></div><p>删除<code>test.txt</code>的硬链接，因为是以副本形式存在的，所以直接用<code>rm</code>命令将其删除即可。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo rm /etc/test.txt 
</span></span></code></pre></div><p>为文件<code>test.txt</code>创建一个软链接</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo ln -s test.txt /etc/test2.txt
</span></span></code></pre></div><p>删除软链接也一样，直接用<code>rm</code>命令删除软链接的名称即可。</p>
<h2 id="reference">Reference</h2>
<ul>
<li><a href="https://www.runoob.com/linux/linux-comm-ln.html">https://www.runoob.com/linux/linux-comm-ln.html</a></li>
<li><a href="https://www.cnblogs.com/lixuze/p/14248559.html">https://www.cnblogs.com/lixuze/p/14248559.html</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-ed 行编辑器</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-ed%E8%A1%8C%E7%BC%96%E8%BE%91%E5%99%A8/</link>
      <pubDate>Mon, 02 Aug 2021 09:57:10 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-ed%E8%A1%8C%E7%BC%96%E8%BE%91%E5%99%A8/</guid>
      <description>&lt;p&gt;&lt;code&gt;ed&lt;/code&gt;命令是文本编辑器，用于文本编辑。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ed&lt;/code&gt;是 Linux 中功能最简单的文本编辑程序，一次仅能编辑一行而非全屏幕方式的操作。很多命令和&lt;code&gt;vim&lt;/code&gt;相似，平时开发中并不常用，但是在编辑大文本时还是会用到。&lt;/p&gt;
&lt;p&gt;学学无妨毕竟这是 Unix 系统三大要件（编辑器，汇编器和 shell）之一。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ed&lt;/code&gt;编辑器有两种模式：命令模式和输入模式。命令模式下输入&lt;code&gt;a&lt;/code&gt;,&lt;code&gt;i&lt;/code&gt;,&lt;code&gt;c&lt;/code&gt;,&lt;code&gt;d&lt;/code&gt;可以进入对应的编辑模式，接下来可以输入任何想要输入的内容，输入完毕或者要切换命令时，可以输入&lt;code&gt;.&lt;/code&gt;退出输入模式。&lt;/p&gt;
&lt;h2 id=&#34;commands&#34;&gt;Commands&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;a           #添加到行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;i           #添加到行首
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;c           #改变行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;d           #删除行
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;line-address&#34;&gt;Line Address&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;. #buffer 中 当前行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ #最后一行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;n #第 n 行，行的范围是 [0,$]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- or ^ #前一行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-n or ^n #前 n 行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ or +n #后一行及后n行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;, or % #全部行，等同于 1,$
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;; #当前行到最后一行 .,$
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/re/ #下一个包含正则 re 的行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;?re? #上一个包含正则 re 的行
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;使用实例&#34;&gt;使用实例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;dominic@hanhan:~$ ed                # 进入编辑模式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is a test text!                # 输入文本
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.               # 结束输入命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is a test text!                # 回显当前行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;n               # 显示行号命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1 This is a test text!        # 回显当前行并显示行号
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;c               # 改变行命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is changed text!               # 输入更改后的内容
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.               # 结束输入命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;n               # 显示行号命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1 This is changed text!       # 回显当前行并显示行号
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;i               # 在首行插入命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is first line!                 # 输入插入内容
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.               # 结束输入命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+               # 后一行命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is changed text!               # 回显后一行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;d               # 删除当前行 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.               # 回显当前行命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is firt line!                  # 回显当前行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is second line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is third line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is fourth line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;w test.txt      # 写入并保存文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;q               # 退出编辑器
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dominic@hanhan:~$ cat test.txt      # 查看内容
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is first line!s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is second line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is third line!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is fourth line!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<p><code>ed</code>命令是文本编辑器，用于文本编辑。</p>
<p><code>ed</code>是 Linux 中功能最简单的文本编辑程序，一次仅能编辑一行而非全屏幕方式的操作。很多命令和<code>vim</code>相似，平时开发中并不常用，但是在编辑大文本时还是会用到。</p>
<p>学学无妨毕竟这是 Unix 系统三大要件（编辑器，汇编器和 shell）之一。</p>
<p><code>ed</code>编辑器有两种模式：命令模式和输入模式。命令模式下输入<code>a</code>,<code>i</code>,<code>c</code>,<code>d</code>可以进入对应的编辑模式，接下来可以输入任何想要输入的内容，输入完毕或者要切换命令时，可以输入<code>.</code>退出输入模式。</p>
<h2 id="commands">Commands</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">a           #添加到行
</span></span><span class="line"><span class="cl">i           #添加到行首
</span></span><span class="line"><span class="cl">c           #改变行
</span></span><span class="line"><span class="cl">d           #删除行
</span></span></code></pre></div><h2 id="line-address">Line Address</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">. #buffer 中 当前行
</span></span><span class="line"><span class="cl">$ #最后一行
</span></span><span class="line"><span class="cl">n #第 n 行，行的范围是 [0,$]
</span></span><span class="line"><span class="cl">- or ^ #前一行
</span></span><span class="line"><span class="cl">-n or ^n #前 n 行
</span></span><span class="line"><span class="cl">+ or +n #后一行及后n行
</span></span><span class="line"><span class="cl">, or % #全部行，等同于 1,$
</span></span><span class="line"><span class="cl">; #当前行到最后一行 .,$
</span></span><span class="line"><span class="cl">/re/ #下一个包含正则 re 的行
</span></span><span class="line"><span class="cl">?re? #上一个包含正则 re 的行
</span></span></code></pre></div><h2 id="使用实例">使用实例</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">dominic@hanhan:~$ ed                # 进入编辑模式
</span></span><span class="line"><span class="cl">This is a test text!                # 输入文本
</span></span><span class="line"><span class="cl">.               # 结束输入命令
</span></span><span class="line"><span class="cl">This is a test text!                # 回显当前行
</span></span><span class="line"><span class="cl">n               # 显示行号命令
</span></span><span class="line"><span class="cl">1 This is a test text!        # 回显当前行并显示行号
</span></span><span class="line"><span class="cl">c               # 改变行命令
</span></span><span class="line"><span class="cl">This is changed text!               # 输入更改后的内容
</span></span><span class="line"><span class="cl">.               # 结束输入命令
</span></span><span class="line"><span class="cl">n               # 显示行号命令
</span></span><span class="line"><span class="cl">1 This is changed text!       # 回显当前行并显示行号
</span></span><span class="line"><span class="cl">i               # 在首行插入命令
</span></span><span class="line"><span class="cl">This is first line!                 # 输入插入内容
</span></span><span class="line"><span class="cl">.               # 结束输入命令
</span></span><span class="line"><span class="cl">+               # 后一行命令
</span></span><span class="line"><span class="cl">This is changed text!               # 回显后一行
</span></span><span class="line"><span class="cl">d               # 删除当前行 
</span></span><span class="line"><span class="cl">.               # 回显当前行命令
</span></span><span class="line"><span class="cl">This is firt line!                  # 回显当前行
</span></span><span class="line"><span class="cl">a
</span></span><span class="line"><span class="cl">This is second line!
</span></span><span class="line"><span class="cl">This is third line!
</span></span><span class="line"><span class="cl">This is fourth line!
</span></span><span class="line"><span class="cl">w test.txt      # 写入并保存文件
</span></span><span class="line"><span class="cl">q               # 退出编辑器
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">dominic@hanhan:~$ cat test.txt      # 查看内容
</span></span><span class="line"><span class="cl">This is first line!s
</span></span><span class="line"><span class="cl">This is second line!
</span></span><span class="line"><span class="cl">This is third line!
</span></span><span class="line"><span class="cl">This is fourth line!
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-wc 统计文件有多少字多少行</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-wc%E7%BB%9F%E8%AE%A1%E6%96%87%E4%BB%B6%E6%9C%89%E5%A4%9A%E5%B0%91%E5%AD%97%E5%A4%9A%E5%B0%91%E8%A1%8C/</link>
      <pubDate>Fri, 30 Jul 2021 17:26:39 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-wc%E7%BB%9F%E8%AE%A1%E6%96%87%E4%BB%B6%E6%9C%89%E5%A4%9A%E5%B0%91%E5%AD%97%E5%A4%9A%E5%B0%91%E8%A1%8C/</guid>
      <description>&lt;p&gt;想知道自己代码写了多少行，可以一个&lt;code&gt;wc&lt;/code&gt;命令搞定。&lt;/p&gt;
&lt;h2 id=&#34;可选参数&#34;&gt;可选参数&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-l：仅列出行；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-w：仅列出多少字 (英文单字)；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-m：多少字符
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;使用实例&#34;&gt;使用实例&lt;/h2&gt;
&lt;p&gt;统计&lt;code&gt;hello.c&lt;/code&gt;文件夹下文件总共多少行&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;$ wc -l  hello.c
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;14&lt;/span&gt; hello.c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;统计文件夹下文件的个数&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;ls -l &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep &lt;span class=&#34;s2&#34;&gt;&amp;#34;^-&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; wc -l
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;统计当前目录下文件的个数（包括子目录）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;ls -lR&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep &lt;span class=&#34;s2&#34;&gt;&amp;#34;^-&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; wc -l
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看目录下文件夹 (目录) 的个数（包括子目录）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;ls -lR &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep &lt;span class=&#34;s2&#34;&gt;&amp;#34;^d&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; wc -l
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;过滤&lt;code&gt;ls&lt;/code&gt;的输出信息，只保留一般文件，只保留目录是&lt;code&gt;grep &amp;quot;^d&amp;quot;&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
</description>
      <content:encoded><![CDATA[<p>想知道自己代码写了多少行，可以一个<code>wc</code>命令搞定。</p>
<h2 id="可选参数">可选参数</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">-l：仅列出行；
</span></span><span class="line"><span class="cl">-w：仅列出多少字 (英文单字)；
</span></span><span class="line"><span class="cl">-m：多少字符
</span></span></code></pre></div><h2 id="使用实例">使用实例</h2>
<p>统计<code>hello.c</code>文件夹下文件总共多少行</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Bash" data-lang="Bash"><span class="line"><span class="cl">$ wc -l  hello.c
</span></span><span class="line"><span class="cl"><span class="m">14</span> hello.c
</span></span></code></pre></div><p>统计文件夹下文件的个数</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Bash" data-lang="Bash"><span class="line"><span class="cl">ls -l <span class="p">|</span> grep <span class="s2">&#34;^-&#34;</span> <span class="p">|</span> wc -l
</span></span></code></pre></div><p>统计当前目录下文件的个数（包括子目录）</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Bash" data-lang="Bash"><span class="line"><span class="cl">ls -lR<span class="p">|</span> grep <span class="s2">&#34;^-&#34;</span> <span class="p">|</span> wc -l
</span></span></code></pre></div><p>查看目录下文件夹 (目录) 的个数（包括子目录）</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Bash" data-lang="Bash"><span class="line"><span class="cl">ls -lR <span class="p">|</span> grep <span class="s2">&#34;^d&#34;</span> <span class="p">|</span> wc -l
</span></span></code></pre></div><ul>
<li>过滤<code>ls</code>的输出信息，只保留一般文件，只保留目录是<code>grep &quot;^d&quot;</code>。</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-find 查找文件</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-find%E6%9F%A5%E6%89%BE%E6%96%87%E4%BB%B6/</link>
      <pubDate>Thu, 29 Jul 2021 11:05:43 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-find%E6%9F%A5%E6%89%BE%E6%96%87%E4%BB%B6/</guid>
      <description>&lt;h2 id=&#34;命令格式&#34;&gt;命令格式&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;find [path] [expression]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在&lt;code&gt;path&lt;/code&gt;下查找&lt;code&gt;expression&lt;/code&gt;表示的文件&lt;/p&gt;
&lt;h2 id=&#34;常用命令&#34;&gt;常用命令&lt;/h2&gt;
&lt;p&gt;一般常见就是自己不知道写的某个文件或者文件夹放哪里了，又或者只记住部分文件名。以下几个命令就能帮到你。&lt;/p&gt;
&lt;h3 id=&#34;按文件名查找&#34;&gt;按文件名查找&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;find  -name filename(查找结果显示路径)或者 find filename(查找结果不显示路径)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find hello.cpp          #当前目录下精确查找hello.cpp文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find hello              #当前目录下精确查找hello文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find hello*             #当前目录下模糊查找以hello为前缀的文件
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;按类型查找&#34;&gt;按类型查找&lt;/h3&gt;
&lt;p&gt;这就是为查找文件夹用的。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;find -type [fdlcb] name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;[fdlcb]&lt;/code&gt;都是类型，&lt;code&gt;d&lt;/code&gt;就是目录，文件夹类型。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;find / -type d -name &amp;#34;helloworld&amp;#34;   #查找名为helloworld的文件夹
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;按文件名查找-1&#34;&gt;按文件名查找&lt;/h2&gt;
&lt;p&gt;以下就详细介绍一些参数&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;find -name &amp;#34;hello.cpp&amp;#34;              # 搜索文件名，大小写敏感
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find -iname &amp;#34;hello.cpp&amp;#34;             #大小写不敏感
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;按文件大小查找&#34;&gt;按文件大小查找&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;find [path] -size 50M
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find / -size 10M                # 查找系统中大小等于10M的文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find / -size +50M               # 查找系统中大小大于50M的文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find  / -size -30M              # 查找系统中大小小于30M的文件
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;按时间来查找文件&#34;&gt;按时间来查找文件&lt;/h2&gt;
&lt;p&gt;Linux 会存储下面的时间：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Access time 上一次文件读或者写的时间&lt;/li&gt;
&lt;li&gt;Modifica time 上一次文件被修改的时间&lt;/li&gt;
&lt;li&gt;Change time 上一次文件 &lt;code&gt;inode meta&lt;/code&gt; 信息被修改的时间&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在按照时间查找时，可以使用 &lt;code&gt;-atime&lt;/code&gt;， &lt;code&gt;-mtime&lt;/code&gt; 或者 &lt;code&gt;-ctime&lt;/code&gt;，和之前 &lt;code&gt;size&lt;/code&gt;参数一样可以使用 &lt;code&gt;+&lt;/code&gt; 或者 &lt;code&gt;-&lt;/code&gt;时间范围，下图表示&lt;code&gt;find&lt;/code&gt;的时间轴。&lt;code&gt;+&lt;/code&gt;表示超过多少天，&lt;code&gt;-&lt;/code&gt;表示多少天以内。&lt;/p&gt;
&lt;p&gt;此外，也可以换成&lt;code&gt;-amin&lt;/code&gt;， &lt;code&gt;-mmin&lt;/code&gt; 或者 &lt;code&gt;-cmin&lt;/code&gt;参数，单位是分钟。&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img/20210729151915.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img/20210729151915.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;find / -mtime 1          # 寻找修改时间超过一天的文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find / -atime -1         # 寻找在一天时间内被访问的文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find / -ctime +3         # 寻找 meta 信息被修改的时间超过 3 天的文件
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;http://c.biancheng.net/view/779.html&#34;&gt;http://c.biancheng.net/view/779.html&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://einverne.github.io/post/2018/02/find-command.html#%E6%89%B9%E9%87%8F%E5%88%A0%E9%99%A4%E6%97%B6%E9%97%B4%E8%B6%85%E8%BF%87-1-%E5%A4%A9%E7%9A%84%E6%96%87%E4%BB%B6&#34;&gt;https://einverne.github.io/post/2018/02/find-command.html#%E6%89%B9%E9%87%8F%E5%88%A0%E9%99%A4%E6%97%B6%E9%97%B4%E8%B6%85%E8%BF%87-1-%E5%A4%A9%E7%9A%84%E6%96%87%E4%BB%B6&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
</description>
      <content:encoded><![CDATA[<h2 id="命令格式">命令格式</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">find [path] [expression]
</span></span></code></pre></div><p>在<code>path</code>下查找<code>expression</code>表示的文件</p>
<h2 id="常用命令">常用命令</h2>
<p>一般常见就是自己不知道写的某个文件或者文件夹放哪里了，又或者只记住部分文件名。以下几个命令就能帮到你。</p>
<h3 id="按文件名查找">按文件名查找</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">find  -name filename(查找结果显示路径)或者 find filename(查找结果不显示路径)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">find hello.cpp          #当前目录下精确查找hello.cpp文件
</span></span><span class="line"><span class="cl">find hello              #当前目录下精确查找hello文件
</span></span><span class="line"><span class="cl">find hello*             #当前目录下模糊查找以hello为前缀的文件
</span></span></code></pre></div><h3 id="按类型查找">按类型查找</h3>
<p>这就是为查找文件夹用的。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">find -type [fdlcb] name
</span></span></code></pre></div><p><code>[fdlcb]</code>都是类型，<code>d</code>就是目录，文件夹类型。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">find / -type d -name &#34;helloworld&#34;   #查找名为helloworld的文件夹
</span></span></code></pre></div><h2 id="按文件名查找-1">按文件名查找</h2>
<p>以下就详细介绍一些参数</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">find -name &#34;hello.cpp&#34;              # 搜索文件名，大小写敏感
</span></span><span class="line"><span class="cl">find -iname &#34;hello.cpp&#34;             #大小写不敏感
</span></span></code></pre></div><h2 id="按文件大小查找">按文件大小查找</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">find [path] -size 50M
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">find / -size 10M                # 查找系统中大小等于10M的文件
</span></span><span class="line"><span class="cl">find / -size +50M               # 查找系统中大小大于50M的文件
</span></span><span class="line"><span class="cl">find  / -size -30M              # 查找系统中大小小于30M的文件
</span></span></code></pre></div><h2 id="按时间来查找文件">按时间来查找文件</h2>
<p>Linux 会存储下面的时间：</p>
<ul>
<li>Access time 上一次文件读或者写的时间</li>
<li>Modifica time 上一次文件被修改的时间</li>
<li>Change time 上一次文件 <code>inode meta</code> 信息被修改的时间</li>
</ul>
<p>在按照时间查找时，可以使用 <code>-atime</code>， <code>-mtime</code> 或者 <code>-ctime</code>，和之前 <code>size</code>参数一样可以使用 <code>+</code> 或者 <code>-</code>时间范围，下图表示<code>find</code>的时间轴。<code>+</code>表示超过多少天，<code>-</code>表示多少天以内。</p>
<p>此外，也可以换成<code>-amin</code>， <code>-mmin</code> 或者 <code>-cmin</code>参数，单位是分钟。</p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img/20210729151915.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img/20210729151915.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">find / -mtime 1          # 寻找修改时间超过一天的文件
</span></span><span class="line"><span class="cl">find / -atime -1         # 寻找在一天时间内被访问的文件
</span></span><span class="line"><span class="cl">find / -ctime +3         # 寻找 meta 信息被修改的时间超过 3 天的文件
</span></span></code></pre></div><h2 id="reference">Reference</h2>
<ol>
<li>
<p><a href="http://c.biancheng.net/view/779.html">http://c.biancheng.net/view/779.html</a></p>
</li>
<li>
<p><a href="https://einverne.github.io/post/2018/02/find-command.html#%E6%89%B9%E9%87%8F%E5%88%A0%E9%99%A4%E6%97%B6%E9%97%B4%E8%B6%85%E8%BF%87-1-%E5%A4%A9%E7%9A%84%E6%96%87%E4%BB%B6">https://einverne.github.io/post/2018/02/find-command.html#%E6%89%B9%E9%87%8F%E5%88%A0%E9%99%A4%E6%97%B6%E9%97%B4%E8%B6%85%E8%BF%87-1-%E5%A4%A9%E7%9A%84%E6%96%87%E4%BB%B6</a></p>
</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>每天学命令-df/du查看磁盘剩余空间</title>
      <link>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-df-du%E6%9F%A5%E7%9C%8B%E7%A3%81%E7%9B%98%E5%89%A9%E4%BD%99%E7%A9%BA%E9%97%B4/</link>
      <pubDate>Wed, 28 Jul 2021 10:13:58 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E5%91%BD%E4%BB%A4-df-du%E6%9F%A5%E7%9C%8B%E7%A3%81%E7%9B%98%E5%89%A9%E4%BD%99%E7%A9%BA%E9%97%B4/</guid>
      <description>&lt;p&gt;&lt;code&gt;df&lt;/code&gt;全称&lt;code&gt;disk filesystem&lt;/code&gt; ，以磁盘分区为单位查看文件系统，可以查看磁盘文件占用空间，磁盘剩余空间等信息。&lt;/p&gt;
&lt;h2 id=&#34;命令格式&#34;&gt;命令格式&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;df [] []
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;可选参数&#34;&gt;可选参数&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;-a      全部文件系统列表
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-h      方便阅读方式显示
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-H      等于“-h”，但是计算式，1K=1000，而不是 1K=1024
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-i      显示 inode 信息
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-k      区块为 1024 字节
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-l      只显示本地文件系统
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-m      区块为 1048576 字节
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--no-sync 忽略 sync 命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-P      输出格式为 POSIX
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--sync  在取得磁盘信息前，先执行 sync 命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-T      文件系统类型
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;使用实例&#34;&gt;使用实例&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;df -T&lt;/code&gt;显示包含文件系统，类型，可用大小，已用大小，挂载点等信息。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;dominic@hanhan:~$ df -T
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;文件系统       类型         1K-块      已用      可用 已用% 挂载点
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;udev           devtmpfs   1985056         0   1985056    0% /dev
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tmpfs          tmpfs       403036      1304    401732    1% /run
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/sda5      ext4      50824704  20826256  27386992   44% /
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tmpfs          tmpfs      2015172         0   2015172    0% /dev/shm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tmpfs          tmpfs         5120         4      5116    1% /run/lock
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tmpfs          tmpfs      2015172         0   2015172    0% /sys/fs/cgroup
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/loop0     squashfs     56832     56832         0  100% /snap/core18/1988
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/loop1     squashfs     56832     56832         0  100% /snap/core18/2074
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;&lt;code&gt;du&lt;/code&gt;全称&lt;code&gt;disk usage&lt;/code&gt;可以查看文件，文件夹占用情况。&lt;/p&gt;
&lt;h2 id=&#34;命令格式-1&#34;&gt;命令格式&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;du [opt] [filename]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;可选参数-1&#34;&gt;可选参数&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;-a或-all                    #显示目录中个别文件的大小。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-b或-bytes                  #显示目录或文件大小时，以byte为单位。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-c或--total                 #除了显示个别目录或文件的大小外，同时也显示所有目录或文件的总和。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-D或--dereference-args      #显示指定符号连接的源文件大小。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-h或--human-readable        #以K，M，G为单位，提高信息的可读性。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-H或--si                    #与-h参数相同，但是K，M，G是以1000为换算单位。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-k或--kilobytes             #以1024 bytes为单位。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-l或--count-links           #重复计算硬件连接的文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-L&amp;lt;符号连接&amp;gt;或-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-dereference&amp;lt;符号连接&amp;gt;          #显示选项中所指定符号连接的源文件大小。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-m或--megabytes                 #以1MB为单位。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-s或--summarize                 #仅显示总计。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-S或--separate-dirs             #显示个别目录的大小时，并不含其子目录的大小。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-x或--one-file-xystem           #以一开始处理时的文件系统为准，若遇上其它不同的文件系统目录则略过。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-X&amp;lt;文件&amp;gt;或--exclude-from=&amp;lt;文件&amp;gt;  #在&amp;lt;文件&amp;gt;指定目录或文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--exclude=&amp;lt;目录或文件&amp;gt;           #略过指定的目录或文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--max-depth=&amp;lt;目录层数&amp;gt;           #超过指定层数的目录后，予以忽略。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--help          #显示帮助。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--version       #显示版本信息
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;使用实例-1&#34;&gt;使用实例&lt;/h2&gt;
&lt;p&gt;查看当前目录使用情况&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;dominic@hanhan:~/learning-linux$ du
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;56 ./.git/hooks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8 ./.git/logs/refs/heads
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8 ./.git/logs/refs/remotes/origin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;12 ./.git/logs/refs/remotes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;24 ./.git/logs/refs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;32 ./.git/logs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8 ./.git/info
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以易读的方式查看使用情况&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;dominic@hanhan:~/learning-linux$ du -h
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;56K ./.git/hooks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8.0K ./.git/logs/refs/heads
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8.0K ./.git/logs/refs/remotes/origin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;12K ./.git/logs/refs/remotes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;24K ./.git/logs/refs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;32K ./.git/logs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8.0K ./.git/info
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;只输出当前目录占用总空间，同上&lt;code&gt;-h&lt;/code&gt;命令就是以人读的方式（加上了数据单位）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;dominic@hanhan:~/learning-linux$ du -hs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;264K .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看当前目录及其指定深度目录的大小&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;不深入子目录，就是当前文件夹所占用大小
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dominic@hanhan:~/learning-linux$ du -h --max-depth=0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;264K .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&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;深入一层
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dominic@hanhan:~/learning-linux$ du -h --max-depth=2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;56K ./.git/hooks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;32K ./.git/logs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8.0K ./.git/info
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;28K ./.git/objects
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.0K ./.git/branches
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;28K ./.git/refs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;180K ./.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;24K ./helloworld/c
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;44K ./helloworld/shell
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;72K ./helloworld
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;264K .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;忽略&lt;code&gt;helloworld&lt;/code&gt;这个文件夹&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&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;dominic@hanhan:~/learning-linux$ du --exclude=helloworld
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;56 ./.git/hooks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8 ./.git/logs/refs/heads
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8 ./.git/logs/refs/remotes/origin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;12 ./.git/logs/refs/remotes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;24 ./.git/logs/refs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;32 ./.git/logs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8 ./.git/info
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4 ./.git/objects/info
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;20 ./.git/objects/pack
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;28 ./.git/objects
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4 ./.git/branches
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8 ./.git/refs/heads
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4 ./.git/refs/tags
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8 ./.git/refs/remotes/origin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;12 ./.git/refs/remotes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;28 ./.git/refs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;180 ./.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;192 .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;refernece&#34;&gt;Refernece&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://einverne.github.io/post/2018/03/du-find-out-which-fold-take-space.html&#34;&gt;https://einverne.github.io/post/2018/03/du-find-out-which-fold-take-space.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.runoob.com/linux/linux-comm-du.html&#34;&gt;https://www.runoob.com/linux/linux-comm-du.html&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</description>
      <content:encoded><![CDATA[<p><code>df</code>全称<code>disk filesystem</code> ，以磁盘分区为单位查看文件系统，可以查看磁盘文件占用空间，磁盘剩余空间等信息。</p>
<h2 id="命令格式">命令格式</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">df [] []
</span></span></code></pre></div><h2 id="可选参数">可选参数</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">-a      全部文件系统列表
</span></span><span class="line"><span class="cl">-h      方便阅读方式显示
</span></span><span class="line"><span class="cl">-H      等于“-h”，但是计算式，1K=1000，而不是 1K=1024
</span></span><span class="line"><span class="cl">-i      显示 inode 信息
</span></span><span class="line"><span class="cl">-k      区块为 1024 字节
</span></span><span class="line"><span class="cl">-l      只显示本地文件系统
</span></span><span class="line"><span class="cl">-m      区块为 1048576 字节
</span></span><span class="line"><span class="cl">--no-sync 忽略 sync 命令
</span></span><span class="line"><span class="cl">-P      输出格式为 POSIX
</span></span><span class="line"><span class="cl">--sync  在取得磁盘信息前，先执行 sync 命令
</span></span><span class="line"><span class="cl">-T      文件系统类型
</span></span></code></pre></div><h2 id="使用实例">使用实例</h2>
<p><code>df -T</code>显示包含文件系统，类型，可用大小，已用大小，挂载点等信息。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">dominic@hanhan:~$ df -T
</span></span><span class="line"><span class="cl">文件系统       类型         1K-块      已用      可用 已用% 挂载点
</span></span><span class="line"><span class="cl">udev           devtmpfs   1985056         0   1985056    0% /dev
</span></span><span class="line"><span class="cl">tmpfs          tmpfs       403036      1304    401732    1% /run
</span></span><span class="line"><span class="cl">/dev/sda5      ext4      50824704  20826256  27386992   44% /
</span></span><span class="line"><span class="cl">tmpfs          tmpfs      2015172         0   2015172    0% /dev/shm
</span></span><span class="line"><span class="cl">tmpfs          tmpfs         5120         4      5116    1% /run/lock
</span></span><span class="line"><span class="cl">tmpfs          tmpfs      2015172         0   2015172    0% /sys/fs/cgroup
</span></span><span class="line"><span class="cl">/dev/loop0     squashfs     56832     56832         0  100% /snap/core18/1988
</span></span><span class="line"><span class="cl">/dev/loop1     squashfs     56832     56832         0  100% /snap/core18/2074
</span></span></code></pre></div><hr>
<p><code>du</code>全称<code>disk usage</code>可以查看文件，文件夹占用情况。</p>
<h2 id="命令格式-1">命令格式</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">du [opt] [filename]
</span></span></code></pre></div><h2 id="可选参数-1">可选参数</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">-a或-all                    #显示目录中个别文件的大小。
</span></span><span class="line"><span class="cl">-b或-bytes                  #显示目录或文件大小时，以byte为单位。
</span></span><span class="line"><span class="cl">-c或--total                 #除了显示个别目录或文件的大小外，同时也显示所有目录或文件的总和。
</span></span><span class="line"><span class="cl">-D或--dereference-args      #显示指定符号连接的源文件大小。
</span></span><span class="line"><span class="cl">-h或--human-readable        #以K，M，G为单位，提高信息的可读性。
</span></span><span class="line"><span class="cl">-H或--si                    #与-h参数相同，但是K，M，G是以1000为换算单位。
</span></span><span class="line"><span class="cl">-k或--kilobytes             #以1024 bytes为单位。
</span></span><span class="line"><span class="cl">-l或--count-links           #重复计算硬件连接的文件。
</span></span><span class="line"><span class="cl">-L&lt;符号连接&gt;或-
</span></span><span class="line"><span class="cl">-dereference&lt;符号连接&gt;          #显示选项中所指定符号连接的源文件大小。
</span></span><span class="line"><span class="cl">-m或--megabytes                 #以1MB为单位。
</span></span><span class="line"><span class="cl">-s或--summarize                 #仅显示总计。
</span></span><span class="line"><span class="cl">-S或--separate-dirs             #显示个别目录的大小时，并不含其子目录的大小。
</span></span><span class="line"><span class="cl">-x或--one-file-xystem           #以一开始处理时的文件系统为准，若遇上其它不同的文件系统目录则略过。
</span></span><span class="line"><span class="cl">-X&lt;文件&gt;或--exclude-from=&lt;文件&gt;  #在&lt;文件&gt;指定目录或文件。
</span></span><span class="line"><span class="cl">--exclude=&lt;目录或文件&gt;           #略过指定的目录或文件。
</span></span><span class="line"><span class="cl">--max-depth=&lt;目录层数&gt;           #超过指定层数的目录后，予以忽略。
</span></span><span class="line"><span class="cl">--help          #显示帮助。
</span></span><span class="line"><span class="cl">--version       #显示版本信息
</span></span></code></pre></div><h2 id="使用实例-1">使用实例</h2>
<p>查看当前目录使用情况</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">dominic@hanhan:~/learning-linux$ du
</span></span><span class="line"><span class="cl">56 ./.git/hooks
</span></span><span class="line"><span class="cl">8 ./.git/logs/refs/heads
</span></span><span class="line"><span class="cl">8 ./.git/logs/refs/remotes/origin
</span></span><span class="line"><span class="cl">12 ./.git/logs/refs/remotes
</span></span><span class="line"><span class="cl">24 ./.git/logs/refs
</span></span><span class="line"><span class="cl">32 ./.git/logs
</span></span><span class="line"><span class="cl">8 ./.git/info
</span></span></code></pre></div><p>以易读的方式查看使用情况</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">dominic@hanhan:~/learning-linux$ du -h
</span></span><span class="line"><span class="cl">56K ./.git/hooks
</span></span><span class="line"><span class="cl">8.0K ./.git/logs/refs/heads
</span></span><span class="line"><span class="cl">8.0K ./.git/logs/refs/remotes/origin
</span></span><span class="line"><span class="cl">12K ./.git/logs/refs/remotes
</span></span><span class="line"><span class="cl">24K ./.git/logs/refs
</span></span><span class="line"><span class="cl">32K ./.git/logs
</span></span><span class="line"><span class="cl">8.0K ./.git/info
</span></span></code></pre></div><p>只输出当前目录占用总空间，同上<code>-h</code>命令就是以人读的方式（加上了数据单位）</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">dominic@hanhan:~/learning-linux$ du -hs
</span></span><span class="line"><span class="cl">264K .
</span></span></code></pre></div><p>查看当前目录及其指定深度目录的大小</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">不深入子目录，就是当前文件夹所占用大小
</span></span><span class="line"><span class="cl">dominic@hanhan:~/learning-linux$ du -h --max-depth=0
</span></span><span class="line"><span class="cl">264K .
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">深入一层
</span></span><span class="line"><span class="cl">dominic@hanhan:~/learning-linux$ du -h --max-depth=2
</span></span><span class="line"><span class="cl">56K ./.git/hooks
</span></span><span class="line"><span class="cl">32K ./.git/logs
</span></span><span class="line"><span class="cl">8.0K ./.git/info
</span></span><span class="line"><span class="cl">28K ./.git/objects
</span></span><span class="line"><span class="cl">4.0K ./.git/branches
</span></span><span class="line"><span class="cl">28K ./.git/refs
</span></span><span class="line"><span class="cl">180K ./.git
</span></span><span class="line"><span class="cl">24K ./helloworld/c
</span></span><span class="line"><span class="cl">44K ./helloworld/shell
</span></span><span class="line"><span class="cl">72K ./helloworld
</span></span><span class="line"><span class="cl">264K .
</span></span></code></pre></div><p>忽略<code>helloworld</code>这个文件夹</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">dominic@hanhan:~/learning-linux$ du --exclude=helloworld
</span></span><span class="line"><span class="cl">56 ./.git/hooks
</span></span><span class="line"><span class="cl">8 ./.git/logs/refs/heads
</span></span><span class="line"><span class="cl">8 ./.git/logs/refs/remotes/origin
</span></span><span class="line"><span class="cl">12 ./.git/logs/refs/remotes
</span></span><span class="line"><span class="cl">24 ./.git/logs/refs
</span></span><span class="line"><span class="cl">32 ./.git/logs
</span></span><span class="line"><span class="cl">8 ./.git/info
</span></span><span class="line"><span class="cl">4 ./.git/objects/info
</span></span><span class="line"><span class="cl">20 ./.git/objects/pack
</span></span><span class="line"><span class="cl">28 ./.git/objects
</span></span><span class="line"><span class="cl">4 ./.git/branches
</span></span><span class="line"><span class="cl">8 ./.git/refs/heads
</span></span><span class="line"><span class="cl">4 ./.git/refs/tags
</span></span><span class="line"><span class="cl">8 ./.git/refs/remotes/origin
</span></span><span class="line"><span class="cl">12 ./.git/refs/remotes
</span></span><span class="line"><span class="cl">28 ./.git/refs
</span></span><span class="line"><span class="cl">180 ./.git
</span></span><span class="line"><span class="cl">192 .
</span></span></code></pre></div><h2 id="refernece">Refernece</h2>
<ol>
<li><a href="https://einverne.github.io/post/2018/03/du-find-out-which-fold-take-space.html">https://einverne.github.io/post/2018/03/du-find-out-which-fold-take-space.html</a></li>
<li><a href="https://www.runoob.com/linux/linux-comm-du.html">https://www.runoob.com/linux/linux-comm-du.html</a></li>
</ol>
]]></content:encoded>
    </item>
  </channel>
</rss>
