理解Shell(馬馬虎虎)

2021-10-11 20:59:02 字數 2173 閱讀 7783

在/etc/password檔案中,在使用者id記錄的第7個字段中列出了預設的shell程式。

(每個字段之間用:分割)

只要使用者登陸到某個虛擬的控制台終端或者在gui中啟動終端**器,預設的shell就會開始執行。

一般情況下:預設的是bash shell

//(還會有另乙個預設的shell是/bin/sh,作為預設的系統shell,用於那些需要在啟動時使用的系統shell指令碼)

//並不是必須一直要使用預設的shell,可以使用發行版中的所有可用的shell,只要要輸入檔名啟動對應的shell就行。

//之後可以使用exit來退出啟動的shell

終端或者**器啟動的預設互動shell是父shell,在cli提示符後面輸入/bin/bash命令或者其他等效的bash命令時,會建立乙個新的子shell。

子shell也會擁有cli提示符,等待命令輸入。

exit命令不僅可以退出子shell,還能用來登出當前的虛擬控制台或者終端**器軟體,只需要在父shell中輸入exit,就可以從容地退出cli了。

//多個命令組成命令列表,命令之間用分號隔開,如:

pwd;ls;cd /

;pwd ls

//加上()就可以讓命令列表變成程序列表

(pwd;ls;cd /

;pwd ls)

程序列表會生成乙個子shell來執行對應的命令,而命令列表不會。

可以使用命令echo $bash_subshell來檢視是不是生成了子shell

(測試時可以將該命令加到命令列表或者程序列表的末尾)

命令返會0就代表沒有生成子shell,為1或者大於1表示生成了子shell。

//還可以巢狀使用,建立子shell的子shell,如:

(pwd;

(echo $bash_subshell)

)

後台模式:執行命令的同時,還可以讓出cli以供他用。

要將命令置入後台模式,需要在命令的結尾加上 & ,如:

sleep 3000&[

1]2212

//將命令置入後台模式之後,返回cli提示符之前,會返回兩條資訊,

//如上:乙個代表後台作業號,乙個代表該後台作業的程序id,可以使用jobs命令來檢視後台作業資訊

//jobs -l還會顯示更多資訊

同理可以將程序列表置入後台模式:如:

(pwd;ls;ls-l)

&協程:同時幹兩件事,在後台生成乙個子shell,並在子shell中執行命令

使用命令coproc,如:

coproc sleep 10[1

]2256

//可以發現使用coproc之後會啟用了乙個後台作業

可以將協程和程序列表結合起來產生巢狀的子shell,如:

coproc (sleep 12

,sleep 20

)

內建命令和外部命令的區別在於前者不需要使用子程序來執行,它們已經和shell編譯成一體。

可以使用type命令來檢視某個命令是不是內建的。

有些命令同時有外部命令,和內建命令,使用type -a可以檢視。這種命令執行時,如果想使用外部命令,那麼輸入對應路徑即可。

which命令也可以檢視,但它只顯示外部命令

history命令 //通常會顯示最近1000條執行的命令。

可以輸入!

!,來執行剛才使用過的那條命令。

//輸入!!執行之後,會先顯示剛才執行的命令,然後再執行。

還可以使用 ! 歷史記錄中命令編號來喚醒任何一條歷史命令

//命令歷史記錄被儲存在隱藏檔案.bash_history中,位於使用者的主目錄。

//預設情況下:歷史命令記錄先存放在記憶體中,shell退出之後才被寫到歷史檔案中

//可以使用history -a來強行寫入(但是注意的是,在history -a執行之後執行的那些命令,這次依然沒有寫入進去)

alias //該命令可以給命令取別名

linux發行版可能已經設定好了一些別名,所以可以使用alias -p來檢視。

可以自己設定自己命令的別名

alias li=

"ls -li"

(注意的是,alias是內建命令,別名只會在它所被定義的shell程序中才有效)

專案管理 管理只要是個人就能馬馬虎虎麼

長沙 shrek未婚男 23 20 46 管理只要是個人都能馬馬虎虎,技術就不一定了 cd 布道者 23 21 19 這不見得 cd 布道者 23 22 08 只有技術沒有管理的企業只能算是作坊 北京 青潤 23 52 51 只能說你經歷的太少,很多曾經很好或者可以很好的團隊,都被這種馬馬虎虎的管理...

Shell指令碼學習 理解shell

使用者預設的shell 由 etc passwd 中的對應使用者的配置決定,一般為 bash shell bin bash bin sh 這個shell 一般用於shell 指令碼 通過 bash 命令可以建立子shell,及父程序建立子程序。ps f 可以檢視當前使用者程序的詳細資訊,ps p 可...

shell的通俗理解

引自 一 shell的含義 首先shell的英文含義是 殼 它是相對於核心來說的,因為它是建立在核心的基礎上,面向於使用者的一種表現形式,比如我們看到乙個球,見到的是它的殼,而非核。linux中的shell,是指乙個面向使用者的命令介面,表現形式就是乙個可以由使用者錄入的介面,這個介面也可以反饋執行...