主頁 > 後端開發 > 鳥哥的Linux私房菜-基礎學習篇(第四版)_讀書筆記

鳥哥的Linux私房菜-基礎學習篇(第四版)_讀書筆記

2020-11-17 17:55:30 後端開發

鳥哥的Linux私房菜-基礎學習篇(第四版)_讀書筆記

  • 第四章 首次登入與在線求助
    • 4.2 文本模式下指令的下達
      • 4.2.2 基礎指令的操作
        • cal
  • 第六章 Linux 檔案與目錄管理
    • 6.1 目錄與路徑
    • 6.2 檔案與目錄管理
      • 6.1.2 目錄的相關操作
        • mkdir (建立新目錄)
      • 6.2.2 復制、洗掉與移動: cp, rm, mv
        • cp (復制檔案或目錄)
        • rm (移除檔案或目錄)
    • 6.3 檔案內容查閱
      • 6.3.1 直接檢視檔案內容
        • cat (concatenate)
        • tac (反向列示)
        • nl (添加行號列印)
      • 6.3.2 可翻頁檢視
        • more (一頁一頁翻動)
        • less (一頁一頁翻動)
    • 6.5 指令與檔案的搜尋
      • 6.5.2 檔案檔名的搜尋
        • find
          • 與時間相關的引數
            • -mtime -n +n
          • 與名稱有關的引數
            • -name: 按名稱過濾,可使用正則運算式,區分大小寫
            • -iname: 按名稱過濾,可使用正則運算式,不區分大小寫
            • -o: or,表示“或”的關系(括號需轉義)
          • 其他相關引數
            • -type:按型別過濾:
          • 參考檔案
  • 第七章 Linux 磁盤與檔案系統管理
    • 7.2 檔案系統的簡單操作
      • 7.2.1 磁盤與目錄的容量
        • df
        • du
  • 第八章 檔案與檔案系統的壓縮,打包與備份
    • 8.2 Linux 系統常見的壓縮指令
      • 8.2.1 gzip, zcat/zmore/zless/zgrep
      • 8.2.2 bzip2, bzcat/bzmore/bzless/bzgrep
      • 8.2.3 xz, xzcat/xzmore/xzless/xzgrep
    • 8.3 打包指令: tar
      • 8.3.1 tar
        • tar
        • zip
    • 8.6 其他常見的壓縮與備份工具
      • 8.6.1 dd
  • 第九章 vim 程式編輯器
    • 9.3 vim 的額外功能
      • 9.3.5 vim 環境設定與記錄: ~/.vimrc, ~/.viminfo
        • ~/.viminfo
        • /etc/vimrc & ~/.vimrc
  • 第十章、認識與學習 BASH
    • 10.3 命令別名與歷史命令
      • 10.3.1 命令別名設定: alias, unalias
        • alias
        • unalias
      • 10.3.2 歷史命令: history
        • history
    • 10.6 管線命令 (pipe)
      • 10.6.1 擷取命令: cut, grep
        • cut
      • 10.6.2 排序命令: sort, wc, uniq
        • wc
      • 10.6.6 引數代換: xargs
        • xargs
    • 10.8 本章習題
      • 簡答題
        • 你輸入一串指令之后,發現前面寫的一長串資料是錯的,你想要洗掉游標所在處到最前面的指令串內容,應該如何處理?
        • 如何顯示 HOME 這個環境變數?
  • 第十一章 正規表示法與檔案格式化處理
    • 11.1 開始之前:什么是正規表示法
    • 11.2 基礎正規表示法
      • 11.2.2 grep 的一些進階選項
      • 11.2.5 sed 工具
        • 以行為單位進行洗掉
        • 以行為單位進行新增/插入
        • 以行為單位進行替換
        • 以行為單位進行查詢/列印
        • 行中資料的替換
        • 直接修改檔案內容(危險動作)
    • 11.4 檔案的格式化與相關處理
      • 11.4.2 awk:好用的資料處理工具
        • awk
          • awk的默認變數
          • awk 的邏輯運算字符
          • 函式
          • 條件
          • if陳述句
          • 參考檔案
  • 第十三章 Linux 賬號管理與 ACL 權限設定
    • 13.6 Linux 主機上的用戶訊息傳遞
      • 13.6.1 查詢使用者: w, who, last, lastlog
        • w
        • who
        • lastlog
  • 第十四章 磁盤配額(Quota)與進階檔案系統管理
    • 14.1 磁盤配額 (Quota) 的應用與實作
    • 14.2 軟體磁盤陣列 (Software RAID)
    • 14.3 邏輯滾動條管理員 (Logical Volume Manager)
      • 14.3.1 什么是 LVM: PV, PE, VG, LV 的意義
      • 14.3.2 LVM 實作流程
      • 14.3.3 放大 LV 容量
      • 14.3.4 使用 LVM thin Volume 讓 LVM 動態自動調整磁盤使用率
      • 14.3.5 LVM 的 LV 磁盤快照
      • 14.3.6 LVM 相關指令匯整與 LVM 的關閉
    • 14.4 重點回顧
    • 14.5 本章習題
    • 14.6 參考資料與延伸閱讀
  • 第十六章 行程管理與 SELinux 初探
    • 16.3 行程管理
      • 16.3.1 行程的觀察
        • top-動態查看行程資訊
    • 16.4 特殊檔案與行程
      • 16.4.3. 查詢已開啟檔案或已執行行程開啟之檔案
        • lsof :列出被行程所開啟的檔案檔名
  • 第十八章 認識與分析登錄檔
    • 18.1 什么是登錄檔
      • 18.1.1 CentOS 7 登錄檔簡易說明
    • 18.4 systemd-journald.service 簡介
      • 18.4.1 使用 journalctl 觀察登錄資訊
  • 第十九章 開機流程、模塊管理與 Loader
    • 19.3 Boot Loader: Grub2
  • 第二十章 基礎系統設定與備份策略
    • 20.1 系統基本設定
      • 20.1.1 網路設定 (手動設定與 DHCP 自動取得)
        • 手動設定 IP 網路引數
        • 自動取得 IP 引數
        • 修改主機名
          • 主機名的查看
          • 主機名的修改
  • 第二十二章 軟體安裝 RPM, SRPM 與 YUM
    • 22.1 軟體管理員簡介
      • 22.1.1 Linux 界的兩大主流: RPM 與 DPKG
      • 22.1.2 什么是 RPM 與 SRPM
      • 22.1.3 什么是 i386, i586, i686, noarch, x86_64
      • 22.1.4 RPM 的優點
      • 22.1.5 RPM 屬性相依的克服方式: YUM 在線升級
    • 22.2 RPM 軟體管理程式:rpm
      • 22.2.1 RPM 默認安裝的路徑
      • 22.2.2 RPM 安裝 (install)
      • 22.2.3 RPM 升級與更新 (upgrade/freshen)
      • 22.2.4 RPM 查詢 (query)
      • 22.2.5 RPM 驗證與數字簽名 (Verify/signature)
      • 22.2.6 RPM 反安裝與重建資料庫 (erase/rebuilddb)
    • 22.3 YUM 在線升級機制
    • 22.4 SRPM 的使用:rpmbuild (Optional)
    • 22.5 重點回顧
    • 22.6 本章習題
    • 22.7 參考資料與延伸閱讀

