最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

第三部分 第1章 linux 與 shell 解析

2023-09-13 21:01 作者:納西妲愛編程  | 我要投稿

1.1 linux 結(jié)構(gòu)介紹

在認(rèn)識(shí)一個(gè)新的東西時(shí),先了解其結(jié)構(gòu)對(duì)于我們了解它還是很有 幫助的。Linux 文件系統(tǒng)是呈樹形結(jié)構(gòu),/ 為 Linux 的根目錄,其下主要目錄為 :

注意:以上幾個(gè)加粗的目錄需要了解。

1.2 linux 常用命令介紹

1.2.1 目錄命令

(1)ls - 顯示指定工作目錄下之內(nèi)容 語法: ls [選項(xiàng)] 常用選項(xiàng): ?? -a 查看所有包括隱藏目錄 ?? -l 長(zhǎng)顯示,顯示目錄或者目錄詳細(xì)信息包括大小 修改時(shí)間 ?? -d 顯示目錄 ?? -h 更加人性化顯示 比如字節(jié)轉(zhuǎn)換為MB,GB 不用自己算 ?? -i 查詢目錄inode號(hào)(inode存儲(chǔ)目錄的詳細(xì)信息) 信息編號(hào),類似于人的身份證號(hào)碼 (2)mkdir - 創(chuàng)建目錄 語法: mkdir [-p] dirName # -p 可選,確保目錄名稱存在,不存在的就建一個(gè) ?? mkdir runoob # 在工作目錄下,建立一個(gè)名為 runoob 的子目錄 (3)pwd - 顯示當(dāng)前所在路徑 語法: ? pwd [選項(xiàng)] (4)cd - 切換當(dāng)前工作目錄 語法: cd [目標(biāo)目錄] 例子: cd ../ # 代表上一級(jí) cd / # 代表根目錄 (5)cp - 復(fù)制目錄 語法: cp [選項(xiàng)] 源目錄 目標(biāo)目錄 # 可以復(fù)制多個(gè),多個(gè)之間用 空格 隔開 常用選項(xiàng): -r 若給出的源文件是一個(gè)目錄文件,此時(shí)將復(fù)制該目錄下所有的子目錄和文件 ?? -p 除復(fù)制目錄的內(nèi)容外,還把修改時(shí)間和訪問權(quán)限也復(fù)制到新目錄中 ? ? -rp 復(fù)制目錄并且保留原目錄屬性 (6)mv - 剪切 / 重命名目錄 語法: mv [選項(xiàng)] 源目錄 目標(biāo)目錄 常用選項(xiàng): -b 當(dāng)目標(biāo)目錄或目錄存在時(shí),在執(zhí)行覆蓋前,會(huì)為其創(chuàng)建一個(gè)備份 -i 源目錄和目標(biāo)目錄同名提示,輸入 y 表示直接覆蓋,輸入 n 表示取消該操作 -f 不詢問強(qiáng)制覆蓋 注意:如果需要實(shí)現(xiàn)改名,則在確定的目錄后面加入修改后的名稱。

(7)rm - 刪除 語法: rm [選項(xiàng)] 目錄名 # 可以刪除多個(gè) 常用選項(xiàng): ?? -f 強(qiáng)制刪除,不詢問 ?? -r 將目錄及以下之檔案亦逐一刪除 ?? -rf 一起使用則會(huì)將目錄及以下文檔都刪除 1.2.2 文件命令

1. 基本命令

(1)touch - 創(chuàng)建文件 語法: touch 文件名 (2)cat - 顯示文件內(nèi)容 語法: cat [選項(xiàng)] 文件名 常用選項(xiàng): -n 或 --number 由 1 開始對(duì)所有輸出的行數(shù)編號(hào) -A, --show-all 顯示所有隱藏字符 注意:tac 可以倒序查看,但不支持以上命令。

(3)more - 分頁顯示 語法: more 文件名 按 空格鍵 下一頁顯示; ?按 b 鍵 上一頁顯示; ?按 h 鍵 使用中的說明文件; ?另搜尋字串的功能(與 vi 相似)。 文件的復(fù)制,移動(dòng),刪除 同 目錄操作。

2. 搜索命令

(1)find - 查找文件 語法: find [范圍] [-選項(xiàng)] 關(guān)鍵字 例: find *.html 范圍不寫默認(rèn)為當(dāng)前目錄。如果不確定的可以使用 * 代替。 常用選項(xiàng): -name 文件名稱符合 name 的文件 [iname 不區(qū)分大小寫搜索] 例: find /etc/ -name passwd 或者 find /etc/ -name *.conf 。 -size 根據(jù)文件大小查找 -a 兩個(gè)條件同時(shí)滿足 -o 兩個(gè)條件滿足任意一個(gè)即可 例: find /etc -size +163840 -a -size -204800 查找大于 80m 小于 100m 的文件。 (2)locate - 文件資料庫查找 語法: locate 文件名 注意:不是默認(rèn)的,無法直接使用,需要通過

yum install mlocate

安裝后才能使用。

(3)grep - 在文件內(nèi)查詢字符串或者關(guān)鍵字 語法: grep [選項(xiàng)] [指定字符串] [文件] 常用選項(xiàng): -i 不區(qū)分大小寫 -v 排除指定字符串 -d 當(dāng)指定要查找的是目錄而非文件時(shí),必須使用這項(xiàng)參數(shù),否則grep指令將回報(bào)信息并停止動(dòng)作 例: grep name *.html 在當(dāng)前目錄中,查找后綴為 html 文件中包含 name 字符串的文件并打印。

3. 文件編輯

