Linux Shell編程與編輯器使用詳解

內容介紹

本書由淺入深,全面、系統地介紹了Linux技術,書中提供了大量實例,供讀者實戰演練。另外,本書有很多關於Linux下的命令操作內容,所以對於每個命令、每個管理設定,作者都實際運行了一遍,供讀者參考,在後面的Shell編程中,作者詳細介紹了Shell變數、函式、語法、控制結構等重要內容,最後一章中介紹綜合實例,使讀者對於Shell編程的理解進一步加深。
本書共分5篇。第1篇介紹Shell編程基礎、系統管理與設定;第2篇介紹常用的系統管理命令、系統維護命令、正則表達式;第3篇介紹vi編輯器、emacs編輯器;第4篇介紹grep命令、gawk與sed;第5篇介紹其他常用的文本編輯命令、Shell變數及相關操作、條件測試、Shell的控制結構、函式、Shell編程實例。
本書適合Linux初學者、想全面學習Linux開發技術的人員、Linux專業開發人員、利用Linux做開發的工程技術人員、Linux開發愛好者、大中專院校的學生、社會培訓班學員等。對於經常使用Linux做開發的人員,更是一本不可多得的案頭必備參考書。

作者介紹

劉麗霞:畢業於西安電子科技大學,獲博士學位,現就職於武警工程大學。長期從事計算機信息工程專業的教學與科研工作,主要設計開發各種資料庫管理信息系統和以面向對象技術為主的大型套用軟體。熟悉Java、C++等開發語言和Linux、Windows CE等作業系統,精通SQL Server、Oracle等資料庫。
楊宇:畢業於瀋陽農業大學,獲博士學位,現就職武警工程大學。長期從事計算機套用技術專業的教學與科研工作,從事數位化設計、人工智慧等方面的研究,主要設計開發各種信息網站和管理信息系統。熟悉PHP,ASP,Java等開發語言和Linux作業系統,精通MySQL、SQL Server等資料庫。主持科研項目1項,作為主要完成人參與科研項目5項,在國內外期刊上發表論文16篇,EI檢索4篇,核心期刊12篇,出版個人專著3部。

作品目錄

