鳥哥Linux私房菜筆記(三)

鳥哥Linux私房菜筆記(三)

該第三部分和第四部分主要為原書的第十一章(正則表達式與文件格式化處理),第十二章學習shell腳本,第十六章(進程管理與SElinux初探部分),第十七章(認識系統服務),第十九章(啟動流程,模塊管理與Loader),第二十一章(軟件安裝:源代碼與Tarball).

第十一章正則表達式與文件格式化處理

正則表達式

正則表達式是通過一些特殊字符的排列來查找,刪除,替換一行文字或者多行文字,簡單來說,正則表達式就是用在字符串的處理的一項表達式。正則表達式不是一個工具程序,而是一個字符串處理的標準程序。正則表達式與通配符是完全不同的,通配符代表的是一個bash的功能。

以下是部分linux正則表達式的示例:(grep的高級用法)

在這里我新建了個txt文件,內容只有五行,然后分別讓命令行grep出含有'name'的行,含有'[a-z]'(從a到z任意字母)的行,含有[ll]的行,結果如輸出所示。

這就告訴我們在實際操作的時候假如不用Vim該怎么讀取文件的各行并輸出,可以用如下命令grep -n '' hhh.txt意思就是從hhh.txt中選出含有空白字符的各行。

此外如果要特意指定查找某某行末或者行頭的字符,可以用'^'和'$'來執行。

用*和\{n\m}這樣的搭配可以指定查找重復的字符。

這里用上個轉義符\可以將特殊符號的特殊意義去掉,這里就是僅僅去查找文件中的單引號,結果是沒有。

文件的格式化處理

用awk可以使用字段為根據,進行數據的重新整理與輸出。

在文件的比對中,可以用diff或cmp進行比對,其中diff主要 用在純文本文件方面的新舊版本的比對。

printf可以通過一些特殊化符號來將數據進行格式化輸出。

第十二章學習shell腳本

shell script更像是早期的.bat文件,最簡單的功能就是將許多的用戶命令寫在一起,使得用戶可以用one touch的方法去處理復雜的操作,shell腳本可以被近似的看作是批處理文件,所以不需要編譯就可以運行,這讓我想起了以前安裝ros2下載的魚香ros小軟件就是用了shell腳本。shell腳本可以幫助軟件員更好的管理主機,是必備之品。

學習shell腳本在自動化主機管理很有用,管理主機每天的任務就有查詢日志文件,跟蹤流量,監控用戶使用主機狀態等等,我在獵聘網站上找到的和Linux相關的工作要求,關鍵的就是shell編程。

編寫第一個shell腳本與執行

#name=hcy
#time=2025.2.2
#this program is an easy test shell script
PATH=/root/hello.sh
export PATH
echo "hello world\a\n"
exit 0

這就是一個最簡單的shell腳本,執行后是打印出來hello world.執行可以用:sh hello.sh或者chmod a+x hello.sh;./hello.sh(讓我想起了安裝conda的時候下載的安裝執行腳本,就是用這段抽象的命令給安裝完畢了)運行示例如下:

簡單的Shell腳本練習

示例如下,主要用到了輸入信息和數學運算。

#easy shell script examples
read -p "input date" date #提升輸入日期
read -p "input your name" name #提示輸入名字
echo -e "\n date is ${date},your name is ${name}\n" #最后打印輸出
echo -e $((13/3)) #采用特定格式進行運算
?

判斷式的學習

a=500
echo '500MB will be download'
read -p "Continue? [y]or[n]" inputval
if [ "$inputval" = "y" ] || [ "$inputval" = "Y" ]; thenecho "begin download"exit 0
elif [ "$inputval" = "n" ] || [ "$inputval" = "N" ]; thenecho "download failed"exit 0
elseecho "please check the spelling"exit 0
fi
?

在這段示例代碼中模擬了平常下載軟件的一個片段,保存為.sh即可執行。

read -p "input your choice " choice
case ${choice} in "one")echo "Your choice is one ";;"two")echo "Your choice is two";;"three") echo "Your choice is three";;*)echo "Your usage ${0} {one|two|three}";;
esac
?
?

而上面這段代碼展示了調用shell script中的case語法的一個格式,判斷輸入的選擇并輸出對應的值。

函數功能的使用

在shell腳本中也有函數功能,可以調用函數來執行輸出方便代碼編寫。下面是個例子:

#!/bin/bash
function printtit () {echo -n "your choice is "
}
echo "this program will check your spelling"
case "${1}" in"one")printtit; echo "${1}";;"two")printtit; echo "${1}";;"three")printtit; echo "${1}";;*)echo "usage: ${0} {one|two|three}";;
esac
?

