天天看點

Linux 常用指令

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chinahuyong/article/details/2573399

在介紹常用指令之前,先介紹相關的幾個的概念,大家可以簡單看看。

什麼是Linux終端

    鍵盤和現實器合稱為終端,也稱控制台,一台計算機的IO裝置就是一個實體控制台;在一台機器上用軟體方法實作多個鄉互不幹擾、獨立工作的控制台界面,就是實作了多個虛拟控制台。Linux虛拟控制台有六個,如果直接方式選擇X WINDOW,那麼x window在第7個虛拟終端上。在 Linux 系統中的字元操作控制台界面,通過組合鍵 Alt + (F1 - F6) 可以切換到另外的控制台。在圖像使用者界面下通過組合鍵 Ctrl+Alt + (F1 - F6)可以切換到字元控制台, 每一個控制台是系統中一個完全獨立的會話,不同的使用者可以同時使用。虛拟控制台使Linux成為一個多使用者作業系統。這一多控制台的特點與 Windows 中的多桌面不同。在 Linux 中,每一個控制台可以分别由完全不同的使用者來控制。例如,您可能在控制台 1 中以 root身份登入,而在控制台 2 中以 yifan 身份登入。兩個控制台在各自的使用者空間中運作不同的程式。如果您是在圖形模式下,那麼您可以打開一個 終端 (terminal)以進入控制台視窗。通常在桌面的任務條上會有終端的按鈕。您也可以從上下文菜單(在桌面上單擊右鍵)打開終端 。

什麼是shell

   shell是系統使用者界面,它提供使用者與核心互動的接口。使用者就能通過鍵盤輸入指令來操作計算機了,它再将執行結果顯示給使用者。shell使用者界面,也就是我們常說的字元操作界面。shell是一個指令解釋器,擁有自己内建的 shell 指令集。此外,shell也能被系統中其他有效的Linux 實用程式和應用程式(utilities and application programs)所調用。 shell 是如何執行指令解釋的,shell 首先檢查指令是否是内部指令,不是的話再檢查是否是一個應用程式,這裡的應用程式可以是Linux本身的實用程式,比如ls 和 rm,也可以是購買的商業程式,比如 xv,或者是公用軟體(public domain software),就象 ghostview。然後shell試着在搜尋路徑裡尋找這些應用程式。搜尋路徑是一個能找到可執行程式的目錄清單。如果你鍵入的指令不是一個内部指令并且在路徑裡沒有找到這個可執行檔案,(學過DOS的朋友,一定對内部,外部指令的含義很了解)将會顯示一條錯誤資訊。而如果指令被成功的找到的話,shell的内部指令或應用程式将被分解為系統調用并傳給Linux核心。

shell的種類

目前流行的Shell有 bash、ksh、csh

  bash是Linux系統預設使用的Shell,它由Brian Fox和Chet Ramey共同完成,是Bourne Again Shell的縮寫,内部指令一共有40個。Linux使用它作為預設的Shell是因為它有以下的特色:

  (1)可以使用類似DOS下面的doskey的功能,用上下方向鍵查閱和快速輸入并修改指令。

  (2)自動通過查找比對的方式,給出以某字串開頭的指令。

  (3)包含了自身的幫助功能,你隻要在提示符下面鍵入help就可以得到相關的幫助。

  ksh是Korn Shell的縮寫,由Eric Gisin編寫,共有42條内部指令。該Shell最大的優點是幾乎和商業發行版的ksh完全相容,這樣就可以在不用花錢購買商業版本的情況下嘗試商業版本的性能了。

  csh是Linux比較大的核心,它由以William Joy為代表的共計47位作者編成,共有52個内部指令。該Shell其實是指向/bin/tcsh這樣的一個Shell,也就是說,csh其實就是tcsh。

一凡在此介紹Linux 常用指令,主要是介紹bash的指令

bash 主要有支援三種通配符:

* 比對任何字元和任何數目的字元

? 比對任何單字元

[...] 比對任何包含在括号裡的單字元

有的還支援-,它表示字元範圍,如[a-h]表示從a到h的任意一個字元

bash指令的一般格式如下:指令名【選項】【參數1】【參數2】...【選項】是對指令的特别定義,以減号(-)開始,多個選項可以用一個減号(-)連起來,如ls -l -a 與ls -la 相同。【參數】提供指令運作的資訊,或者是指令執行過程中所使用的檔案名。使用分号(;)可以将兩個指令隔開,這樣可以實作一行中輸入多個指令。指令的執行順序和輸入的順序相同。有的參數也以--開頭。指令、選項和參數可以用空格或TAB隔開。