第1篇Linux系統學習基礎
第1章Shell編程基礎 1
1.1基本概念 1
1.1.1Shell的功能 1
1.1.2Linux Shell的常用命令 1
1.1.3啟動和退出 2
1.2常用的Shell類型 3
1.2.1Linux 默認Shell 3
1.2.2Bourne Shell的擴展版 3
1.2.3網關接口Shell 3
1.2.4早期Shell 3
1.2.5支持後台作業Shell 4
1.3Shell基本語法 4
1.3.1Shell腳本中的注釋 4
1.3.2Shell通配符的使用 4
1.3.3大小寫區分 6
1.3.4指定使用某個Shell 6
1.3.5IO重定向 7
1.3.6管道(Pipe) 10
1.3.7前台與後台執行任務 11
1.3.8命令的執行順序 12
1.3.9Shell中3種引號的用法 13
1.3.10運行腳本 13
第2章系統管理與設定 16
2.1常用的信息顯示命令 16
2.1.1cal命令:日期顯示 16
2.1.2cat /proc/meminfo:記憶體使用情況查詢 17
2.1.3free命令:記憶體詳細信息查詢 18
2.1.4arch命令:CPU架構顯示 19
2.1.5cat /proc/cpuinfo命令:處理器CPU信息顯示 19
2.1.6cat /proc/modules:查詢當前系統被載入模組 20
2.2系統信息顯示命令 21
2.2.1proc檔案系統:訪問系統核心信息 21
2.2.2modinfo命令:核心模組信息 23
2.2.3cat /etc/issue命令:系統的當前發行版本 23
2.2.4cat /proc/version:查看系統核心當前版本 24
2.2.5cat /proc/partitions:查看系統當前分區 24
2.2.6cat /proc/interrupts命令:顯示中斷信息 24
2.2.7cat /proc/filesystems命令:常用檔案系統信息 24
2.2.8dmesg:啟動信息查詢 25
2.3系統常用信息設定 26
2.3.1date命令:系統時間顯示與設定 26
2.3.2hostname命令:當前系統的主機名顯示與設定 28
2.3.3hwclock命令:硬體時鐘顯示和設定 29
2.3.4hash命令:顯示、添加或清除哈希表 30
2.3.5sysctl命令:系統核心參數的設定 31
2.4檔案系統信息顯示常用命令 32
2.4.1echo命令:文本行輸出顯示 32
2.4.2isosize命令:iso9660檔案系統大小的顯示 33
2.4.3minfo命令:ms-dos檔案系統的各項參數的顯示 34
2.4.4pwd命令:當前工作目錄的顯示 34
2.4.5procinfo命令:系統狀態信息的顯示 34
2.4.6stat命令:檔案/檔案系統的詳細信息的顯示 37
2.5Linux作業系統信息查詢 38
2.5.1uname命令:作業系統信息的顯示 38
2.5.2vmstat命令:虛擬記憶體的統計信息的顯示 39
2.5.3uptime命令:系統的運行信息的顯示 39
2.5.4locale命令:當前系統的語言設定 40
2.5.5tload命令:系統負載顯示 40
2.5.6runlevel命令:系統運行級別顯示 41
2.5.7lsmod命令:所有已載入模組的顯示 42
2.6進程資源 43
2.6.1top命令:進程信息顯示 43
2.6.2ipcs命令:IPC設備信息顯示 44
2.6.3time命令:進程執行時間顯示 45
2.6.4pstree命令:以樹狀圖顯示程式 45
2.6.5ps命令:監測進程 46
2.6.6pmap命令:顯示程式的占用資源信息 49
2.6.7jobs命令:後台作業 49
2.6.8mev命令:監視滑鼠情況 50
2.6.9fuser命令:用套接口或者檔案識別進程 51
2.7Linux終端命令行操作 52
2.7.1fgconsole命令:顯示當前虛擬終端數目 52
2.7.2history命令:顯示歷史指令 52
2.7.3gdialog命令:Shell腳本創建對話框 53
2.7.4yes命令:字元串的連續輸出 59
第2篇系統維護與管理
第3章常用的系統管理命令 61
3.1常用的系統管理任務 61
3.1.1apm命令:BIOS電源管理 61
3.1.2apmsleep命令:低功耗工作 62
3.1.3open命令:開啟虛擬終端 62
3.1.4vlock命令:鎖定終端 63
3.1.5sudo命令:用戶切換 63
3.1.6rsh命令:遠程用戶設定登錄Shell 64
3.1.7chsh命令:切換系統登錄時Shell 65
3.1.8clear命令:清除終端螢幕 66
3.1.9rlogin命令:智慧型化遠端登錄 66
3.2進程任務管理 67
3.2.1apmd命令:高級電源管理守護進程 67
3.2.2fg命令:後台任務放前台 67
3.2.3kill命令:結束進程 68
3.2.4killall命令:殺死同名進程 70
3.2.5nice命令:進程優先權切換 71
3.2.6pgrep命令:查找符合條件的進程 71
3.2.7pidof命令:查看正在運行程式的進程ID 73
3.2.8renice命令:設定進程優先權 73
3.2.9pkill命令:強制殺死進程 74
3.3設定系統的各種任務 75
3.3.1ntsysv命令:圖形化設定系統的各種服務 75
3.3.2symlinks命令:管理和維護符號連結工具 76
3.3.3mtools:軟碟操作工具集 77
3.3.4gcov命令:coverage測試工具 78
3.3.5screen命令:視窗程式管理工具 79
3.3.6logrotate命令:管理log檔案 81
3.3.7pwck命令:檢查密碼檔案 82
3.3.8exec命令:交出控制權 83
3.3.9&命令:後台執行任務 83
3.3.10init命令:進程的父進程 83
3.4後台任務管理 84
3.4.1bg命令:後台執行程式 84
3.4.2wait命令:等待程式返回狀態 84
3.4.3depmod命令:顯示模組依賴關係 84
3.4.4rmmod命令:刪除模組 85
3.4.5ipcrm命令:進程間機制管理 86
3.4.6watch命令:重複執行命令 87
3.4.7fc命令:修改執行命令 88
3.4.8nohup命令:退出登錄執行命令 89
3.4.9suspend命令:暫停執行Shell 89
3.4.10sleep命令:系統休眠 89
第4章系統維護命令 91
4.1常用的系統維護命令 91
4.1.1bind命令:設定按鍵組合 91
4.1.2enable命令:Shell內置命令 92
4.1.3aumix命令:音效裝置設定 94
4.1.4配置系統的認證資源 96
4.1.5export命令:設定環境變數 98
4.1.6hostid命令:主機數字標識 103
4.1.7alias命令:設定命令的別名 103
4.1.8chkconfig命令:管理系統服務 104
4.1.9eval命令:多個命令同時執行 106
4.1.10dircolors命令:配置ls命令顯示顏色 106
4.1.11set命令:設定Shell執行方式 111
4.1.12telinit命令:設定系統的運行等級 113
4.2系統的日常配置 113
4.2.1declare命令:Shell變數 113
4.2.2fbset命令:幀快取設備設定 115
4.2.3insmod命令:載入模組 117
4.2.4lilo命令:安裝啟動裝載程式 119
4.2.5modprobe命令:自動安裝依賴模組 119
4.2.6mkraid命令:raid磁碟陣列 120
4.2.7losetup命令:設定和控制循環設備 121
4.2.8rpm命令:RPM包管理 121
4.2.9ldd命令:共享庫檔案的相互依賴關係 125
4.2.10ldconfig命令:配置動態連結綁定 126
4.2.11up2date命令:升級Red Hat Linux系統 129
4.3其他常用命令 131
4.3.1false命令:false返回值 131
4.3.2true命令:true返回值 132
4.3.3ulimit命令:控制Shell及進程的資源 132
4.3.4mouseconfig命令:設定滑鼠相關參數 134
4.3.5setup命令:系統公用程式設定 135
4.3.6swapoff命令:卸載交換區(swap area) 138
4.3.7swapon命令:載入交換區(swap area) 139
4.3.8resize命令:調整終端視窗 140
4.3.9setserial命令:串口設備設定 140
4.3.10unalias命令:刪除指定的別名 141
4.3.11unset命令:刪除變數或函式 141
4.4自動作業處理 142
4.4.1anacron命令:調度守護進程任務 142
4.4.2at命令:多任務執行排隊處理 143
4.4.3atd命令:執行已經排隊的任務 145
4.4.4atq命令:顯示排隊的任務 145
4.4.5atrm命令:刪除已經排隊的任務 146
4.4.6atrun命令:執行排好隊的任務 146
4.4.7crontab命令:定時執行程式 146
4.4.8batch命令:批處理 149
4.5系統日誌 150
4.5.1syslogd命令:啟動syslog日誌進程 150
4.5.2syslog.conf:系統日誌配置檔案 150
4.5.3logger命令:測試syslog.conf 153
4.5.4echo清空日誌 153
第5章正則表達式 154
5.1正則表達式介紹 154
5.2元字元 154
5.2.1元字元的定義 154
5.2.2元字元的套用示例 155
5.3字元集和類 156
5.3.1字元集和類的定義 156
5.3.2元字集和類的套用示例 157
5.4重複 157
5.4.1重複的定義 157
5.4.2重複的套用示例 158
5.5子表達式 158
5.5.1子表達式的定義 158
5.5.2子表達式的套用示例 159
5.6定位字元串的開始和末尾 159
5.6.1開始和末尾的定義 159
5.6.2定位字元串的開始和末尾的套用示例 160
5.7分支 161
5.7.1分支的定義 161
5.7.2分支的套用示例 161
5.8匹配特殊字元 161
第3篇vi編輯器與emacs編輯器
第6章vi(vim)編輯器 163
6.1vi(vim)編輯器概述 163
6.1.1vi(vim)編輯器的發展史 163
6.1.2啟動vi(vim) 164
6.1.3退出vi(vim) 165
6.1.4命令模式 166
6.1.5末行模式 166
6.1.6插入模式 166
6.2vi(vim)中的常用命令 167
6.2.1插入文本命令 167
6.2.2附加文本命令 167
6.2.3游標移動命令 167
6.2.4字元與塊刪除命令 168
6.2.5添加新行命令 169
6.2.6修改文本命令 169
6.2.7行合併命令 170
6.2.8文本替換命令 170
6.2.9句點命令 171
6.2.10撤銷修改命令 171
6.2.11複製文本命令 171
6.2.12貼上文本命令 171
6.2.13重複執行命令 172
6.3vi(vim)中的字元與檔案操作 172
6.3.1查找指定字元命令 172
6.3.2普通與增量查找 172
6.3.3替換指定字元串 172
6.3.4更改大小寫命令 173
6.3.5檔案讀入命令 174
6.3.6檔案寫入命令 174
6.3.7定位到指定行命令 174
6.3.8顯示狀態信息命令 175
6.3.9保存和退出命令 175
6.4視窗操作 175
6.4.1視窗操作的捷徑 175
6.4.2視窗垂直拆分 176
6.4.3視窗水平拆分 176
6.4.4關閉視窗 177
6.4.5螢幕重繪 177
6.4.6螢幕滾動 178
6.4.7文本定位 178
6.4.8互動式Shell 178
6.4.9在vi(vim)中執行Shell 179
6.4.10獲得幫助 179
第7章emacs編輯器 181
7.1emacs概述 181
7.1.1emacs發展史 181
7.1.2啟動和退出 182
7.1.3新建文本 183
7.1.4保存文本 184
7.2文本編輯 185
7.2.1常用命令鍵 185
7.2.2游標的移動 185
7.2.3文本的輸入 186
7.2.4文本的刪除 187
7.2.5字元的查找和替換 187
7.3緩衝區和視窗 188
7.3.1水平與垂直拆分視窗 188
7.3.2多個緩衝區同時進行工作 189
7.3.3緩衝區中內容的滾動 190
7.4emacs的擴展工具 190
7.4.1日曆顯示 190
7.4.2執行Shell命令 190
7.4.3遊戲調用 191
第4篇grep命令、gawk與sed,其他常用文本命令
第8章grep命令 192
8.1grep介紹 192
8.1.1grep的功能介紹 192
8.1.2grep的工作原理 192
8.2grep與正則表達式 193
8.2.1grep正則表達式的元字元集 193
8.2.2grep正則實例 196
8.2.3grep的常用參數選項 198
8.2.4grep與管道的配合使用 202
8.2.5grep的退出狀態 203
8.3egrep與fgrep 203
8.3.1egrep處理複雜字元串 203
8.3.2fgrep處理簡單字元串 206
第9章gawk與sed 207
9.1過濾器gawk 207
9.1.1gawk發展史 207
9.1.2gawk的程式處理模式 209
9.1.3gawk的語法格式 209
9.1.4gawk注釋 211
9.1.5變數賦值 211
9.1.6模式的使用 212
9.1.7指定動作 214
9.1.8使用重定向輸出 214
9.1.9欄位分隔設定輸出 215
9.1.10記錄與欄位的介紹 215
9.2gawk的編程設計 216
9.2.1函式 216
9.2.2關聯數組 217
9.2.3格式化輸出命令 218
9.2.4關係運算符 219
9.2.5算術運算符 220
9.2.6流程控制語句 222
9.2.7getline:控制輸入 224
9.2.8協進程 225
9.2.9網路數據交換 226
9.2.10gawk的套用示例 227
9.3流編輯器sed 228
9.3.1sed編輯器介紹 229
9.3.2sed的基本語法 229
9.3.3地址的作用 230
9.3.4指令的作用 231
9.3.5刪除指令 232
9.3.6追加指令 232
9.3.7列印指令 233
9.3.8修改指令 233
9.3.9替換指令 234
9.3.10插入指令 236
9.3.11退出指令 236
9.3.12下一條指令 237
9.3.13檔案寫入指令 237
9.3.14檔案讀入指令 238
9.3.15sed的控制結構 238
9.3.16Pattern區和Hold區 239
9.3.17sed的套用示例 241
第5篇Shell編程及編程實戰
第10章其他常用的文本編輯命令 243
10.1文本編輯常用命令 243
10.1.1cat命令:標準輸出設備顯示文本內容 243
10.1.2ed命令:行文本編輯器 245
10.1.3fmt命令:重排文本檔案 246
10.1.4gedit命令:圖形化文本編輯器 247
10.1.5ed命令:行文本編輯器 248
10.1.6jed命令:jed編輯文本檔案 249
10.1.7cut命令:檔案剪下 250
10.1.8colrm命令:刪除指定的列 252
10.1.9comm命令:對已排序檔案逐行進行比較 253
10.1.10od命令:格式化輸出檔案內容 254
10.1.11joe命令:ASCII文本編輯器 255
10.1.12aspell命令:檢查檔案的拼寫錯誤 258
10.1.13col命令:過濾控制字元 260
10.1.14view命令:唯讀方式查看檔案內容 260
10.1.15more 命令:分屏顯示文本內容 261
10.1.16head命令:部分顯示文本內容 262
10.2其他常用的文本命令與技巧 264
10.2.1cmp命令:檔案屬性比較 264
10.2.2diff命令:檔案內容比較 265
10.2.3diffstat命令:diff結果的統計信息 268
10.2.4patch命令:檔案打補丁 269
10.2.5csplit命令:按指定行數分割檔案 270
10.2.6uniq命令:顯示檔案中重複出現的行 271
10.2.7pr命令:編排檔案格式 272
10.2.8pico命令:編輯文字檔案 273
10.2.9tail命令:讀取檔案的末尾部分 275
10.2.10tac命令:反序顯示文本內容 277
10.2.11less 命令:前後翻閱文本內容 278
10.2.12sort 命令:檔案排序 279
10.2.13indent命令:調整c代碼檔案格式 281
10.2.14tr命令:轉換文本指定字元串 285
10.2.15join命令:連線兩個相同欄位檔案 286
10.2.16spell命令:檢查文本拼寫錯誤 287
10.2.17tee命令:讀取標準輸入到標準輸出或檔案 287
10.2.18wc命令:統計文本信息 288
第11章Shell變數及相關操作 290
11.1Shell變數類型 290
11.1.1Shell環境變數 290
11.1.2位置變數 292
11.1.3預定義的特殊變數 293
11.1.4用戶自定義的變數 294
11.2變數的操作 294
11.2.1創建和設定變數 294
11.2.2區分變數名 295
11.2.3刪除變數 295
11.3變數的賦值 296
11.3.1直接給變數賦值 296
11.3.2使用read命令賦值 296
11.3.3命令行參數賦值 298
11.3.4命令的輸出結果賦值 298
11.3.5檔案讀入數據實現賦值 299
11.4變數的輸出 299
11.4.1printf命令:格式化輸出變數 300
11.4.2echo命令:直接輸出變數 301
11.5數組變數 301
11.5.1數組的定義 301
11.5.2數組的複製 303
11.5.3數組元素的個數 303
11.5.4數組元素的長度 304
11.6算術運算 305
11.6.1expr命令 305
11.6.2let命令 305
11.6.3浮點算術運算 306
第12章條件測試 307
12.1Shell的測試命令 307
12.2測試檔案屬性 307
12.2.1測試檔案存在 307
12.2.2測試檔案存在且可執行 308
12.2.3測試檔案存在且是目錄 309
12.2.4測試檔案存在且是字元設備 309
12.2.5測試檔案存在且是塊設備 310
12.3測試數值 310
12.3.1相等測試 310
12.3.2不相等測試 311
12.3.3小於測試 312
12.3.4小於等於測試 312
12.3.5大於測試 313
12.3.6大於等於測試 313
12.4測試字元串 314
12.4.1相等測試 314
12.4.2不相等測試 315
12.4.3非空測試 316
12.4.4長度為0測試 316
12.4.5長度不為0測試 317
12.5測試邏輯運算符 317
12.5.1邏輯與測試 318
12.5.2邏輯或測試 319
12.5.3邏輯非測試 319
第13章Shell的控制結構 321
13.1if結構 321
13.1.1if結構的語法格式 321
13.1.2if…then…fi示例 322
13.1.3if…then…else…fi示例 323
13.1.4if…then…elif…示例 324
13.1.5if嵌套 326
13.2case結構 328
13.2.1case結構的語法格式 328
13.2.2case結構示例 328
13.2.3case嵌套 334
13.3select結構 335
13.3.1select結構的語法格式 335
13.3.2select結構示例 335
13.4while循環 337
13.4.1while語句的語法格式 337
13.4.2while循環示例 338
13.4.3while的嵌套 339
13.4.4避免死循環 340
13.5for循環 341
13.5.1for循環語法結構 341
13.5.2for循環示例 342
13.6until循環 344
13.6.1until循環的語法結構 344
13.6.2until循環示例 345
13.7break和continue語句 346
13.7.1break語句 346
13.7.2continue語句 348
第14章函式 352
14.1函式的定義 352
14.2函式的調用 352
14.2.1執行函式 353
14.2.2函式參數傳遞 354
14.2.3函式的返回值 356
14.2.4載入函式 358
14.2.5刪除函式 359
14.3函式的作用域 360
14.3.1全局作用域 360
14.3.2局部作用域 361
14.3.3套用示例 362
14.4函式的嵌套 363
14.5函式的遞歸 364
第15章Shell編程實例 367
15.1判斷檔案類型 367
15.1.1系統設計 367
15.1.2代碼實現 367
15.2使用if語句編寫選擇選單 367
15.2.1系統設計 368
15.2.2代碼實現 368
15.3使用while循環編寫選擇選單 369
15.3.1系統設計 369
15.3.2代碼實現 369
15.4使用until循環編寫選擇選單 371
15.4.1系統設計 371
15.4.2代碼實現 371
15.5對指定目錄定時備份 374
15.5.1系統設計 374
15.5.2代碼實現 374
15.6連續對多個目錄逐個備份 375
15.6.1系統設計 375
15.6.2代碼實現 375
15.7自動下載指定文檔 376
15.7.1系統設計 376
15.7.2代碼實現 377
15.8自動上傳指定文檔 377
15.8.1系統設計 377
15.8.2代碼實現 377
15.9通過命令連續創建50個用戶賬號 379
15.9.1系統設計 379
15.9.2代碼實現 379
15.10通過操作檔案創建多個用戶 380
15.10.1系統設計 380
15.10.2代碼實現 381
15.11連續創建多個目錄 383
15.11.1系統設計 383
15.11.2代碼實現 383
15.12檢查系統資源使用情況 384
15.12.1系統設計 384
15.12.2代碼實現 385
15.13賬戶的一致性檢查 388
15.13.1系統設計 388
15.13.2代碼實現 388
15.14檔案類型轉換 391
15.14.1系統設計 391
15.14.2代碼實現 391
15.15對輸入的3個數字進行排序 393
15.15.1系統設計 393
15.15.2代碼實現 393
15.16計算奇數之和 395
15.16.1系統設計 396
15.16.2代碼實現 396
15.17使用select命令生成選單 397
15.17.1系統設計 397
15.17.2代碼實現 397
15.18列印圖形 398
15.18.1系統設計 398
15.18.2代碼實現 398
15.19處理壓縮檔案 399
15.19.1系統設計 399
15.19.2代碼實現 399
15.20數值進制轉換 401
15.20.1系統設計 401
15.20.2代碼實現 401
15.21使用sed列印指定行 402
15.21.1系統設計 402
15.21.2代碼實現 402
15.22使用sed篩選普通檔案 402
15.22.1系統設計 402
15.22.2代碼實現 403
15.23使用gawk反序輸出各列 403
15.23.1系統設計 403
15.23.2代碼實現 403
15.24對檔案進行大小寫轉換 404
15.24.1系統設計 404
15.24.2代碼實現 404
15.25統計檔案中的文本信息 405
15.25.1系統設計 405
15.25.2代碼實現 405

相關詞條

熱門詞條

聯絡我們