1. 程式人生 > >(轉)Linux最常用指令及快捷鍵 Linux學習筆記

(轉)Linux最常用指令及快捷鍵 Linux學習筆記

.vimrc 如何 計算器 所有權 工作目錄 這樣的 正在 pts 詳細

Linux最常用指令及快捷鍵 Linux學習筆記

原文:http://blog.csdn.net/yanghongche/article/details/50827478

【摘自 鳥叔的私房菜】--轉載請註明出處

本文僅簡單記錄有哪些常用命令,具體用法需要具體查詢

常用基礎指令:

bc:計算器

cal:日歷

date:日期與時間

man:查詢指令或者相關檔案的用法 man page通常放在目錄/usr/share/man下面

man page中常用快捷鍵:

【Page Down】:向下翻一頁

【Page Up】:向下翻一頁

【Home】:去到第一頁

【End】:去到最後一頁

n,N:利用/或?來搜尋字符串時,可以用n來繼續下一個搜索(不論是/或?),利用N來進行反向搜索

q:結束這次的man page

man page中常用命令:

/string:向下搜索string這個字符串

?string:向上搜索string這個字符串

info:在線查詢指令或者相關檔案的用法,與man不同的是,info page將文件數據拆成一個一個的段落,每個段落用自己的頁面來撰寫,並且在各個頁面中還有類似網頁的超鏈接來跳轉到各不同的頁面中,每個獨立的頁面也被成為一個節點。所以可以將info page想成是文本模式的網頁顯示數據 info page默認放置在目錄 /usr/share/info/ 下面

info page中常用快捷鍵:

【space】:向下翻一頁

【Page Down】:向下翻一頁

【Page Up】:向上翻一頁

【tab】:在node之間移動,有node的地方,通常會以*顯示

【Enter】:當光標在node上面時,按下Enter可以進入該node

b:移動光標到該info畫面當中的第一個node處

e:移動光標到該info畫面當中的最後一個node處

n:前往下一個node處

p:前往上一個node處

u:向上移動一層

s(/):在info page當中進行搜索

h:顯示求助選單

?:指令一覽表

q:結束這次的infp page

whatis:man的簡略寫法,試用錢需要建立whatis數據庫-->[root@chy ~]#makewhatis

who:查看目前有誰在線(Linux的每個程序或者說是服務是在後臺執行的,因此看不到屏幕背後其實有可能有相當多人同時在主機上面工作)

netstat -a:查看網絡的聯機狀態

ps -aux:查看後臺執行的程序

shutdown:給在線使用者一些時間來結束他們的工作

幾個與開機/重啟相關的指令

sync:將數據同步寫入硬盤中的指令,這個指令在系統關機或重新啟動之前,很重要!最好多執行幾次

shutdown:慣用的關機指令

自由選擇關機模式:是要關機、重新啟動或進入單人操作模式均可

設定關機時間:可以設定成現在立刻關機,也可以設定某一個特定的時間才關機

自定義關機訊息:在關機之前,可以將自己設定的訊息傳送給在線user

僅發出警告訊息:有時可能要進行一些測試,而不想讓其他的使用者幹擾,或者是明白的告訴使用者某段時間要註意一下!可以使用shutdown來嚇一嚇使用者,單卻不是真的要關機啦!

選擇是否要fsck檢查文件系統

-t sec:-t後面加秒數,過幾秒後關機的意思(我嘗試後發現這個時間不是秒數)

-k:不要真的關機,只是發出警告訊息

-r:在將系統的服務停掉之後就重新啟動(常用)

-h:將系統的服務停掉後,立即關機(常用)

-n:不經過init程序,直接以shutdown的功能來關機

-f:關機並開機之後,強制略過fsck的磁盤檢查

-F:系統重新啟動之後,強制進行fsck的磁盤檢查

-c:取消已經在進行的shutdown指令內容

例子:

[root@www ~]#/sbin/shutdown -h 10 ‘I will shutdown after 10 mins‘ 告訴大家這部機器會在十分鐘後關閉,並且會顯示在目前登陸者的屏幕前方

時間參數務必加入指令中,柔則shutdown會自動跳到run-level1(單人維護的登錄情況),這樣就傷腦筋了

[root@www ~]#shutdown -h now 立刻關機,now相當於時間為0的狀態

[root@www ~]#shutdown -h 20:25 系統在今天的20:25分會關機,若在21:25才下達此指令,則隔天才關機