第四章 首次登入與在線求助

4.2 文本模式下指令的下達

4.2.2 基礎指令的操作

cal

cal					# 查看當月日歷
cal -3				# 查看最近3月的日歷(前月、當月、后月)

cal 2020			# 查看 2020 年的日歷
cal -y 2020			# 查看 2020 年的日歷

cal 3 2020			# 查看 2020 年 3 月的日歷

Linux命令模式下查看日歷

第六章 Linux 檔案與目錄管理

6.1 目錄與路徑

6.2 檔案與目錄管理

6.1.2 目錄的相關操作

mkdir (建立新目錄)

  • -v :verbose,創建程序可視化
  • -p :parents,先創建父目錄,在創建子目錄
mkdir -pv /data/mysql			# 遞回創建/data, /data/mysql目錄

6.2.2 復制、洗掉與移動: cp, rm, mv

cp (復制檔案或目錄)

-t, --target-directory=DIRECTORY:target,目標,-t 引數指定復制到的目標目錄

rm (移除檔案或目錄)

6.3 檔案內容查閱

cat 		從第一行開始顯示檔案內容,由第一行顯示到最后一行
tac			從最后一行開始顯示檔案內容,由最后一行顯示到第一行,tac 就是 cat 的倒著寫

nl			顯示的時候,順便顯示行號

more		分頁顯示檔案內容
less		分頁顯示檔案內容

head		取出并顯示前幾行
tail		取出并顯示后幾行

od			以二進制的方式讀取檔案內容

6.3.1 直接檢視檔案內容

cat (concatenate)

tac (反向列示)

nl (添加行號列印)

6.3.2 可翻頁檢視

more (一頁一頁翻動)

more:分頁顯示檔案內容

space(空格鍵)					# 向后翻頁
b 或 ctrl+b						# 向前翻頁(只對檔案有用,對管道無用)
enter							# 向下翻一行

:f								# 顯示檔案名及目前所在行數
q								# 退出

less (一頁一頁翻動)

less:分頁顯示檔案內容

pagedown 或 space(空格鍵)		# 向后翻頁
pageup							# 向前反野
enter							# 向下翻一行

g								# 跳轉到檔案的第一行
G								# 跳轉到檔案的最后一行

/string							# 向后搜索字串 string
?string							# 向前搜索字串 string
n								# 重復前一行搜索
N								# 反向重復前一個搜索

:f								# 顯示檔案名及目前所在行數
q								# 退出

6.5 指令與檔案的搜尋

6.5.2 檔案檔名的搜尋

find

與時間相關的引數

與時間有關的引數,共有 -atime、-ctime、-mtime,以 -mtime 為例進行說明:
-mtime n:過濾 n 天之前的那天被修改過的檔案

-mtime -n +n

-mtime -n +n:modify time,按照修改時間來查找檔案或目錄,-n 表示修改時間距現在 n 天以內,+n 表示修改時間距現在 n 天以前

find / -mtime 0

# 查找"~"目錄下修改時間在最近7天以內、匹配"*jpeg"或"*jpg"的檔案和目錄,不區分大小寫
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f -mtime -7	
與名稱有關的引數
-name: 按名稱過濾,可使用正則運算式,區分大小寫
find ~ -name '*jpg'		# 查找"~"目錄下所有匹配"*jpg"的檔案及目錄,區分大小寫
-iname: 按名稱過濾,可使用正則運算式,不區分大小寫
find ~ -iname '*jpg'		# 查找"~"目錄下所有匹配"*jpg"的檔案及目錄,不區分大小寫
  • -name filename:查找檔案名為 filename 的檔案
  • -size [+/-]SIZE:查找大小大于(+size)/小于(-size) size 的檔案,單位:c(byte),k(KB),m(MB)
  • -type TYPE:查找檔案型別為 TYPE 的檔案,對應檔案型別有:f(檔案),b、c(裝置檔案),d(目錄),鏈接(l),socket(s),FIFO(p)
  • -perm MODE:查找檔案權限為 MODE 的檔案
  • -perm -MODE:查詢檔案權限包含 MODE 中所有權限的檔案
  • -perm /MODE:查找檔案權限包含 mode 中任一權限的檔案
