《鳥哥的Linux私房菜 基礎學習篇 第四版》
目 錄
第 一部分Linux的規則與安裝
第0章計算機概論2
0.1電腦:輔助人腦的好工具3
0.1.1電腦硬件的3
0.1.2一切設計的起點:CPU的架構5
0.1.3的設備6
0.1.4運作流程6
0.1.5電腦的分類7
0.1.6電腦上面常用的計算單位(容量、速度等)8
0.2個人電腦架構與相關設備組件9
0.2.1執行腦袋運算與判斷的CPU10
0.2.2內存12
0.2.3顯卡15
0.2.4硬盤與存儲設備16
0.2.5擴展卡與接口20
0.2.6主板21
0.2.7主機電源22
0.2.8選購須知22
0.3數據表示方式23
0.3.1數字繫統24
0.3.2字符編碼繫統24
0.4軟件程序運行25
0.4.1機器語言程序與編譯型程序25
0.4.2操作繫統26
0.4.3應用程序28
0.5重點回顧29
0.6本章習題29
0.7參考資料與擴展閱讀30
第 1章Linux是什麼與如何學習32
1.1Linux是什麼33
1.1.1Linux是什麼?操作繫統/應用程序?33
1.1.2Linux之前,UNIX的歷史34
1.1.3關於GNU計劃、自由軟件與開放源代碼40
1.2托瓦茲的Linux的發展43
1.2.1與Minix之間43
1.2.2對386硬件的多任務測試44
1.2.3初次發布Linux 0.0245
1.2.4Linux的發展:虛擬團隊的產生46
1.2.5Linux的內核版本47
1.2.6Linux發行版48
1.3Linux當前應用的角色51
1.3.1企業環境的使用52
1.3.2個人環境的使用53
1.3.3雲端應用54
1.4Linux該如何學習55
1.4.1從頭學習Linux基礎56
1.4.2選擇一本易讀的工具書57
1.4.3實踐再實踐58
1.4.4發生問題怎麼處理58
1.4.5鳥哥的建議(重點在solution的學習)59
1.5重點回顧60
1.6本章習題61
1.7參考資料與擴展閱讀62
第 2章主機規劃與磁盤分區63
2.1Linux與硬件的搭配64
2.1.1認識計算機的硬件設備64
2.1.2選擇與Linux搭配的主機設備65
2.1.3各硬件設備在Linux中的文件名67
2.1.4使用虛擬機學習68
2.2磁盤分區69
2.2.1磁盤連接方式與設備文件名的關繫69
2.2.2MBR(MS-DOS)與GPT磁盤分區表(partition table)70
2.2.3啟動流程中的BIOS與UEFI啟動檢測程序76
2.2.4Linux安裝模式下,磁盤分區的選擇(極重要)79
2.3安裝Linux前的規劃82
2.3.1選擇適當的Linux發行版82
2.3.2主機的服務規劃與硬件的關繫83
2.3.3主機硬盤的主要規劃84
2.3.4鳥哥的兩個實際案例85
2.4重點回顧86
2.5本章習題87
2.6參考資料與擴展閱讀87
第3章安裝CentOS 7.x88
3.1本練習機的規劃(尤其是分區參數)89
3.2開始安裝 CentOS 791
3.2.1調整BIOS與虛擬機創建流程91
3.2.2選擇安裝模式與啟動(inst.gpt)94
3.2.3設置時區、語言與鍵盤布局96
3.2.4安裝源設置與軟件選擇97
3.2.5磁盤分區與文件繫統設置99
3.2.6內核管理與網絡設置104
3.2.7開始安裝、設置root密碼與新增可切換身份之一般用戶106
3.2.8準備使用繫統前的授權同意108
3.2.9其他功能:RAM測試,安裝筆記本電腦的內核參數(可選)110
3.3多重引導安裝步驟與管理(可選)111
3.3.1安裝 CentOS 7.x Windows7的規劃111
3.3.2高級安裝 CentOS 7.x與Windows7112
3.3.3恢復MBR內的啟動引導程序與設置多重引導選項113
3.4重點回顧114
3.5本章習題115
3.6參考資料與擴展閱讀115
第4章首次登錄與在線求助116
4.1首次登錄繫統117
4.1.1首次登錄CentOS 7.x圖形用戶界面模式117
4.1.2GNOME的操作與注銷118
4.1.3X Window與命令行模式的切換124
4.1.4在終端登錄Linux125
4.2命令行模式下命令的執行127
4.2.1開始執行命令127
4.2.2基礎命令的操作128
4.2.3重要的幾個熱鍵[Tab]、[Ctrl]-c、[Ctrl]-d131
4.2.4錯誤信息的查看133
4.3Linux繫統的在線求助man page與infopage133
4.3.1命令的 --help求助說明134
4.3.2man page135
4.3.3info page139
4.3.4其他有用的文件(documents)141
4.4超簡單的文本編輯器:nano142
4.5正確的關機方法143
4.6重點回顧146
4.7本章習題146
4.8參考資料與擴展閱讀147
第二部分Linux文件、目錄與磁盤格式
第5章Linux的文件權限與目錄配置149
5.1用戶與用戶組150
5.2Linux文件權限概念152
5.2.1Linux文件屬性152
5.2.2如何修改文件屬性與權限156
5.2.3目錄與文件的權限意義159
5.2.4Linux文件種類與擴展名162
5.3Linux目錄配置165
5.3.1Linux目錄配置的依據——FHS165
5.3.2目錄樹(directory tree)169
5.3.3路徑與相對路徑170
5.3.4CentOS的觀察172
5.4重點回顧173
5.5本章練習174
5.6參考資料與擴展閱讀174
第6章Linux文件與目錄管理175
6.1目錄與路徑176
6.1.1相對路徑與路徑176
6.1.2目錄的相關操作176
6.1.3關於執行文件路徑的變量:$PATH179
6.2文件與目錄管理181
6.2.1文件與目錄的查看:ls181
6.2.2復制、刪除與移動:cp、rm、mv183
6.2.3獲取路徑的文件名與目錄名稱186
6.3文件內容查看186
6.3.1直接查看文件內容187
6.3.2可翻頁查看188
6.3.3數據截取190
6.3.4非純文本文件:od191
6.3.5修改文件時間或創建新文件:touch192
6.4文件與目錄的默認權限與隱藏權限194
6.4.1文件默認權限:umask195
6.4.2文件隱藏屬性196
6.4.3文件特殊權限:SUID、SGID、SBIT198
6.4.4觀察文件類型:file200
6.5命令與文件的查找201
6.5.1腳本文件的查找201
6.5.2文件的查找201
6.6極重要的復習,權限與命令間的關繫205
6.7重點回顧206
6.8本章習題207
6.9參考資料與擴展閱讀208
第7章Linux磁盤與文件繫統管理209
7.1認識Linux文件繫統210
7.1.1磁盤組成與分區的復習210
7.1.2文件繫統特性211
7.1.3Linux的ext2文件繫統(inode)212
7.1.4與目錄樹的關繫217
7.1.5ext2/ext3/ext4文件的存取與日志式文件繫統的功能219
7.1.6Linux文件繫統的運行220
7.1.7掛載點的意義(mountpoint)221
7.1.8其他Linux支持的文件繫統與VFS221
7.1.9XFS文件繫統簡介222
7.2文件繫統的簡單操作224
7.2.1磁盤與目錄的容量224
7.2.2硬鏈接與符號鏈接:ln227
7.3磁盤的分區、格式化、檢驗與掛載231
7.3.1觀察磁盤分區狀態232
7.3.2磁盤分區:gdisk/fdisk233
7.3.3磁盤格式化(創建文件繫統)238
7.3.4文件繫統檢驗241
7.3.5文件繫統掛載與卸載243
7.3.6磁盤/文件繫統參數自定義246
7.4設置啟動掛載248
7.4.1啟動掛載/etc/fstab及/etc/mtab248
7.4.2特殊設備loop掛載(鏡像文件不刻錄就掛載使用)251
7.5內存交換分區(swap)之創建252
7.5.1使用物理分區創建內存交換分區253
7.5.2使用文件創建內存交換文件254
7.6文件繫統的特殊觀察與操作255
7.6.1磁盤空間之浪費問題255
7.6.2利用GNU的parted 進行分區操作(可選)256
7.7重點回顧257
7.8本章習題258
7.9參考資料與擴展閱讀259
第8章文件與文件繫統的壓縮261
8.1壓縮文件的用途與技術262
8.2Linux繫統常見的壓縮命令263
8.2.1gzip,zcat/zmore/zless/zgrep263
8.2.2bzip2,bzcat/bzmore/bzless/bzgrep265
8.2.3xz,xzcat/xzmore/xzless/xzgrep265
8.3打包命令:tar266
8.4XFS文件繫統的備份與還原272
8.4.1XFS文件繫統備份xfsdump272
8.4.2XFS文件繫統還原xfsrestore275
8.5光盤寫入工具277
8.5.1mkisofs:建立鏡像文件277
8.5.2cdrecord:光盤刻錄工具280
8.6其他常見的壓縮與備份工具282
8.6.1dd282
8.6.2cpio284
8.7重點回顧285
8.8本章習題286
8.9參考資料與擴展閱讀287
第三部分學習shell與shell script
第9章vim程序編輯器289
9.1vi與vim290
9.2vi的使用291
9.2.1簡易執行範例292
9.2.2按鍵說明293
9.2.3一個案例練習296
9.2.4vim的緩存、恢復與打開時的警告信息297
9.3vim的額外功能299
9.3.1可視區塊(Visual Block)300
9.3.2多文件編輯301
9.3.3多窗口功能302
9.3.4vim的關鍵詞補全功能303
9.3.5vim環境設置與記錄:~/.vimrc、~/.viminfo304
9.3.6vim常用命令示意圖305
9.4其他vim使用注意事項305
9.4.1中文編碼的問題306
9.4.2DOS與Linux的換行符306
9.4.3語繫編碼轉換307
9.5重點回顧308
9.6本章練習308
9.7參考資料與擴展閱讀309
第 10章認識與學習BASH310
10.1認識BASH這個Shell311
10.1.1硬件、內核與Shell311
10.1.2為何要學命令行模式的Shell?312
10.1.3繫統的合法shell與/etc/shells功能313
10.1.4Bash shell的功能314
10.1.5查詢命令是否為Bash shell的內置命令:type315
10.1.6命令的執行與快速編輯按鈕316
10.2Shell的變量功能316
10.2.1什麼是變量?317
10.2.2變量的使用與設置:echo、變量設置規則、unset318
10.2.3環境變量的功能322
10.2.4影響顯示結果的語繫變量(locale)325
10.2.5變量的有效範圍327
10.2.6變量鍵盤讀取、數組與聲明:read、array、declare327
10.2.7與文件繫統及程序的限制關繫:ulimit329
10.2.8變量內容的刪除、取代與替換(可選)330
10.3命令別名與歷史命令334
10.3.1命令別名設置:alias、unalias334
10.3.2歷史命令:history335
10.4Bash shell的操作環境337
10.4.1路徑與命令查找順序337
10.4.2bash的登錄與歡迎信息:/etc/issue、/etc/motd337
10.4.3bash的環境配置文件338
10.4.4終端的環境設置:stty、set342
10.4.5通配符與特殊符號344
10.5數據流重定向345
10.5.1什麼是數據流重定向345
10.5.2命令執行的判斷根據:;、&&、||348
10.6管道命令(pipe)350
10.6.1選取命令:cut、grep351
10.6.2排序命令:sort、wc、uniq353
10.6.3雙向重定向:tee354
10.6.4字符轉換命令:tr、col、join、paste、expand355
10.6.5劃分命令:split357
10.6.6參數代換:xargs358
10.6.7關於減號【-】的用途359
10.7重點回顧359
10.8本章習題360
10.9參考資料與擴展閱讀361
第 11章正則表達式與文件格式化處理362
11.1開始之前:什麼是正則表達式363
11.2基礎正則表達式364
11.2.1語繫對正則表達式的影響365
11.2.2grep 的一些高級選項365
11.2.3基礎正則表達式練習366
11.2.4基礎正則表達式字符集合(characters)371
11.2.5sed工具373
11.3擴展正則表達式376
11.4文件的格式化與相關處理377
11.4.1格式化打印:printf377
11.4.2awk:好用的數據處理工具379
11.4.3文件比對工具381
11.4.4文件打印設置:pr384
11.5重點回顧384
11.6本章習題385
11.7參考資料與擴展閱讀386
第 12章學習shell腳本387
12.1什麼是shell腳本388
12.1.1為什麼要學習shell腳本388
12.1.2第 一個腳本的編寫與執行389
12.1.3建立shell腳本的良好編寫習慣391
12.2簡單的shell腳本練習392
12.2.1簡單範例392
12.2.2腳本的執行方式差異(source、shscript、./script)394
12.3善用判斷式395
12.3.1利用test命令的測試功能395
12.3.2利用判斷符號[ ]397
12.3.3shell腳本的默認變量($0、$1...)399
12.4條件判斷式400
12.4.1利用if…then401
12.4.2利用case…esac判斷405
12.4.3利用function功能406
12.5循環(loop)408
12.5.1while do done、until do done(不定循環)408
12.5.2for...do...done(固定循環)409
12.5.3for...do...done的數值處理411
12.5.4搭配隨機數與數組的實驗412
12.6shell腳本的跟蹤與調試413
12.7重點回顧414
12.8本章習題415
第四部分Linux使用者管理
第 13章Linux賬號管理與ACL權限設置417
13.1Linux的賬號與用戶組418
13.1.1用戶標識符:UID與GID418
13.1.2用戶賬號419
13.1.3關於用戶組:有效與初始用戶組,groups, newgr423
13.2賬號管理426
13.2.1新增與刪除用戶:useradd、相關配置文件、passwd、usermod、
userdel426
13.2.2用戶功能434
13.2.3新增與刪除用戶組437
13.2.4賬號管理實例438
13.2.5使用外部身份認證繫統439
13.3主機的詳細權限規劃:ACL的使用440
13.3.1什麼是ACL與如何支持啟動ACL440
13.3.2ACL的設置技巧:getfacl、setfacl441
13.4用戶身份切換444
13.4.1su445
13.4.2sudo446
13.5用戶的特殊shell與PAM模塊450
13.5.1特殊的shell,/sbin/nologin451
13.5.2PAM模塊簡介451
13.5.3PAM模塊設置語法452
13.5.4常用模塊簡介454
13.5.5其他相關文件456
13.6Linux主機上的用戶信息傳遞457
13.6.1查詢用戶:w、who、last、lastlog457
13.6.2用戶對談:write、mesg、wall458
13.6.3用戶郵箱:mail459
13.7CentOS 7環境下大量創建賬號的方法460
13.7.1一些賬號相關的檢查工具460
13.7.2大量創建賬號模板(適用passwd--stdin選項)461
13.8重點回顧462
13.9本章習題463
13.10參考資料與擴展閱讀464
第 14章磁盤配額(Quota)與高級文件繫統管理465
14.1磁盤配額(Quota)的應用與實踐466
14.1.1什麼是磁盤配額466
14.1.2一個xfs文件繫統的磁盤配額實踐範例468
14.1.3實踐磁盤配額流程-1:文件繫統的支持與查看469
14.1.4實踐磁盤配額流程-2:查看磁盤配額報告數據469
14.1.5實踐磁盤配額流程-3:限制值設置方式470
14.1.6實踐磁盤配額流程-4:project的限制(針對目錄限制)
(Optional)471
14.1.7xfs磁盤配額的管理與額外命令對照表473
14.1.8不修改既有繫統的磁盤配額實例475
14.2軟件磁盤陣列(Software RAID)475
14.2.1什麼是RAID475
14.2.2硬件RAID,軟件RAID479
14.2.3軟件磁盤陣列的設置479
14.2.4模擬RAID錯誤的恢復模式482
14.2.5開機自動啟動RAID並自動掛載483
14.2.6關閉軟件RAID(重要)484
14.3邏輯卷管理器(LogicalVolume Manager)484
14.3.1什麼是LVM:PV、PE、VG、LV的意義485
14.3.2LVM實踐流程486
14.3.3放大LV容量490
14.3.4使用LVM thin Volume讓LVM動態自動調整磁盤使用率492
14.3.5LVM的LV磁盤快照493
14.3.6LVM相關命令集合與LVM的關閉496
14.4重點回顧497
14.5本章習題498
14.6參考資料與擴展閱讀499
第 15章計劃任務(crontab)500
15.1什麼是計劃任務501
15.1.1Linux計劃任務的種類:at、cron501
15.1.2CentOS Linux繫統上常見的例行性工作501
15.2僅執行一次的計劃任務502
15.2.1atd的啟動與at運行的方式502
15.2.2實際運行單一計劃任務503
15.3循環執行的計劃任務506
15.3.1用戶的設置506
15.3.2繫統的配置文件:/etc/crontab、/etc/cron.d/*508
15.3.3一些注意事項510
15.4可喚醒停機期間的工作任務511
15.4.1什麼是anacron512
15.4.2anacron與/etc/anacrontab512
15.5重點回顧514
15.6本章習題514
第 16章進程管理與SELinux初探515
16.1什麼是進程(process)516
16.1.1進程與程序(process& program)516
16.1.2Linux的多人多任務環境518
16.2任務管理(job control)520
16.2.1什麼是任務管理520
16.2.2job control的管理520
16.2.3脫機管理問題523
16.3進程管理524
16.3.1查看進程524
16.3.2進程的管理530
16.3.3關於進程的執行順序531
16.3.4查看繫統資源信息533
16.4特殊文件與進程538
16.4.1具有SUID/SGID權限的命令執行狀態538
16.4.2/proc/* 代表的意義539
16.4.3查詢已使用文件或已執行進程使用的文件540
16.5SELinux初探543
16.5.1什麼是SELinux543
16.5.2SELinux的運行模式544
16.5.3SELinux 3種模式的啟動、關閉與查看548
16.5.4SELinux策略內的規則管理550
16.5.5SELinux安全上下文的修改552
16.5.6一個網絡服務案例及日志文件協助554
16.6重點回顧560
16.7本章習題561
16.8參考資料與擴展閱讀561
第五部分Linux繫統管理員
第 17章認識繫統服務(daemon)563
17.1什麼是daemon與服務(service)564
17.1.1早期System V的init管理操作中daemon的主要分類
(Optional)564
17.1.2systemd使用的unit分類566
17.2通過systemctl管理服務568
17.2.1通過systemctl管理單一服務(serviceunit)的啟動/開機啟動與查看狀態568
17.2.2通過systemctl查看繫統上所有的服務571
17.2.3通過systemctl管理不同的操作環境(targetunit)572
17.2.4通過systemctl分析各服務之間的依賴性574
17.2.5與systemd的daemon運行過程相關的目錄簡介575
17.2.6關閉網絡服務577
17.3systemctl針對service類型的配置文件578
17.3.1systemctl配置文件相關目錄簡介578
17.3.2systemctl配置文件的設置項目簡介578
17.3.3兩個vsftpd運行的實例581
17.3.4多重的重復設置方式:以getty為例582
17.3.5自己的服務自己做585
17.4systemctl針對timer的配置文件585
17.5CentOS 7.x默認啟動的服務概要588
17.6重點回顧591
17.7本章習題591
17.8參考資料與擴展閱讀593
第 18章認識與分析日志文件594
18.1什麼是日志文件595
18.1.1CentOS 7日志文件簡易說明595
18.1.2日志文件內容的一般格式597
18.2rsyslog.service:記錄日志文件的服務598
18.2.1rsyslog.service的配置文件:/etc/rsyslog.conf598
18.2.2日志文件的安全性設置603
18.2.3日志文件服務器的設置604
18.3日志文件的輪循(logrotate)605
18.3.1logrotate的配置文件605
18.3.2實際測試logrotate的操作608
18.3.3自定義日志文件的輪循功能609
18.4systemd-journald.service簡介610
18.4.1使用journalctl查看登錄信息611
18.4.2logger命令的應用612
18.4.3保存journal的方式612
18.5分析日志文件613
18.5.1CentOS默認提供的logwatch613
18.5.2鳥哥自己寫的日志文件分析工具615
18.6重點回顧616
18.7本章習題617
18.8參考資料與擴展閱讀617
第 19章啟動流程、模塊管理與Loader618
19.1Linux的啟動流程分析619
19.1.1啟動流程一覽619
19.1.2BIOS、boot loader與kernel加載619
19.1.3第 一個程序systemd及使用default.target進入啟動程序分析625
19.1.4systemd執行sysinit.target初始化繫統、basic.target準備繫統627
19.1.5systemd啟動multi-user.target下的服務628
19.1.6systemd啟動graphical.target下面的服務629
19.1.7啟動過程會用到的主要配置文件629
19.2內核與內核模塊630
19.2.1內核模塊與依賴性631
19.2.2查看內核模塊632
19.2.3內核模塊的加載與刪除632
19.2.4內核模塊的額外參數設置:/etc/modprobe.d/*conf633
19.3Boot Loader:Grub2634
19.3.1boot loader的兩個stage634
19.3.2grub2的配置文件/boot/grub2/grub.cfg初探635
19.3.3grub2配置文件維護/etc/default/grub與/etc/grub.d638
19.3.4initramfs的重要性與建立新initramfs文件642
19.3.5測試與安裝grub2643
19.3.6啟動前的額外功能修改645
19.3.7關於啟動畫面與終端畫面的圖形顯示方式647
19.3.8為個別選項設置密碼647
19.4啟動過程的問題解決650
19.4.1忘記root密碼的解決之道650
19.4.2直接啟動就以root執行bash的方法652
19.4.3因文件繫統錯誤而無法啟動652
19.5重點回顧653
19.6本章習題653
19.7參考資料與擴展閱讀654
第 20章基礎繫統設置與備份策略655
20.1繫統基本設置656
20.1.1網絡設置(手動設置與DHCP自動獲取)656
20.1.2日期與時間設置659
20.1.3語繫設置660
20.1.4防火牆簡易設置661
20.2服務器硬件數據的收集663
20.2.1使用dmidecode查看硬件設備663
20.2.2硬件資源的收集與分析664
20.2.3了解磁盤的健康狀態667
20.3備份要點668
20.3.1備份數據的考慮668
20.3.2哪些Linux數據具有備份的意義669
20.3.3備份用存儲媒介的選擇670
20.4備份的種類、頻率與工具的選擇671
20.4.1完整備份之累積備份(Incrementalbackup)672
20.4.2完整備份之差異備份(Differentialbackup)673
20.4.3關鍵數據備份674
20.5鳥哥的備份策略675
20.5.1每周繫統備份的腳本675
20.5.2每日備份數據的腳本676
20.5.3遠程備份的腳本677
20.6災難恢復的考慮678
20.7重點回顧678
20.8本章習題679
20.9參考資料與擴展閱讀679
第 21章軟件安裝:源代碼與Tarball680
21.1開放源碼的軟件安裝與升級簡介681
21.1.1什麼是開放源碼、編譯器與可執行文件681
21.1.2什麼是函數庫683
21.1.3什麼是make與configure683
21.1.4什麼是Tarball的軟件684
21.1.5如何安裝與升級軟件685
21.2使用傳統程序語言進行編譯的簡單範例685
21.2.1單一程序:打印HelloWorld686
21.2.2主、子程序鏈接:子程序的編譯687
21.2.3調用外部函數庫:加入鏈接的函數庫688
21.2.4gcc的簡易用法(編譯、參數與連接)689
21.3用make進行宏編譯689
21.3.1為什麼要用make689
21.3.2makefile的基本語法與變量690
21.4Tarball的管理與建議692
21.4.1使用源代碼管理軟件所需要的基礎軟件693
21.4.2Tarball安裝的基本步驟693
21.4.3一般Tarball軟件安裝的建議事項(如何刪除?升級?)695
21.4.4一個簡單的範例、利用ntp來示範696
21.4.5利用patch更新源代碼697
21.5函數庫管理699
21.5.1動態與靜態函數庫700
21.5.2ldconfig與/etc/ld.so.conf701
21.5.3程序的動態函數庫解析:ldd701
21.6校驗軟件正確性702
21.7重點回顧703
21.8本章習題704
21.9參考資料與擴展閱讀705
第 22章軟件安裝RPM、SRPM與YUM706
22.1軟件管理器簡介707
22.1.1Linux界的兩大主流:RPM與DPKG707
22.1.2什麼是RPM與SRPM708
22.1.3什麼是i386、i586、i686、noarch、x86_64709
22.1.4RPM的優點710
22.1.5RPM屬性依賴的解決方式:YUM在線升級711
22.2RPM軟件管理程序:rpm712
22.2.1RPM默認安裝的路徑712
22.2.2RPM安裝(install)712
22.2.3RPM升級與更新(upgrade/freshen)714
22.2.4RPM查詢(query)714
22.2.5RPM驗證與數字簽名(Verify/signature)716
22.2.6RPM反安裝與重建數據庫(erase/rebuilddb)719
22.3YUM在線升級功能719
22.3.1利用YUM進行查詢、安裝、升級與刪除功能720
22.3.2YUM的配置文件723
22.3.3YUM的軟件群組功能725
22.3.4EPEL/ELRepo外掛軟件以及自定義配置文件726
22.3.5全繫統自動升級728
22.3.6管理的抉擇:RPM還是Tarball728
22.3.7基礎服務管理:以Apache為例729
22.4SRPM的使用:rpmbuild(Optional)730
22.4.1利用默認值安裝SRPM文件(--rebuid/--recompile)730
22.4.2SRPM使用的路徑與需要的軟件731
22.4.3配置文件的主要內容(*.spec)732
22.4.4SRPM的編譯命令(-ba/-bb)735
22.4.5一個打包自己軟件的範例736
22.5重點回顧737
22.6本章習題738
22.7參考資料與擴展閱讀738
第 23章X Window設置介紹739
23.1什麼是X Window System740
23.1.1X Window System的發展簡史740
23.1.2主要組件:X Server/XClient/WindowManager/DisplayManager741
23.1.3X Window System的啟動流程743
23.1.4X啟動流程測試746
23.1.5我是否需要啟用X WindowSystem747
23.2X Server配置文件解析與設置748
23.2.1解析xorg.conf設置748
23.2.2字體管理751
23.2.3顯示器參數微調753
23.3顯卡驅動程序安裝範例754
23.3.1NVIDIA754
23.3.2AMD(ATI)756
23.3.3Intel756
23.4重點回顧757
23.5本章習題758
23.6參考資料與擴展閱讀758
第 24章Linux內核編譯與管理759
24.1編譯前的任務:認識內核與獲取內核源代碼760
24.1.1什麼是內核(Kernel)760
24.1.2更新內核的目的761
24.1.3內核的版本762
24.1.4內核源代碼的獲取方式763
24.1.5內核源代碼的解壓縮、安裝、查看764
24.2內核編譯前的預處理與內核功能選擇765
24.2.1硬件環境查看與內核功能要求765
24.2.2保持干淨源代碼:makemrproper765
24.2.3開始選擇內核功能:makeXXconfig765
24.2.4內核功能詳細選項選擇767
24.3內核的編譯與安裝772
24.3.1編譯內核與內核模塊772
24.3.2實際安裝模塊773
24.3.3開始安裝新內核與多重內核選項(grub)773
24.4額外(單一)內核模塊編譯774
24.4.1編譯前注意事項774
24.4.2單一模塊編譯775
24.4.3內核模塊管理777
24.5以內核版本編譯CentOS 7.x的內核777
24.6重點回顧778
24.7本章習題778
24.8參考資料與擴展閱讀778
《Linux命令行與shell腳本編程大全(第4版)》
第 一部分 Linux命令行
第 1 章 初識Linux shell 2
1.1 Linux初探 2
1.1.1 深入探究Linux內核 3
1.1.2 GNU實用工具 7
1.1.3 Linux桌面環境 9
1.2 Linux發行版 13
1.2.1 核心Linux發行版 14
1.2.2 特定用途的Linux發行版 14
1.3 小結 15
第 2 章 走進shell 16
2.1 進入命令行 16
2.1.1 控制臺終端 16
2.1.2 圖形化終端 17
2.2 通過Linux控制臺終端訪問CLI 18
2.3 通過圖形化終端仿真器訪問CLI 20
2.4 使用GNOME Terminal終端仿真器 21
2.4.1 訪問GNOME Terminal 21
2.4.2 菜單欄 25
2.5 使用Konsole終端仿真器 27
2.5.1 訪問Konsole終端仿真器 27
2.5.2 菜單欄 29
2.6 使用xterm終端仿真器 32
2.6.1 訪問xterm 33
2.6.2 命令行選項 33
2.7 小結 34
第 3 章 bash shell基礎命令 36
3.1 啟動shell 36
3.2 使用shell提示符 37
3.3 與bash手冊交互 37
3.4 瀏覽文件繫統 41
3.4.1 Linux文件繫統 41
3.4.2 遍歷目錄 44
3.5 列出文件和目錄 46
3.5.1 顯示基本列表 46
3.5.2 顯示長列表 48
3.5.3 過濾輸出列表 49
3.6 處理文件 51
3.6.1 創建文件 51
3.6.2 復制文件 51
3.6.3 使用命令行補全 53
3.6.4 鏈接文件 54
3.6.5 文件重命名 55
3.6.6 刪除文件 57
3.7 管理目錄 57
3.7.1 創建目錄 57
3.7.2 刪除目錄 58
3.8 查看文件內容 60
3.8.1 查看文件類型 60
3.8.2 查看整個文件 61
3.8.3 查看部分文件 63
3.9 小結 64
第 4 章 更多的bash shell命令 66
4.1 監測程序 66
4.1.1 探查進程 66
4.1.2 實時監測進程 72
4.1.3 結束進程 74
4.2 監測磁盤空間 75
4.2.1 掛載存儲設備 75
4.2.2 使用df命令 78
4.2.3 使用du命令 79
4.3 處理數據文件 80
4.3.1 數據排序 80
4.3.2 數據搜索 83
4.3.3 數據壓縮 85
4.3.4 數據歸檔 86
4.4 小結 87
第 5 章 理解shell 88
5.1 shell的類型 88
5.2 shell的父子關繫 91
5.2.1 查看進程列表 95
5.2.2 別出心裁的子shell用法 96
5.3 理解外部命令和內建命令 99
5.3.1 外部命令 100
5.3.2 內建命令 101
5.4 小結 106
第 6 章 Linux環境變量 107
6.1 什麼是環境變量 107
6.1.1 全局環境變量 108
6.1.2 局部環境變量 109
6.2 設置用戶自定義變量 110
6.2.1 設置局部用戶自定義變量 110
6.2.2 設置全局環境變量 111
6.3 刪除環境變量 113
6.4 默認的shell環境變量 113
6.5 設置PATH環境變量 117
6.6 定位繫統環境變量 118
6.6.1 登錄shell 119
6.6.2 交互式shell進程 123
6.6.3 非交互式shell 124
6.6.4 環境變量持久化 124
6.7 數組變量 125
6.8 小結 126
第 7 章 理解Linux文件權限 127
7.1 Linux的安全性 127
7.1.1 /etc/passwd文件 127
7.1.2 /etc/shadow文件 129
7.1.3 添加新用戶 129
7.1.4 刪除用戶 132
7.1.5 修改用戶 132
7.2 使用Linux組 135
7.2.1 /etc/group文件 135
7.2.2 創建新組 136
7.2.3 修改組 137
7.3 理解文件權限 137
7.3.1 使用文件權限符號 137
7.3.2 默認文件權限 139
7.4 更改安全設置 140
7.4.1 修改權限 140
7.4.2 改變所屬關繫 141
7.5 共享文件 142
7.6 訪問控制列表 144
7.7 小結 145
第 8 章 管理文件繫統 147
8.1 探索Linux文件繫統 147
8.1.1 Linux文件繫統的演進 147
8.1.2 日志文件繫統 148
8.1.3 卷管理文件繫統 150
8.2 使用文件繫統 151
8.2.1 創建分區 151
8.2.2 創建文件繫統 155
8.2.3 文件繫統的檢查與修復 157
8.3 邏輯卷管理 158
8.3.1 LVM布局 159
8.3.2 Linux中的LVM 159
8.3.3 使用Linux LVM 162
8.4 小結 163
第 9 章 安裝軟件 164
9.1 軟件包管理基礎 164
9.2 基於Debian的繫統 165
9.2.1 使用apt管理軟件包 165
9.2.2 使用apt安裝軟件包 167
9.2.3 使用apt升級軟件 169
9.2.4 使用apt卸載軟件包 170
9.2.5 apt倉庫 171
9.3 基於Red Hat的繫統 173
9.3.1 列出已安裝的軟件包 173
9.3.2 使用dnf安裝軟件 174
9.3.3 使用dnf升級軟件 175
9.3.4 使用dnf卸載軟件 176
9.3.5 處理損壞的依賴關繫 176
9.3.6 RPM倉庫 176
9.4 使用容器管理軟件 177
9.4.1 使用snap容器 177
9.4.2 使用flatpak容器 179
9.5 從源代碼安裝 180
9.6 小結 183
第 10 章 文本編輯器 185
10.1 vim編輯器 185
10.1.1 檢查vim軟件包 185
10.1.2 vim基礎 187
10.1.3 編輯數據 189
10.1.4 復制和粘貼 189
10.1.5 查找和替換 190
10.2 nano編輯器 191
10.3 Emacs編輯器 193
10.3.1 檢查Emacs軟件包 193
10.3.2 在控制臺中使用Emacs 194
10.3.3 在GUI中使用Emacs 199
10.4 KDE繫編輯器 200
10.4.1 KWrite編輯器 200
10.4.2 Kate編輯器 204
10.5 GNOME編輯器 208
10.5.1 啟動gedit 208
10.5.2 gedit的基本功能 209
10.5.3 管理插件 211
10.6 小結 213
第二部分 shell腳本編程基礎
第 11 章 構建基礎腳本 216
11.1 使用多個命令 216
11.2 創建shell腳本文件 217
11.3 顯示消息 218
11.4 使用變量 220
11.4.1 環境變量 220
11.4.2 用戶自定義變量 221
11.4.3 命令替換 222
11.5 重定向輸入和輸出 224
11.5.1 輸出重定向 224
11.5.2 輸入重定向 225
11.6 管道 226
11.7 執行數學運算 228
11.7.1 expr命令 228
11.7.2 使用方括號 230
11.7.3 浮點數解決方案 231
11.8 退出腳本 234
11.8.1 查看退出狀態碼 234
11.8.2 exit命令 235
11.9 實戰演練 237
11.10 小結 238
第 12 章 結構化命令 239
12.1 使用if-then語句 239
12.2 if-then-else語句 242
12.3 嵌套if語句 243
12.4 test命令 246
12.4.1 數值比較 248
12.4.2 字符串比較 249
12.4.3 文件比較 253
12.5 復合條件測試 262
12.6 if-then的高級特性 263
12.6.1 使用單括號 264
12.6.2 使用雙括號 265
12.6.3 使用雙方括號 266
12.7 case命令 267
12.8 實戰演練 268
12.9 小結 273
第 13 章 更多的結構化命令 274
13.1 for命令 274
13.1.1 讀取列表中的值 275
13.1.2 讀取列表中的復雜值 276
13.1.3 從變量中讀取值列表 277
13.1.4 從命令中讀取值列表 278
13.1.5 更改字段分隔符 279
13.1.6 使用通配符讀取目錄 280
13.2 C語言風格的for命令 282
13.2.1 C語言中的for命令 282
13.2.2 使用多個變量 283
13.3 while命令 284
13.3.1 while的基本格式 284
13.3.2 使用多個測試命令 285
13.4 until命令 286
13.5 嵌套循環 287
13.6 循環處理文件數據 290
13.7 循環控制 291
13.7.1 break命令 291
13.7.2 continue命令 294
13.8 處理循環的輸出 296
13.9 實戰演練 297
13.9.1 查找可執行文件 297
13.9.2 創建多個用戶賬戶 299
13.10 小結 300
第 14 章 處理用戶輸入 301
14.1 傳遞參數 301
14.1.1 讀取參數 301
14.1.2 讀取腳本名 303
14.1.3 參數測試 305
14.2 特殊參數變量 305
14.2.1 參數統計 305
14.2.2 獲取所有的數據 307
14.3 移動參數 309
14.4 處理選項 310
14.4.1 查找選項 311
14.4.2 使用getopt命令 314
14.4.3 使用getopts命令 317
14.5 選項標準化 319
14.6 獲取用戶輸入 320
14.6.1 基本的讀取 320
14.6.2 超時 322
14.6.3 無顯示讀取 323
14.6.4 從文件中讀取 323
14.7 實戰演練 324
14.8 小結 328
第 15 章 呈現數據 329
15.1 理解輸入和輸出 329
15.1.1 標準文件描述符 329
15.1.2 重定向錯誤 332
15.2 在腳本中重定向輸出 333
15.2.1 臨時重定向 333
15.2.2 永久重定向 334
15.3 在腳本中重定向輸入 335
15.4 創建自己的重定向 336
15.4.1 創建輸出文件描述符 336
15.4.2 重定向文件描述符 337
15.4.3 創建輸入文件描述符 337
15.4.4 創建讀/寫文件描述符 338
15.4.5 關閉文件描述符 339
15.5 列出打開的文件描述符 340
15.6 抑制命令輸出 341
15.7 使用臨時文件 342
15.7.1 創建本地臨時文件 342
15.7.2 在/tmp目錄中創建臨時文件 344
15.7.3 創建臨時目錄 344
15.8 記錄消息 345
15.9 實戰演練 346
15.10 小結 348
......