1. 程式人生 > >SHELL 提示符學習彙總_2

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 –以另一個使用者的身份來執行 shell
  • sudo –以另一個使用者的身份來執行命令
  • 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+xgo=rw 給檔案擁有者執行許可權並給組和其他人讀和執行的許可權。多種設定可以用逗號分開。

更改身份

  • 登出系統並以其他使用者身份重新登入系統。
  • 使用 su 命令。 -以其他使用者身份和組 ID 執行一個 shell
  • 使用 sudo 命令。以另一個使用者身份執行命令

chown -更改檔案所有者和使用者組

chown 命令被用來更改檔案或目錄的所有者和使用者組。使用這個命令需要超級使用者許可權。chown 命令的語法:
chown [owner][:[group]] file...

  • bob把檔案所有者從當前屬主更改為使用者 bob
  • bob: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 命令最常使用的訊號之外,還有一些系統頻繁使用的訊號。以下是其它一些常用訊號列表:

QUIT 退出
11 SEGV 段錯誤。如果一個程式非法使用記憶體,就會發送這個訊號。也就是說,程式試圖寫入記憶體,而這個記憶體空間是不允許此程式寫入的。
20 TSTP 終端停止。當按下 Ctrl-z 組合鍵後,終端傳送這個訊號。不像 STOP 訊號,TSTP 訊號由目標程序接收,且可能被忽略。
28 WINCH 改變視窗大小。當改變視窗大小時,系統會發送這個訊號。一些程式,像 top 和 less 程式會響應這個訊號,按照新視窗的尺寸,重新整理顯示的內容。

呼,寫著寫著就寫不完了。本來打算就寫四千字左右的,沒想到不小心寫了七千、就這樣吧,剩下的在寫一篇也就差不多完了。好長時間沒有寫部落格了,十天後我要參加計算機考試,可是現在還沒學會,加油!你是最棒的!--範兒