mysql 云计算 Android centos apache java Python 开源 Ubuntu linux nginx 编程 shell Windows php Firefox 程序员 微软 google wordpress

Linux 常用命令(二)

在介紹常用命令之前,先介紹相關的幾個的概念,大家可以簡單看看。
什麽是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本身的實用程序,比如lsrm,也可以是購買的商業程序,比如 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:不是以卷動的方式顯示每頁,而是先清屏再顯示
-s:遇到兩行空白,替換為一行空白 
-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 [選項] [....]
-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 軟件包的名字
詳細選項
-h (or --hash) 安裝時輸出hash記號 (``#'')
--oldpackage 允許"升級"到一個老版本
--test 只進行升級測試
--excludedocs 不安裝軟件包中的文檔文件
--includedocs 安裝文檔
--replacepkgs 強制重新安裝已經安裝的軟件包
--replacefiles 替換屬於其它軟件包的文件
--force 忽略軟件包及文件的沖突
--percent 以百分比的形式輸出安裝的進度。
--noscripts 不運行預安裝和後安裝腳本
--prefix 將軟件包安裝到由 指定的路徑下
--ignorearch 不校驗軟件包的結構
--ignoreos 不檢查軟件包運行的操作系統
--nodeps 不檢查依賴性關系
--ftpproxy 用 作為 FTP代理
--ftpport 指定FTP的端口號為 
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>
 

延伸阅读

评论