[root@www ~]#shutdown -h +10 系統再過十分鐘後自動關機

[root@www ~]#shutdown -r now 系統立刻重新啟動

[root@www ~]#shutdown -r +30 ‘This system will reboot‘ 顯示後面的訊息給所有在線的使用者

[root@www ~]#shutdown -k now ‘This system will reboot‘ 僅發出警告信件的參數!系統並不會關機!嚇唬人!

reboot,halt, poweroff:重新啟動,關機 這些關機指令均已在關機前進行了sync這個工具的呼叫,不過多做幾次總是比較放心點

[ ls ]: ls -al .bashrc* 查看文件名包含.bashrc的所有文件的詳細信息

ls -ald testing testing/testing

drwxr--r-- 2 root root 4096 Sep 19 16:01 testing

-rw------- 1 root root 0 Sep 19 16:01 testing/testing

[ mkdir ]:建立新目錄 [root@www tmp]#mkdir testing

[ touch ]:建立空檔案 [root@www tmp]#touch testing/testing

[ su ]:切換用戶身份 [root@www tmp]#su - myname

[ cat ]:將檔案內容讀出來 [root@www tmp]#cat .bashrc

技術分享圖片

技術分享圖片

技術分享圖片

[ cat ]:由第一行開始顯示檔案內容

[ tac ]:從最後一行開始顯示,可以看出tac是cat的倒著寫

[ nl ]:顯示的時候,順道輸出行號

[ more ]:一頁一頁的顯示檔案的內容

[ less ]:與more類似,但是可以往前翻頁

[ head ]:只看頭幾行

[ tail ]:只看尾巴幾行

[ od ]:以二進制的方式讀取檔案內容

技術分享圖片

技術分享圖片

[ ll ]:相當於ls -l 是被做出來的一個命令別名

[ touch ]:變更檔案的時間 即使我們復制一個檔案時,復制所有的屬性,也沒有辦法復制ctime這個屬性,ctime可以記錄這個檔案最近的狀態被改變的時間。touch最常被使用的情況是:1. 建立一個空的檔案 2. 將某個檔案日期修訂為目前(mtime 與 atime)

[ chattr ]:設定其他的系統隱藏屬性

[ lsattr ]:查看其他的系統隱藏屬性

[ umask ]:檔案預設權限 指定目前用戶在建立檔案或目錄時候的權限默認值

常用快捷鍵:

【tab】【tab】:接在一串挃令的第一個字的後面,則為命令補全 接在一串指令的第二個字以後時,則為『檔案補齊』

【Ctrl】-c:將正在運作中的指令中斷,如耗費時間較長的查詢指令正在運作中,中斷起繼續查詢

【Ctrl】-d:鍵盤輸入結束 也可以用來取代命令exit

Tips:

1. 常用軟件的說明文檔所在位置:/usr/share/doc 需要多多查閱這個目錄來了解各個軟件的版本信息

2.

? 在文字接口下,有任何你丌知道的挃令戒文件格式這種玩意兒,但是你想要了覽他,請趕忚使用
man 戒者是 info 來查詢!
? 而如果你想要架謳一些其他的朋務,戒想要利用一整組軟件來達成某項功能時,請趕忚到
/usr/share/doc 底下查一查有沒有該朋務的說明檔喔!
? 另外,再次的強調,因為 Linux 畢竟是外國人發明的,所以中文文件確實是比較少的! 但是丌
要害怕,拿本英文字典在身邊吧!隨時查閱!丌要害怕英文喔!

3. 通常shutdown和reboot比較常用,通信啟動時,會下達如下指令: [root@www ~]#sync;sync;sync;reboot

4. Linux共有七種執行等級,

run level 0:關機

run level 3:純文本模式

run level 5:含有圖形接口模式

run level 6:重新啟動

使用init指令來進行各個模式間的切換 [root@www ~]#init 0 關機

5. 所有系統上的賬號與一般身份使用者,還有root的相關信息,都是記錄在/etc/passwd這個檔案內

6. 個人密碼記錄在/etc/shadow 這個檔案下

7. Linux所有組名都記錄在/etc/group內 以上三個檔案是Linux系統裏面賬號、密碼、群組信息的集中地,不能隨便刪除這三個檔案

8. 隱藏文件-----文件名第一個字符為 . 的檔案

