內容概要
《linux系統命令及shell腳本實踐指南》由淺入深、全面、系統地介紹了linux系統的基礎命令和shell腳本的開發。作為一本面向linux入門用戶的書籍,本書力求語言通俗易懂,用例簡單明了,便于讀者閱讀領會。同時,全書穿插了不少要求讀者動手實踐的內容,不但可加深讀者對內容的理解和消化,同時也可通過動手實踐激發讀者對linux系統和shell編程的興趣,從而更好地驅動讀者學習。 全書共計18章,從知識結構上分為三部分。第一部分為前8章,全面介紹了linux的基礎知識和常用命令;第二部分為第9章和第10章,主要是linux下交互和非交互編輯器的使用;第三部分為第11~18章,主要是shell腳本開發。這三部分內容各有偏重,讀者可以根據實際需要選擇閱讀。 《linux系統命令及shell腳本實踐指南》根據作者多年來linux環境運維管理工作的經驗編著而成,內容豐富,且注重實踐講解,非常適合linux初學者和基于linux平臺的軟件開發者學習或查閱。從內容結構上來看,本書摒棄了各章獨立的寫作風格,而是采取了各章有機結合的方式,自上而下自成一體,既加深了讀者對單個知識點的理解,也有利于從全局把控linux系統和shell編程的精髓。
作者簡介
王軍,擁有近8年系統工程師、網絡工程師工作經驗。2006年年初開始從事信息技術相關工作,先后參與過校園交換網、公司辦公網以及大中型互聯網公司的高可用網絡架構設計,有豐富的網絡實戰經驗。2008年進入linux系統運維領域,并相繼在國內多家著名企業(易趣、51job、阿里云)就職,從事網絡工程師、系統工程師工作,工作內容涉及大規模商用云計算虛擬化平臺運維、系統架構、企業網絡設計。自行設計和部署過國內多家大型網站的高可用集群。對系統、網絡、數據庫都有深刻的理解,多次在國內一些技術論壇和博客中發表技術文檔,頗受關注,F任國家電網某子公司資深技術顧問。
書籍目錄
《linux系統命令及shell腳本實踐指南》 推薦序1 推薦序2 前 言 第1章 linux簡介 1 1.1 linux的發展歷史 1 1.2 linux的特點 2 1.3 系統安裝 3 1.3.1 安裝前的規劃 3 1.3.2 安裝redhat 4 1.3.3 安裝centos 11 1.4 系統登錄 16 1.4.1 第一次登錄系統的設置 16 1.4.2 使用圖形模式登錄 21 1.4.3 使用終端模式登錄 23 1.4.4 開始學習使用linux的命令 24 1.5 系統啟動流程 25 1.5.1 系統引導概述 25 1.5.2 系統運行級別 26 1.5.3 服務啟動腳本 27 .1.5.4 grub介紹 29 1.6 獲得幫助 31 1.6.1 使用man page 31 1.6.2 使用info page 32 1.6.3 其他獲得幫助的方式 32 第2章 linux用戶管理 33 2.1 linux用戶和用戶組 33 2.1.1 uid和gid 33 2.1.2 /etc/passwd和/etc/shadow 34 2.2 linux賬號管理 36 2.2.1 新增和刪除用戶 36 2.2.2 新增和刪除用戶組 39 2.2.3 檢查用戶信息 39 2.3 切換用戶 40 2.3.1 切換成其他用戶 40 2.3.2 用其他用戶的身份執行命令:sudo 41 2.4 例行任務管理 43 2.4.1 單一時刻執行一次任務:at 43 2.4.2 周期性執行任務:cron 44 2.4.3 /etc/crontab的管理 45 第3章 linux文件管理 46 3.1 文件和目錄管理 46 3.1.1 絕對路徑和相對路徑 47 3.1.2 文件的相關操作 48 3.1.3 目錄的相關操作 51 3.1.4 文件時間戳 53 3.2 文件和目錄的權限 54 3.2.1 查看文件或目錄的權限:ls -al 54 3.2.2 文件隱藏屬性 55 3.2.3 改變文件權限:chmod 56 3.2.4 改變文件的擁有者:chown 56 3.2.5 改變文件的擁有組:chgrp 57 3.2.6 文件特殊屬性:suid/sgid/sticky 57 3.2.7 默認權限和umask 58 3.2.8 查看文件類型:file 60 3.3 查找文件 60 3.3.1 一般查找:find 61 3.3.2 數據庫查找:locate 61 3.3.3 查找執行文件:which/whereis 62 3.4 文件壓縮和打包 63 3.4.1 gzip/gunzip 63 3.4.2 tar 63 3.4.3 bzip2 63 3.4.4 cpio 64 第4章 linux文件系統 65 4.1 文件系統 65 4.1.1 什么是文件系統 65 4.1.2 ext2文件系統簡介 65 4.1.3 ext3文件系統簡介 66 4.2 磁盤分區、創建文件系統、掛載 66 4.2.1 創建文件系統:fdisk 66 4.2.2 磁盤掛載:mount 69 4.2.3 設置啟動自動掛載:/etc/fstab 70 4.2.4 磁盤檢驗:fsck、badblocks 70 4.3 linux邏輯卷 71 4.3.1 什么是邏輯卷 71 4.3.2 如何制作邏輯卷 72 4.4 硬鏈接和軟鏈接 76 4.4.1 什么是硬鏈接 76 4.4.2 什么是軟鏈接 77 第5章 字符處理 79 5.1 管道 79 5.2 使用grep搜索文本 79 5.3 使用sort排序 80 5.4 使用uniq刪除重復內容 82 5.5 使用cut截取文本 82 5.6 使用tr做文本轉換 83 5.7 使用paste做文本合并 84 5.8 使用split分割大文件 84 第6章 網絡管理 86 6.1 網絡接口配置 86 6.1.1 使用ifconfig檢查和配置網卡 86 6.1.2 將ip配置信息寫入配置文件 87 6.2 路由和網關設置 88 6.3 dns客戶端配置 89 6.3.1 /etc/hosts 89 6.3.2 /etc/resolv.conf 90 6.4 網絡測試工具 90 6.4.1 ping 90 6.4.2 host 91 6.4.3 traceroute 91 6.4.4 常見網絡故障排查 92 第7章 進程管理 94 7.1 什么是進程 94 7.2 進程和程序的區別 95 7.3 進程的觀察:ps、top 95 7.4 進程的終止:kill、killall 98 7.5 查詢進程打開的文件:lsof 99 7.6 進程優先級調整:nice、renice 101 第8章 linux下的軟件安裝 103 8.1 源碼包編譯安裝 103 8.1.1 編譯、安裝、打印helloworld程序 103 8.1.2 使用源碼包編譯安裝apache 106 8.2 rpm安裝軟件 108 8.2.1 什么是rpm 108 8.2.2 rpm包管理命令:rpm 109 8.2.3 包依賴關系 110 8.2.4 使用rpm包安裝gcc 110 8.2.5 使用rpm包安裝apache 112 8.3 yum安裝軟件 114 8.3.1 yum命令的基本用法 114 8.3.2 使用yum安裝apache 115 8.3.3 redhat使用yum的問題 115 8.3.4 自建本地yum源 118 8.3.5 自建網絡yum源 121 8.4 三種安裝方法的比較 123 8.5 重建rpm包 124 8.5.1 創建重建環境 124 8.5.2 快速重建rpm包 124 8.5.3 以spec文件重建rpm包 125 8.5.4 spec文件簡介 126 第9章 vi和vim編輯器 129 9.1 vi和vim編輯器簡介 129 9.2 vi編輯器 129 9.2.1 模式介紹 129 9.2.2 案例練習 130 9.3 vim編輯器 134 9.3.1 多行編輯 134 9.3.2 多文件編輯 134 9.3.3 使用vimtutor深入學習vim 136 9.4 gedit編輯器 137 9.4.1 gedit編輯器簡介 137 9.4.2 啟動gedit編輯器 138 第10章 正則表達式 139 10.1 正則表達式基礎 139 10.1.1 什么是正則表達式 139 10.1.2 基礎的正則表達式 140 10.1.3 擴展的正則表達式 143 10.1.4 通配符 144 10.2 正則表達式示例 146 10.3 文本處理工具sed 150 10.3.1 sed介紹 150 10.3.2 刪除 151 10.3.3 查找替換 152 10.3.4 字符轉換 153 10.3.5 插入文本 153 10.3.6 讀入文本 154 10.3.7 打印 154 10.3.8 寫文件 154 10.3.9 sed腳本 155 10.3.10 高級替換 155 10.3.11 sed總結 156 10.4 文本處理工具awk 157 10.4.1 打印指定域 158 10.4.2 指定打印分隔符 158 10.4.3 內部變量nf 159 10.4.4 打印固定域 159 10.4.5 截取字符串 159 10.4.6 確定字符串的長度 160 10.4.7 使用awk求列和 160 第11章 shell編程概述 161 11.1 shell簡介 161 11.1.1 shell是什么 161 11.1.2 shell的歷史 163 11.1.3 shell的功能 164 11.1.4 shell編程的優勢 164 11.2 第一個shell腳本 164 11.2.1 編輯第一個shell腳本 164 11.2.2 運行腳本 165 11.2.3 shell腳本的排錯 166 11.3 shell的內建命令 169 第12章 bash shell的安裝 184 12.1 確定你的shell版本 184 12.2 安裝bash 184 12.3 使用新版本的bash shell 186 12.4 在windows中安裝bash 187 第13章 shell編程基礎 191 13.1 變量 191 13.1.1 局部變量 191 13.1.2 環境變量 191 13.1.3 變量命名 197 13.1.4 變量賦值和取值 198 13.1.5 取消變量 199 13.1.6 特殊變量 199 13.1.7 數組 200 13.1.8 只讀變量 202 13.1.9 變量的作用域 203 13.2 轉義和引用 205 13.2.1 轉義 205 13.2.2 引用 206 13.2.3 命令替換 207 13.3 運算符 208 13.3.1 算術運算符 209 13.3.2 位運算符 209 13.3.3 自增自減 211 13.4 其他算術運算 211 13.4.1 使用$[]做運算 211 13.4.2 使用expr做運算 212 13.4.3 內建運算命令declare 212 13.4.4 算術擴展 213 13.4.5 使用bc做運算 213 13.5 特殊字符 215 13.5.1 通配符 215 13.5.2 引號 215 13.5.3 注釋符 215 13.5.4 大括號 216 13.5.5 控制字符 217 13.5.6 雜項 217 第14章 測試和判斷 218 14.1 測試 218 14.1.1 測試結構 218 14.1.2 文件測試 219 14.1.3 字符串測試 220 14.1.4 整數比較 222 14.1.5 邏輯測試符和邏輯運算符 223 14.2 判斷 224 14.2.1 if判斷結構 224 14.2.2 if/else判斷結構 225 14.2.3 if/elif/else判斷結構 226 14.2.4 case判斷結構 227 第15章 循環 229 15.1 for循環 229 15.1.1 帶列表的for循環 229 15.1.2 不帶列表的for循環 231 15.1.3 類c的for循環 232 15.1.4 for的無限循環 233 15.2 while循環 234 15.2.1 while循環的語法 234 15.2.2 使用while按行讀取文件 235 15.2.3 while的無限循環 236 15.3 until循環 237 15.3.1 until循環的語法 237 15.3.2 until的無限循環 238 15.4 select循環 238 15.5 嵌套循環 239 15.6 循環控制 241 15.6.1 break語句 241 15.6.2 continue語句 241 第16章 函數 243 16.1 函數的基本知識 243 16.1.1 函數的定義和調用 243 16.1.2 函數的返回值 244 16.2 帶參數的函數 246 16.2.1 位置參數 246 16.2.2 指定位置參數值 247 16.2.3 移動位置參數 248 16.3 函數庫 249 16.3.1 自定義函數庫 249 16.3.2 函數庫/etc/init.d/functions簡介 249 16.4 遞歸函數 251 第17章 重定向 255 17.1 重定向簡介 255 17.1.1 重定向的基本概念 255 17.1.2 文件標識符和標準輸入輸出 255 17.2 i/o重定向 255 17.2.1 i/o重定向符號和用法 255 17.2.2 使用exec 260 17.2.3 here document 262 第18章 腳本范例 263 18.1 批量添加用戶腳本 263 18.2 檢測服務器存活 266 18.3 使用expect實現自動化輸入 268 18.4 自動登錄ftp備份 270 18.5 文件安全檢測腳本 272 18.6 ssh自動登錄備份 273 18.7 使用rsync備份 275 18.8 使用netcat備份 277 18.9 使用iptables建立防火墻 279 18.10 自定義開機啟動項的init腳本 282 18.11 使用腳本操作mysql數據庫 286 18.12 基于lvm快照的mysql數據庫備份 288 18.13 頁面自動化安裝lamp環境 291