歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

常用的Linux shell命令詳解收集整理

1 文件與目錄操作命令

1.1文件內容查詢命令 grep、fgrep、egrep

語法:grep[選項][查找模式][文件名1,文件名2,……]

選項:

-E 每個模式作為一個擴展的正則表達式對待

-F 每個模式作為一組固定字符串對待,而不作為正則表達式

-i 比較時不區分大小寫

-l 顯示首次匹配匹配串所在的文件名並用換行符將其分開。當在文件中多次出現匹配串時,不重復顯示次文件名;

-x 只顯示整行嚴格匹配的行

1.2文件查找命令 find、locate

語法:

find 起始目錄 尋找條件 操作以名稱和文件屬性查找

選項: -name‘字串‘ 查找文件名匹配所給字串的所有文件,字串內可用通配符*、?、[]。

-lname‘字串‘ 查找文件名匹配所給字串的所有符號鏈接文件,字串內可用通配符*、?、[]。

-gid n 查找屬於ID號為n的用戶組的所有文件。

-uid n 查找屬於ID號為n的用戶的所有文件。

-group‘字串‘ 查找屬於用戶組名為所給字串的所有的文件。

-user‘字串‘ 查找屬於用戶名為所給字串的所有的文件。

-path‘字串‘ 查找路徑名匹配所給字串的所有文件,字串內可用通配符*、?、[]。

-perm 權限 查找具有指定權限的文件和目錄,權限的表示可以如711、644。

-type x 查找類型為 x的文件,

語法:locate 相關字

1.3文件的復制、刪除和移動命令 文件復制命令

[選項] 源文件或目錄 目標文件或目錄

選項:

- a 通常在拷貝目錄時使用

-d 拷貝時保留連接

-f 刪除已經存在的目標文件而不提示

-i 和f選項相反

-p 此時cp除復制源文件內容外,還將其修改的時間和訪問權限也復制到新文件中

-r 若給出的源文件是一目錄文件,此時cp將遞歸復制該目錄下的所有的子目錄和文件,此時目標文件必須為一個目錄名;

-l 不作拷貝,只是鏈接文件文件移動命令

mv[選項] 源文件或目錄 目標文件或目錄

-i 交互式操作

-f 禁止交互式操作文件刪除命令

[選項] 文件…

-f 忽略不存在的文件,從不給出提示

-r 指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除

-i 進行交互式刪除 1.4文件鏈接命令

ln [選項] 目標 [鏈接名] 或 ln [選項] 目標 目錄

選項:

- s 建立符號鏈接

1.5目錄的創建和刪除命令 mkdir 創建一個目錄

語法: [選項] dirname

選項: - m 對新建目錄設置存取權限

-p 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項後,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄。

rmdir 刪除空目錄

語法: rmdir [選項] dirname

選項:

- p 遞歸刪除目錄dirname,當子目錄刪除後其父目錄為空時,也一同被刪除。

1.6改變工作目錄,顯示目錄內容命令

1、改變工作目錄: cd [directory]

2、顯示當前工作的目錄的絕對路徑: pwd

3、顯示目錄內容: ls [選項] [目錄或是文件]

選項:

- a 顯示指定目錄下所有子目錄與文件,包括隱藏文件;

-c 按照文件的修改時間排序

-C 分成多列顯示各項

-d 如果參數是目錄,只顯示其名稱而不顯示其下的個文件

-F 在目錄名後面標記“/”,可執行文件後面標記“*”,符號鏈接後面標記“@”,管道(或FIFO)後面標記“|”,socket文件後面標記“=”。

-l 以長格式來顯示文件的詳細信息

-L 若指定的名稱為一個符號鏈接,則顯示鏈接所指向的文件

-t 顯示時按修改時間而不是名字排序

-u 顯示時按文件上次存取的時間而不是名字排序

4、改變文件或目錄的訪問權限命令chmod [who] [+| - | = ] [mode] 文件名?

Who選項:

- u表示用戶,即文件和目錄的所有者

-g表示同組用戶

-o(other)表示其他用戶

-a (all)表示所有用戶

