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

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

2020-11-17 22:08:52 移動端開發

鳥哥的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/yidong/222845.html

標籤:其他

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

下一篇:MPLS配置實驗

標籤雲
其他(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)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more