所有的 Unix 系統(tǒng)都會(huì)內(nèi)建 vi 文書編輯器,vim 不一定會(huì)存在。vim 是從 vi 發(fā)展出來的一個(gè)文本編輯器,相當(dāng)于是 vi 的升級(jí)版。其區(qū)別主要體現(xiàn)在 : 1.對(duì) vi 的完全兼容 根據(jù)設(shè)定可以和原始 vi 完全兼容。 2.多次撤銷 例如 vi 里按 u 只能撤消上次命令,在 vim 里可以無限制的撤消。 3.遠(yuǎn)程文件編輯 vim 可以運(yùn)行于 x window、 mac os、 windows。 4.語法加亮 vim 可以用不同的顏色來加亮你的代碼。 ...... (1)vi/vim 命令 # 操作類似,以下以 vi 演示,如果需要使用 vim 需要先安裝 語法: vi 文件 基本上 vi/vim 共分為三種模式:命令模式,輸入模式 和 底線命令模式。 ?輸入模式: 用戶啟動(dòng) vi/vim,便進(jìn)入了命令模式。在這個(gè)模式下并非直接可以輸入字符,而是執(zhí)行了一個(gè)命令,常用命令 為: i 在當(dāng)前字符的左邊插入 a 在當(dāng)前字符的右邊插入 o 在當(dāng)前行下面插入一個(gè)新行 dd 刪除整行 ndd n 為數(shù)字,刪除光標(biāo)所在向下 n 行。 yy 復(fù)制光標(biāo)所在行 nyy n 為數(shù)字,復(fù)制光標(biāo)所在向下 n 行 P 小 p 將復(fù)制的數(shù)據(jù)在光標(biāo)下一行粘貼,大 P 將復(fù)制的數(shù)據(jù)在光標(biāo)上一行粘貼 u 撤消前一個(gè)操作 ? ?輸入模式: 在命令模式下通過命令可以插入字符時(shí)則可以進(jìn)入到輸入模式,此時(shí)在終端最下面顯示的是 --INSERT-- 。在該模式下就可以對(duì)文件的內(nèi)容進(jìn)行編輯。 ? ?底線命令模式: ? 編輯完成后按 ESC 切換到底線模式。進(jìn)入到底線模式后可以使用下面的命令來執(zhí)行對(duì)應(yīng)操作: :w 保存數(shù)據(jù)[強(qiáng)制操作使用 :w!] :wq 保存退出 :q 不保存退出[強(qiáng)制操作使用 :q!] :w 文件名 相當(dāng)于另存為 :set nu顯示行號(hào) :set nonu 取消行號(hào) 1.2.3 「用戶」和 「組」 管理 Linux 系統(tǒng)是一個(gè)多用戶多任務(wù)的分時(shí)操作系統(tǒng),任何一個(gè)要使用系統(tǒng)資源的用戶,都必須首先向系統(tǒng)管理員申請(qǐng)一個(gè)賬號(hào),然后以這個(gè)賬號(hào)的身份進(jìn)入系統(tǒng)。對(duì)于用戶賬號(hào)主要有添加、修改 與 刪除 等操作。

1. 用戶管理

(1)useradd - 添加用戶 語法: useradd [選項(xiàng)] 用戶名 常用選項(xiàng): -d 目錄 指定用戶主目錄 -m 聯(lián)合 -d 當(dāng)不存在時(shí)可以創(chuàng)建主目錄 -g 指定用戶所屬的用戶組 -s 指定用戶的登錄Shell ?例:useradd –d /home/sam -m sam (2)passwd - 添加密碼 語法: passwd [選項(xiàng)] 用戶名 常用選項(xiàng): -d 刪除用戶密碼 (3) 設(shè)置密碼 # passwd user 更改用戶 user 的密碼 。 新的 密碼: # 這里不會(huì)顯示 重新輸入新的 密碼: # 這里不會(huì)顯示 passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。 # 注意 設(shè)置密碼不能過于簡(jiǎn)單 在創(chuàng)建了用戶后,重新登錄時(shí)通過新創(chuàng)建的用戶名稱和密碼登錄即可。 (4)usermod - 修改 語法: usermod [選項(xiàng)] 用戶名 選項(xiàng)可以參考添加,修改用戶賬號(hào)就是根據(jù)實(shí)際情況更改用戶的有關(guān)屬性,主目錄、用戶組、登錄Shell等。 (5)userdel - 刪除賬號(hào) 語法: userdel 選項(xiàng) 用戶名 常用選項(xiàng): -r 把用戶的主目錄一起刪除

2. 組管理

每個(gè)用戶都有一個(gè)用戶組,而不同的用戶可以有相同的用戶組也可以有不同的用戶組 :

對(duì)于組的操作主要也是添加、修改與刪除等操作。 (1)groupadd - 添加 語法: groupadd [選項(xiàng)] 用戶組 ? 常用選項(xiàng): -g GID 指定新用戶組的組標(biāo)識(shí)號(hào)(GID)。 例:groupadd -g 101 group1 -o 一般與-g選項(xiàng)同時(shí)使用,表示新用戶組的GID可以與系統(tǒng)已有用戶組的GID相同 (2)groupmod - 修改 語法: groupmod [選項(xiàng)] 用戶組 ? 常用選項(xiàng): -n 將用戶組的名字改為新名字 -g 與 -o 與上相同 例:groupmod -og 100 -n user group1 (3)groupdel - 刪除 語法: groupdel 用戶組 如果一個(gè)用戶有多個(gè)組,可以通過 newgrp 組名來切換。

1.2.4 權(quán)限設(shè)置

1. 常用的權(quán)限操作

權(quán)限設(shè)置 即控制用戶對(duì)文件的權(quán)限的管理。

權(quán)限

主要分為 讀=》r、寫=》w 和 執(zhí)行=》x 權(quán)限。而 Linux 的文件

調(diào)用權(quán)限

