<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux on 随记</title><link>https://blog.liuyi2026.asia/zh/tags/Linux/</link><description>Recent content in Linux on 随记</description><generator>Hugo</generator><language>zh</language><lastBuildDate>Sun, 23 Aug 2026 16:27:59 +0800</lastBuildDate><atom:link href="https://blog.liuyi2026.asia/zh/tags/Linux/index.xml" rel="self" type="application/rss+xml"/><item><title>Vmware上安装Ubuntu</title><link>https://blog.liuyi2026.asia/zh/docs/technology/Linux/Vmware%E4%B8%8A%E5%AE%89%E8%A3%85Ubuntu/</link><pubDate>Sun, 23 Aug 2026 16:27:59 +0800</pubDate><guid>https://blog.liuyi2026.asia/zh/docs/technology/Linux/Vmware%E4%B8%8A%E5%AE%89%E8%A3%85Ubuntu/</guid><description>&lt;ul>
&lt;li>推荐内存8GB，硬盘80GB选择Single，网络我使用的是桥接&lt;/li>
&lt;li>擦除磁盘并安装，文件系统无加密&lt;/li>
&lt;li>设置账号-活动目录不要勾选&lt;/li>
&lt;li>安装过程中会有红色报错&lt;code>piix4_smbus 0000:00:07.3: SMBus Host Controller not enabled!&lt;/code> &lt;del>Ubuntu 内核在启动时试图加载 piix4_smbus 模块来读取主板总线设备，但 VMware 虚拟机并没有提供真实的 SMBus 硬件，因此系统抛出了这个红色提示&lt;/del>&lt;/li>
&lt;li>安装时建议选择语言为English，后续需要汉化再安装汉化包，避免出现&lt;code>用户\文档&lt;/code>、&lt;code>用户\图片&lt;/code>之类的中文文件夹&lt;/li>
&lt;li>键盘布局选择 Chinese，Chinese&lt;/li>
&lt;li>安装哪些应用？默认集合&lt;/li>
&lt;li>安装推荐的专有软件：1 为图形和wifi硬件安装第三方软件 2 下载并安装对其他媒体格式的支持。2个都勾选&lt;/li>
&lt;li>安装过程半个小时以上（比debian久很多）&lt;/li>
&lt;li>vmware安装(ubuntu26.04及以上)
&lt;code>sudo apt install -y open-vm-tools open-vm-tools-desktop&lt;/code>&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 设置静态ip (这个先不要操作，貌似不能用)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo nmcli connection modify ens33 ipv4.addresses 192.168.6.206/24 ipv4.gateway 192.168.6.1&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="设置静态ip">设置静态ip&lt;a class="anchor" href="#%e8%ae%be%e7%bd%ae%e9%9d%99%e6%80%81ip">#&lt;/a>&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>cd /etc/netplan
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ls &lt;span style="color:#75715e">#先查看文件夹下有哪些文件配置&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo nano 00-installer-config.yaml &lt;span style="color:#75715e">#修改基础配置文件（没有的话就不用修改，也不一定叫这个名字）&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>修改文件为 &lt;del>也就是把ens33:后面的全部注释，并改为&lt;code>ens33: {}&lt;/code>&lt;/del>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># This is the network config written by &amp;#39;subiquity&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>network:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ethernets:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ens33: &lt;span style="color:#f92672">{}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># dhcp4: true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># dhcp6: true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># match:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># macaddress: 00:0c:29:4a:90:d5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># set-name: ens33&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># version: 2&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>新增文件并配置&lt;/p></description></item><item><title>_TheLinuxCommandsHandbook_</title><link>https://blog.liuyi2026.asia/zh/docs/technology/Linux/_TheLinuxCommandsHandbook_/</link><pubDate>Tue, 31 Dec 2024 21:52:35 +0800</pubDate><guid>https://blog.liuyi2026.asia/zh/docs/technology/Linux/_TheLinuxCommandsHandbook_/</guid><description>&lt;blockquote class='book-hint '>
&lt;p>《TheLinuxCommandsHandbook》结合视频 
&lt;a target="_blank" href="https://www.youtube.com/watch?v=ZtqBQ68cfJc">https://www.youtube.com/watch?v=ZtqBQ68cfJc&lt;/a> 看的&lt;/p>&lt;/blockquote>&lt;h1 id="command意义">Command意义&lt;a class="anchor" href="#command%e6%84%8f%e4%b9%89">#&lt;/a>&lt;/h1>
&lt;p>更快，自动化，在任何Linux上工作，有些工作的基本需求&lt;/p>
&lt;h1 id="系统-unix和windows">系统-Unix和Windows&lt;a class="anchor" href="#%e7%b3%bb%e7%bb%9f-unix%e5%92%8cwindows">#&lt;/a>&lt;/h1>
&lt;p>绿色-开源&lt;br>
红色-闭源&lt;br>
黄色-混合&lt;br>
&lt;img src="img/ly-20241226190213859.png" alt="" />&lt;/p>
&lt;p>图片中的Linux只是类Unix，而不是真正的Unix&lt;/p>
&lt;h1 id="freesoftware开源">FreeSoftware，开源&lt;a class="anchor" href="#freesoftware%e5%bc%80%e6%ba%90">#&lt;/a>&lt;/h1>
&lt;p>GNU与Linux&lt;/p>
&lt;blockquote class='book-hint '>
&lt;p>Linux只是一个&lt;strong>操作系统内核&lt;/strong>而已，而GNU提供了大量的自由软件来丰富在其之上各种应用程序。&lt;br>
绝大多数基于Linux内核的操作系统使用了大量的&lt;strong>GNU软件&lt;/strong>，包括了一个shell程序、工具、程序库、编译器及工具，还有许多其他程序 &lt;br>
&lt;strong>我们常说的Linux，准确地来讲，应该是叫“GNU/Linux”&lt;/strong>。虽然，我们没有为GNU和Linux的开发做出什么贡献，但是我们可以为GNU和Linux的宣传和应用做出微薄的努力，至少我们能够准确地去向其他人解释清楚GNU、Linux以及GNU/Linux之间的区别。让我们一起为GNU/Linux的推广贡献出自己的力量！&lt;/p>&lt;/blockquote>&lt;p>内核，用来连接硬件和软件的&lt;/p>
&lt;h1 id="trueunix">TrueUNIX&lt;a class="anchor" href="#trueunix">#&lt;/a>&lt;/h1>
&lt;p>Unix一开始是收费的，后面出现Unix-like（类Unix），和Unix标准兼容。&lt;br>
Linux不是真正的Unix，而是类Unix。&lt;br>
Linux本身只是一个内核，连接&lt;strong>硬件&lt;/strong>和&lt;strong>软件&lt;/strong>&lt;br>
LinuxDistributions，Linux发行版(1000多种)&lt;br>
Linux内核是一些GUN工具，文档，包管理器，桌面环境窗口管理，和系统一些其他东西组成的一个系统&lt;br>
&lt;img src="img/ly-20241226190213859.png" alt="" />&lt;/p>
&lt;p>有开源的和不开源的，Linux(LinuxGUN)完全开源&lt;/p>
&lt;h1 id="shell">shell&lt;a class="anchor" href="#shell">#&lt;/a>&lt;/h1>
&lt;p>windows（powershell）&lt;br>
把&lt;strong>命令&lt;/strong>交给系统&lt;br>
terminal（最古老时是一个硬件）&amp;ndash;屏幕+带键盘的物理设备，如今是一个软件&lt;br>
默认情况下，&lt;strong>Ubuntu和大多数Linux发行版&lt;/strong>是&lt;strong>bashshell&lt;/strong>，还有zsh&lt;/p>
&lt;h1 id="setup-and-installing">setup and installing&lt;a class="anchor" href="#setup-and-installing">#&lt;/a>&lt;/h1>
&lt;p>如果有Mac或者其他Linux发行版，则不需要额外操作。（作者在Mac里装了Ubuntu虚拟机）&lt;/p>
&lt;h2 id="windowssubsystem">WindowsSubsystem&lt;a class="anchor" href="#windowssubsystem">#&lt;/a>&lt;/h2>
&lt;p>&lt;code>wsl --install&lt;/code>&lt;br>
默认是Ubuntu&lt;/p>
&lt;h1 id="the-linux-handbook电子书内容">The Linux Handbook(电子书内容)&lt;a class="anchor" href="#the-linux-handbook%e7%94%b5%e5%ad%90%e4%b9%a6%e5%86%85%e5%ae%b9">#&lt;/a>&lt;/h1>
&lt;p>&lt;strong>Linux 手册&lt;/strong>&lt;/p>
&lt;h2 id="preface">Preface&lt;a class="anchor" href="#preface">#&lt;/a>&lt;/h2>
&lt;p>&lt;strong>前言&lt;/strong>&lt;/p>
&lt;p>The Linux Handbook follows the 80/20 rule: learn in 20% of the time the 80% of a topic.&lt;br>
Linux 手册遵循 80/20 规则：用 20% 的时间学习某个主题的 80%。&lt;/p></description></item><item><title>16-18</title><link>https://blog.liuyi2026.asia/zh/docs/technology/Linux/SHELLlearnLinuxTV_/16-18/</link><pubDate>Tue, 24 Dec 2024 09:46:52 +0800</pubDate><guid>https://blog.liuyi2026.asia/zh/docs/technology/Linux/SHELLlearnLinuxTV_/16-18/</guid><description>&lt;h1 id="向bash脚本添加参数">向bash脚本添加参数&lt;a class="anchor" href="#%e5%90%91bash%e8%84%9a%e6%9c%ac%e6%b7%bb%e5%8a%a0%e5%8f%82%e6%95%b0">#&lt;/a>&lt;/h1>
&lt;h2 id="basic">basic&lt;a class="anchor" href="#basic">#&lt;/a>&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>─ ~/shellTest ly@vmmin 10:37:24
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>╰─❯ cat ./16myscript_cls.sh 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;You entered the argument: &lt;/span>$1&lt;span style="color:#e6db74">,&lt;/span>$2&lt;span style="color:#e6db74">,&lt;/span>$3&lt;span style="color:#e6db74">, and &lt;/span>$4&lt;span style="color:#e6db74">.&amp;#34;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>结果&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>╭─ ~/shellTest 16s ly@vmmin 10:37:18
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>╰─❯ ./16myscript_cls.sh Linux1 Linux2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>You entered the argument: Linux1,Linux2,, and .&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="示例1">示例1&lt;a class="anchor" href="#%e7%a4%ba%e4%be%8b1">#&lt;/a>&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>╭─ ~/shellTest ly@vmmin 10:41:45
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>╰─❯ cat ./16myscript_cls.sh 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ls -lh $1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#echo &amp;#34;You entered the argument: $1,$2,$3, and $4.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>╭─ ~/shellTest ly@vmmin 10:41:28
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>╰─❯ ./16myscript_cls.sh /etc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>total 792K
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r-- &lt;span style="color:#ae81ff">1&lt;/span> root root 3.0K May &lt;span style="color:#ae81ff">25&lt;/span> &lt;span style="color:#ae81ff">2023&lt;/span> adduser.conf
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r-- &lt;span style="color:#ae81ff">1&lt;/span> root root &lt;span style="color:#ae81ff">44&lt;/span> Dec &lt;span style="color:#ae81ff">17&lt;/span> 15:26 adjtime
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r-- &lt;span style="color:#ae81ff">1&lt;/span> root root &lt;span style="color:#ae81ff">194&lt;/span> Dec &lt;span style="color:#ae81ff">23&lt;/span> 22:38 aliases
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>drwxr-xr-x &lt;span style="color:#ae81ff">2&lt;/span> root root 4.0K Dec &lt;span style="color:#ae81ff">23&lt;/span> 22:38 alternatives
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>drwxr-xr-x &lt;span style="color:#ae81ff">2&lt;/span> root root 4.0K Dec &lt;span style="color:#ae81ff">17&lt;/span> 15:24 apparmor
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>drwxr-xr-x &lt;span style="color:#ae81ff">8&lt;/span> root root 4.0K Dec &lt;span style="color:#ae81ff">17&lt;/span> 15:25 apparmor.d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>drwxr-xr-x &lt;span style="color:#ae81ff">9&lt;/span> root root 4.0K Dec &lt;span style="color:#ae81ff">17&lt;/span> 15:30 apt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r----- &lt;span style="color:#ae81ff">1&lt;/span> root daemon &lt;span style="color:#ae81ff">144&lt;/span> Oct &lt;span style="color:#ae81ff">16&lt;/span> &lt;span style="color:#ae81ff">2022&lt;/span> at.deny
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r-- &lt;span style="color:#ae81ff">1&lt;/span> root root 2.0K Mar &lt;span style="color:#ae81ff">30&lt;/span> &lt;span style="color:#ae81ff">2024&lt;/span> bash.bashrc&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="示例2">示例2&lt;a class="anchor" href="#%e7%a4%ba%e4%be%8b2">#&lt;/a>&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lines&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>ls -lh $1 | wc -l&lt;span style="color:#66d9ef">)&lt;/span> &lt;span style="color:#75715e">#行计数&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;You hava &lt;/span>&lt;span style="color:#66d9ef">$((&lt;/span>$lines&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span>&lt;span style="color:#66d9ef">))&lt;/span>&lt;span style="color:#e6db74"> objects in the &lt;/span>$1&lt;span style="color:#e6db74"> directory.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#$(($lines-1))这里用到了子shell&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#echo &amp;#34;You entered the argument: $1,$2,$3, and $4.&amp;#34;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>╭─ ~/shellTest ly@vmmin 10:48:06
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>╰─❯ ls -lh logfiles 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>total 12K
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r-- &lt;span style="color:#ae81ff">1&lt;/span> ly ly &lt;span style="color:#ae81ff">0&lt;/span> Dec &lt;span style="color:#ae81ff">22&lt;/span> 23:07 a.log
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r-- &lt;span style="color:#ae81ff">1&lt;/span> ly ly &lt;span style="color:#ae81ff">120&lt;/span> Dec &lt;span style="color:#ae81ff">22&lt;/span> 23:17 a.log.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r-- &lt;span style="color:#ae81ff">1&lt;/span> ly ly &lt;span style="color:#ae81ff">0&lt;/span> Dec &lt;span style="color:#ae81ff">22&lt;/span> 23:07 b.log
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r-- &lt;span style="color:#ae81ff">1&lt;/span> ly ly &lt;span style="color:#ae81ff">121&lt;/span> Dec &lt;span style="color:#ae81ff">22&lt;/span> 23:17 b.log.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r-- &lt;span style="color:#ae81ff">1&lt;/span> ly ly &lt;span style="color:#ae81ff">0&lt;/span> Dec &lt;span style="color:#ae81ff">22&lt;/span> 23:07 c.log
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r-- &lt;span style="color:#ae81ff">1&lt;/span> ly ly &lt;span style="color:#ae81ff">121&lt;/span> Dec &lt;span style="color:#ae81ff">22&lt;/span> 23:17 c.log.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r-- &lt;span style="color:#ae81ff">1&lt;/span> ly ly &lt;span style="color:#ae81ff">0&lt;/span> Dec &lt;span style="color:#ae81ff">22&lt;/span> 23:15 xx.txt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r-- &lt;span style="color:#ae81ff">1&lt;/span> ly ly &lt;span style="color:#ae81ff">0&lt;/span> Dec &lt;span style="color:#ae81ff">22&lt;/span> 23:15 y.txt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>╭─ ~/shellTest ly@vmmin 10:48:10
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>╰─❯ ./16myscript_cls.sh logfiles
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>You hava &lt;span style="color:#ae81ff">8&lt;/span> objects in the logfiles directory.&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>head，表示前十行，可以看出total这些被算作一行了，所以上面的shell中-1&lt;/p></description></item><item><title>12-15</title><link>https://blog.liuyi2026.asia/zh/docs/technology/Linux/SHELLlearnLinuxTV_/12-15/</link><pubDate>Mon, 23 Dec 2024 21:03:03 +0800</pubDate><guid>https://blog.liuyi2026.asia/zh/docs/technology/Linux/SHELLlearnLinuxTV_/12-15/</guid><description>&lt;h1 id="functions-函数">functions 函数&lt;a class="anchor" href="#functions-%e5%87%bd%e6%95%b0">#&lt;/a>&lt;/h1>
&lt;p>以&lt;code>update&lt;/code>这个脚本为基础编改&lt;br>
作用&lt;/p>
&lt;ul>
&lt;li>减少重复代码&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>release_file&lt;span style="color:#f92672">=&lt;/span>/etc/os-release
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>logfile&lt;span style="color:#f92672">=&lt;/span>/var/log/updater.log
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>errorlog&lt;span style="color:#f92672">=&lt;/span>/var/log/updater_errors.log
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>check_exit_status&lt;span style="color:#f92672">(){&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> &lt;span style="color:#f92672">[&lt;/span> $? -ne &lt;span style="color:#ae81ff">0&lt;/span> &lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;An error occured,please check the &lt;/span>$errorlog&lt;span style="color:#e6db74"> file.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">if&lt;/span> grep -q &lt;span style="color:#e6db74">&amp;#34;Arch&amp;#34;&lt;/span> $release_file 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> sudo pacman -Syu 1&amp;gt;&amp;gt;$logfile 2&amp;gt;&amp;gt;$errorlog
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> check_exit_status
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">if&lt;/span> grep -q &lt;span style="color:#e6db74">&amp;#34;Ubuntu&amp;#34;&lt;/span> $release_file &lt;span style="color:#f92672">||&lt;/span> grep -q &lt;span style="color:#e6db74">&amp;#34;Debian&amp;#34;&lt;/span> $release_file 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> sudo apt update 1&amp;gt;&amp;gt;$logfile 2&amp;gt;&amp;gt;$errorlog
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> check_exit_status
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">#默认yes&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> sudo apt dist-upgrade -y 1&amp;gt;&amp;gt;$logfile 2&amp;gt;&amp;gt;$errorlog
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> check_exit_status
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">fi&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="casestatements">CaseStatements&lt;a class="anchor" href="#casestatements">#&lt;/a>&lt;/h1>
&lt;h2 id="脚本">脚本&lt;a class="anchor" href="#%e8%84%9a%e6%9c%ac">#&lt;/a>&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>╭─ ~/shellTest ly@vmmin 22:32:52
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>╰─❯ cat ./13myscript_cls.sh 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>finished&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">while&lt;/span> &lt;span style="color:#f92672">[&lt;/span> $finished -ne &lt;span style="color:#ae81ff">1&lt;/span> &lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">do&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;What is your favorite Linux distribution?&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;1 - Arch&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;2 - CentOS&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;3 - Debian&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;4 - Mint&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;5 - Something else..&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;6 - exit&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> read distro;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">case&lt;/span> $distro in 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 1&lt;span style="color:#f92672">)&lt;/span> echo &lt;span style="color:#e6db74">&amp;#34;Arch is xxx&amp;#34;&lt;/span>;;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 2&lt;span style="color:#f92672">)&lt;/span> echo &lt;span style="color:#e6db74">&amp;#34;CentOS is xbxxx&amp;#34;&lt;/span>;;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 3&lt;span style="color:#f92672">)&lt;/span> echo &lt;span style="color:#e6db74">&amp;#34;Debian is bbbxx&amp;#34;&lt;/span>;;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 4&lt;span style="color:#f92672">)&lt;/span> echo &lt;span style="color:#e6db74">&amp;#34;Mint is xxxxsss&amp;#34;&lt;/span>;;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 5&lt;span style="color:#f92672">)&lt;/span> echo &lt;span style="color:#e6db74">&amp;#34;Something els.xxxxx&amp;#34;&lt;/span>;;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 6&lt;span style="color:#f92672">)&lt;/span> finished&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;now will exit&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ;;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> *&lt;span style="color:#f92672">)&lt;/span> echo &lt;span style="color:#e6db74">&amp;#34;you didn&amp;#39;t enter an xxxx choice.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">esac&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">done&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;Thanks for using this script.&amp;#34;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="脚本执行">脚本执行&lt;a class="anchor" href="#%e8%84%9a%e6%9c%ac%e6%89%a7%e8%a1%8c">#&lt;/a>&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>╭─ ~/shellTest ly@vmmin 22:32:11
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>╰─❯ ./13myscript_cls.sh 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>What is your favorite Linux distribution?
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">1&lt;/span> - Arch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">2&lt;/span> - CentOS
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">3&lt;/span> - Debian
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">4&lt;/span> - Mint
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">5&lt;/span> - Something &lt;span style="color:#66d9ef">else&lt;/span>..
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">6&lt;/span> - exit
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Debian is bbbxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>What is your favorite Linux distribution?
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">1&lt;/span> - Arch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">2&lt;/span> - CentOS
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">3&lt;/span> - Debian
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">4&lt;/span> - Mint
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">5&lt;/span> - Something &lt;span style="color:#66d9ef">else&lt;/span>..
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">6&lt;/span> - exit
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>u
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>you didn&lt;span style="color:#960050;background-color:#1e0010">&amp;#39;&lt;/span>t enter an xxxx choice.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>What is your favorite Linux distribution?
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">1&lt;/span> - Arch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">2&lt;/span> - CentOS
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">3&lt;/span> - Debian
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">4&lt;/span> - Mint
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">5&lt;/span> - Something &lt;span style="color:#66d9ef">else&lt;/span>..
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">6&lt;/span> - exit
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">6&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>now will exit
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Thanks &lt;span style="color:#66d9ef">for&lt;/span> using this script. &lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="schedulejobs">ScheduleJobs&lt;a class="anchor" href="#schedulejobs">#&lt;/a>&lt;/h1>
&lt;h2 id="作用">作用&lt;a class="anchor" href="#%e4%bd%9c%e7%94%a8">#&lt;/a>&lt;/h2>
&lt;p>脚本在特定时间运行&lt;/p></description></item><item><title>07-10</title><link>https://blog.liuyi2026.asia/zh/docs/technology/Linux/SHELLlearnLinuxTV_/07-10/</link><pubDate>Sat, 21 Dec 2024 12:00:26 +0800</pubDate><guid>https://blog.liuyi2026.asia/zh/docs/technology/Linux/SHELLlearnLinuxTV_/07-10/</guid><description>&lt;h1 id="whileloops">WhileLoops&lt;a class="anchor" href="#whileloops">#&lt;/a>&lt;/h1>
&lt;h2 id="范例">范例&lt;a class="anchor" href="#%e8%8c%83%e4%be%8b">#&lt;/a>&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>myvar&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#小于或者等于10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">while&lt;/span> &lt;span style="color:#f92672">[&lt;/span> $myvar -le &lt;span style="color:#ae81ff">10&lt;/span> &lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">do&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo $myvar
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> myvar&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">$((&lt;/span> $myvar &lt;span style="color:#f92672">+&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span> &lt;span style="color:#66d9ef">))&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> sleep 0.5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">done&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>运行&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>╭─ ~/shellTest ≡ ly@vmmin 12:10:33
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>╰─❯ ./71myscript_cls.sh 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">4&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">6&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">7&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">8&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">9&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">10&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>数字会每隔0.5s就输出一次&lt;br>
对于&lt;code>myvar=$(( $myvar + 1 ))&lt;/code> ，&lt;code>$((expression))&lt;/code>形式表示算数运算，而且其中的空格是可以省略的&lt;/p>
&lt;h2 id="范例2">范例2&lt;a class="anchor" href="#%e8%8c%83%e4%be%8b2">#&lt;/a>&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">while&lt;/span> &lt;span style="color:#f92672">[&lt;/span> -f ~/testfile &lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">do&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;As of &lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>date&lt;span style="color:#66d9ef">)&lt;/span>&lt;span style="color:#e6db74">,the test file exists.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> sleep &lt;span style="color:#ae81ff">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">done&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;As of &lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>date&lt;span style="color:#66d9ef">)&lt;/span>&lt;span style="color:#e6db74">, the test ....has gone missing.&amp;#34;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>用来测试文件是否存在，运行前先新建一下文件&lt;code>touch ~/testfile&lt;/code>
运行一会后把文件删除，如图&lt;br>
&lt;img src="img/ly-20241221124800683.png" alt="" />&lt;/p></description></item><item><title>06ExitCode</title><link>https://blog.liuyi2026.asia/zh/docs/technology/Linux/SHELLlearnLinuxTV_/06ExitCode/</link><pubDate>Sat, 21 Dec 2024 10:25:30 +0800</pubDate><guid>https://blog.liuyi2026.asia/zh/docs/technology/Linux/SHELLlearnLinuxTV_/06ExitCode/</guid><description>&lt;h1 id="意义">意义&lt;a class="anchor" href="#%e6%84%8f%e4%b9%89">#&lt;/a>&lt;/h1>
&lt;p>用来确定代码是否执行成功&lt;/p>
&lt;h1 id="例子">例子&lt;a class="anchor" href="#%e4%be%8b%e5%ad%90">#&lt;/a>&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>ls -l /misc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo $? &lt;span style="color:#75715e">#输出2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ls -l ~
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo $? &lt;span style="color:#75715e">#输出0&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>$?&lt;/code>用来显示最近一个命令的状态，&lt;strong>零表示成功，非零表示失败&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#75715e">#这个例子之前，作者用 sudo apt remove htop 命令把htop删除了&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>package&lt;span style="color:#f92672">=&lt;/span>htop
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo apt install $package
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;The exit code for ....is &lt;/span>$?&lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>安装完毕后显示返回0&lt;br>
&lt;img src="img/ly-20241221090730345.png" alt="" />&lt;br>
另一个示例&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>package&lt;span style="color:#f92672">=&lt;/span>notexist
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo apt install $package
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;The exit code for ....is &lt;/span>$?&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#执行后显示&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#Reading package lists... Done&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#Building dependency tree... Done&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#Reading state information... Done&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#E: Unable to locate package notexist&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#The exit code for ....is 100&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="配合if语句">配合if语句&lt;a class="anchor" href="#%e9%85%8d%e5%90%88if%e8%af%ad%e5%8f%a5">#&lt;/a>&lt;/h1>
&lt;h2 id="基本功能">基本功能&lt;a class="anchor" href="#%e5%9f%ba%e6%9c%ac%e5%8a%9f%e8%83%bd">#&lt;/a>&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>package&lt;span style="color:#f92672">=&lt;/span>htop
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo apt install $package
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">if&lt;/span> &lt;span style="color:#f92672">[&lt;/span> $? -eq &lt;span style="color:#ae81ff">0&lt;/span> &lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;The installation of &lt;/span>$package&lt;span style="color:#e6db74"> success...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;new comman here:&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> which $package
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$package&lt;span style="color:#e6db74"> failed ...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">fi&lt;/span> &lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>之前前作者用&lt;code>sudo apt remove htop&lt;/code>又把htop删除了，不过其实不删除也是走的&lt;code> echo &amp;quot;The installation of .....&amp;quot;&lt;/code>这个分支&lt;br>
结果：&lt;/p></description></item><item><title>05If</title><link>https://blog.liuyi2026.asia/zh/docs/technology/Linux/SHELLlearnLinuxTV_/05If/</link><pubDate>Fri, 20 Dec 2024 18:03:12 +0000</pubDate><guid>https://blog.liuyi2026.asia/zh/docs/technology/Linux/SHELLlearnLinuxTV_/05If/</guid><description>&lt;blockquote class='book-hint '>
&lt;p>在shell中，零为真，非零为假。&lt;/p>&lt;/blockquote>&lt;h1 id="if-then-fi">if then fi&lt;a class="anchor" href="#if-then-fi">#&lt;/a>&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>mynum&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">200&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#[和]前后都要有空格&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">if&lt;/span> &lt;span style="color:#f92672">[&lt;/span> $mynum -eq &lt;span style="color:#ae81ff">200&lt;/span> &lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;The condition is true.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">fi&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="img/ly-20241220220441993.png" alt="" />&lt;br>
编辑之后，按ctrl + O 保存文件&lt;br>
ctrl + T + Z 保持在后台，&lt;code>fg&lt;/code>+回车 恢复&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mynum&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">200&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#[和]前后都要有空格&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">if&lt;/span> &lt;span style="color:#f92672">[&lt;/span> $mynum -eq &lt;span style="color:#ae81ff">200&lt;/span> &lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;The condition is true.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">if&lt;/span> &lt;span style="color:#f92672">[&lt;/span> $mynum -eq &lt;span style="color:#ae81ff">300&lt;/span> &lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;The variable does not equal 200.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">fi&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="img/ly-20241220221311757.png" alt="" />&lt;/p>
&lt;h1 id="else-if">else if&lt;a class="anchor" href="#else-if">#&lt;/a>&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mynum&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">300&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#[和]前后都要有空格&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">if&lt;/span> &lt;span style="color:#f92672">[&lt;/span> $mynum -eq &lt;span style="color:#ae81ff">200&lt;/span> &lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;The condition is true.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> echo &lt;span style="color:#e6db74">&amp;#34;The variable does not equal&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">fi&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="img/ly-20241220221542876.png" alt="" />&lt;/p></description></item><item><title>01-04</title><link>https://blog.liuyi2026.asia/zh/docs/technology/Linux/SHELLlearnLinuxTV_/01-04/</link><pubDate>Fri, 20 Dec 2024 15:28:33 +0000</pubDate><guid>https://blog.liuyi2026.asia/zh/docs/technology/Linux/SHELLlearnLinuxTV_/01-04/</guid><description>&lt;h1 id="意义">意义&lt;a class="anchor" href="#%e6%84%8f%e4%b9%89">#&lt;/a>&lt;/h1>
&lt;p>执行一系列命令&lt;/p>
&lt;h1 id="视频框架">视频框架&lt;a class="anchor" href="#%e8%a7%86%e9%a2%91%e6%a1%86%e6%9e%b6">#&lt;/a>&lt;/h1>
&lt;ol>
&lt;li>介绍，欢迎&lt;/li>
&lt;li>HelloWorld&lt;/li>
&lt;li>变量&lt;/li>
&lt;li>数学函数&lt;/li>
&lt;li>if语句&lt;/li>
&lt;li>退出代码&lt;/li>
&lt;li>while循环&lt;/li>
&lt;li>更新脚本，保持服务器最新状态&lt;/li>
&lt;li>for循环&lt;/li>
&lt;li>脚本应该存储在文件系统哪个位置&lt;/li>
&lt;li>数据流，标准输入、标准输出、标准错误输出&lt;/li>
&lt;li>函数&lt;/li>
&lt;li>case语句&lt;/li>
&lt;li>调度作业（SchedulingJobs）Part1&lt;/li>
&lt;li>调度作业（SchedulingJobs）Part2&lt;/li>
&lt;li>传递参数&lt;/li>
&lt;li>备份脚本&lt;/li>
&lt;/ol>
&lt;h1 id="准备">准备&lt;a class="anchor" href="#%e5%87%86%e5%a4%87">#&lt;/a>&lt;/h1>
&lt;p>需要一台运行Linux系统的计算机（或虚拟机）&lt;/p>
&lt;h1 id="一些基本操作">一些基本操作&lt;a class="anchor" href="#%e4%b8%80%e4%ba%9b%e5%9f%ba%e6%9c%ac%e6%93%8d%e4%bd%9c">#&lt;/a>&lt;/h1>
&lt;h2 id="新建或编辑脚本">新建或编辑脚本&lt;a class="anchor" href="#%e6%96%b0%e5%bb%ba%e6%88%96%e7%bc%96%e8%be%91%e8%84%9a%e6%9c%ac">#&lt;/a>&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>nano myscript.sh&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="内容">内容&lt;a class="anchor" href="#%e5%86%85%e5%ae%b9">#&lt;/a>&lt;/h3>
&lt;p>&lt;img src="img/ly-20241220161539489.png" alt="" />&lt;br>
&lt;strong>ctrl + o 保存，ctrl + x 退出&lt;/strong>&lt;/p>
&lt;h2 id="如何执行脚本">如何执行脚本&lt;a class="anchor" href="#%e5%a6%82%e4%bd%95%e6%89%a7%e8%a1%8c%e8%84%9a%e6%9c%ac">#&lt;/a>&lt;/h2>
&lt;h3 id="权限">权限&lt;a class="anchor" href="#%e6%9d%83%e9%99%90">#&lt;/a>&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#给脚本赋予执行的权限&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo chmod +x myscript.sh&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="执行">执行&lt;a class="anchor" href="#%e6%89%a7%e8%a1%8c">#&lt;/a>&lt;/h3>
&lt;h4 id="执行前查看权限">执行前查看权限&lt;a class="anchor" href="#%e6%89%a7%e8%a1%8c%e5%89%8d%e6%9f%a5%e7%9c%8b%e6%9d%83%e9%99%90">#&lt;/a>&lt;/h4>
&lt;p>&lt;img src="img/ly-20241220161925488.png" alt="" />&lt;/p>
&lt;h4 id="运行">运行&lt;a class="anchor" href="#%e8%bf%90%e8%a1%8c">#&lt;/a>&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>./myscript.sh&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="查看脚本">查看脚本&lt;a class="anchor" href="#%e6%9f%a5%e7%9c%8b%e8%84%9a%e6%9c%ac">#&lt;/a>&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>cat myscript.sh&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="更多语句的脚本">更多语句的脚本&lt;a class="anchor" href="#%e6%9b%b4%e5%a4%9a%e8%af%ad%e5%8f%a5%e7%9a%84%e8%84%9a%e6%9c%ac">#&lt;/a>&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>ls
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pwd&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>输出&lt;br>
&lt;img src="img/ly-20241220162310803.png" alt="" />&lt;/p>
&lt;h1 id="shebang">shebang&lt;a class="anchor" href="#shebang">#&lt;/a>&lt;/h1>
&lt;p>告诉系统哪个解释器准备运行脚本(不特别指定的情况)，比如&lt;code>bash ./myscript.sh&lt;/code>就特别指明了用bash运行脚本，所以这里指的是&lt;code>./myscript.sh&lt;/code>这种情况使用的哪个默认解释器&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;Hello World!&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;My current working directory is:&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#结果中pwd会另取一行跟这里的显式换行没关系， 我猜是echo在最末尾加了\n换行符&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pwd&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="img/ly-20241220164254183.png" alt="" />&lt;/p></description></item></channel></rss>