find / -name passwd			# 查找 / 目錄下名稱為 passwd 的檔案
find / -name "*passwd*" 	# 查找 / 目錄下名稱含 passwd 字串的檔案,* 做通配符

find / -perm /7000			# 查找 / 目錄下檔案權限包含 7000 中任一權限的檔案

find /run -type s			# 查找 /run 目錄下型別為 s 的檔案
-o: or,表示“或”的關系(括號需轉義)
# 查找"~"目錄下所有匹配"jpeg"或"jpg"的檔案及目錄,
# 不區分大小寫,其中括號需使用"\"轉義
find ~ \( -iname 'jpeg' -o -iname 'jpg' \)		
其他相關引數
  • -exec command:對 find 命令的查找結果執行命令 command
  • -print:默認引數,列印 find 命令查找結果
# 查找 /usr/bin, /usr/sbin/ 目錄中、檔案權限含 7000 中任一權限的檔案,并使用 ls -l 命令羅列出來
find /usr/bin/ /usr/sbin/ -perm -7000 -exec ls -l {} \;

find -type f -name 'test.c' -exec rm -rf {} \;	# 查找當前目錄下名稱為 test.c 的檔案并洗掉
find -type f -name "*.txt" -exec rm -rf {} \;	# 查找當前目錄下后綴為 txt 的檔案并洗掉
find /					# 查詢 / 目錄下的所有檔案

# 查找"~"目錄下修改時間為最近7天內、匹配"*jpeg"或"*jpg"的檔案,并將其復制到 ~/Pictures 目錄
sudo find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f -mtime -7 -print0 | xargs -0 cp -t ~/Pictures/
-type:按型別過濾:

-type:按型別過濾檔案或目錄,可選值如下:

  • b:塊設備檔案
  • c:字符設備檔案
  • d:目錄
  • f:普通檔案
  • l:符號鏈接檔案
  • p:管道檔案
# 查找"~"目錄下所有匹配"*jpeg"或"*jpg"的檔案,不區分大小寫,其中括號需轉義
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f 	

# 查找"~"目錄下所有匹配"*jpeg"或"*jpg"的目錄,不區分大小寫,其中括號需轉義
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type d 		
參考檔案

在Linux系統中, 為找到檔案try_grep含有以a字母
【日常小記】linux中強大且常用命令:find、grep
每天一個linux命令(22):find 命令的引數詳解
Linux中find命令用法全匯總,看完就沒有不會用的!
Linux之Find命令詳解
find命令

第七章 Linux 磁盤與檔案系統管理

7.2 檔案系統的簡單操作

7.2.1 磁盤與目錄的容量

df

df——Disk File,查看磁盤大小
Linux 查看檔案夾大小,磁盤剩余空間(du/df)

du

du——Disk Usage,查看檔案/目錄大小

  • -s, --summarize :對檔案大小求和
  • -k, --kilobytes :以 KB 為單位進行計數
  • -m, --megabytes :以 MB 為單位進行計數
  • -h, --human-readable :以人類可讀的方式進行統計計數,及以 GB 為單位進行計數
  • -t, --threshold=SIZE :篩選大小超過 SIZE 的檔案或目錄
man du						# 查看 du 命令的幫助資訊

du -sm /home/fly/GoEnv		# 以 MB 為單位對 /home/fly/GoEnv 目錄進行大小的求和統計

Linux 查看檔案夾大小,磁盤剩余空間(du/df)
linux如何查詢檔案及檔案夾大小?
Linux du命令
linux命令詳解之du命令
du命令_Linux du命令:查看檔案夾和檔案的磁盤占用情況

第八章 檔案與檔案系統的壓縮,打包與備份

8.2 Linux 系統常見的壓縮指令

8.2.1 gzip, zcat/zmore/zless/zgrep

8.2.2 bzip2, bzcat/bzmore/bzless/bzgrep

8.2.3 xz, xzcat/xzmore/xzless/xzgrep

8.3 打包指令: tar

8.3.1 tar

tar

以下五個是獨立的命令,壓縮解壓都要用到其中一個,可以和其他命令連用但只能用到其中一個,

  • -c: 建立壓縮檔案
  • -x: 解壓
  • -v: 顯示所有程序
  • -C: 解壓到指定的目錄

以下是根據壓縮/解壓的需要可選的引數

  • -x: 有gzip屬性的

引數-f是必須的

  • -f: 檔案名;切記:這個引數是最后一個引數,后面只能接檔案名
tar cvf node_modules.tar node_modules/ 	# 壓縮 node_modules/ 目錄到 tar 格式的 node_modules.tar 檔案

tar cvf test.tar airflow/ dags/			# 壓縮 airflow/, dags/ 目錄到 tar 格式的 test.tar 檔案

tar xvf deploy.tar						# 解壓 deploy.tar 檔案

# 解壓mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz檔案到/usr/local/下的同名目錄
tar zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz -C /usr/local/	

Linux下常用壓縮 解壓命令和壓縮比率對比
linux的tar命令詳情;linux多個檔案壓縮打包到一個壓縮檔案
linux下解壓tgz檔案
linux解壓rar檔案
tar壓縮解壓縮命令詳解

Ubuntu 下解壓tar.xz方法

zip