分為三級(jí) : 文件所有者(Owner=》o)、用戶組(Group=》g)、其它用戶(Other Users=》o)【如果要給所有用戶添加可以使用 a 即 all】。 在 Linux 中想要修改權(quán)限可以使用 chmod 命令,而修改文件權(quán)限可以使用兩種方式來實(shí)現(xiàn),分別是: 符號(hào)模式 和 八進(jìn)制數(shù)字模式 。 (1)符號(hào)模式 - 即 通過符號(hào)修改用戶的權(quán)限 例如:添加權(quán)限使用 + 。 語法: chmod 修改對(duì)象 操作 權(quán)限 文件/目錄 修改對(duì)象: u(user)文件所有者 g(group) 文件所有者所在組 o(others) 所有其他用戶 a(all)所用用戶, 相當(dāng)于 ugo ? 操作: + 為指定的用戶類型增加權(quán)限 - 為指定用戶類型去除權(quán)限 = 設(shè)置指定用戶權(quán)限的設(shè)置,即將用戶類型的所有權(quán)限重新設(shè)置 ?例:chmod g+w hello # 用戶組添加寫權(quán)限 (2)八進(jìn)制模式 - 即使用八進(jìn)制數(shù)來指定權(quán)限。 語法: chmod 八進(jìn)制數(shù) 文件/目錄 八進(jìn)制數(shù): 基礎(chǔ): 0 無 1 執(zhí)行 2 寫 4 讀 組合: 3 寫 + 執(zhí)行 5 讀 + 執(zhí)行 6 讀 + 寫 7 讀 + 寫 + 執(zhí)行 例: chmod 777 hello # 給所有用戶添加 讀寫執(zhí)行 權(quán)限 chmod 755 hello # 給所有者 讀寫執(zhí)行 權(quán)限,所屬組和其他 讀 與 執(zhí)行 權(quán)限 注意:只有文件 所有者 和 超級(jí)用戶 可以修改文件或目錄的權(quán)限。如果需要對(duì)目錄遞歸操作則可以加上 -R 參數(shù)來實(shí)現(xiàn)。

(3)chown - 改變所有者 語法: chown 用戶 文件/目錄 例:chown user hello # 改變 hello 的所有者為 user (4)chgrp - 改變所屬組 語法: chgrp 組名 文件/目錄 ?例:chown group1 hello # 改變 hello 的所屬組為 group1 1.2.5 進(jìn)程管理

1. 常用進(jìn)程操作

(1)ps - 進(jìn)程查看 進(jìn)程是正在執(zhí)行的一個(gè)程序或命令,每一個(gè)進(jìn)程都是一個(gè)運(yùn)行的實(shí)體,都有自己的地址空間,并占用一定的系統(tǒng)資源。在 Linux 中查看進(jìn)程可以使用 ps 命令。 語法: ps [選項(xiàng)] 常用選項(xiàng): -A 列出所有的進(jìn)程 【-e 與之相同】 ??-w 顯示加寬可以顯示較多的資訊 ??-f顯示UID,PPIP,C與STIME欄位 ??-au 顯示較詳細(xì)的資訊 ??-aux 顯示所有包含其他使用者的行程 (2)top - 實(shí)時(shí)顯示進(jìn)程動(dòng)態(tài) 語法: top [選項(xiàng)] 常用選項(xiàng): -c 切換顯示模式,只顯示執(zhí)行檔的名稱/顯示完整的路徑與名稱 -d 改變顯示的更新速度【秒】 ? 在使用了 top 命令進(jìn)入到交互模式之后,可以使用以下命令來修改查看: P 以CPU使用率排序,默認(rèn)就是此項(xiàng) M 以內(nèi)存的使用率排序 N 以PID排序 q 退出top (3)kill - 殺死進(jìn)程 語法: kill [選項(xiàng)] [進(jìn)程號(hào)] 常用選項(xiàng): -l 查看可用的進(jìn)程信號(hào) 其中: 1 重新加載進(jìn)程 9 殺死一個(gè)進(jìn)程 15 正常停止一個(gè)進(jìn)程 例: kill -9 666666 # 徹底殺死 id 為 666666 的進(jìn)程 注意:與之類似的還有 killall 和 pkill 命令:killall 與 pkill 會(huì)殺死指定名字的所有進(jìn)程。

2. 進(jìn)程管理

如果你發(fā)現(xiàn)運(yùn)行的一個(gè)程序需要很長(zhǎng)的時(shí)間,但是還需要干其他的事情,你可以把當(dāng)前的程序放到后臺(tái)執(zhí)行。命令放入后臺(tái)可以使用以下幾種方式: command & :后臺(tái)運(yùn)行,你關(guān)掉終端會(huì)停止運(yùn)行。

nohup command & :后臺(tái)運(yùn)行,你關(guān)掉終端也會(huì)繼續(xù)運(yùn)行。

Ctrl+Z 快捷鍵:命令執(zhí)行過程中使用,使命令在后臺(tái)暫停。

(1)& 例 - 查找文件并放入后臺(tái) : find / -name hello& [1] 92996 # 在 ‘find / -name hello’ 命令后面加上 & ,可以讓命令在后臺(tái)執(zhí)行。其中 ‘ [1] ’ 是工作號(hào),‘ 92996 ’ 是進(jìn)程號(hào)。 (2)ctrl+z 例 - 實(shí)時(shí)顯示進(jìn)程動(dòng)態(tài),暫停放入后臺(tái) : top # 回車執(zhí)行,會(huì)實(shí)時(shí)顯示 # 按 ctrl + z 顯示以下內(nèi)容 [1]+ 已停止 top # top命令被放入后臺(tái),其中 '[1]' 是工作號(hào), '+' 代表是最近放入后臺(tái)。 (3)jobs 例 - 通過 jobs 命令可以查看當(dāng)前運(yùn)行的任務(wù) : jobs # 結(jié)果...... [1]?完成?find / -name hello [2]- 已停止???top (4)fg 例 - 調(diào)度到前臺(tái) fg 2 # 結(jié)果,上面的任務(wù)會(huì)繼續(xù)執(zhí)行 (5)bg 例 - 繼續(xù)執(zhí)行 bg 3 # 結(jié)果,在后臺(tái)暫停的命令,變成繼續(xù)執(zhí)行 注意:在后臺(tái)運(yùn)行的任務(wù)無法使用標(biāo)準(zhǔn)輸入,也就是無法輸入任何指令,相關(guān)信息則依然會(huì)顯示。

使用

ctrl+c

則可以終止并退出前臺(tái)命令的執(zhí)行,回到 shell。

3. 守護(hù)進(jìn)程

守護(hù)進(jìn)程即 一直在后臺(tái)運(yùn)行的進(jìn)程