bash指令補全

在送入指令的任何時刻,可以按<Tab>鍵,當這樣做時,系統将試圖補全此時已輸入的指令。如果已經輸入的字元串不足以唯一地确定它應該使用的指令,系統将發出警告聲。再次按<Tab>鍵,系統則會給出可用來用來補全的字元串清單。使用指令補全功能,可以提高使用長指令或操作較長名字的檔案或檔案夾的都是非常有意義的。

曆史指令

系統會把過去輸入過的指令記憶下來,隻要按方向鍵中的上下箭頭,就可以選擇以前輸入過的指令了。

聯機幫助

可以通過man指令來檢視任何指令的聯機幫助資訊。它将指令名作為參數,該指令的文法格式為: man 【指令名】 在任何指令之後給--help參數,也可以顯示該指令的幫助資訊。

Linux的檔案與檔案類型,和DOS,WIN有點相似,在此不做介紹。注意LINUX檔案名區分大小寫。

目錄和檔案的基本操作

1、檔案檢視和連接配接指令

将檔案連接配接到一起,用“>”操作将幾個檔案組合成一個新的檔案,或者是用“>>”把檔案追加到已存檔案的後面。

文法:

cat  [參數]filelist

-n或--number:由1開始對所有輸出的行數進行編号

-b或--number-nonblank:和n相似,但對空行不編号

-s:遇到兩行空白,替換為一行空白

-v:顯示不可列印的字元

filelist:用于結合檔案的可選清單。

2、分屏顯示指令

類似于cat,但它是每次顯示一頁,按空格顯示下一頁,按<q>鍵退出,按<h〉鍵給出幫助資訊。該指令還有搜尋字元的功能。

文法

more  [選項] <file>...

-num:指定每屏顯示的行數

-d:在螢幕下面提示資訊

-l:more預設遇到送紙符^L會暫停,使用該選項可以取消該功能

-f:計算實際行數

-p:不是以卷動的方式顯示每頁,而是先清屏再顯示

-u:不顯示下劃線

+/<string>:在檔案中搜尋字元串string,并顯示字元串所在頁的内容

+/<num>:從第num行開始顯示

file用于顯示的檔案

3、按頁顯示檔案。類似于more,但允許在檔案中前後移動。

less [參數]檔案名

-i:查詢時忽略大小寫。

-num:指定每頁顯示的行數

-p<string>:在檔案中搜尋字元串string,并從第一個符合條件的地方開始顯示

-S:當某列的内容超過顯示畫面的寬度時,直接将超出的部分截斷舍棄,預設情況下會把超出的部分折回來顯示

複制、删除和移動指令

1、拷貝檔案。

 文法:

 cp[選項]<source><dest>

 cp[選項]<source>....<directory>

 -r  遞歸拷貝目錄

 -f  删除已存在的目标檔案再複制

 -a  在備份中盡可能的保留源檔案的結構和屬性。

2、删除

   rm [選項] <name>....

   該指令用于逐個删除指定的檔案或目錄。預設清苦下,<name>為檔案名,rm指令不删除目錄,隻有指定-d選項時候,才能删除目錄

-f  強制删除,包括隻讀檔案,并且不給使用者任何提示

-i  在删除每個檔案時提示使用者

-r  遞歸删除目錄下的内容

移動或更名檔案和目錄

mv  [參數]源檔案目标檔案

-f  強制涵蓋已有檔案。

-i  在涵蓋已有檔案前提示使用者。

-u  在目标檔案的時間比原檔案新時不涵蓋目标檔案。

-v  在移動檔案時輸出相關資訊。

建立和删除目錄指令

1、建立目錄指令

mkdir  [參數]目錄名

-p  如果父目錄不存在,建立所有的父目錄。

2、删除空目錄。

rmdir  [參數]目錄清單

-p 表示删除指定目錄後,如果該目錄的父目錄為空,則将一并删除

切換工作目錄和顯示目錄指令

1、改變目前工作目錄。

cd 目錄名

如果後面不加目錄名,則傳回使用者的根目錄,此外使用者必須擁有進入該目錄的權限。另外cd ~ 指切換到自己的主目錄,cd ../.. 可以切換到單前目錄的上上目錄

2、顯示正在工作或目前的目錄名。

pwd [參數]

3、列出目錄中的内容。

ls [參數][目錄]