在里面定義了個函數,并在后面調用,要注意在這里執行這段腳本的命令是:bash filename.sh而非用sh filename.sh在這方面的簡單解決辦法是把報錯和代碼喂給AI(deepseek最管用)。

循環功能的使用

下面這段代碼是只要用戶不輸入yes就不斷的打印請輸入

#!/bin/bash
while [ "${yn}" != "yes" -a "${yn}" != "YES" ]
doread -p "please input yes/YES to stop: " yn
done
echo "OK"

執行效果如下,提到這里要注意的是,shell語法對縮進和空格特別敏感,"${yn}"和[間一定要有空格。

下面是執行for循環進行一個簡單的相加操作。

#!/bin/bash
read -p "input a number" nu
s=0
for (( i=1; i<=${nu} ; i=i+1 ))
do s=$((${s}+${i}))
?
done
echo "the result is ${s}"

執行的結果如下所示:

總結

shell script是我到現在學過的一門很特殊的編程語言,其特點是編程格式非主流,對空格等要求極為敏感,上面的這些例子不過是一些入門的了解,shell學好才算是Linux從會用到略懂垮了一個門檻。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/894599.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894599.shtml
英文地址,請注明出處:http://en.pswp.cn/news/894599.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

學習日記-250203

一.論文 看師兄寫好的一稿。 二、計劃&#xff1a; 繼續看論文里的問題。 然后繼續看promptCD相關&#xff0c;明天要看論文啦,今天家里有些事比較忙&#xff08;碎碎念&#xff09; 三. &#xff09;——&#xff08; 注冊了 openreview,ORCID,Google scholar&…

python學opencv|讀取圖像(五十四)使用cv2.blur()函數實現圖像像素均值處理

【1】引言 前序學習進程中&#xff0c;對圖像的操作均基于各個像素點上的BGR值不同而展開。 對于彩色圖像&#xff0c;每個像素點上的BGR值為三個整數&#xff0c;因為是三通道圖像&#xff1b;對于灰度圖像&#xff0c;各個像素上的BGR值是一個整數&#xff0c;因為這是單通…

Kafka ACL(訪問控制列表)介紹

文章目錄 Kafka ACL&#xff08;訪問控制列表&#xff09;介紹1. Kafka ACL 的基本概念1.1 Kafka ACL 的目標1.2 Kafka ACL 的組成部分 2. Kafka 支持的資源類型2.1 Topic&#xff08;主題&#xff09;2.2 Consumer Group&#xff08;消費者組&#xff09;2.3 Cluster&#xff…

在 WSL2 中重啟 Ubuntu 實例

在 WSL2 中重啟 Ubuntu 實例&#xff0c;可以按照以下步驟操作&#xff1a; 方法 1: 使用 wsl 命令 關閉 Ubuntu 實例: 打開 PowerShell 或命令提示符&#xff0c;運行以下命令&#xff1a; wsl --shutdown這會關閉所有 WSL2 實例。 重新啟動 Ubuntu: 再次打開 Ubuntu&#x…

Spring Boot 2 快速教程:WebFlux處理流程(五)

WebFlux請求處理流程 下面是spring mvc的請求處理流程 具體步驟&#xff1a; 第一步&#xff1a;發起請求到前端控制器(DispatcherServlet) 第二步&#xff1a;前端控制器請求HandlerMapping查找 Handler &#xff08;可以根據xml配置、注解進行查找&#xff09; 匹配條件包括…

小程序設計和開發:如何研究同類型小程序的優點和不足。

一、確定研究目標和范圍 明確研究目的 在開始研究同類型小程序之前&#xff0c;首先需要明確研究的目的。是為了改進自己的小程序設計和開發&#xff0c;還是為了了解市場趨勢和用戶需求&#xff1f;不同的研究目的會影響研究的方法和重點。例如&#xff0c;如果研究目的是為了…

使用 Numpy 自定義數據集,使用pytorch框架實現邏輯回歸并保存模型,然后保存模型后再加載模型進行預測,對預測結果計算精確度和召回率及F1分數

1. 導入必要的庫 首先&#xff0c;導入我們需要的庫&#xff1a;Numpy、Pytorch 和相關工具包。 import numpy as np import torch import torch.nn as nn import torch.optim as optim from sklearn.metrics import accuracy_score, recall_score, f1_score2. 自定義數據集 …

Unity-編譯構建Android的問題記錄

文章目錄 報錯&#xff1a;AAPT2 aapt2-4.1.2-6503028-osx Daemon #0 Failed to shutdown within timeout報錯信息解讀&#xff1a;原因分析最終處理方法 報錯&#xff1a;AAPT2 aapt2-4.1.2-6503028-osx Daemon #0 Failed to shutdown within timeout 報錯信息解讀&#xff1…

【axios二次封裝】

axios二次封裝 安裝封裝使用 安裝 pnpm add axios封裝 // 進行axios二次封裝&#xff1a;使用請求與響應攔截器 import axios from axios import { ElMessage } from element-plus//創建axios實例 const request axios.create({baseURL: import.meta.env.VITE_APP_BASE_API,…

SQL進階實戰技巧:如何構建用戶行為轉移概率矩陣,深入洞察會話內活動流轉?

目錄 1 場景描述 1.1 用戶行為轉移概率矩陣概念 1.2 用戶行為轉移概率矩陣構建方法 (1) 數據收集

Vue3.0實戰:大數據平臺可視化(附完整項目源碼)

文章目錄 創建vue3.0項目項目初始化項目分辨率響應式設置項目頂部信息條創建頁面主體創建全局引入echarts和axios后臺接口創建express銷售總量圖實現完整項目下載項目任何問題都可在評論區,或者直接私信即可。 創建vue3.0項目 創建項目: vue create vueecharts選擇第三項:…

Java自定義IO密集型和CPU密集型線程池

文章目錄 前言線程池各類場景描述常見場景案例設計思路公共類自定義工廠類-MyThreadFactory自定義拒絕策略-RejectedExecutionHandlerFactory自定義阻塞隊列-TaskQueue&#xff08;實現 核心線程->最大線程數->隊列&#xff09; 場景1&#xff1a;CPU密集型場景思路&…

【VM】VirtualBox安裝ubuntu22.04虛擬機

閱讀本文之前&#xff0c;請先根據 安裝virtualbox 教程安裝virtulbox虛擬機軟件。 1.下載Ubuntu系統鏡像 打開阿里云的鏡像站點&#xff1a;https://developer.aliyun.com/mirror/ 找到如圖所示位置&#xff0c;選擇Ubuntu 22.04.3(destop-amd64)系統 Ubuntu 22.04.3(desto…

Pandas基礎08(分箱操作/時間序列/畫圖)

3.8.1 Pandas分箱操作 數據分箱&#xff08;Binning&#xff09; 是一種數據預處理方法&#xff0c;用于將連續型變量的數值范圍分割成若干個區間或“箱”&#xff08;bins&#xff09;&#xff0c;將數據按照這些區間進行分類&#xff0c;從而轉換為離散型變量。這種方法常用…

C#,shell32 + 調用控制面板項(.Cpl)實現“新建快捷方式對話框”(全網首發)

Made By 于子軒&#xff0c;2025.2.2 不管是使用System.IO命名空間下的File類來創建快捷方式文件&#xff0c;或是使用Windows Script Host對象創建快捷方式&#xff0c;亦或是使用Shell32對象創建快捷方式&#xff0c;都對用戶很不友好&#xff0c;今天小編為大家帶來一種全新…

國產編輯器EverEdit - 輸出窗口

1 輸出窗口 1.1 應用場景 輸出窗口可以顯示用戶執行某些操作的結果&#xff0c;主要包括&#xff1a; 查找類&#xff1a;查找全部&#xff0c;篩選等待操作&#xff0c;可以把查找結果打印到輸出窗口中&#xff1b; 程序類&#xff1a;在執行外部程序時(如&#xff1a;命令窗…

Vue-data數據

目錄 一、Vue中的data數據是什么&#xff1f;二、data支持的數據類型有哪些&#xff1f; 一、Vue中的data數據是什么&#xff1f; Vue中用到的數據定義在data中。 二、data支持的數據類型有哪些&#xff1f; data中可以寫復雜類型的數據&#xff0c;渲染復雜類型數據時只要遵…

02.03 遞歸運算

使用遞歸求出 1 1/3 -1/5 1/7 - 1/9 ... 1/n的值。 1>程序代碼 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #inc…

數據分析系列--⑥RapidMiner構建決策樹(泰坦尼克號案例含數據)

一、資源下載 二、數據處理 1.導入數據 2.數據預處理 三、構建模型 1.構建決策樹 2.劃分訓練集和測試集 3.應用模型 4.結果分析 一、資源下載 點擊下載數據集 二、數據處理 1.導入數據 2.數據預處理 三、構建模型 1.構建決策樹 雖然決策樹已經構建,但對于大多數初學者或…

高階開發基礎——快速入門C++并發編程6——大作業:實現一個超級迷你的線程池

目錄 實現一個無返回的線程池 完全代碼實現 Reference 實現一個無返回的線程池 實現一個簡單的線程池非常簡單&#xff0c;我們首先聊一聊線程池的定義&#xff1a; 線程池&#xff08;Thread Pool&#xff09; 是一種并發編程的設計模式&#xff0c;用于管理和復用多個線程…