。在我們執(zhí)行一個(gè) shell 腳本時(shí),多數(shù)都存在一個(gè)父進(jìn)程 終端 shell,而一旦父進(jìn)程退出則會(huì)發(fā)送 SIGHUP 給所有子進(jìn)程,子進(jìn)程收到信號(hào)也會(huì)退出。如果我們要在退出 shell 的時(shí)候繼續(xù)運(yùn)行進(jìn)程,則需要使用 nohup 忽略 SIGHUP 信號(hào),或者 setsid 將父進(jìn)程設(shè)為 init 進(jìn)程(進(jìn)程號(hào)為 1 )。 (1)nohup 在系統(tǒng)后臺(tái)不掛斷地運(yùn)行命令,退出終端不會(huì)影響程序的運(yùn)行 語法: nohup 命令 [&] 例: nohup /root/runoob.sh & # 在后臺(tái)執(zhí)行 runoob.sh 腳本 # 出現(xiàn): nohup: 忽略輸入并把輸出追加到"nohup.out"??則表示成功 # 也可以使用以下方式實(shí)現(xiàn): 1.nohup /root/runoob.sh & 2.(/root/runoob.sh &) 1.2.6 定時(shí)任務(wù) (1)crontab - 定時(shí)任務(wù) 語法: crontab [選項(xiàng)] ? 常用選項(xiàng): -e 編輯該用戶的計(jì)時(shí)器設(shè)置 ??-l 列出該用戶的計(jì)時(shí)器設(shè)置 ??-r 刪除該用戶的計(jì)時(shí)器設(shè)置 (2)定時(shí)任務(wù)的編寫 語法: # 注意:這是一個(gè)格式而不是命令 * * * * * 任務(wù) ? 以上命令存在 5 個(gè) * ,從左到右分別代表 幾分、幾時(shí)、幾日、幾月、周幾【注意:最后面不是 年 而是 周幾】。 例: * * * * * echo hello >>/test/hello.log # 每分鐘向 /test/hello.log 文件中追加 hello ? # 注意:一個(gè) * 并不代表只有一個(gè)時(shí)間,例如每天的 0時(shí) 與 12時(shí) 執(zhí)行任務(wù): 0 0,12 * * * 任務(wù)? ? 總結(jié): 不同單位時(shí)間用 「空格」 區(qū)分; 相同單位時(shí)間用「,」(多個(gè)時(shí)間點(diǎn) - xx時(shí)間 和 xx時(shí)間 執(zhí)行) 或 「-」(時(shí)間范圍 - xx時(shí)間 到 xx時(shí)間 執(zhí)行) 或 「/」(頻率 - 每過多長(zhǎng)時(shí)間執(zhí)行)。 注意:當(dāng)定時(shí)任務(wù)過多時(shí),建議使用 shell 腳本。

1.2.7 管道

管道

是一種通信機(jī)制,通常用于進(jìn)程間的通信(也可通過 socket 進(jìn)行網(wǎng)絡(luò)通信),它表現(xiàn)出來的形式將前面每一個(gè)進(jìn)程的輸出(stdout)直接作為下一個(gè)進(jìn)程的輸入(stdin);即

前者的輸出是后者的輸入

。管道命令使用|作為界定符號(hào)。

語法: 命令|命令...... # 可以使用多個(gè) 例如: ps -ef|grep nginx # 找出進(jìn)程中 nginx 相關(guān)的 注意:管道只能用于 具有親緣關(guān)系 的進(jìn)程間通信,即 前后命令不能毫無關(guān)系。更多更好的使用方式。

1.2.8 軟件包管理

1. 壓縮與解壓

打包是指將一大堆文件或目錄變成一個(gè)總的文件,壓縮則是將一個(gè)大的文件通過一些壓縮算法變成一個(gè)小文件。文件壓縮后可以節(jié)約空間和方便網(wǎng)絡(luò)傳輸。 (1)tar - 打包備份 在 Linux 系統(tǒng)里,tar 是將多個(gè)文件打包在一起,并且可以實(shí)現(xiàn)解壓打包的文件的命令。是系統(tǒng)管理員最常用的命令之一,

tar 命令不但可以實(shí)現(xiàn)對(duì)多個(gè)文件進(jìn)行打包,還可以對(duì)多個(gè)文件打包后進(jìn)行壓縮。

語法: tar [選項(xiàng)] 后文件名 原文件/目錄 常用選項(xiàng): -c 打包 -v 顯示詳細(xì)信息 -f 指定文件名 -z 壓縮或解壓 -x 解包 例: tar -zcf test.tar.gz test # 打包并壓縮 test 目錄為 test.tar.gz。注意:后綴為 .tar.gz ; 當(dāng)打包壓縮完畢后,源文件還會(huì)存在 tar -zxf test.tar.gz # 解壓縮 test.tar.gz 文件,同樣 源文件還在 (2)gzip - 壓縮與解壓文件 gzip 也能實(shí)現(xiàn)文件的壓縮,但是

只能壓縮文件而不能壓縮目錄,并且會(huì)刪除源文件

。如果想要使用 gzip 壓縮目錄,需要先使用 tar 命令打包目錄。 語法: gzip [選項(xiàng)] 文件 例: tar -cf test.tar dir # 打包 test 目錄 gzip dir.tar# 壓縮 dir.tar 文件 ? # 注意:如果需要解壓可以使用 -d 選項(xiàng)或者使用 gunzip 命令。 (3)zip - 打包壓縮 zip 壓縮格式是 Window 與 Linux 等多平臺(tái)通用的壓縮格式。與 gzip 相比,zip 可以壓縮目錄并且不會(huì)刪除源文件。 語法: zip [選項(xiàng)] zip文件 源文件/目錄 ? 常用選項(xiàng): -r 遞歸處理,將指定目錄下的所有文件和子目錄一并處理 -x 壓縮時(shí)排除符合條件的文件 -q 不顯示指令執(zhí)行過程 例: zip -r test.zip test # 壓縮 test 目錄為 test.zip 文件 ? # 注意:與 gzip 類似,如果需要解壓,可以使用 unzip 命令解壓。

2. 軟件安裝

在 Linux 中安裝軟件主要有以下幾種方式 : 源碼包管理:Linux 的絕大多數(shù)開源軟件都是直接以原碼形式發(fā)布的,一般會(huì)被把源碼打包成 .tar.gz 的歸檔壓縮文件。我們使用這些軟件前

