(轉)Linux最常用指令及快捷鍵 Linux學習筆記
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學習筆記