zip -r Golang-Win.zip Golang-Win	# 將 Golang-Win 目錄壓縮為 Golang-Win.zip 檔案

unzip Golang-Win.zip -d Golang-Win	# 將 Golang-Win.zip 檔案解壓到 Golang-Win 目錄

8.6 其他常見的壓縮與備份工具

8.6.1 dd

第九章 vim 程式編輯器

9.3 vim 的額外功能

9.3.5 vim 環境設定與記錄: ~/.vimrc, ~/.viminfo

~/.viminfo

~.viminfo 檔案用于記錄 vim 的操作歷史(越近的操作排在越上面),由系統自行創建

/etc/vimrc & ~/.vimrc

/etc/vimrc 和 ~/.vimrc 檔案都是用于設定 vim 的環境變數的,

  • /etc/vimrc:vim 的全域環境變數設定檔案,在這個檔案中設定的 vim 環境變數對系統全域有效,該檔案為系統自行建立,不需用戶手動創建;
  • ~/.vimrc:vim 的個人環境變數設定檔案,在這個檔案中設定的 vim 環境變數對個人環境有效,該檔案需用戶自行創建

vim 相關的環境變數如下:

:set all	# 查看 vim 所有的環境變數

第十章、認識與學習 BASH

10.3 命令別名與歷史命令

10.3.1 命令別名設定: alias, unalias

alias

alias					# 列出所有已設定的命令別名
alias ll='ls -l'		# 設定 ls -l 命令的別名為 ll

unalias

unalias ll				# 取消 ls -l 的命令別名 ll

Ubuntu學習之alias命令
ubuntu檔案夾建立軟鏈接方法

10.3.2 歷史命令: history

history

history: 查看或寫入歷史命令到~/.bash_history檔案
histroy 命令讀取與記錄 ~/.bash_history 檔案的流程如下:

[dmtsai@study ~]$ history [n]
[dmtsai@study ~]$ history [-c]
[dmtsai@study ~]$ history [-raw] histfiles
選項與引數:
	n : 數字,要列出的歷史命令的行數
	-c : 將目前的 shell 中的所有 history 內容全部消除
	-a : 將目前新增的 history 指令新增入 histfiles 中,若沒有加 histfiles ,則預設寫入 ~/.bash_history
	-r : 將 histfiles 的內容讀到目前這個 shell 的 history 記憶中;
	-w : 將目前的 history 記憶內容寫入 histfiles 中!
# 范例一: 列出目前記憶體中的所有歷史命令
history
# 列出的資訊當中,包含兩列,第一列為命令的行數,第二列為具體的命令;
# 總共列出的命令列數與系統引數 HISTSIZE 有關!

在這里插入圖片描述

# 范例二: 列出最近的3筆歷史命令
history 3
[dmtsai@study ~]$ !number
[dmtsai@study ~]$ !command
[dmtsai@study ~]$ !!
選項與引數:
	number : 執行第幾筆指令的意思;
	command :由最近的指令向前搜尋『指令串開頭為 command』的那個指令,并執行;
	!! :就是執行上一個指令(相當于按↑按鍵后,按 Enter)

!66							# 執行第 66 筆指令
!! 							# 執行上一個指令
!al 						# 執行最近以 al 為開頭的指令

10.6 管線命令 (pipe)

10.6.1 擷取命令: cut, grep

cut

10.6.2 排序命令: sort, wc, uniq

wc

linux中wc命令用法

10.6.6 引數代換: xargs

xargs

xargs:接受標準輸入,并以"空格"作為分隔符,將標準輸入組合為一行新的引數,傳遞給之后的命令或直接進行列印;
xargs 主要用于作為管道來傳遞引數,以方便傳遞引數給那些非管道命令

選項與引數:
-0 :如果輸入的 stdin 含有特殊字符,例如 \、空格鍵等等字符時, 這個 -0 引數可以將他還原成一般字符, 這個引數可以用于特殊狀態喔!
-e :這個是 EOF (end of file) 的意思,后面可以接一個字串, 當 xargs 分析到這個字串時,就會停止作業!
-p :通過 xargs 傳遞引數前進行詢問
-n :number,每次通過 xargs 傳遞的引數的數量
# 獲取標準輸入,并將標準輸入直接傳遞給 ls 命令
find /usr/sbin/ -perm /7000 | xargs ls -l

# 獲取標準輸入,并將標準輸入以"空格"作為分隔符組合為一行新的資料,
# 然后傳遞給 id 命令,每次傳遞一個引數
cut -d ':' -f 1 /etc/passwd | head -n 3 | xargs -n 1 id

# 獲取標準輸入,并將標準輸入以"空格"作為分隔符組合為一行新的資料,
# 然后傳遞給 id 命令,每次傳遞一個引數,在傳遞引數前將會進行詢問
cut -d ':' -f 1 /etc/passwd | head -n 3 | xargs -n 1 -p id

# 獲取標準輸入,并將標準輸入以"空格"作為分隔符組合為一行新的資料,
# 然后傳遞給 id 命令,每次傳遞一個引數,在引數傳遞前將會進行詢問,執行到'sync'引數時則終止(不包含)
cut -d ':' -f 1 /etc/passwd | xargs -n 1 -e'sync' id

10.8 本章習題

簡答題

你輸入一串指令之后,發現前面寫的一長串資料是錯的,你想要洗掉游標所在處到最前面的指令串內容,應該如何處理?

按下 ctrl + u 組合鍵即可

如何顯示 HOME 這個環境變數?

echo $HOME

第十一章 正規表示法與檔案格式化處理

11.1 開始之前:什么是正規表示法