需要將源代碼編譯成為二進(jìn)制形式之后才能夠運(yùn)行使用

RPM 包管理:RMP 是 LINUX 下的一種軟件的可執(zhí)行程序,你只要安裝它就可以使用了。這種軟件安裝包通常是一個(gè) RPM 包,后綴是 .rpm,通過這種方式可以輕松實(shí)現(xiàn)軟件的安裝。

YUM 管理:RMP 軟件包形式的管理雖然方便,但是需要手動(dòng)解決軟件包的依賴關(guān)系。

YUM 是 RPM 的前端程序,其設(shè)計(jì)的目的是用來自動(dòng)解決 rpm 包之間 的依賴關(guān)系

。

(1)YUM使用 利用 yum 可以幫我們進(jìn)行 查詢、安裝、升級(jí) 與 刪除的功能。 語法: yum [選項(xiàng)] [操作] 包 常用選項(xiàng): -y 安裝過程中的選項(xiàng)全部為 yes -q 不顯示安裝過程 ? 常用操作: 查詢: ? list 查詢所有可用軟件包列表 ? search 關(guān)鍵字 ?搜索和關(guān)鍵字相關(guān)的包 安裝: install 安裝 升級(jí): update 升級(jí) 卸載: remove 卸載 接下來對(duì)于 yum 的幾種操作嘗試看看。 (2)查詢 ?如果想要查詢利用 yum 來查詢?cè)?distribution 所提供的軟件,或已知某軟件的名稱可以利用 查詢 相關(guān)的參數(shù)來查找。 ?? 例: yum list # 會(huì)列出 yum 服務(wù)器上提供的所有軟件名稱 # 列出 nginx 相關(guān)軟件,最后的 installed 代表該軟件已經(jīng)安裝 [root@VM-0-13-centos yum.repos.d]# yum list|grep nginx ?bt-nginx118.x86_64?????????????1.18.0-1.el7???????installed # 查看所有已經(jīng)安裝的軟件 注意是 ed [root@VM-0-13-centos yum.repos.d]# yum list installed # 查看所有可以更新的軟件 注意 有 s [root@VM-0-13-centos yum.repos.d]# yum list updates # 搜尋 nginx 相關(guān)軟件 [root@VM-0-13-centos yum.repos.d]# yum search nginx? (3)安裝 yum 安裝軟件需要使用 install 參數(shù)來實(shí)現(xiàn)安裝。例: yum install pam-devel?# 安裝 pam-devel,如果有相關(guān)軟件需要安裝或升級(jí) yum 會(huì)自動(dòng)幫你處理 # 可以使用以下命令在后續(xù)操作中全選擇 yes yum -y install pam-devel 更新、刪除 與 安裝 類似,把 install 替換成 update 即可。 1.3 linux 下構(gòu)建 lnmp 環(huán)境 1.3.1 Nginx 安裝 1 . 安裝先決條件 sudo yum install yum-utils 如果已經(jīng)存在,請(qǐng)忽略 2 . 創(chuàng)建 yum 庫 vi /etc/yum.repos.d/nginx.repo 在其中添加以下內(nèi)容: [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 為了避免干擾可以先備份一下其他的庫并刪除。

3 . 安裝 nginx sudo yum install nginx 以上 nginx 安裝成功,通過 nginx -v 可以查看 nginx 版本。 4 . 頁面訪問 如果需要通過瀏覽器訪問到 nginx 的首頁,需要 : 開啟 web 端口:firewall-cmd --permanent --add-port=80/tcp

重啟 firewall:firewall-cmd --reload

再通過 ip 地址即可訪問到。 5 . php 支持 以上各個(gè)軟件都已經(jīng)安裝完畢,但是當(dāng)你通過服務(wù)器訪問 php 文件時(shí),則會(huì)提示 File not found 。這里需要我們修改一下 nginx 的配置文件 - nginx.conf : location ~ \.php$ { root?/usr/share/nginx/html; fastcgi_pass?127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME?$document_root$fastcgi_script_name; include/etc/nginx/fastcgi_params; } 可以在安裝完 php 后再來測(cè)試。 1.3.2 MySQL 安裝 1 . 下載 mysql 源安裝包 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 如果知道源,也可以直接配置修改 源 配置文件。

2 . 安裝 mysql 源 yum localinstall mysql57-community-release-el7-8.noarch.rpm 安裝完成后可以在 /etc/yum.repos.d 目錄中看到對(duì)應(yīng)的 源 配置文件。查看該配置文件可以看到有幾個(gè)源,其中 enabled=1 的即為允許使用的源。如果需要可以根據(jù)自己的需求修改配置文件。 3 . 安裝 mysql yum install mysql-community-server 安裝完成后可以啟動(dòng) mysql: systemctl start mysqld mysql 會(huì)幫我們生成初始密碼,可以通過 以下命令查看 : cat /var/log/mysqld.log | grep password ? # A temporary password is generated for root@localhost: wM))4aqnwqHf # 4aqnwqHf 即為密碼 如果需要可以修改一下密碼。如下 : 補(bǔ)充 - 密碼修改 : 1 . 跳過驗(yàn)證 如果忘記密碼而無法登錄,可以在 my.cnf 配置文件中添加 skip-grant-tables 來跳過驗(yàn)證 : vim /etc/my.cnf ? --------------------------------------------------------------------- ? [mysql] # 在 mysql 的下面添加以下內(nèi)容 skip-grant-tables 修改完成后要重啟一下:service mysqld restart。 2 . 修改密碼 輸入 mysql -u root -p 然后直接敲回車,可以直接進(jìn)入到 mysql : # 選擇 mysql 數(shù)據(jù)庫 mysql> use mysql; ? # 修改密碼為 root ,authentication_string 是密碼的字段 mysql> update user set authentication_string=password('root') where user='root'; 修改完畢,去除 my.cnf 配置文件中添加的內(nèi)容重新登錄即可使用新增的密碼登錄。 1.3.3 PHP 安裝 1 . 安裝 epel-release 軟件包 yum install epel-release 2 . 更新 rpm 源 rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm 3 . 安裝 php 在安裝前,需要根據(jù)自己的需求使對(duì)應(yīng)的源生效 : vim /etc/yum.repos.d/remi-php70.repo ? --------------------------------------------------------------------- ? [remi-php74] name=Remi's PHP 7.4 RPM repository for Enterprise Linux 7 - $basearch mirrorlist=http://cdn.remirepo.net/enterprise/7/php74/mirror enabled=1 4 . 安裝 php 相關(guān)軟件包 yum --enablerepo=remi install php php-pdo php-mysql php-fpm php-cli php-common 以上 還可以根據(jù)自己的需求添加。安裝完畢后可以通過 php -v 命令查看 php 版本。 1.4 shell 應(yīng)用 1.4.1 Shell 簡(jiǎn)介 Shell 腳本(shell script)拆分為兩部分為 shell 和 script。 操作系統(tǒng)的核心是需要保護(hù)起來的,所以我們需要一個(gè)橋梁來跟核心溝通,讓核心幫助我們完成想要達(dá)到的工作,而 shell 則是這樣一個(gè)橋梁。script 即為腳本的意思,根據(jù)編輯的內(nèi)容來執(zhí)行。