9. ls -al列出的檔案信息意義依次為:

1. 檔案類型權限:這一欄共有十個字符 dr-wxr-xr-x -rw-r--r--

第一個字符:代表檔案是 目錄、檔案或鏈接文件等等

[ d ] 目錄 例如 .gconf

[ - ] 檔案 例如 install.log

[ l ] 連結檔(link file)

[ b ] 裝置文件裏面的可供儲存的接口設備(可隨機存取裝置)

[ c ] 裝置文件裏面的串行端口設備,例如鍵盤、鼠標(一次性讀取裝置)

剩下的字符:三個為一組,且均為 rwx 的三個參數的組合。 [ r ] 代表刻度( read ), [ w ] 代表可寫( write ),[ x ] 代表可執行(execute),這三個權限的位置不會改變,若沒有權限,就會出現減號[ - ]

第一組:檔案擁有者的權限

第二組:同群組的權限

第三組:其他非本群組的權限

2. 第二欄表示有多少檔名鏈接到此節點(i-node)

3. 第三欄表示這個檔案(或目錄)的擁有者賬號

4. 第四欄表示這個檔案的所屬群組

5. 第五欄為這個檔案的容量大小,默認單位為bytes

6. 第六欄為這個檔案的建檔日期或者是最近的修改日期 若檔案被修改的時間距離現在太久,那麽時間部分會僅顯示年份

7. 第七欄為這個檔案的檔名 如果檔名之前多一個 . ,則代表這個檔案為 隱藏檔

10. 如果在純文本的終端機模式中出現亂碼,可以嘗試用 LANG=en_US 來修改語言

11. 想讓系統默認語言變成英文的話,可以修改系統配置文件 /etc/sysconfig/i18n,利用nano來修改該檔案的內容,使LANG這個變量成為上述的內容即可

文本編輯器:

nano:

超簡單文本編輯器

vi:

vim:

打包工具:

gunzip

tar

技術點:

1. 任何一個檔案(文件)都具有 User, Group, Others 三種身份的個別權限 但是 root 是萬能的 使用者身份與該使用者所支持的群組概念,在Linux的世界裏面是相當重要的,它可以讓多任務Linux環境變得更容易管理

1. 使用者

檔案擁有者 把檔案設定成只有檔案擁有者,就是我,才能看與修改這個檔案的內容

2. 群組

3. 其他人

2. 改變文件屬性與權限

chgrp:改變檔案所屬群組 要被改變的組名必須要在/etc/group 檔案內存在才行 [root@www ~]#chgrp users install.log

chown:改變檔案擁有者 用戶必須是已存在系統中的賬號,也就是在/etc/passwd這個檔案中有記錄的用戶名稱才能改變

還可以順便修改群組的名稱 [root@www ~]#chown bin install.log 將install.log的擁有者改為bin這個賬號

[root@www ~]#chown root:root install.log 將install.log的擁有者與群組改回為root

[root@www ~]#chown .sshd install.log 單純的修改所屬群組

chmod:改變檔案的權限,SUID,SGID,SBIT 等等的特性

3. 什麽時候使用chown和chgrp?

復制行為(cp)會復制執行者的屬性與權限,[root@www ~]#cp 來源檔案 目標檔案 如果原檔案是-rw-r--r--,則目標檔案需要改為用戶可以使用的權限 -rw-rw-rw-

4. 只有 r 確實可以讓用戶讀取目錄的文件名列表,不過詳細的信息卻還是讀不到的,同時也不能將該目錄編程工作目錄(用 cd 進入該目錄之意)

技術分享圖片

技術分享圖片

5. 檔案種類:

1. 正規檔案(regular file) (-) 例如:[-rwxrwxrwx ]

純文本檔案(ASCII):

是Linux系統中最多的一種文件類型,內容為我們可以直接讀到的數據,例如數字、字母等等。幾乎只要可以用來作為設定的檔案都屬於這一種文件類型。 [root@www ~]#cat ~/.bashrc 將檔案內容讀出來

二進制文件(binary):

我們的系統其實僅認識且可以執行二進制文件,Linux當中的可執行文件就是這種格式(scripts,文字型批處理文件不算)。指令 cat 就是一個 binary file

數據格式文件(data):