11.2 基礎正規表示法

11.2.2 grep 的一些進階選項

11.2.5 sed 工具

sed——管道命令,用于對管道中的資料以行為單位進行增刪改查,

sed [-nefr] [n1[,n2]]function
選項與引數:
	-n :slient,安靜模式,常規 sed 的用法中,會列印所有行;使用安靜模式后,只列印符合查詢條件的行
	-e :edit, 編輯;
	-f :直接將 sed 的動作寫在一個檔案內, -f filename 則可以執行 filename 內的 sed 動作;
	-r :sed 的動作支持的是延伸型正規表示法的語法, (預設是基礎正規表示法語法)
	-i :直接修改讀取的檔案內容,而不是由螢屏輸出,
	n1, n2 :操作資料的行數,可為空
	function :操作資料的命令,支持如下操作:
		a :add,新增,a 后接字串,在對應行后(對應行的下一行)新增字串
		c :replace,替換,c 后接字串,將指定行替換為字串
		d :delete,洗掉
		i :insert,插入,i 后接字串,在對應行前(對應行的上一行)新增字串
		p :print,列印,通常與 sed -n 一起使用
		s :replace,取代,常用格式: sed 's/要被取代的字串/新的字串/g'

以行為單位進行洗掉

# 使用 nl 
nl /etc/passwd | sed '2d'		# 使用 sed 命令洗掉 'nl /etc/passwd' 命令輸出資料的第2行
nl /etc/passwd | sed '2,5d'		# 使用 sed 命令洗掉 'nl /etc/passwd' 命令輸出資料的第2-5行
nl /etc/passwd | sed '3,$d'		# 使用 sed 命令洗掉 'nl /etc/passwd' 命令輸出資料的3-最后一行

以行為單位進行新增/插入

# 使用 sed 命令在 'nl /etc/passwd' 命令的輸出資料的第二行后(即第三行)新增 'drink tea' 字串
nl /etc/passwd | sed '2a drink tea' 
# 使用 sed 命令在 'nl /etc/passwd' 命令的輸出資料的第二行前(即第二行)插入 'drink tea' 字串
nl /etc/passwd | sed '2i drink tea'
# 使用 sed 命令在 'nl /etc/passwd' 命令的輸出資料的第二行前(即第二行)插入 'drink tea or drink coffee' 字串
nl /etc/passwd | sed '2i drink tea \
> or drink coffee'

以行為單位進行替換

# 使用 sed 命令將 '/etc/passwd' 輸出資料的第2-5行替換為'No 2-5 number'字串
nl /etc/passwd | sed '2,5c No 2-5 number'

以行為單位進行查詢/列印

# 使用 sed 命令(顯示所有資料,符合查詢條件的資料會重復列印)查詢并列印 'nl /etc/passwd' 命令的輸出資料的第5-7行
nl /etc/passwd | sed '5,7p'
# 使用 sed 命令以安靜模式(不符合查詢條件的資料不顯示)查詢并列印 'nl /etc/passwd' 命令的輸出資料的第5-7行
nl /etc/passwd | sed -n '5,7p'

行中資料的替換

# 1. 查看 wlp2s0 網卡相關資訊
ifconfig wlp2s0
# 2. 查看 wlp2s0 網卡相關資訊,并過濾 IP 相關行
ifconfig wlp2s0 | grep 'inet '
# 3. 查看 wlp2s0 網卡相關資訊,過濾 IP 相關行,并將頭部 inet 替換為空串
ifconfig wlp2s0 | grep 'inet ' | sed 's/^.*inet //g'
# 4. 查看 wlp2s0 網卡相關資訊,過濾 IP 相關行,將頭部 inet 替換為空串,并將尾部 netmask 替換為空串
ifconfig wlp2s0 | grep 'inet ' | sed 's/^.*inet //g' | sed 's/ *netmask.*$//g'

# 1. 過濾 /etc/manpath.config 檔案中 'MAN' 相關資料
cat /etc/manpath.config | grep 'MAN'
# 2. 過濾 /etc/manpath.config 檔案中 'MAN' 相關資料,并將 # 開始的行替換為空行
cat /etc/manpath.config | grep 'MAN'| sed 's/#.*$//g'
# 3. 過濾 /etc/manpath.config 檔案中 'MAN' 相關資料,將 # 開始的行替換為空行,然后洗掉空行
cat /etc/manpath.config | grep 'MAN'| sed 's/#.*$//g' | sed '/^$/d'

直接修改檔案內容(危險動作)

sed -i 's/\.$/\!/g' regular_express.txt		# 將 regular_express.txt 檔案中所有結尾處的.替換為!

sed -i '$a # This is a test' regular_express.txt	# 在 regular_express.txt 檔案尾新增 '# This is a test'

11.4 檔案的格式化與相關處理

11.4.2 awk:好用的資料處理工具

awk

awk——按列處理資料

  • -F :分隔符

awk 通常運作的模式是這樣的:

 awk '條件型別 1{動作 1} 條件型別 2{動作 2} ...' filename

awk 后面接兩個單引號并加上大括號 {} 來設定想要對資料進行的處理動作, awk 可以處理后續接的檔案,也可以讀取來自前個指令的 standard output , 但如前面說的, awk 主要是處理『每一行的欄位內的資料』,而默認的『欄位的分隔符為 “空格鍵” 或 “[tab]鍵” 』 !