shell script

即為給 shell 所寫的「劇本」。

Shell 腳本命令的工作方式有兩種:交互式和批處理。

1. 交互式(Interactive)

用戶每輸入一條命令就立即執(zhí)行。 echo 'Hello World'

2. 批處理(Batch)

由用戶事先編寫好一個(gè)完整的 Shell 腳本,Shell 會(huì)一次性執(zhí)行腳。 (1)編寫腳本 [root@localhost shell]# vi hello.sh ? #!/bin/bash #first shell echo 'Hello World' 沒錯(cuò),編寫 shell 腳本只需要?jiǎng)?chuàng)建一個(gè)文件,并在該文件中編寫預(yù)先設(shè)定的 linux 命令即可。該文件可以是任意后綴,只不過為了區(qū)分建議加上 .sh 作為后綴。 腳本說明 : 第一行的(#!)是腳本聲明,用來告訴系統(tǒng)使用哪種 Shell 解釋器來執(zhí)行該腳本。 第二行(#)是注釋信息,是對(duì)腳本功能和某些命令的介紹信息。 第三行開始可以是自己的命令,例如平時(shí)執(zhí)行的 linux 命令了 ls -l。 (2)執(zhí)行腳本 [root@localhost shell]# bash hello Hello World 1.4.2 變量

1. 變量

是計(jì)算機(jī)內(nèi)存的單元,其中存放的值可以改變。當(dāng) shell 腳本需要保存一些信息時(shí),如一個(gè)文件名或是一個(gè)數(shù)字,就把它存放在一個(gè)變量中。 (1)變量命名 變量名稱可以由字母、數(shù)字和下劃線組成 ,但是不能以數(shù)字開頭,不能使用關(guān)鍵字(可用 help 命令查看保留關(guān)鍵字)。

在 Bash 中,變量的默認(rèn)類型都是字符串型。在賦值時(shí)等號(hào)兩邊不能存在空格,變量的值如果有空格,需要使用引號(hào)包括。

定義變量時(shí)不需要添加 $ ,但是在使用時(shí),需要使用 $ 或者使用反引號(hào)。

環(huán)境變量名建議大寫,便于區(qū)分。

(2)變量分類 局部變量:局部變量定義在腳本或命令中,僅在當(dāng)前 shell 實(shí)例中有效,其他 shell 程序不能訪問該局部變量。

環(huán)境變量:所有的程序都能訪問環(huán)境變量,必要的時(shí)候 shell 腳本也可以定義環(huán)境變量。

shell 變量:shell 變量是由 shell 程序設(shè)置的特殊變量。shell 變量中既有環(huán)境變量也包含局部變量,這些變量保證了shell的正常運(yùn)行。

(3)第一個(gè)變量 #!/bin/bash #first shell name="hello" # 定義值為 hello 的變量,名稱為 name echo $name # 輸出變量的值 以上就定義完成了自己的變量,如果想要「過河拆橋」可以使用 unset 變量名稱 的方式刪除變量(unset name)。

2. 數(shù)據(jù)類型

(1)字符串 字符串是 shell 中最常用最有用的數(shù)據(jù)類型,字符串可以用單引號(hào)、雙引號(hào)也可以不用引號(hào)。 # 單引號(hào)里的任何字符都會(huì)原樣輸出,單引號(hào)字符串中的變量是無效的。雙引號(hào)則可以輸出變量值。 ? #!/bin/bash name="hello" echo 'i am $name' # 輸出 i am $name echo "I am $name" # 輸出 I am hello 在 shell 中,想要拼接字符串不需要添加額外符號(hào)。例如 : #!/bin/bash name="hello" echo 'my name is '$name'. who are you?' # 輸出 my name ishello. who are you? (2) 整數(shù)型 在 Shell 中所有的變量默認(rèn)都是字符串型。也就是說,如果不手動(dòng)指定變量的類型,那么所有的數(shù)值都是不能進(jìn)行運(yùn)算的。例 : #!/bin/bash echo 1+1?# 結(jié)果輸出為 1+1 如果想要進(jìn)行運(yùn)算則需要如下 如果想要進(jìn)行數(shù)學(xué)運(yùn)算,可以使用以下幾種方式運(yùn)算 :

例 : #!/bin/bash echo $((1+1)) ?let a=1+1 echo $a expr 1 + 1 ?echo $[1+1] 注意:expr 運(yùn)算符左右需要有空格。

