天天看點

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,根檔案系統可讀寫。