在 awk 的括號內, 每一行的每個欄位都是有變數名稱的,那就是 $1, $2… 等變數名稱,以上面的例子來說, dmtsai 是 $1 ,因為他是第一欄嘛!至于 192.168.1.100是第三欄, 所以他就是 $3 啦!后面以此類推~呵呵!還有個變數喔!那就是 $0 , $0 代表『一整列資料』的意思~以上面的例子來說,第一行的 $0 代表的就是『 dmtsai … 』那一行啊!

# last -n 5: 使用last指令取出登錄用戶,只取前5行
# awk '{print $1 "\t" $3}': 以空格(默認)為分隔符,列印(print)出第一列($1)和第三列($3)的資料,
# 并以"\t"為分隔符進行顯示
last -n 5 | awk '{print $1 "\t" $3}'

awk 是『 以行為一次處理的單位』, 而『 以欄位為最小的處理單位』,

awk的默認變數
變數名稱代表意義
FILENAME當前檔案名
NFNum Field,每一行 ($0) 擁有的欄位總數;NF表示欄位總數,$NF表示最后一個欄位,$(NF-1)表示倒數第二個欄位
NRNum Row,目前 awk 所處理的是『第幾行』資料
FSField Split,欄位分隔符,默認是空格或制表符,也可使用-F引數指定
RSRow Split,行分隔符,用于分割每一行,默認是換行符,
OFSOutput Field Split,輸出欄位的分隔符,用于列印時分隔欄位,默認為空格
ORSOutput Row Split,輸出記錄的分隔符,用于列印時分隔記錄,默認為換行符,
OFMT數字輸出的格式,默認為%.6g
# last -n 5: 使用last指令取出登錄用戶,只取前5行
# awk '{print $1 "\t lines: " NR "\t columns: " NF}': 以空格(默認)為分隔符,拆分前面命令的輸出,
# 并以\t為分隔符,列印出對應變數的資料
# 并以"\t"為分隔符進行顯示
last -n 5| awk '{print $1 "\t lines: " NR "\t columns: " NF}'
awk 的邏輯運算字符
運算單元代表意義
>大于
<小于
>=大于或等于
<=小于或等于
==等于
!=不等于
# {FS=":"}, 以:為分隔符進行分割,從第二行開始生效
cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t " $3}'

# BEGIN {FS=":"}, 以:為分隔符進行分割,從第一行開始生效,BEGIN表示預設變數
cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}'
函式
條件
if陳述句

awk提供了if結構,用于撰寫復雜的條件,

# 以":"為分隔符,查找demo.txt(/etc/passwd檔案的備份)檔案中第一列大于m的欄位并輸出
awk -F ':' '{if ($1 > "m") print $1}' demo.txt

if結構還可以指定else部分,

awk -F ':' '{if ($1 > "m") print $1; else print "---"}' demo.txt
參考檔案

Linux三劍客之awk命令
awk 入門教程
AWK程式設計語言

第十三章 Linux 賬號管理與 ACL 權限設定

13.6 Linux 主機上的用戶訊息傳遞

13.6.1 查詢使用者: w, who, last, lastlog

w

who

lastlog

第十四章 磁盤配額(Quota)與進階檔案系統管理

14.1 磁盤配額 (Quota) 的應用與實作

14.2 軟體磁盤陣列 (Software RAID)

14.3 邏輯滾動條管理員 (Logical Volume Manager)

14.3.1 什么是 LVM: PV, PE, VG, LV 的意義

14.3.2 LVM 實作流程

14.3.3 放大 LV 容量

14.3.4 使用 LVM thin Volume 讓 LVM 動態自動調整磁盤使用率

14.3.5 LVM 的 LV 磁盤快照

14.3.6 LVM 相關指令匯整與 LVM 的關閉

14.4 重點回顧

14.5 本章習題

14.6 參考資料與延伸閱讀

第十六章 行程管理與 SELinux 初探

16.3 行程管理

16.3.1 行程的觀察

top-動態查看行程資訊

16.4 特殊檔案與行程

16.4.3. 查詢已開啟檔案或已執行行程開啟之檔案

lsof :列出被行程所開啟的檔案檔名

sudo lsof -i :80				# 列出所有在使用80埠的行程
lsof -p 2148|grep 1521|wc -l	## 查看專案使用的相關連接檔案

lsof命令
linux lsof命令詳解

第十八章 認識與分析登錄檔

18.1 什么是登錄檔

18.1.1 CentOS 7 登錄檔簡易說明

18.4 systemd-journald.service 簡介

18.4.1 使用 journalctl 觀察登錄資訊

第十九章 開機流程、模塊管理與 Loader

19.3 Boot Loader: Grub2

第二十章 基礎系統設定與備份策略

20.1 系統基本設定

20.1.1 網路設定 (手動設定與 DHCP 自動取得)

手動設定 IP 網路引數

自動取得 IP 引數

修改主機名

主機名的查看
hostname					# 查看主機名

hostnamectl 				# 查看主機名、系統內核、架構、作業系統

cat /etc/hostname			# 查看主機名
主機名的修改
hostnamectl set-hostname fly			# 修改主機名為 fly

第二十二章 軟體安裝 RPM, SRPM 與 YUM

22.1 軟體管理員簡介

22.1.1 Linux 界的兩大主流: RPM 與 DPKG

22.1.2 什么是 RPM 與 SRPM

22.1.3 什么是 i386, i586, i686, noarch, x86_64

22.1.4 RPM 的優點

22.1.5 RPM 屬性相依的克服方式: YUM 在線升級

22.2 RPM 軟體管理程式:rpm

22.2.1 RPM 默認安裝的路徑

22.2.2 RPM 安裝 (install)

[root@study ~]# rpm -ivh package_name
選項與引數:
	-i :install
	-v :view,查看安裝詳細安裝資訊
	-h :以安裝資訊列顯示安裝進度