(3)數(shù)組 數(shù)組中可以存放多個(gè)值。bash 只支持一維數(shù)組(不支持多維數(shù)組),初始化時(shí)不需要定義數(shù)組大小。數(shù)組元素的下標(biāo)由 0 開始編號(hào)。獲取數(shù)組中的元素要利用下標(biāo),下標(biāo)可以是整數(shù)或算術(shù)表達(dá)式,其值應(yīng)大于或等于 0。 創(chuàng)建數(shù)組有兩種方式 : #!/bin/bash # 直接創(chuàng)建數(shù)組 array=(1,2,3,4,5,6) echo $array # 先創(chuàng)建數(shù)組,再通過下標(biāo)賦值 array=() array[0]=1 array[1]=2 echo $array 同樣數(shù)組可以通過下標(biāo)取值 : echo ${array[1]} ?echo ${array[@]} # 傳遞 @ 或者 * 都可以打印所有值。@ 是拆分的字符串,* 是一個(gè)字符串 1.4.3 運(yùn)算符 shell 和其他編程語言一樣,支持多種運(yùn)算符。下面列出了一些常用運(yùn)算符 :

以上優(yōu)先級(jí)數(shù)字越大,優(yōu)先級(jí)越高。與其他語言類似的是,可以通過括號(hào)提升優(yōu)先級(jí)。 實(shí)例 : #!/bin/bash a=1 b=5 c=$(( $a+$b )) echo $c ?c=$(( $a*$b )) echo $c c=$(( $a/$b )) echo $c c=$(( ($a+$b)/$a )) echo $c 1.4.4 字符串

1. 字符串截取

(1)cut 改命令可以顯示每行從開頭算起 num1 到 num2 的字符串。 語法: cut [選項(xiàng)] [文件] 常用選項(xiàng): ??-b 以字節(jié)為單位進(jìn)行分割 ??-d 自定義分隔符,默認(rèn)為制表符 -f 與-d一起使用,指定顯示哪個(gè)區(qū)域 例: cut -b 6 hello.txt # 提取第六列字符 cut -b 2,6 hello.txt # 提取第二和六列字符 cut -d ':' -f 2 hello.txt?# 以 :為分隔符取第二列 (2)awk 文本分析工具。

awk

命令也叫 awk 編程,你沒看錯(cuò)它就是一個(gè)編程語言,在這里我們主要介紹其使用方式。其特點(diǎn)為可以識(shí)別非制表符的空格,用來解決 cut 命令解決不了的提取列工作。 語法: awk '條件1{動(dòng)作1}條件2{動(dòng)作2}...' 文件名 awk 后面需要接一對(duì)引號(hào),并且在其中需要加上 {} 例: ps -aux|awk '{print $2 "\t" $11}' # 查看進(jìn)程的 PID 和 COMMAND 并以 [tab] 隔開 ps -aux|awk '0<1 {print $2 "\t" $11}' # 前面加入條件則會(huì)在條件成立后執(zhí)行 補(bǔ)充:printf 是另一個(gè)輸出命令不會(huì)自動(dòng)換行,print 可以自動(dòng)換行,但是只有 awk 中可以使用。

(3)sed 利用腳本來處理文本文件。 語法: sed [選項(xiàng)] [動(dòng)作] 文件名 常用選項(xiàng): -n 僅顯示script處理后的結(jié)果 -e 以選項(xiàng)中指定的script來處理輸入的文本文件 -i 用sed的修改結(jié)果直接修改讀取數(shù)據(jù)的文件,而不由屏幕輸出 ? 常用動(dòng)作: ?a 追加,a 的后面接字串,這些字串會(huì)在新的一行出現(xiàn) ?i 插入,i 的后面接字串,這些字串會(huì)在新的一行出現(xiàn) ?c 替換行,c 的后面接字串,這些字串可以替換原數(shù)據(jù)行,替換多行時(shí)末位使用 \ 表示未完結(jié) ?s 替換字符串,用一個(gè)字符串替換另外一個(gè)字符串 ?p 打印,輸出指定的行 ?d 刪除 ?? ?例: sed -e 2a\newmessage hello.txt # 在 hello.txt 文件中添加 newmessage cat hello.txt | sed -n '2,3p' # 只顯示 第 2,3 行的內(nèi)容 cat hello.txt | sed '1,2d' # 刪除 hello.txt 文件中的 1,2 行顯示 ?

2. 字符處理

(1)sort - 排序 語法: ??sort [選項(xiàng)] 文件名 ?? 常用選項(xiàng): -f 忽略大小寫 -n 依照數(shù)值的大小排序 -r 反向排序 -t 指定排序時(shí)所用的欄位分隔字符 例: sort hello.txt # 排序查看 hello.txt 中的內(nèi)容 sort -r hello.txt # 反向排序 (2)wc - 計(jì)算字?jǐn)?shù) 語法: ??wc [選項(xiàng)] 文件名 ?? 常用選項(xiàng): -l 只統(tǒng)計(jì)行數(shù) -w 只統(tǒng)計(jì)單詞數(shù) -m 只統(tǒng)計(jì)字符數(shù) 例: wc hello.txt # 結(jié)果 行數(shù),單詞 以及 字符數(shù) 都會(huì)顯示 wc -l hello.txt # 統(tǒng)計(jì) 行數(shù) 1.4.5 條件判斷

1. 檢測(cè)

Shell

中的 test 命令用于檢查某個(gè)條件是否成立,它可以進(jìn)行數(shù)值、字符和文件三個(gè)方面的檢測(cè)。 語法: ?test 表達(dá)式

2. 數(shù)值判斷

例 : [ 1 -le 2 ] && echo 'yes' || echo 'no' # 1是否小于2 小則為真 test 1 -le 2 && echo 'yes' || echo 'no' # 1是否小于2 小則為真 # 注意:中括號(hào)兩邊包含空格 以上兩種方式可以得到結(jié)果,通過 echo 的方式來幫助我們查看結(jié)果,下面以第一種方式為主演示。

3. 字符串判斷

例 : name=hello [ $name = 'hello' ] && echo 'yes' || echo 'no' # 判斷變量是否為 hello [ -z $name ] && echo 'yes' || echo 'no' # 判斷字符串長(zhǎng)度是否為 0

4. 文件判斷

例 : [ -e ./hello.txt ] && echo 'yes' || echo 'no' # 判斷當(dāng)前目錄下是否存在 hello.txt 文件 [ -r ./hello.txt ] && echo 'yes' || echo 'no' # 判斷當(dāng)前目錄下是否存在 hello.txt 文件并且是否可讀 1.4.6 流程控制

if ... elseif