有些程序在運行的過程中會讀取某些特定格式的檔案,那些特定格式的檔案就被稱為數據文件(data file)。舉例來說,我們的Linux在使用者登錄時,都會講登錄的數據記錄在/var/log/wtmp那個檔案內,該檔案是一個 data file,他能夠透過 last 這個挃令讀出來! 但是使用 cat 時,會讀出亂碼~因為他是屬二一種特殊格式的檔案。

2. 目錄(directory)

3. 鏈接檔(link)

就是類似 Windows 系統底下的快捷方式啦! 第一個屬性為 [ l ](英文 L 的小寫),例如[lrwxrwxrwx] ;

4. 設備與裝置文件(device)

與系統周邊及儲存等相關的一些檔案,通常都集中在/dev這個目錄下

區塊(block)設備檔:

就是一些儲存數據,以提供系統隨機存取的接口設備,硬盤與軟盤就是啦。可以隨機在硬盤的不同區塊讀寫。 查看/dev/sda 第一個屬性為[ b ]

字符(character)設備文件:

是一些穿行端口的接口設備,例如鍵盤、鼠標等等。這些設備的特色是一次性讀取,,不能夠截斷輸出。距離來說,不可能讓鼠標跳到另一個畫面,而是滑動到另一個地方。第一個屬性為 [ c ]

5. 資料接口文件(sockets)

這種類型的文件都被用在網絡上的數據承接。可以啟動一個程序來監聽客戶端的要求,而客戶端可以透過這個socket來進行數據的溝通。第一個屬性為 [ s ],最長在/var/run 這個目錄中看到這種文件

6. 數據傳送文件(FIFO, pipe)

FIFO也是一種特殊的文件類型,他主要的目的在解決多個程序同時存取一個檔案所造成的錯誤問題。FIFO 是 first-in--first-out 的縮寫。第一個屬性為 [ p ]

6. 在默認權限的屬性上,目錄與檔案是不一樣的。x 權限對於目錄是非常重要的,但是一般檔案的建立則不應該有執行的權限,因為一般檔案通常是用在於數據的記錄。

1. 若使用者建立為 檔案 則預設 沒有可執行(x)權限,亦即只有 rw 這兩個項目,也就是最大為 666 分,預設權限為:-rw-rw-rw-

2. 若用戶建立為 目錄,則由於 x 與是否可以進入此目錄有關,因此默認為所有權限均開放,亦即777:drwxrwxrwx

技術分享圖片

技術分享圖片

7. 檔案隱藏屬性

技術分享圖片

=====================================================================================

程序編寫相關

1. vim常用指令

2. 區塊選擇 p是paste粘貼

技術分享圖片

3. 多檔案編輯 vim後跟多個文件名 4yy復制4行

技術分享圖片

4. 多窗口功能 ctrl+f(相當於pageup) ctrl+b(相當於pagedown)

方法: :sp filename

技術分享圖片

5. vim環境設定與記錄:環境設定檔案~/.vimrc 記錄動作的檔案是~/.viminfo

整體的檔案是在/etc/vimrc下,單不建議修改它,可以修改~/.vimrc這個檔案

技術分享圖片

技術分享圖片

技術分享圖片

6. dos2unix unix2dos DOS與Linux斷行字符不同,用cat -A 來觀以DOS(Windows系統)建立的檔案的特殊格式,發現DOS使用的斷行字符為 ^M&,我們稱為CR與LF兩個符號,而在Linux底下,則僅有LF($)這個斷行符號。這個斷行符對於Linux的影響很大。在Linux底下的指令在開始執行時,判斷依據是Enter,而Linux的Enter為LF符號,由於DOS的斷行符號是CRLF,也就多了一個^M的符號出來,在這樣的情況下,如果是一個shell script的程序檔案,將可能造成程序無法執行狀態

7. 語系編碼 big5和utf8 使用 iconv 進行互轉 這個指令支持的語系非常多,除了正體中文的big5,utf8編碼之外,也支持簡體中文的gb2312。如果將正體中文的utf8轉成簡體中文的utf8編碼時,就得費些功夫了,舉例來說,如果將剛剛那個 vi.utf8 轉成簡體的 utf8 時,可以這樣做:

[root@www vitest]# iconv -f utf8 -t big5 vi.utf8 | \

> iconv -f big5 -t gb2312 | iconv -f gb2312 -t utf8 -o vi.gb.utf8

8. 技術分享圖片