-A  顯示所有檔案,包括隐藏檔案(以“.”開頭的檔案,但不列出目前目錄“.”和上級目錄“..”

-a  顯示所有檔案,包括“.”和“..”目錄。 

-d  隻列出目錄名;不列出它的内容。

-l  給出檔案的長清單。包括權限、所有權、大小、檔案名、最後修改時間等等。

-t   按時間順序顯示

-F   在列出的檔案名後以符号表示檔案類型,一般檔案不加符号,可執行檔案“*”,目錄加“/”

-R   若目錄下有檔案,則遞歸地列出目錄下的檔案

查找與定位指令

1、查找檔案或目錄指令

格式

find [path....] [expression]

該指令在目錄樹層次中從path開始向下查找檔案,将符合expression要求的檔案列出來。輸入指令中第一個以

-、(、)、,、!開始的參數作為expression的部分,在這些符号之前的參數都被認為是要搜尋的路徑,在這

些符号之後的才被認為是expression的部分,如果不給出path,則使用目前工作的目錄,如果不給出expressi

on,則使用-print作為預設expression

expression的參數有二三十個之多,這裡隻提幾個常用的

-amin<n> 在過去n分鐘内被通路過的檔案

-anewer<file> 比檔案file更晚被通路過的檔案

-atime<n> 在過去n天被通路過的檔案

-cmin<n>  在過去n分鐘内修改過的檔案

-cnewer<file> 比檔案file更新的檔案

-ctime<n> 在過去n天内修改過的檔案

-empty 内容為空的檔案

-gid<n>或-group<name> gid是n或是group名是name的檔案

-ipath<p>,-path<p> 路徑名稱符合p的檔案,ipath表示忽略大小寫

-name<name>,-iname<name> 檔案名稱符合name的檔案,iname表示忽略大小寫

-size<n機關> 檔案大小是n個機關

-type<檔案類型〉檔案類型的含義與名利ls的選型一樣

-pid<n> 程序id是n的檔案

exp1 exp2 或者exp1 -a exp2 或者exp1 -and exp2 含義相同,表示同時滿足這兩個條件

!expr或者-not expr 表示expr的否定

exp1 -o exp2 或者exp1 -or exp2 表示滿足其中一個條件就可以

2、檔案定位指令

locate 讓使用者可以很快速的搜尋檔案系統内是否有指定的檔案。其方法是先建立一個包括系統内所有檔案

名稱及路徑的資料庫,之後當尋找時就隻需查詢這個資料庫,而不必實際深入檔案系統之中了。在一般的

distribution 之中,資料庫的建立都被放在 contab 中自動執行。一般使用者在使用時隻要用

locate [選項] <search string>

-u 建立資料庫,-u 會由根目錄開始

-U 建立資料庫,-U 則可以指定開始的位置。

-e 将排除在尋找的範圍之外。

-l 如果 是 1.則啟動安全模式。在安全模式下,使用者不會看到權限無法看到的檔案。這會始速度減慢,因

為 locate 必須至實際的檔案系統中取得檔案的權限資料。

-f 将特定的檔案系統排除在外,例如我們沒有到理要把 proc 檔案系統中的檔案放在資料庫中。

-q 安靜模式,不會顯示任何錯誤訊息。

-n 至多顯示 個輸出。

-r 使用正規運算式 做尋找的條件。

-o 指定資料庫存的名稱。

-d 指定資料庫的路徑

-h 顯示輔助訊息

-v 顯示更多的訊息

-V 顯示程式的版本訊息

連接配接指令

ln [選項] <source> <dest>

Linux/Unix 檔案系統中,有所謂的連結(link),我們可以将其視為檔案的别名,而連結又可分為兩種 : 硬連

結(hard link)與軟連結(symbolic link),硬連結的意思是一個檔案可以有多個名稱,而軟連結的方式則是産

生一個特殊的檔案,該檔案的内容是指向另一個檔案的位置。硬連結是存在同一個檔案系統中,而軟連結卻可

以跨越不同的檔案系統。 ln source dist 是産生一個連結(dist)到 source,至于使用硬連結或軟鍊結則由

參數決定。 不論是硬連結或軟鍊結都不會将原本的檔案複制一份,隻會占用非常少量的磁碟空間。

-f : 鍊結時先将與 dist 同檔名的檔案删除

-d : 允許系統管理者硬鍊結自己的目錄

-i : 在删除與 dist 同檔名的檔案時先進行詢問

-n : 在進行軟連結時,将 dist 視為一般的檔案

-s : 進行軟鍊結(symbolic link)

-v : 在連結之前顯示其檔名

-b : 将在鍊結時會被覆寫或删除的檔案進行備份

改變檔案或目錄的時間指令

touch [選項] <file1> [<file2>....]

-a 改變檔案的讀取時間記錄。

-m 改變檔案的修改時間記錄。

-c 假如目的檔案不存在,不會建立新的檔案。與 --no-create 的效果一樣。

-f 不使用,是為了與其他 unix 系統的相容性而保留。

-r 使用參考檔的時間記錄,與 --file 的效果一樣。

-d 設定時間與日期,可以使用各種不同的格式。

-t 設定檔案的時間記錄,格式與 date 指令相同。

--no-create 不會建立新檔案。

備份指令

tar  <主選項> [輔選項] <檔案或目錄>

tar可以為檔案和目錄建立檔案。利用tar,使用者可以為某一特定檔案建立檔案(備份檔案),也可以在檔案中

改變檔案,或者向檔案中加入新的檔案。tar最初被用來在錄音帶上建立檔案,現在,使用者可以在任何裝置上創

建檔案,如軟碟。利用tar指令,可以把一大堆的檔案和目錄全部打包成一個檔案,這對于備份檔案或将幾個

檔案組合成為一個檔案以便于網絡傳輸是非常有用的。Linux上的tar是GNU版本的。

主選項:

c 建立新的檔案檔案。如果使用者想備份一個目錄或是一些檔案,就要選擇這個選項。

r 把要存檔的檔案追加到檔案檔案的未尾。例如使用者已經作好備份檔案,又發現還有一個目錄或是一些檔案忘

記備份了,這時可以使用該選項,将忘記的目錄或檔案追加到備份檔案中。

t 列出檔案檔案的内容,檢視已經備份了哪些檔案。

u 更新檔案。就是說,用新增的檔案取代原備份檔案,如果在備份檔案中找不到要更新的檔案,則把它追加到

備份檔案的最後。

x 從檔案檔案中釋放檔案。

輔選項:

b 該選項是為錄音帶機設定的。其後跟一數字,用來說明區塊的大小,系統預設值為20(20*512 bytes)。

f 使用檔案檔案或裝置,這個選項通常是必選的。

k 儲存已經存在的檔案。例如我們把某個檔案還原,在還原的過程中,遇到相同的檔案,不會進行覆寫。

m 在還原檔案時,把所有檔案的修改時間設定為現在。

M 建立多卷的檔案檔案,以便在幾個磁盤中存放。

v 詳細報告tar處理的檔案資訊。如無此選項,tar不報告檔案資訊。

w 每一步都要求确認。

z 用gzip來壓縮/解壓縮檔案,加上該選項後可以将檔案檔案進行壓縮,但還原時也一定要使用該選項進行解

壓縮。

tar的最基本的用法舉例

  tar -cf all.tar *.jpg

  這條指令是将所有.jpg的檔案打成一個名為all.tar的包。-c是表示産生新的包,-f指定包的檔案名。

   tar -rf all.tar *.gif

  這條指令是将所有.gif的檔案增加到all.tar的包裡面去。-r是表示增加檔案的意思。

    tar -uf all.tar logo.gif

  這條指令是更新原來tar包all.tar中logo.gif檔案,-u是表示更新檔案的意思。

  tar -tf all.tar

  這條指令是列出all.tar包中所有檔案,-t是列出檔案的意思

  tar -tvf all.tar |more

  這條指令是列出all.tar包中所有檔案,并以分屏方式

壓縮和解壓指令

gzip指令是用來壓縮檔案的。它不僅可以用來壓縮大的、較少使用的檔案以節省磁盤空間,還可以和tar指令

一起構成Linux作業系統中比較流行的壓縮檔案格式。據統計,gzip指令對文本檔案有60%~70%的壓縮率。

gzip [選項] [檔案名]

-c 輸出并保留原檔案

-d 将壓縮檔案解壓,預設情況下為壓縮

-l 顯示壓縮檔案的壓縮的提示資訊

-r 遞歸的壓縮或解壓

-t,可以用來測試壓縮檔案的完整性。如果檔案正常,gzip不會給出任何顯示。如果想看到OK這兩個字母,可

以在測試某個檔案時使用-tv參數。

-v 對每個操作的檔案,顯示檔案名和壓縮比例

unzip 指令位于/usr/bin目錄中,它們和MS DOS下的pkzip、pkunzip及MS Windows中的Winzip軟體功能一樣,

将檔案壓縮成.zip檔案,以節省硬碟空間,當需要的時候再将壓縮檔案用unzip指令解開。該指令使用權限是

所有使用者。

unzip [選項] [壓縮檔案名]

-d<目錄> 知道解壓的某個目錄下,預設為目前目錄

-n:解壓縮時不要覆寫原有的檔案。

-o:不必先詢問使用者,unzip執行後覆寫原有檔案

-j:不處理壓縮檔案中原有的目錄路徑,把所有檔案解壓到同一目錄

-v:察看壓縮檔案的内容,但不解壓

-t:檢查壓縮檔案是否正确,但不解壓

顯示文字指令

echo [-n] <字元串〉

在螢幕上顯示字元串,-n表示不換行

顯示日立指令

cal [選項] [[月]年]

- j 顯示出給定月中的每一天是一年中的第幾天(從1月1日算起)。

- y 顯示出整年的月曆。

-1 顯示當月的月曆

-3顯示前一月,本月,下月的月曆

-s以星期天作為一周的第一天

-m以星期一作為一周的第一天

如cal 5 2006

顯示2006年5月份的月曆

日期時間指令

date [選項] [+FormatString] 顯示日期時間

date <setstring> 設定日期時間

它的選項比較多,一凡在此就不一一列出來了

清屏指令clear

軟體包管理

RPM全稱是 Red Hat Package Manager(Red Hat包管理器)。幾乎所有的 Linux 發行版本都使用這種形式的

軟體包管理安裝、更新和解除安裝軟體。

01、安裝

rpm -i ( or --install) options file1.rpm ... fileN.rpm

-h (or --hash) 安裝時輸出hash記号 (``#'')

--test 隻對安裝進行測試,并不實際安裝。

--percent 以百分比的形式輸出安裝的進度。

--excludedocs 不安裝軟體包中的文檔檔案

--includedocs 安裝文檔

--replacepkgs 強制重新安裝已經安裝的軟體包

--replacefiles 替換屬于其它軟體包的檔案

--force 忽略軟體包及檔案的沖突

--noscripts 不運作預安裝和後安裝腳本

--prefix 将軟體包安裝到由 指定的路徑下

--ignorearch 不校驗軟體包的結構

--ignoreos 不檢查軟體包運作的作業系統

--nodeps 不檢查依賴性關系

--ftpproxy 用 作為 FTP代理

--ftpport 指定FTP的端口号為

通用選項

-v 顯示附加資訊

-vv 顯示調試資訊

--root 讓RPM将指定的路徑做為"根目錄",這樣預安裝程式和後安裝程式都會安裝到這個目錄下

--rcfile 設定rpmrc檔案為

--dbpath 設定RPM 資料庫存所在的路徑為

02、删除

指令格式:

rpm -e ( or --erase) options pkg1 ... pkgN

參數

pkg1 ... pkgN :要删除的軟體包

詳細選項

--test 隻執行删除的測試

--noscripts 不運作預安裝和後安裝腳本程式

--nodeps 不檢查依賴性

03、更新

指令格式

rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm

file1.rpm ... fileN.rpm 軟體包的名字

--oldpackage 允許"更新"到一個老版本

--test 隻進行更新測試

04、查詢

rpm -q ( or --query) options

參數:

pkg1 ... pkgN :查詢已安裝的軟體包

-p (or ``-'') 查詢軟體包的檔案

-f 查詢屬于哪個軟體包

-a 查詢所有安裝的軟體包

--whatprovides 查詢提供了 功能的軟體包

-g 查詢屬于 組的軟體包

--whatrequires 查詢所有需要 功能的軟體包

資訊選項

示軟體包的全部辨別

-i 顯示軟體包的概要資訊

-l 顯示軟體包中的檔案清單

-c 顯示配置檔案清單

-d 顯示文檔檔案清單

-s 顯示軟體包中檔案清單并顯示每個檔案的狀态

--scripts 顯示安裝、解除安裝、校驗腳本

--queryformat (or --qf) 以使用者指定的方式顯示查詢資訊

--dump 顯示每個檔案的所有已校驗資訊

--provides 顯示軟體包提供的功能

--requires (or -R) 顯示軟體包所需的功能

05、校驗已安裝的軟體包

rpm -V ( or --verify, or -y) options

pkg1 ... pkgN 将要校驗的軟體包名

軟體包選項

-p Verify against package file

-f 校驗所屬的軟體包

-a Verify 校驗所有的軟體包

-g 校驗所有屬于組 的軟體包

--noscripts 不運作校驗腳本

--nodeps 不校驗依賴性

--nofiles 不校驗檔案屬性

06、校驗軟體包中的檔案

文法:

rpm -K ( or --checksig) options file1.rpm ... fileN.rpm

file1.rpm ... fileN.rpm 軟體包的檔案名

連接配接幫助指令

man <command>

info <command>  該功能比man強大,但目前隻在Linux中有,其他的UNIX中沒有該指令

help <command>

但linux編輯器,桌面,網絡管理配置,該平台上簡單的軟體開發。。。。

繼續閱讀