駐馬店哪里做網(wǎng)站河南網(wǎng)站建設(shè)哪個(gè)公司做得好
文章目錄
- 1. 查看當(dāng)前的shell類型
- 2. ps -f命令
- 3. 父子shell
- 4. 分號在命令里的作用
- 問題:
- 環(huán)境變量echo:
- 5. sleep和jobs
- sleep:
- jobs:
- 例子:
- &:
- 6. 外部命令和內(nèi)建命令
- 圖解外部命令
- type命令
- 7. history命令
- 8. alias命令
- 9. 推薦
1. 查看當(dāng)前的shell類型
命令:cat ??/etc/passwd
由此可見,該系統(tǒng)終端的shell為bash
注:
① Debian -> dash ????linux中的dash shell是什么
????Ubuntu -> bash
這里dash可以執(zhí)行成功是因?yàn)閁buntu也屬于Debian
② 其它shell
③ shell的默認(rèn)使用方式可以更改
④ ls -lF /bin/bash 執(zhí)行后會(huì)發(fā)現(xiàn)這里實(shí)際上有一個(gè)軟件 2022 /bin/bash*
????(bash本質(zhì)上是一個(gè)軟件,也是一個(gè)終端)
2. ps -f命令
顯示進(jìn)程列表及其詳細(xì)信息。
3. 父子shell
① shell分為父shell和子shell
② 父shell -> 子shell 的過程類似于(ps -f 可以很清楚地看到它們之間的關(guān)系):
????孩子a
????父親a 兒子b
????爺爺a 兒子b 孫子c
????以Ubuntu為例,bash一次相當(dāng)于要一個(gè)小孩,再bash一次再要一個(gè)小孩
③ PPID指的是當(dāng)前進(jìn)程父親的PID,或者說它是基于誰創(chuàng)建的
一個(gè)窗口運(yùn)行了三個(gè)終端(3個(gè)bash),輸入了三個(gè)exit才徹底退出
父子shell是相對的。即PID=3536的bash是PID=3543的bash的父shell,PID=3543的bash同時(shí)又是PID=3551的bash的父shell。
4. 分號在命令里的作用
作用:分隔多個(gè)命令,使它們依次執(zhí)行。跟’ | '作用一樣
① 命令1 空格 分號 空格 命令2 空格 分號 空格 命令3 分號前后的空格表示分隔不同的命令
② 括號 命令1 空格 分號 空格 命令2 空格 分號 空格 命令3 括號 帶括號意味著創(chuàng)建一個(gè)子shell去執(zhí)行
例如:
①②的異同:
????相同點(diǎn):執(zhí)行結(jié)果一樣
????不同點(diǎn):1> ①?zèng)]有生成一個(gè)子shell執(zhí)行,②生成了一個(gè)子shell執(zhí)行。2> ①的執(zhí)行結(jié)果成為進(jìn)程列表,②的不是。
問題:
問:為什么ls ; pwd ; cd / 執(zhí)行完以后切換到了根目錄,而(ls ; pwd ; cd / )卻沒有?
答:在第一個(gè)命令中,cd/ 意味著 cd 命令后跟著一個(gè)參數(shù) /,表示切換到根目錄。而在第二個(gè)命令中,(ls ; pwd ; cd/) 在括號內(nèi),這意味著括號內(nèi)的命令將在子shell中執(zhí)行。當(dāng)子shell執(zhí)行完畢后,不會(huì)影響當(dāng)前shell的狀態(tài),所以在執(zhí)行完 (ls ; pwd ; cd/) 后,你還停留在原來的目錄,而不會(huì)切換到根目錄。
問:(ls ; pwd ; cd / )既然生成了一個(gè)子shell執(zhí)行,為什么ps -f 看不到這個(gè)進(jìn)程?
答:在Unix-like系統(tǒng)中,ps -f 命令用于顯示進(jìn)程列表及其詳細(xì)信息。當(dāng)你在子shell中執(zhí)行命令時(shí),子shell本身會(huì)成為一個(gè)新的進(jìn)程,但是它不會(huì)顯示在外部shell的進(jìn)程列表中,因?yàn)橥獠縮hell不直接管理子shell的執(zhí)行。因此,雖然第二個(gè)例子中生成了一個(gè)子shell,但它不會(huì)被ps -f命令顯示出來,因?yàn)閜s -f只顯示外部shell及其直接創(chuàng)建的進(jìn)程列表。
問:什么叫進(jìn)程列表?
答:進(jìn)程列表指的是當(dāng)前正在運(yùn)行的所有進(jìn)程的清單或列表。在操作系統(tǒng)中,每個(gè)正在運(yùn)行的程序都是一個(gè)進(jìn)程,這些進(jìn)程可能是用戶啟動(dòng)的應(yīng)用程序、系統(tǒng)服務(wù)或操作系統(tǒng)本身的一部分。進(jìn)程列表通常包含每個(gè)進(jìn)程的標(biāo)識符、狀態(tài)、內(nèi)存使用情況等信息,可以通過特定的系統(tǒng)命令或工具來查看。
問:為什么ls ; pwd ; cd / 生成的結(jié)果叫進(jìn)程列表,(ls ; pwd ; cd / )生成的不叫?
答:第一個(gè)例子中,我們可能會(huì)將一系列命令看作一個(gè)整體,因?yàn)樗鼈儼错樞驁?zhí)行,就像列表中的項(xiàng)目一樣。這種情況下,我們將這些命令的執(zhí)行結(jié)果稱為進(jìn)程列表。而第二個(gè)例子中,命令被放在括號內(nèi),括號將這些命令分組在一個(gè)子shell中執(zhí)行。這些命令的執(zhí)行不會(huì)直接影響到外部的環(huán)境,所以我們不太傾向?qū)⑺鼈兎Q為進(jìn)程列表。
環(huán)境變量echo:
命令:echo $BASH_SUBSHELL—檢測有沒有創(chuàng)建子shell執(zhí)行。
例如:
5. sleep和jobs
sleep:
① sleep + 數(shù)字 --讓終端休眠_(dá)_秒后執(zhí)行(倒計(jì)時(shí))
② sleep + 數(shù)字& --讓終端休眠_(dá)_秒后執(zhí)行,且這個(gè)過程在后臺
③ man sleep 查看sleep說明文檔
問:為什么要用sleep?
答:因?yàn)橛袝r(shí)候我們需要程序在執(zhí)行某些操作后暫停一段時(shí)間,或者在循環(huán)中添加一個(gè)延遲以控制程序的執(zhí)行速度。
jobs:
① jobs – 看看誰在搞休眠
② jobs -l – 在jobs的基礎(chǔ)上多顯示了PID
例子:
&:
‘&’ – 把某個(gè)操作掛載后臺執(zhí)行,我們可以在當(dāng)前頁面做別的事情。例如:Windows解壓壓縮包時(shí),我們點(diǎn)完解壓之后,通常會(huì)把那個(gè)頁面最小化(放在后臺),然后去干別的事情。linux中輸入(tar -zxvf … ; tar -zxvf … ; cp … )&就可以讓解壓操作在后臺執(zhí)行。
6. 外部命令和內(nèi)建命令
????????如圖所示,輸入ps -f 查看進(jìn)程信息時(shí),ps -f 也算一個(gè)進(jìn)程(Windows任務(wù)管理器查看進(jìn)程時(shí),任務(wù)管理器本身也算一個(gè)進(jìn)程),像ps -f 這種必須單獨(dú)創(chuàng)建一個(gè)進(jìn)程,在外部看內(nèi)部的命令叫作外部命令;像cd這種不單獨(dú)創(chuàng)建進(jìn)程的,我們叫非外部命令(別名:內(nèi)建命令)。
圖解外部命令
外部命令:站在一個(gè)更高的層次看shell里的東西,站在外邊看里邊的東西看的更清楚。
type命令
type + 命令名稱:判斷一個(gè)命令是外部命令還是內(nèi)部命令
輸出結(jié)果:命令名稱 is /usr/bin/命令名稱 – 外部命令
輸出結(jié)果:命令名稱 is a shell builtin – 內(nèi)建命令
例如:
7. history命令
① history命令–可以查看我們之前運(yùn)行的所有命令(顯示條數(shù)有上限)。它也是內(nèi)建命令
② 執(zhí)行history -> 顯示:序號 + 命令 -> 輸入!+序號,即可執(zhí)行序號對應(yīng)命令
③ !!:執(zhí)行上一個(gè)命令
????!$:執(zhí)行上一個(gè)命令
例如:
④ less .bash_history:以文件形式查看之前的命令
8. alias命令
① alias命令–作用:起別名。好處:可以讓我們縮寫
② alias -p:顯示全部已定義的別名
進(jìn)一步理解alias:此處執(zhí)行l(wèi)l 時(shí)本質(zhì)上是執(zhí)行l(wèi)s -alF;此處執(zhí)行l(wèi)s本質(zhì)上是執(zhí)行l(wèi)s --color=auto(自動(dòng)高亮)。補(bǔ)充:ls =‘ls --color=auto’ 是Ubuntu特有的,mac上就沒有。
③ 創(chuàng)建屬于自己的別名:alias 別名 = ’ 原來的命令’
????缺點(diǎn):一旦退出當(dāng)前的shell,就不可以使用了
例如:
注意:等號前后不要加空格
9. 推薦
frank的linux課教程 以上筆記全部來源于此
-----------------------------------未完待續(xù)...------------------------
---------------------------出現(xiàn)問題歡迎批評指正啊 ---------------------