操作符號: + 添加某個權限 - 取消某個權限 = 賦予給定權限並取消其他所有的權限(如果有的話)

mode 選項:

- r 可讀

-w 可寫

-x 可執行 chgrp [-R] group filename? 改變目錄或文件所屬的組

chown [-Rv] 用戶或組 文件

1.7備份與壓縮命令

1、tar命令 為文件和目錄創建檔案語法:

tar [主選項+輔助選項] 文件或者目錄 : u 主選項

-c 創建新的檔案文件。如果用戶想備份一個目錄或是一些文件,則選此項

-r 把要存檔的文件追加到檔案文件的末尾

-t 列出檔案文件的內容,查看已經備份了哪些文件;

-u 更新文件

-x 從檔案文件中釋放文件;

-u 輔助選項

-b 該選項為磁帶機設定的,其後跟一位數字,用來說明區塊的大小,系統預設值為20

-f 使用檔案文件或設備,這個選項通常是必選的

-k 保存已經存在的文件。例如把某個文件還原,在還原的過程中,遇到相同的文件,不會進行覆蓋;

-m 在還原文件時,把所有文件的修改時間設定為現在;

-M 創建多卷的檔案文件,以便在幾個磁盤中存放;

-v 詳細報告tar處理的文件信息

-w 每一步都要求確認

-z 用gzip來壓縮/解壓縮文件

2、gzip命令 壓縮/解壓縮命令

語法:gzip [選項] 壓縮(解壓縮)的文件名

選項:

-c 將輸出寫到標准輸出上,並保留原有文件

-d 將壓縮文件解壓

-l 顯示每個壓縮文件的詳細信息

-r 遞歸式地查找指定目錄並壓縮其中的所有文件或者是解壓縮

-t 測試、檢查壓縮文件是否完整

-v 對每一個壓縮和解壓的文件,顯示文件名和壓縮比

3、unzip 命令 用MS windows下的壓縮軟件winzip壓縮的文件在linux系統下展開

語法:unzip [選項] 壓縮文件名.zip

選項: -x 文件列表 解壓縮文件,但不包括指定的file文件

-v 查看壓縮文件目錄,但不解壓

-t 測試文件有無損壞 ,但不解壓

-d 目錄 將壓縮文件解到指定目錄下

-z 只顯示壓縮文件的注解

-n 不覆蓋已經存在的文件

-o 覆蓋已經存在的文件且不要求用戶確認

-j 不重建文檔的目錄結構,把所有文件解壓到同一目錄下

1.8在LINUX環境下運行DOS命令 linux系統提供了一組稱為mtools的可移植工具,可以讓用戶輕松地從標准的DOS軟盤上讀寫文件和目錄。

mcd 目錄名 改變MSDOS目錄 mcopy 源文件 目標文件 在MSDOS和UNIX之間復制文件;

mdel 目錄名 刪除MSDOS目錄 mdir 目錄名 顯示MSDOS目錄 mformat 驅動器號 在低級格式化的軟盤上創建MSDOS文件系統 rnlabel 驅動器號 產生MSDOS卷標 mmd 目錄名 刪除MSDOS目錄 mren 源文件 目標文件 重新命名已存在的MSDOS文件 mtype 文件名 顯示MSDOS文件的內容

2 設備管理命令

1)linux采用下面的形式定義一個IDE硬盤:/dev/hd[drive][partition]

2)SCSI硬盤使用同樣的機制表示: /dev/sd[drive][partition]

3)對於一般的LINUX分區,可以用mkfs將其格式化並生成文件系統,命令如下: mk2fs –c

4)裝載文件系統:

mount –t ext2 [-o optioms] partition mountpiont 其中,

-t為指定裝載文件系統的類型;

-o指定一些選項,如只讀ro,可讀可寫rw等等; partition定義分區名稱; mountpiont定義文件系統被裝載的目錄名稱。

5)裝載CD-ROM文件系統:mount –t iso9660 –r /dev/cdrom /mnt/cdrom