范例一:安裝原版光碟上的 rp-pppoe 軟體
	[root@study ~]# rpm -ivh /mnt/Packages/rp-pppoe-3.11-5.el7.x86_64.rpm
	Preparing... ################################# [100%]
	Updating / installing...
	1:rp-pppoe-3.11-5.el7 ################################# [100%]

范例二、一口氣安裝兩個以上的軟體時:
	[root@study ~]# rpm -ivh a.i386.rpm b.i386.rpm *.rpm
	# 后面直接接上許多的軟體檔案!

范例三、直接由網路上面的某個檔案安裝,以網址來安裝:
	[root@study ~]# rpm -ivh http://website.name/path/pkgname.rpm

rpm 安裝時常用的選項與引數說明

可下達的選項代表意義
–nodeps使用時機:當發生軟體屬性相依問題而無法安裝,但你執意安裝時
危險性: 軟體會有相依性的原因是因為彼此會使用到對方的機制或功能,
如果強制安裝而不考慮軟體的屬性相依, 則可能會造成該軟體的無法正常使用!
–replacefiles使用時機: 如果在安裝的程序當中出現了『某個檔案已經被安裝在你的系統上面』的資訊,
又或許出現版本不合的訊息 (confilcting files) 時,可以使用這個引數來直接覆寫檔案,
危險性: 覆寫的動作是無法復原的!
所以,你必須要很清楚的知道被覆寫的檔案是真的可以被覆寫喔!否則會欲哭無淚!
–replacepkgs使用時機: 重新安裝某個已經安裝過的軟體!
如果你要安裝一堆 RPM 軟體檔案時,可以使用 rpm -ivh *.rpm ,
但若某些軟體已經安裝過了, 此時系統會出現『某軟體已安裝』的資訊,導致無法繼續安裝,
此時可使用這個選項來重復安裝喔!
–force使用時機: 這個引數其實就是 --replacefiles 與 --replacepkgs 的綜合體!
–test使用時機: 想要測驗一下該軟體是否可以被安裝到使用者的 Linux 環境當中,
可找出是否有屬性相依的問題,范例為:rpm -ivh pkgname.i386.rpm --test
–justdb使用時機: 由于 RPM 資料庫破損或者是某些緣故產生錯誤時,
可使用這個選項來更新軟體在資料庫內的相關資訊,
–nosignature使用時機: 想要略過數字簽名的檢查時,可以使用這個選項,
–prefix 新路徑使用時機: 要將軟體安裝到其他非正規目錄時,
舉例來說,你想要將某軟體安裝到 /usr/local而非正規的 /bin, /etc 等目錄,
就可以使用『–prefix /usr/local 』來處理了,
–noscripts使用時機: 不想讓該軟體在安裝程序中自行執行某些系統指令,
說明: RPM 的優點除了可以將檔案放置到定位之外,還可以自動執行一些前置作業的指令,
例如資料庫的初始化, 如果你不想要讓 RPM 幫你自動執行這一型別的指令,就加上他吧!

例題

在沒有網路的前提下,你想要安裝一個名為 pam-devel 的軟體,你手邊只有原版光碟,該如何是好?
	你可以透過掛載原版光碟來進行資料的查詢與安裝,請將原版光碟放入光驅,底下我們嘗試將光碟掛載到/mnt 當中, 
	并據以處理軟體的下載啰:
	1. 掛載光碟,使用: mount /dev/sr0 /mnt
	2. 找出檔案的實際路徑: find /mnt -name 'pam-devel*'
	3. 測驗此軟體是否具有相依性: rpm -ivh pam-devel... --test
	4. 直接安裝: rpm -ivh pam-devel...
	5. 卸除光碟: umount /mnt

22.2.3 RPM 升級與更新 (upgrade/freshen)

22.2.4 RPM 查詢 (query)

  • RPM 在查詢的時候,其實查詢的地方是在 /var/lib/rpm/ 這個目錄下的資料庫檔案啦!
[root@study ~]# rpm -qa 								<==已安裝軟體
[root@study ~]# rpm -q[licdR] 已安裝的軟體名稱 			<==已安裝軟體
[root@study ~]# rpm -qf 存在于系統上面的某個檔案名 			<==已安裝軟體
[root@study ~]# rpm -qp[licdR] 未安裝的某個檔案名 			<==查閱 RPM 檔案
選項與引數:
	查詢已安裝軟體的資訊:
		-q : query,查詢;
		-qa :query all,查詢所有已安裝在本機 Linux 的 RPM 格式的軟體;
		-qi :query information,查詢該軟體的詳細資訊,包括開發商、版本與說明等;
		-ql :query list,查詢該軟體包含的所有目錄及檔案;
		-qc :query config,查詢該軟體所有的組態檔 (找出在 /etc/ 底下的檔名而已)
		-qd :query description,查詢該軟體所有的說明檔案 (找出與 man 有關的檔案而已)
		-qR :query Required,查詢該軟體所依賴的軟體和檔案
		-qf :query father,由后面接的檔案名,找出該檔案屬于哪一個已安裝的軟體;
		-q --scripts:列出是否含有安裝后需要執行的腳本檔,可用以 debug 喔!
	
	查詢某個 RPM 檔案內含有的資訊:
		-qp[icdlR]:注意 -qp 后面接的所有引數以上面的說明一致,
			但用途僅在于找出某個 RPM 檔案內的資訊,而非已安裝的軟體資訊!注意!