語法: 1. if [ 條件判斷 ];then ?成立的工作內(nèi)容 fi 2. if [ 條件判斷1 ];then ??1成立的工作內(nèi)容 elif [ 條件判斷2 ] ;then ??2成立的工作內(nèi)容 else ?都不成立的工作內(nèi)容 fi 例: a=1 b=2 if [ $a == $b ];then echo 'a和b相等'; fi # 判斷 a 和 b 是否相等,相等則輸出 ? if [ $a == 1 ];then ??echo 'a = 1' elif [ $a == 2 ] ;then ??echo 'a = 2' else ??echo '都不成立' fi # 判斷 a 的值,并輸出對(duì)應(yīng)內(nèi)容

case ... esac

類似于 switch ... case : 語法: ?case 值 in 模式1) 程序段 ;; 模式2) 程序段 ;; *) 程序段 ;; ??esac 例: a=2 case $a in ??1) echo '值是1'; ;; ??2) echo '值是2'; ;; ?*) echo '未知值'; ;; esac

for ... do ... done

語法: ??1. for var in item1 item2 ... do ?程序段 done 2. ??for (( 初始值;循環(huán)控制調(diào)節(jié);變量變化 )) do ?程序段 done ? 例: ? for a in 1 2 3 4 5 6 do ??echo '我在:'$a done # 上面代碼會(huì)將 in 后面的值依次給 a 使用 ? for (( i=0;i<6;i++ )) do ??echo 'i是'.$i done # 上述代碼會(huì)根據(jù)條件重復(fù)執(zhí)行 do 后面的代碼

while 與 until

語法: ??1.條件判斷式成立則循環(huán) while [ 條件判斷式 ] do ?程序段 done 2.條件判斷式不成立則循環(huán) ??until [ 條件判斷式 ] do ?程序段 done ? 例: i=1 while [ $i -le 6 ] do ??i=$(( $i+1 )) done echo 'i的值是:'$i ??# 如果變量 i 的值小于等于 100 ? until [ $i -gt 6 ] do ??i=$(( $i+1 )) done echo 'i的值是:'$i # 如果 i 的值大于 6 則停止 輸出重定向 ??? 1.4.7 函數(shù)

1. 函數(shù)定義

shell

可以用戶定義函數(shù),在 shell 腳本中可以調(diào)用。shell 中函數(shù)的定義格式如下 : 語法: ?[ function ] funname [()] ?{ 程序段 ?} ? 例: first(){ ??echo '第一個(gè)函數(shù)' } first # 函數(shù)的調(diào)用

2. 函數(shù)參數(shù)

在調(diào)用函數(shù)的時(shí)候,同樣可以給函數(shù)傳遞參數(shù)使用 : first(){ echo "第一個(gè)參數(shù): $1" ??echo "第二個(gè)參數(shù): $2" ??echo "第三個(gè)參數(shù): $3" ??echo "第十個(gè)參數(shù): ${10}" ??echo "參數(shù)總數(shù)有 $# 個(gè)" ??echo "作為一個(gè)字符串輸出所有參數(shù) $*" } first 1 2 3 4 5 6 7 8 9 10 11 12 說明 :

3. 傳遞參數(shù)

我們可以在執(zhí)行 Shell 腳本時(shí),向腳本傳遞參數(shù),腳本內(nèi)獲取參數(shù)的格式為:

$n

。

n

代表一個(gè)數(shù)字,1 為執(zhí)行腳本的第一個(gè)參數(shù),2 為執(zhí)行腳本的第二個(gè)參數(shù)....,如下 : 例: first(){ echo "第一個(gè)參數(shù): $1" # 1 ??echo "第二個(gè)參數(shù): $2" # 2 ??echo "第三個(gè)參數(shù): $3" # 3 ??echo "參數(shù)總數(shù)有 $# 個(gè)" # 3 } first $1 $2 $3 在運(yùn)行腳本時(shí)需要傳遞參數(shù) : bash hello.sh 1 2 3 注意:并不是一定要傳遞給函數(shù),只要定義了 $1,$2,...... 等,就可以在執(zhí)行腳本時(shí)傳遞參數(shù)使用。

4. 補(bǔ)充:輸入輸出重定向

我們?cè)趫?zhí)行一個(gè)指令的時(shí)候,這個(gè)指令會(huì)經(jīng)過處理將數(shù)據(jù)輸出到屏幕上, 該數(shù)據(jù)可能是 標(biāo)準(zhǔn)輸出[正確執(zhí)行的結(jié)果] 和 標(biāo)準(zhǔn)錯(cuò)誤輸出[執(zhí)行時(shí)產(chǎn)生的錯(cuò)誤信息]。如果所有信息都輸出到屏幕則會(huì)顯得雜亂,我們可以通過重定向的功能分別寫入其他文件中去。在使用該功能時(shí),需要使用以下字符 :

例 : # 輸出重定向:改變數(shù)據(jù)從程序流向哪里。 echo '原神' > yuanshen.txt # 把 '原神' 寫入到 yuanshen.txt 文件中,也可以是通過指令查詢到的內(nèi)容寫入 如?who > users echo 'www.yuanshen.com' >> yuanshen.txt # 追加網(wǎng)址到文件,注意是 >> 如果是 > 則會(huì)直接覆蓋 # 輸入重定向:改變數(shù)據(jù)從哪里流向程序。 wc -l < yuanshen.txt # 等價(jià)于 cat yuanshen.txt | wc -l

第三部分 第1章 linux 與 shell 解析的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
海南省| 嵊泗县| 普洱| 肇州县| 独山县| 长顺县| 莱西市| 定日县| 和林格尔县| 中山市| 区。| 石门县| 运城市| 清河县| 开鲁县| 满洲里市| 凤台县| 丰城市| 平潭县| 南平市| 浮梁县| 阿拉善左旗| 广昌县| 徐州市| 福安市| 鹤岗市| 义乌市| 伊金霍洛旗| 富锦市| 古交市| 承德县| 温宿县| 五指山市| 郎溪县| 凉山| 龙川县| 蛟河市| 墨玉县| 宜兰县| 东安县| 怀安县|