6)裝載軟驅文件系統: CODE:[Copy to clipboard]mount –t msdos –rw /dev/fd0 /dev/mnt/floppy

7)卸載文件系統 CODE:[Copy to clipboard]umount /mnt/cdrom 磁帶設備的安裝要注意以下幾點:

1、 首先要選擇一個唯一的SCSI ID號,然後再將設備鏈接到適當的位置

2、 選擇驅動程序。

3、 生成設備文件。SCSI磁帶設備的主要設備號是9,次要設備號是0。設備文件名通常是/dev/nrst0(不支持回繞的磁帶設備)或/dev/nst0(支持回繞的磁帶設備) 用 ls /dev/*rst* 檢查磁帶設備文件是否存在,如果不存在,用 mknod –m 666 /dev/nrst0 c 9 9 mknod –m 666 /dev/rst0 c 9 0 生成

4、 可以對塊長度、緩存、磁帶密度等參數進行一些設置,例如 mt setblk 20 將塊長度指定為20 mt setblk 0 指定塊程度沒有限制

5、 通過檢查系統的啟動信息可以確定系統是否識別了新的磁帶設備。用dmesg命令,查看是否有以下類似的信息: aha274x:target 4now synchronous at 4.4Mb/s Vendor:TANDBERG Model:TDC 3800 Rev: =05: Type: Sequential-Access ANSI SCSI revision: 02 Detected scsi tape st0 at scsi0, id4, lun0 Scsi : detected 1 SCSI tape 1 SCSI crom 1 SCSI disk total

3 軟件包管理命令

3.1軟件安裝的步驟 在LINUX系統上安裝軟件的步驟有:

1、 查找所要安裝軟件的源文件

2、 把源文件解開放到一個目錄中,命令如下: tar zxvf <源文件名>;

3、 針對本操作系統配置源文件。可以是編輯make文件或其他文件,也可能是運行該軟件自帶的自動配置工具,如./configure

4、 make源文件,通常是運行make命令,即執行 make

5、 安裝二進制文件和其他支撐文件,運行命令: make install

6、 最後,完成所有其他必須的配置

3.2軟件包管理命令 QUOTE: rpm –ivh <軟件包>; // 安裝指定的軟件包,並在安裝過程中用#表示安裝的進度 rpm –Uvh <軟件包>; // 更新一個已經存在的或還沒安裝好的軟件包,並刪除所有該軟件包的舊版本。 rpm –e //卸載一個rpm軟件包 rpm –qa // 查看系統中已經安裝的軟件包 rpm –q <軟件包>; // 查看系統中某個軟件包的版本號; rpm –qlp <軟件包>; //列出某個軟件包中的所有文件 rpm –qf <軟件包>; //找出一個文件屬於哪個軟件包

4 LINUX系統常用命令

4.1 與系統管理有關的命令 Wall (Write All)  對全部已 登錄的用戶發送信息,用戶可以先反要發送的信息寫好存入一個文件中,然後輸入: # wall < FileName 例:Wall ‘Thank you !’ Write 向某一用戶發送信息。 Write xxq hello 輸入Ctrl+C組合即可終止 Shutdown命令 Shutdown [選項] [時間] [警告信息]

-k 並不真正關機,而只是發出警告信息給所有的用戶。

-r 關機後立即重新啟動。

-h 關機後不重新啟動。

-f 快速關機,啟動時跳過fsck。

-n快速關機,不經過init程序。

-c 取消一個已經運行的shutdown 例:系統馬上關機:Shutdown –h now Free命令查看當前系統內存的使用情況, CODE:[Copy to clipboard]Free [-b] [-k] [-m] CODE:[Copy to clipboard]-b 以字節為單位顯示。

-k 以K字節為單位顯示。

-m 以M字節為單位顯示。 Uptime QUOTE: 顯示系統已經運行了多長的時間:現在時間、系統已經運行的時間、目前有多少登錄用戶、系統在過去的1分鐘、5分鐘和15分鐘內的平均負載。

4.2與用戶有關的命令 Passwd命令設置、更換用戶口令。

Passwd [用戶名] Su 使一個普通的用戶具有超級用戶的權利,離開可用EXIT命令。 4.3其它命令 Echo命令在顯示器上顯示一段文字,一般起到一個提示的作用。

echo [-n] 字符串 Cal命令顯示某年某月的日歷。

cal [選項] [月[年]]

選項的含義:

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

-y 顯示也整年的日歷。 Date命令 date命令的功能是顯示和設置系統日期和時間。 4.4磁盤管理 磁盤空間管理 df命令檢查文件系統的磁盤空間占用局部。

Df [選項]

-a 顯示所有文件系統的磁盤使用情況,包括0塊(block)的文件系統,如/proc文件系統。

-k 以K字節為單位顯示。

-i 顯示i節點信息,而不是磁盤塊。

- t 顯示各指定類型的文件系統的磁盤空間使用情況。

-x 列出不是某一指定類型文件系統的磁盤窨使用情況(與t相反)。

-T 顯示文件系統類型。 du命令 du的英文原意為disk usage,含義為顯示磁盤空間的使用情況。功能是統計目錄(或文件)所占磁盤空間的大小。

du [選項] [Names…]

-s 對每人Names 參數只給也占用的數據塊總數。

-a 遞歸地顯示指定目錄中各文件用子孫目錄中的各文件占用的數據塊總數。

-b 以字節為單位列也磁盤窨使用情部(缺省以K字節為單位)

-k 以1024字節為單位列也磁盤空間使用情況。

-c 最後再加上一個總計(系統缺省)

-l 計算所有的文件大小,對硬鏈接文件,則計算多次。

-x 跳過在不同文件系統上的目錄不予統計。 dd命令把指定的輸入文件拷貝到指定的輸出文件中,並且在拷貝的過程中可以進行格式轉換。

語法: dd 〔選項〕  if =輸入文件(或設備名稱)。 of =輸出文件(或設備名稱)。 ibs = bytes 一次讀取bytes字節,即讀入緩沖區的字節數。 skip = blocks 跳過讀入緩沖區開頭的ibs*blocks塊。 obs = bytes 一次寫入bytes字節,即寫 入緩沖區的字節數。 bs = bytes 同時設置讀/寫緩沖區的字節數(等於設置obs和obs)。 cbs = bytes 一次轉換bytes字節。 count = blocks 只拷貝輸入的blocks塊。 conv = ASCII 把EBCDIC碼轉換為ASCII碼。 conv = ebcdic 把ASCII碼轉換為EBCDIC碼。 conv = ibm 把ASCII碼轉換為alternate EBCDIC碼。 conv = blick 把變動位轉換成固定字符。 conv = ublock 把固定們轉換成變動位 conv = ucase 把字母由小寫變為大寫。 conv = lcase 把字母由大寫變為小寫。 conv = notrunc 不截短輸出文件。 conv = swab 交換每一對輸入字節。 conv = noerror 出錯時不停止處理。 conv = sync 把每個輸入記錄的大小都調到ibs的大小(用ibs填充)。 fdformat命令低級格式化軟盤。

format [-n] device QUOTE: -n 格式化後不做檢驗

4.5常用的網絡命令 FTP命令 Telnet命令。

Netstat命令

-a 顯示所有的scoket,包括正在監聽和。

-c 每隔1秒就重新顯示一遍,直到用戶中斷它。

-i 顯示所有網絡接口的信息,格式同”ifconfig –e”

-n 以網絡IP地址代替名稱,顯示也網絡連接情形。

-r 顯示核心路由表,格式同”route –e:。

-t 顯示TCP協議的連接情況。

-u 顯示UDP協議的連接情況。

-v 顯示正在進行的工作。 nslookup命令。 finger命令,功能是查詢用戶的信息。 ping命令。(用戶和組的管理可以使用工具:TurboUserCfg或是XturboUserCfg。)

4.6有關進程的命令。 進程和啟動 at [-V] [-q] [-f文件名] [-mldbv]時間 at –c 作業 [作業….] AT命令啟動的進程系統只執行一次。 batch [-V] [-q 隊列] [-f 文件名] [-mv] [時間] 在系統負載較小時,資源比較空閒時執行。 cron命令按一定的時間間隔執行命令。 crontab命令用於安裝、刪除或列出用於驅支cron後台進程的表格。進程查看

who命令。 w命令是一個比who命令更強大的命令 w

–[husfV] [user] -h 不顯示標題。

-u 當列出當前進程和CPU時間時忽略用戶名。

-s 使用短模式。不顯示登錄時間JCPU和PCPU時間。

-f 切換顯示FROM項,也就是遠程主機名項。

-V 顯示版本信息。 user 只顯示指定用戶的情況。 ps命令。

-e 顯示所有進程。

-f 全格式

-h 不顯示標題。

-l 長格式。

-w 寬輸出。 a 顯示終端上所有進程,包括其他用戶的進程。 r 只顯示正在運行的進程。 x 顯示沒有控制終端的進程。 top 命令動態顯示系統當前的進程和其他狀況。 5系統的啟動過程。

5.1初始啟動 在PC機啟動時,BIOS從指定的啟動設備中讀入“主引導記錄”(MBR)。MBR的格式是:地址偏移量 內容 大小 +00 h 可執行的代碼(啟動模塊) 可能變化 +1BE h 第一分區表項 16字節 +1CE h 第二分區表項 16字節 +1DE h 第三分區表項 16字節 +1EE h 第四分區表項 16字節 +1FE h 可執行的標記(AA55 h) 2字節 啟動模塊包含足以裝入操作系統的代碼,或者是第二步的加載代碼的位置。啟動模塊需要使用BIOS調用來從磁盤裝入數據,而這些中斷調用,如INT 13h等,限制了最大磁盤柱面號為1023。這也就是說啟動模塊需要加載的一切內容,如初始內存磁盤、內核、啟動的時間信息等,必須存放在1024個柱面以內。在MBR中只有四個分區表項,每個表項的格式如下: 地址偏移 內容 大小 +00h 分區狀態:00代表非啟動分區,80h代表啟動分區 1字節 +01h 分區的起始位置 磁頭 1字節 +02h 分區的起始位置 柱面和扇區 1字節 +04h 分區的類型 1字節 +05h 分區的結束位置 磁頭 1字節 +06h 分區的結束位置 柱面和扇區 1字節 +08h 在主引導區和本分區的第一個扇區間的扇區數目 4字節 +0Ch 分區內的扇區數目 4字節

5.2 Linux的啟動過程

1啟動的命令行參數 在Linux啟動時,它處理所有傳遞給它的命令行參數。這可以影響Linux的運行方式。

命令行參數包括: mem=xxxM:定Linux可以使用的內存大小。這在用戶的計算機系統有超過64MB的內存時才需要。因為從前的主板只對第一個64MB內存進行緩存,使用超過64MB的內存會使整個計算機的性能下降,所有內存均按無緩存的速度運行。 single:使Linux按單用戶方式啟動,缺省方式是多用戶方式。 root=/dev/xxx:指定Linux要安裝為根文件系統的設備。 init=;:指定作為初始化進程的文件。 initrd=;:指定作為初始內存磁盤的設備。 ro:指定根文件系統為只讀。 rw:指定根文件系統為可讀可寫。

2 Init進程 在內核初始化自身和找到的硬件設備後,在後台啟動進程init(/sbin/init),init進程號1運行。在UNIX世界中有許多啟動過程的版本,一些是基於系統V,一些是基於BSD。大多數Linux版本使用系統V的實現方法,在這裡描述的就是這樣。 init是由文件/etc/inittab內容和功能控制的,隨啟動模式是單用戶或多用戶而不同。 QUOTE: 單用戶模式:init進程忽略/etc/inittab文件,在執行少數幾個腳本程序後調用/dev/console shell。這樣,用戶就可以有了一個shell,而且可以執行一定限度的任務。多用戶模式:init進程把系統帶入/etc/inittab文件指定的運行級別。Init通過標准的Linux方法進入一個指定的進行級別。

3.進行級別 Linux與其他UNIX操作系統一樣,可以任何時刻處於任何一個運行級別。這些運行級別提供的功能不同,為主要是由於其運行的服務方程序(後台daemon)的不同造成的。Linux共有6種運行級別。

0:關閉計算機或終止計算機運行,這個級別就是系統停止運行。

1:單用戶啟動級別,系統只有一個用戶,就是root,該用戶在控制台登錄。

2:多用戶運行級別,但無網絡功能。在這個運行級別,網絡功能沒有啟動,但是系統允許多個用戶登錄,可以通過虛擬控制台或串行線路。

3:多用戶模式,有網絡功能。在這個運行級別,所有標准網絡服務均被啟動。

4:目前沒有實現。

5:X11運行級別,在這個運行級別,X服務器軟件運行,提供圖形界面的登錄方式。

6:系統重新啟動。查詢當前運行級別:runlevel;

4在啟動過程中運行的腳本在init進程運行時,它負責查看缺省的運行級別,並進入該運行級別。這是通過運行在/etc/rc.d/rcX.d目錄下的腳本程序來實現的,其中X代表運行的級別,即一個運行級別對應一個目錄。不同的字母開頭的文件有不同的作用。其中:以K開頭的腳本程序是系統離開某個運行級別時執行的,作用是停止某種服務。當系統從某個支持級別變為其他級別時,首先要進行原運行級別所對應的所有K程序。以S開頭的腳本程序是系統進入某個運行級別時所執行的,作用是啟動某種服務。當系統改變為某個運行級別時,就要運行新運行級別所對應的所有S程序。

5增加啟動腳本程序用戶可能有一些特定的硬件設備要初始化,或需要在系統啟動時初始化一些其他應用程序,用戶可以增加自己的初始化腳本程序來完成這些工作。通常步驟是:復制一個已經存在的腳本,這樣可以得到一個通用的框架格式。修改這個腳本,以完成自己的需求,要注意使程序可以處理啟動和關閉的參數,盡管可能關閉處理什麼也不需要干。把這個肢本拷貝到/etc/rc.d/init.d目錄下,命名為”serv”。按下面的方法在相應的目錄下建立運行控制鏈接: CODE:[Copy to clipboard]ln –s ../init.d/serv/etc/rc.d/rc3.d/s99 serv 進行測試。

6 LILO和其他的啟動模塊要啟動Linux,啟動模塊是必須的。一般用於Linux的啟動模塊是LILO,LILO用自己的主引導區代替一般的主引導區。LILO可以通過修改/etc/lilo.conf文件內容來進行配置,對引導區內容的更新通過lilo命令來完成。下面給也了一個裝有DOS,TurboLinux3.4.0和RedHat

5.2系統的計算機的lilo.conf文件。

在例子中的數字標號是用戶加上去並要在文中詳細解釋的。 CODE:[Copy to clipboard]# more /etc/lilo.conf boot=dev/had map=/boot/map instll/boot/boot.b prompt #表示啟動盤是/dev/had,這是主IDE硬盤。 timeout=50 #表示等待用戶輸入的時間是50秒。 default=TL3.4 other=dev/hda1 #表示如果在上述的時間內沒有輸入,缺省的啟動系統是TL3.4,即TurboLinux 3.4.0 label=dos table=dev/had #表示如果在LILO提示用戶輸入啟動系統時,用戶按了;鍵,各個系統將以label的內容顯示出來,供用戶選擇。 image=/mnt/tl3.4/boot/vmlinuz label=TL3.4 root=/dev/hda3 read-only TurboLinux的啟動文件,/mnt/tl3.4/boot/vmlinuz被確定,根文件系統在/dev/hda3,根文件系統是只讀方式的。 CODE:[Copy to clipboard]image=/mnt/rh5.2/boot/vmlinuz-2.0.36-0.7 label=RH5.2 root=/dev/hda4 read-only RedHat的啟動文件,/mnt/rh5.2/boot/vmlinuz-2.0,36-0.7被確定,根文件系統在/dev/hda4,根文件系統可讀寫。

Copyright © Linux教程網 All Rights Reserved