范例一:找出你的 Linux 是否有安裝 logrotate 這個軟體?
	[root@study ~]# rpm -q logrotate
	logrotate-3.8.6-4.el7.x86_64
	[root@study ~]# rpm -q logrotating
	package logrotating is not installed
	# 注意到,系統會去找是否有安裝后面接的軟體名稱,注意,不必要加上版本喔!
	# 至于顯示的結果,一看就知道有沒有安裝啦!

范例二:列出上題當中, 屬于該軟體所提供的所有目錄與檔案:
	[root@study ~]# rpm -ql logrotate
	/etc/cron.daily/logrotate
	/etc/logrotate.conf
	....(以下省略)....
	# 可以看出該軟體到底提供了多少的檔案與目錄,也可以追蹤軟體的資料,

范例三:列出 logrotate 這個軟體的相關說明資料:
	[root@study ~]# rpm -qi logrotate
	Name : logrotate # 軟體名稱
	Version : 3.8.6 # 軟體的版本
	Release : 4.el7 # 釋出的版本
	Architecture: x86_64 # 編譯時所針對的硬體等級
	Install Date: Mon 04 May 2015 05:52:36 PM CST # 這個軟體安裝到本系統的時間
	Group : System Environment/Base # 軟體是放再哪一個軟體群組中
	Size : 102451 # 軟體的大小
	License : GPL+ # 釋出的授權方式
	Signature : RSA/SHA256, Fri 04 Jul 2014 11:34:56 AM CST, Key ID 24c6a8a7f4a80eb5
	Source RPM : logrotate-3.8.6-4.el7.src.rpm # 這就是 SRPM 的檔名
	Build Date : Tue 10 Jun 2014 05:58:02 AM CST # 軟體編譯打包的時間
	Build Host : worker1.bsys.centos.org # 在哪一部主機上面編譯的
	Relocations : (not relocatable)
	Packager : CentOS BuildSystem <http://bugs.centos.org>
	Vendor : CentOS
	URL : https://fedorahosted.org/logrotate/
	Summary : Rotates, compresses, removes and mails system log files
	Description : # 這個是詳細的描述!
	The logrotate utility is designed to simplify the administration of
	log files on a system which generates a lot of log files. Logrotate
	allows for the automatic rotation compression, removal and mailing of
	log files. Logrotate can be set to handle a log file daily, weekly,
	monthly or when the log file gets to a certain size. Normally,
	logrotate runs as a daily cron job.
	Install the logrotate package if you need a utility to deal with the
	log files on your system.
	# 列出該軟體的 information (資訊),里面的資訊可多著呢,包括了軟體名稱、
	# 版本、 開發商、 SRPM 檔案名、打包次數、 簡單說明資訊、 軟體打包者、
	# 安裝日期等等!如果想要詳細的知道該軟體的資料,用這個引數來了解一下

范例四:分別僅找出 logrotate 的組態檔與說明檔
	[root@study ~]# rpm -qc logrotate
	[root@study ~]# rpm -qd logrotate

范例五:若要成功安裝 logrotate ,他還需要什么檔案的幫忙?
	[root@study ~]# rpm -qR logrotate
	/bin/sh
	config(logrotate) = 3.8.6-4.el7
	coreutils >= 5.92
	....(以下省略)....
	# 由這里看起來,呵呵~還需要很多檔案的支持才行喔!

范例六:由上面的范例五,找出 /bin/sh 是那個軟體提供的?
	[root@study ~]# rpm -qf /bin/sh
	bash-4.2.46-12.el7.x86_64
	# 這個引數后面接的可是『 檔案』吶!不像前面都是接軟體喔!
	# 這個功能在查詢系統的某個檔案屬于哪一個軟體所有的,

范例七:假設我有下載一個 RPM 檔案,想要知道該檔案的需求檔案, 該如何?
	[root@study ~]# rpm -qpR filename.i386.rpm
	# 加上 -qpR ,找出該檔案需求的資料!

例題

1. 我想要知道我的系統當中,以 c 開頭的軟體有幾個,如何實做?
	rpm -qa | grep ^c | wc -l

2. 我的 WWW 服務器為 Apache ,我知道他使用的 RPM 軟體檔案名為 httpd ,現在,我想要知道這
個軟體的所有組態檔放置在何處,可以怎么作?
	rpm -qc httpd

3. 承上題,如果查出來的組態檔案已經被我改過,但是我忘記了曾經修改過哪些地方,所以想要直
接重新安裝一次該軟體,該如何作?
	假設該軟體在網路上的網址為:http://web.site.name/path/httpd-x.x.xx.i386.rpm
	則我可以這樣做:rpm -ivh http://web.site.name/path/httpd-x.x.xx.i386.rpm --replacepkgs

4. 如果我誤砍了某個重要檔案,例如 /etc/crontab,偏偏不曉得他屬于哪一個軟體,該怎么辦?
	雖然已經沒有這個檔案了,不過沒有關系,因為 RPM 有記錄在 /var/lib/rpm 當中的資料庫啊!
	所以直接下達:rpm -qf /etc/crontab,就可以知道是那個軟體啰!重新安裝一次該軟體即可!

22.2.5 RPM 驗證與數字簽名 (Verify/signature)

22.2.6 RPM 反安裝與重建資料庫 (erase/rebuilddb)

22.3 YUM 在線升級機制

22.4 SRPM 的使用:rpmbuild (Optional)

22.5 重點回顧

22.6 本章習題

22.7 參考資料與延伸閱讀

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/222408.html

標籤:python

上一篇:SecureCRT的下載、安裝( 程序非常詳細!!值得查看)

下一篇:docker-容器操作

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more