SHELL 提示符學習彙總_2
title: SHELL 提示符學習彙總_2
data: 2018-9-7
tags: [shell , 提示符 , 學習]
categories: [SHELL,學習,命令列]
grammar_cjkRuby: true
copyright: true
上一篇更新到重定向命令,後來感覺也沒怎麼用到那些命令。不過既然是技術部落格、為了防止忘記,我還是會把一些不一定會用到的命令記錄下來,以備以後查閱!
鍵盤高階操作技巧
- clear -清空螢幕
- history -顯示歷史列表內容
移動游標
Ctrl-a
移動游標到行首。Ctrl-e
94Ctrl-f
游標前移一個字元;和右箭頭作用一樣。Ctrl-b
游標後移一個字元;和左箭頭作用一樣。Alt-f
游標前移一個字。Alt-b
游標後移一個字。Ctrl-l
清空螢幕,移動游標到左上角。clear 命令完成同樣的工作。
修改文字
Ctrl-d
刪除游標位置的字元。Ctrl-t
游標位置的字元和游標前面的字元互換位置。Alt-t
游標位置的字和其前面的字互換位置。Alt-l
把從游標位置到字尾的字元轉換成小寫字母。Alt-u
把從游標位置到字尾的字元轉換成大寫字母。
剪下和貼上文字
Ctrl-k
剪下從游標位置到行尾的文字。Ctrl-u
剪下從游標位置到行首的文字。Alt-d
剪下從游標位置到詞尾的文字。Alt-Backspace
剪下從游標位置到詞頭的文字。如果游標在一個單詞的開頭,剪下前一個單詞。Ctrl-y
把剪下環中的文字貼上到游標位置。
利用歷史命令
history | less
瀏覽歷史命令(在預設情況下,bash 會儲存你所輸入的最後 500 個命令)- bash 也具有按遞增順序來搜尋歷史列表的能力。這意味著隨著字元的輸入,我們可以告訴 bash 去搜索歷史列表,每一個附加字元都進一步提煉我們的搜尋。啟動遞增搜尋,
輸入 Ctrl-r,其後輸入你要尋找的文字。當你找到它以後,你可以敲入 Enter 來執行命令,或者輸入 Ctrl-j,從歷史列表中複製這一行到當前命令列。再次輸入 Ctrl-r,來找到下一個匹配項(向上移動歷史列表)。輸入 Ctrl-g 或者 Ctrl-c,退出搜尋
歷史命令展開
!!
重複最後一次執行的命令。可能按下上箭頭按鍵和 enter 鍵更容易些。!number
重複歷史列表中第 number 行的命令。!string
重複最近歷史列表中,以這個字串開頭的命令。!?string
重複最近歷史列表中,包含這個字串的命令。
許可權
(我喜歡Linux是因為這個系統主動性強,許可權控制好,所以這一章看的我頭皮發麻)
id
–顯示使用者身份號chmod
–更改檔案模式umask
–設定預設的檔案許可權su
–以另一個使用者的身份來執行 shellsudo
–以另一個使用者的身份來執行命令chown
–更改檔案所有者chgrp
–更改檔案組所有權passwd
–更改使用者密碼
讀取、寫入和執行
-rw-rw-r-- _1 me_me_0 2008-03-06 14:52 foo.txt
-
一個普通檔案d
一個目錄l
一個符號連結。注意對於符號連結檔案,剩餘的檔案屬性總是”rwxrwxrwx”,而且都是虛擬值。真正的檔案屬性是指符號連結所指向的檔案的屬性。c
一個字元裝置檔案。這種檔案型別是指按照位元組流,來處理資料的裝置。比如說終端機,或者調變解調器b
一個塊裝置檔案。這種檔案型別是指按照資料塊,來處理資料的裝置,例如一個硬碟,或者 CD-ROM 盤。- 剩下的九個字元,叫做檔案模式,代表著檔案所有者,檔案組所有者,和其他人的讀,寫,
執行許可權。
chmod -更改檔案模式
更改檔案或目錄的模式(許可權),可以利用 chmod 命令。注意只有檔案的所有者或者超級使用者才能更改檔案或目錄的模式。chmod 命令支援兩種不同的方法來改變檔案模式:八進位制數字表示法,或符號表示法。
0 | 000 | -– |
---|---|---|
1 | 001 | –x |
2 | 010 | -w- |
3 | 011 | -wx |
4 | 100 | r– |
5 | 101 | r-x |
6 | 110 | rw- |
7 | 111 | rwx |
通過使用 3 個八進位制數字,我們能夠設定檔案所有者,使用者組,和其他人的許可權.
chmod 命令支援一種符號表示法,來指定檔案模式。符號表示法分為三部分:更改會影響誰,要執行哪個操作,要設定哪種許可權。通過字元“u”,“g”,“o”,和“a”的組合來指定要影響的物件,如下所示:
u
”user” 的簡寫,意思是檔案或目錄的所有者。g
使用者組。o
”others” 的簡寫,意思是其他所有的人。a
”all” 的簡寫,是”u”, ”g” 和“o”三者的聯合。
如果沒有指定字元,則假定使用 “all”。執行的操作可能是一個“+”字元,表示加上一個許可權,一個“-”,表示刪掉一個許可權,或者是一個“=”,表示只有指定的許可權可用,其它所有的許可權被刪除。
許可權由“r”,“w”,和“x”來指定。這裡是一些符號表示法的舉例:u+x
為檔案所有者新增可執行許可權。u-x
刪除檔案所有者的可執行許可權。+x
為檔案所有者,使用者組,和其他所有人新增可執行許可權。等價於 a+x。o-rw
除了檔案所有者和使用者組,刪除其他人的讀許可權和寫許可權。go=rw
給群組的主人和任意檔案擁有者的人讀寫許可權。如果群組的主人或全域性之前已經有了執行的許可權,他們將被移除。u+x
、go=rw
給檔案擁有者執行許可權並給組和其他人讀和執行的許可權。多種設定可以用逗號分開。
更改身份
- 登出系統並以其他使用者身份重新登入系統。
- 使用 su 命令。 -以其他使用者身份和組 ID 執行一個 shell
- 使用 sudo 命令。以另一個使用者身份執行命令
chown -更改檔案所有者和使用者組
chown
命令被用來更改檔案或目錄的所有者和使用者組。使用這個命令需要超級使用者許可權。chown 命令的語法:
chown [owner][:[group]] file...
bob
把檔案所有者從當前屬主更改為使用者 bobbob:users
把檔案所有者改為使用者 bob,檔案使用者組改為使用者組 users:admins
把檔案使用者組改為組 admins,檔案所有者不變bob:
檔案所有者改為使用者 bob,檔案使用者組改為,使用者 bob 登入系統時,所屬的使用者組
chgrp -更改使用者組所有權
在舊版 Unix 系統中,chown 命令只能更改檔案所有權,而不是使用者組所有權。為了達到目的,使用一個獨立的命令,chgrp 來完成。除了限制多一點之外,chgrp 命令與 chown 命令使用起來很相似。
更改使用者密碼
使用 passwd 命令,來設定或更改使用者密碼。命令語法:
passwd [user]
passwd 命令將會試著強迫你使用“強”密碼。這意味著,它會拒絕接受太短的密碼,與先前相似的密碼,字典中的單詞作為密碼,或者是太容易猜到的密碼
程序
- ps –報告當前程序快照
- top –顯示任務
- jobs –列出活躍的任務
- bg –把一個任務放到後臺執行
- fg –把一個任務放到前臺執行
- kill –給一個程序傳送訊號
- killall –殺死指定名字的程序
- shutdown –關機或重啟系統
檢視程序
比較常用的是ps命令:
[[email protected] ~]$ ps
PID TTY
TIME CMD
5198 pts/1 00:00:00 bash
10129 pts/1 00:00:00 ps
TTY 是 “Teletype” 的簡寫,是指程序的控制終端。這裡,Unix 展示它的年齡。TIME 欄位表示程序所消耗的 CPU 時間數量。
如果給 ps 命令加上選項,我們可以得到更多關於系統執行狀態的資訊:
[[email protected] ~]$ ps x
PID TTY STAT TIME COMMAND
2799 ? Ssl 0:00 /usr/libexec/bonobo-activation-server – ac
2820 ? Sl 0:01 /usr/libexec/evolution-data-server-1.10 --
and many more..
用 top 命令動態檢視程序
雖然 ps 命令能夠展示許多計算機執行狀態的資訊,但是它只是提供,ps 命令執行時刻的機器狀態快照。為了看到更多動態的資訊,我們使用 top 命令:
[[email protected] ~]$ top
top 程式連續顯示系統程序更新的資訊(預設情況下,每三分鐘更新一次),“top” 這個名字來源於這個事實,top 程式是用來檢視系統中“頂端”程序的。top 顯示結果由兩部分組成:最上面是系統概要,下面是程序列表,以 CPU 的使用率排序。
top - 14:59:20 up 6:30, 2 users, load average: 0.07, 0.02, 0.00
Tasks: 109 total,
1 running,
106 sleeping,
0 stopped,
2 zombie
Cpu(s): 0.7%us, 1.0%sy, 0.0%ni, 98.3%id, 0.0%wa, 0.0%hi, 0.0%si
Mem: 319496k total, 314860k used, 4636k free,
Swap: 875500k total, 149128k used, 726372k free,
PID
6244
USER PR NI VIRT RES SHR
me 39 19 31752 3124 2188
S %CPU
S
6.3
19392k buff
114676k cach
%MEM
1.0
TIME+
16:24.42 trackerd
....
其中系統概要包含許多有用資訊。下表是對系統概要的說明:
行號 | 欄位 | 意義 |
---|---|---|
1 | top | 程式名 |
14:59:20 | 當前時間 | |
up 6:30 | 這是正常執行時間。它是計算機從上次啟動到現在所執行的時間。在這個例子裡,系統已經運行了六個半小時 | |
2users | 有兩個使用者登入系統 | |
load average: | 載入平均值是指,等待執行的程序數目,也就是說,處於執行狀態的程序個數,這些程序共享 CPU。展示了三個數值,每個數值對應不同的時間週期。第一個是最後 60 秒的平均值,下一個是前 5 分鐘的平均值,最後一個是前 15 分鐘的平均值。若平均值低於 1.0,則指示計算機工作不忙碌 | |
2 | Tasks: | 總結了程序數目和各種程序狀態 |
3 | Cpu(s): | 這一行描述了 CPU 正在執行的程序的特性 |
0.7%us | 0.7% of the CPU is being used for user processes. 這意味著程序在核心之外 | |
1.0%sy | 1.0% 的 CPU 時間被用於系統(核心)程序 | |
0.0%ni | 0.0% 的 CPU 時間被用於”nice”(低優先順序)程序 | |
98.3%id | 98.3% 的 CPU 時間是空閒的 | |
0.0%wa | 0.0% 的 CPU 時間來等待 I/O | |
4 | Mem: | 展示實體記憶體的使用情況 |
5 | Swap: | 展示交換分割槽(虛擬記憶體)的使用情況 |
top 程式接受一系列從鍵盤輸入的命令。兩個最有趣的命令是 h 和 q。h,顯示程式的幫助螢幕,q,退出 top 程式。
中斷一個程序
在一個終端中,輸入 Ctrl-c,中斷一個程式。這意味著,我們禮貌地要求終止這個程式。通過這個技巧,許多(但不是全部)命令列程式可以被中斷。
把一個程序放置到後臺 (執行)
把終端看作是一個有前臺(表層放置可見的事物,像 shell 提示符)和後臺(表層之下放置隱藏的事物)(的裝置)。啟動一個程式,讓它立即在後臺執行,我們在程式命令之後,加上 “&” 字元.
[[email protected] ~]$ xlogo &
[1] 28236
[[email protected] ~]$
執行命令之後,這個 xlogo 窗口出現,並且 shell 提示符返回,同時列印一些有趣的數字。這條資訊是 shell 特性的一部分,叫做工作控制。通過這條資訊,shell 告訴我們,已經啟動了工作號為 1(“[1]”),PID 為 28236 的程式。
工作控制,這個 shell 功能可以列出從終端中啟動的任務。執行 jobs 命令,我們可以看到這個輸出列表:
[[email protected] ~]$ jobs
[1]+ Running
xlogo &
程序返回到前臺
一個在後臺執行的程序對一切來自鍵盤的輸入都免疫,也不能用 Ctrl-c 來中斷它。使用 fg命令,讓一個程序返回前臺執行:
[[email protected] ~]$ jobs
[1]+ Running
xlogo &
[[email protected] ~]$ fg %1
xlogo
fg 命令之後,跟隨著一個百分號和工作序號(叫做 jobspec)。如果我們只有一個後臺任務,那麼 jobspec 是可有可無的。輸入 Ctrl-c 來終止 xlogo 程式。
停止一個程序
有時候,我們想要停止一個程序,而沒有終止它。這樣會把一個前臺程序移到後臺等待。輸入 Ctrl-z,可以停止一個前臺程序。
使用 fg 命令,可以恢復已經停止的程式到前臺執行,或者用 bg 命令把程式移到後臺。
通過 kill 命令給程序傳送訊號
kill 命令被用來給程式傳送訊號。它最常見的語法形式看起來像這樣:
kill [-signal] PID...
1 |
HUP |
掛起。這是美好往昔的痕跡,那時候終端機通過電話線和調變解調器連線到遠端的計算機。這個訊號被用來告訴程式,控制的終端機已經“掛起”。通過關閉一個終端會話,可以說明這個訊號的作用。傳送這個訊號到終端機上的前臺程式,程式會終止。許多守護程序也使用這個訊號,來重新初始化。這意味著,當傳送這個訊號到一個守護程序後,這個程序會重新啟動,並且重新讀取它的配置檔案。Apache 網路伺服器守護程序就是一個例子。 |
---|---|---|
2 |
INT |
中斷。實現和 Ctrl-c 一樣的功能,由終端傳送。通常,它會終止一個程式。 |
9 |
KILL |
殺死。這個訊號很特別。鑑於程序可能會選擇不同的方式,來處理髮送給它的訊號,其中也包含忽略訊號,這樣呢,從不傳送 Kill 訊號到目標程序。而是核心立即終止這個程序。當一個程序以這種方式終止的時候,它沒有機會去做些“清理”工作,或者是儲存勞動成果。因為這個原因,把 KILL 訊號看作殺手鐗,當其它終止訊號失敗後,再使用它。 |
15 |
TERM |
終止。這是 kill 命令傳送的預設訊號。如果程式仍然“活著”,可以接受訊號,那麼這個訊號終止。 |
18 |
CONT |
繼續。在停止一段時間後,程序恢復執行。 |
19 |
STOP |
停止。這個訊號導致程序停止執行,而沒有終止。像KILL 訊號,它不被髮送到目標程序,因此它不能被忽略。 |
除了以上列出的 kill 命令最常使用的訊號之外,還有一些系統頻繁使用的訊號。以下是其它一些常用訊號列表:
3 |
QUIT | 退出 |
---|---|---|
11 | SEGV | 段錯誤。如果一個程式非法使用記憶體,就會發送這個訊號。也就是說,程式試圖寫入記憶體,而這個記憶體空間是不允許此程式寫入的。 |
20 | TSTP | 終端停止。當按下 Ctrl-z 組合鍵後,終端傳送這個訊號。不像 STOP 訊號,TSTP 訊號由目標程序接收,且可能被忽略。 |
28 | WINCH | 改變視窗大小。當改變視窗大小時,系統會發送這個訊號。一些程式,像 top 和 less 程式會響應這個訊號,按照新視窗的尺寸,重新整理顯示的內容。 |
呼,寫著寫著就寫不完了。本來打算就寫四千字左右的,沒想到不小心寫了七千、就這樣吧,剩下的在寫一篇也就差不多完了。好長時間沒有寫部落格了,十天後我要參加計算機考試,可是現在還沒學會,加油!你是最棒的!--範兒