-Linux Shell腳本攻略
總結的來說,這本書很實踐性和實用性強,都是給的具體的例子,直接可以在終端操作實踐,比單純只看不動手務實多了,另外就是,這本書涵蓋的內容也比較廣,從文本操作到服務器管理到遠程ssh等等,都給出來作者挑選的一些比較經驗實用的shell命令和shell腳本,不過也可以看出來,這本書是作者從自身實用的角度來挑選shell命令和腳本,所以覆蓋面比較全,但是會感覺有點零碎,比如對于shell的基本語法就不會展開講,只是會提到,需要有基本的shell底子,另外就是像sed、awk這種大神級別的shell命令,講解的相對不是很完整,略零碎,特別是awk,可能需要另外找資料看。總的來說是一本值得入手的書,讓你對linux各個方面的命令和shell腳本有個不錯的認識。
貼上記錄的筆記,ps,筆記用markdown記錄的,markdown絕逼做筆記記錄的神器,沒有之一!
Linux Shell腳本攻略
第一章 小試牛刀
運行shell腳本的兩種方式:
- sh test.sh 用sh命令
- 賦予可執行權限,chmod a+x tesh.sh,然后執行./test.sh
echo
- 不帶引號的echo,如echo hi google,沒法在echo后面的文本中使用分號,因為分號在bash里是命令界定符,比如echo hi;google只會輸出hi
- 帶單引號的echo,bash不會對單引號中的變量入$var求值,會原樣輸出
- 帶雙引號的echo,不會打印感嘆號。echo “hi!google”會報錯
printf
- printf命令也可以用于輸出,特別適合用于格式化輸出,但是printf不會像echo那樣默認換行,需要手動添加\n換行
變量
- var=value,這是給變量賦值
- var = value,這是判斷兩個變量相等
- 計算變量長度:length={#var}
重定向
- $echo "test" > temp.txt會先清空temp.txt然后再寫入
- $echo "test" >> temp.txt會以追加的方式寫入
第二章 命令之樂
cat
- cat file1 file2 file3...讀取多個文件
- cat -s file 壓縮空白行,把文本的多個空行壓縮成一個
- cat -n file 顯示行號
find
- find base_path列出當前目錄和子目錄下的所有文件和文件夾
- find path -name '*txt' 根據文件名或者正則表達式匹配搜索
- find path -iname '*txt' 同上,忽略大小寫
- find path ! -name '*txt' 對上面的搜索結果取反
- find path -type d 根據文件類型搜索,d文件夾,f普通文件,etc
- find path -type f -size +2k 根據文件大小搜索,+2k大于2k的文件,-2k小于2k的文件,2k等你2k的文件
- find path -type f -name '*txt' -delete 刪除匹配到的文件
md5sum
- 用來計算文件md5值,校驗文件完整性
- md5sum filename 生成文件的md5值
- md5sum filename > file_sum.md5 把生成的md5值重定向到文件中
- md5sum file1 file2 file3校驗這三個文件的md5值,比較是否相同
- md5sum -c file_sum.md5 檢查md5值是否匹配
第三章 以文件之名
權限設置
- 第一個代表類型,-表示普通文件,d表示目錄,etc
- 后面三個三個一組,分別代表用戶、用戶組、其他用戶的權限
- 三個一組的值基本都是rwx和-,-表示沒有權限,r代表讀權限,w代表寫權限,x代表執行權限,對于目錄,x代表可以訪問目錄中的文件和子目錄
- chmod u=rwx g=rwx o=rwx filename設置權限,u=用戶權限g=用戶組權限o=其他用戶權限
- chmod o+x filename 給其他用戶增加可執行權限
- chmod a+x filename 給所有權限類別(all)加上執行權限
- chmod a-x filename 給所有權限類別刪除執行權限
- 還可以使用八進制來設置權限,比如chmod 764 filename
- chmod a+x . -R 遞歸的方式修改當前目錄下所有文件和子目錄的權限
head
- head filename 打印文件前10行
- head -n 5 filename 打印文件前5行
tail
- tail filename 打印文件后10行
- tail -n 5 filename 打印文件后5行
- tail -f filename 不斷打印文件的新增內容
wc
- wc -l filename 統計行數
- cat filename | wc -l 同上
- wc -w filename 統計單詞數
- wc -c filename 統計字符數
tree
- tree ./ 用圖形化的樹狀結構打印文件和目錄
第四章 讓文本飛
正則表達式
grep
- grep "text" . -R -n 從當前目錄開始對文本遞歸搜索,linux下查找源碼的利器
- grep -i "text" 忽略大小寫
- grep "text" filename -A 3 打印匹配結果之后的3行
- grep "text" filename -B 3 打印匹配結果之前的3行
- grep "text" filename -C 3 打印匹配結果前后各3行
sed
sed用來替換給定文本中的字符串,可以用正則表達式進行匹配。
- $sed 's/pattern/replace_string/' file 或者 $cat file | sed 's/pattern/replace_string/'
- $sed -i 's/pattern/replace_string/' file 將替換結果寫入到原文件
- 上面這種替換只會將每一行的第一個匹配替換,如果需要替換所有的,需要加上參數g,這樣:$sed 's/pattern/replace_string/g' file
- sed '/^$/d' file 移除空白行,/pattern/d會移除匹配樣式的行,在空白行中,行尾標記緊隨著行首標記
- sed表達式通常用單引號,也可以用雙引號,雙引號可以引用變量,比如:
$text=hello
$echo hello world | sed "s/$text/HELLO"
HELLO world
awk
awk過于牛逼了,這本書里關于awk命令的講解太碎不夠系統,需要另外找資料系統的看下
第五章 一團亂麻?沒這回事
主要講解curl、wget等幾個在命令行下求情遠程URL的命令
第六章 B計劃
tar
tar命令用來歸檔文件
- tar -cf output.tar file1 file2 file3... -c代表創建文件,-f代表指定文件名
- tar -rvf output.tar file1... -r代表添加文件,向已存在的tar包中添加文件
- tar -tf archive.tar 列出歸檔文件中的內容
- tar -tvf archive.tar 列出歸檔文件中內容的詳細信息
- tar -xf archive.tar 提取歸檔文件到當前目錄
- tar -xf archive.tar -C path 提取歸檔文件到指定目錄
- tar -Af file1.tar file2.tar 將file2.tar合并到file1.tar中
- tar -f archive.tar --delete file1 file2...從歸檔文件中刪除文件
第七章 無網不利
主要講解ssh命令,利用ssh-keygen -t rsa可以生成ssh公鑰和私鑰,實現免輸密碼的ssh登陸
第八章 當個好管家
du
du命令查看磁盤占用空間情況
- du file1 file2 查看各個file的大小
- du -h file1 file2用更友好的方式展示file大小
- du -ak source_dir | sort -nrk 1 | head 查找指定目錄中最大的10個文件
df
df輸出磁盤空間使用情況,df -h更友好的展示空間使用情況
第九章 管理重任
ps
查看進程信息
uptime
查看系統load和系統運行時間
top
默認輸出一個占用cpu最多的進程列表
kill
- kill -9 process_id 強殺進程
wall
這個命令可以向所有當前登錄用戶的終端發送信息,這個還挺好玩,不過沒試過
cron
一個很有用的調度命令,寫過時間程序的應該都對這個很有印象
以上。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