9. 系統的合法shell 與 /etc/shells:系統上合法shell要寫入/etc/shells這個檔案,系統某些服務在運作過程中,會去檢查使用者能夠使用的shells,而這些shell的查詢就藉由 /etc/shells 這個檔案

10. Bash shell 的功能 /bin/bash 是Linux預設的shell

1. 命令編修能力(history) 記憶使用過的指令 記錄在~/.bash_history中,記錄前一次登錄以前所執行過的指令,這一次登錄所執行的指令都被暫存在內存中,當成功的註銷系統後,該指令記憶才會記錄到.bash_history中

2. 命令與檔案補全功能(tab 按鍵) 在一串指令的第一個字的後面,則為命令補全 在一串指令的第二個字以後,則為檔案補全

3. 命令別名設定功能(alias) alial lm=‘ls -al‘

4. 工作控制、前景背景控制 使用前景、背景的控制可以讓工作進行的更為順利。至於工作控制的用途則更廣,可以隨時將工作丟到背景中執行,不怕不小心使用了ctrl+c來停掉程序,也可以在單一登錄的環境中,達到多任務的目的。

5 .程序化腳本(shell scripts)

6. 通配符(Wildcard) 除了完整的字符串之外,bash還支持許多的通配符來幫助用戶查詢與指令下達,例如 ls -l /usr/bin/X* 查詢以X為開頭的檔案

11. Bash shell的內建命令 type 判斷指令是來自於外部或是內建在bash當中的

技術分享圖片

技術分享圖片

利用type搜尋後面的名稱時,如果後面接的名稱並不能以執行檔的狀態被找到,那麽該名稱是不會被顯示出來的,也就是說,type主要在找出執行檔而不是一般檔案名。所以type也可以用來作為類似which指令的用途,找指令用的。

12. 指令的下達

當我們順利的在終端機(tty)上面登入後,Linux就會依據/etc/passwd檔案的設定給我們一個shell(預設是bash)

13. Shell的變量功能 Linux是多人多任務的環境,每個人登入系統都能取得一個bash,每個人都能夠使用bash下達mail這個指令來收受自己的郵件,問題是,bash是如何得知你的郵件信箱是哪個檔案?這就需要變量的幫助了。

14. 影響bash環境操作的變量 PATH、HOME、MAIL、SHELL等等,為區別與自定義變量的不同,環境變量通常以大寫字符來表示

15. 腳本程序(shell script)的好幫手

16. 變量的取用與設定 echo $HOME

變量的設定規則

1. 變量與變量內容以一個等號 = 來鏈接 myname=VBirt

2. 等號兩邊不能直接接空格符 例如:myname = VBird myname=VBirt Tsai 錯誤

3. 變量名稱只能是英文字母與數字,但是開頭字符不能是數字,例如: 2myname=VBird 錯誤

4. 變量內容若有空格符可使用雙引號或單引號將變量內容結合起來

雙引號內的特殊字符如 $ 等,可以保持原有的特性,如: var="lang is &LANG" 則 echo $var可得 lang is en_US

單引號內的特殊字符則僅為一般字符(純文本),如:var=‘lang is $LANG‘ 則 echo $var 可得 lang is $LANG

5. 可用轉換符 \ 將特殊符號(如 Enter $ \ 空格符 ‘ 等)變成一般字符

6. 在一串指令中,還需要藉由其他的指令提供的信息,可以使用反單引號 `指令` 或 $指令。例如:想要取得核心版本的設定 version=$(uname -r) 再 echo $version 可得 2.6.18-128.el5

7. 若該變量為擴增變量內容時,則可用 "$變量名稱" 或 $(變量) 累加內容,如: PATH="$PATH":/home/bin

8. 若該變量需要在其他子程序執行,則需要以export來使變量變成環境變量,如:export PATH

9. 通常大寫字符為系統默認變量,自行設定變量可以使用小寫字符,方便判斷

10. 取消變量的方法為使用unset,如: unset myname

17. 子程序?在目前這個shell的情況下,區啟動另一個新的shell,新的shell就是子程序啦。一般情況下,父程序的自定義變量是無法在子程序內使用的。但是通過export將變量變成環境變量後,就能夠在子程序底下應用了。

例如:進入到目前核心的模塊目錄

[root@www ~]#cd /lib/modules/`uname -r`/kernel

[root@www ~]#cd /lib/modules/$(uname -r)/kernel

(轉)Linux最常用指令及快捷鍵 Linux學習筆記