Linux基礎(chǔ)命令之: Linux常用命令
在安裝完Linux再次啟動(dòng)之后,就可以進(jìn)入到與Windows類似的圖形化界面了。這個(gè)界面就是Linux圖形化界面X窗口系統(tǒng)(簡稱X)的一部分。要注意的是,X窗口系統(tǒng)僅僅是Linux上面的一個(gè)軟件(或者也可稱為服務(wù)),它不是Linux自身的一部分。雖然現(xiàn)在的X窗口系統(tǒng)已經(jīng)與Linux整合得相當(dāng)好了,但畢竟還不能保證絕對的可靠性。另外,X窗口系統(tǒng)是一個(gè)相當(dāng)耗費(fèi)系統(tǒng)資源的軟件,它會(huì)大大地降低Linux的系統(tǒng)性能。因此,若是希望更好地享受Linux所帶來的高效及高穩(wěn)定性,建議讀者盡可能地使用Linux的命令行界面,也就是shell環(huán)境。
當(dāng)用戶在命令行下工作時(shí),不是直接同操作系統(tǒng)內(nèi)核交互信息的,而是由命令解釋器接受命令,分析后再傳給相關(guān)的程序。shell是一種Linux中的命令行解釋程序,就如同command.com是DOS下的命令解釋程序一樣,為用戶提供使用操作系統(tǒng)的接口。它們之間的關(guān)系如圖2.1所示。用戶在提示符下輸入的命令都由shell先解釋然后傳給Linux內(nèi)核。
小知識(shí)
·shell是命令語言、命令解釋程序及程序設(shè)計(jì)語言的統(tǒng)稱。它不僅擁有自己內(nèi)建的shell命令集,同時(shí)也能被系統(tǒng)中其他應(yīng)用程序所調(diào)用。
·shell的一個(gè)重要特性是它自身就是一個(gè)解釋型的程序設(shè)計(jì)語言,shell程序設(shè)計(jì)語言支持絕大多數(shù)在高級(jí)語言中能見到的程序元素,如函數(shù)、變量、數(shù)組和程序控制結(jié)構(gòu)。shell編程語言簡單易學(xué),任何在提示符中能鍵入的命令都能放到一個(gè)可執(zhí)行的shell程序中。關(guān)于shell編程的詳細(xì)講解,感興趣的讀者可以參見其他相關(guān)書籍。
Linux中運(yùn)行shell的環(huán)境是“系統(tǒng)工具”下的“終端”,讀者可以單擊“終端”以啟動(dòng)shell環(huán)境。這時(shí)屏幕上顯示類似“[david@localhosthome]$”的信息,其中,david是指系統(tǒng)用戶,localhost是計(jì)算機(jī)名,而home是指當(dāng)前所在的目錄。
由于Linux中的命令非常多,要全部介紹幾乎是不可能的。因此,在本書按照命令的用途進(jìn)行分類講解,并且對每一類中最常用的命令詳細(xì)講解,同時(shí)列出同一類中的其他命令。由于同一類的命令都有很大的相似性,因此,讀者通過學(xué)習(xí)本書中所列命令,可以很快地掌握其他命令。
圖2.1 內(nèi)核、shell和用戶的關(guān)系
命令格式說明。
n 格式中帶[]的表明為可選項(xiàng),其他為必選項(xiàng)。
n 選項(xiàng)可以多個(gè)連帶寫入。
n 本章后面選項(xiàng)參數(shù)列表中加粗的含義是:該選項(xiàng)是非常常用的選項(xiàng)。
2.1.1用戶系統(tǒng)相關(guān)命令Linux是一個(gè)多用戶的操作系統(tǒng),每個(gè)用戶又可以屬于不同的用戶組,下面,首先來熟悉一下Linux中的用戶切換和用戶管理的相關(guān)命令。
1.用戶切換(su)(1)作用。
變更為其他使用者的身份,主要用于將普通用戶身份轉(zhuǎn)變?yōu)槌?jí)用戶,而且需輸入相應(yīng)用戶密碼。
(2)格式。
su[選項(xiàng)][使用者]
其中的使用者為要變更的對應(yīng)使用者。
(3)常見參數(shù)。
主要選項(xiàng)參數(shù)如表2.1所示。
表2.1 su命令常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-,-l,--login
為該使用者重新登錄,大部分環(huán)境變量(如HOME、SHELL和USER等)和工作目錄都是以該使用者(USER)為主。若沒有指定USER,缺省情況是root
-m,-p
執(zhí)行su時(shí)不改變環(huán)境變量
-c,--command
變更賬號(hào)為USER的使用者,執(zhí)行指令(command)后再變回原來使用者
(4)使用示例。
[david@localhost~]$su-root
Password:
[root@localhost~]#
示例通過su命令將普通用戶變更為root用戶,并使用選項(xiàng)“-”攜帶root環(huán)境變量。
(5)使用說明。
n 在將普通用戶變更為root用戶時(shí)建議使用“-”選項(xiàng),這樣可以將root的環(huán)境變量和工作目錄同時(shí)帶入,否則在以后的使用中可能會(huì)由于環(huán)境變量的原因而出錯(cuò)。
n 在轉(zhuǎn)變?yōu)閞oot權(quán)限后,提示符變?yōu)?。
小知識(shí)
環(huán)境變量實(shí)際上就是用戶運(yùn)行環(huán)境的參數(shù)集合。Linux是一個(gè)多用戶的操作系統(tǒng)。而且在每個(gè)用戶登錄系統(tǒng)后,都會(huì)有一個(gè)專有的運(yùn)行環(huán)境。通常每個(gè)用戶默認(rèn)的環(huán)境都是相同的,而這個(gè)默認(rèn)環(huán)境實(shí)際上就是一組環(huán)境變量的定義。用戶可以對自己的運(yùn)行環(huán)境進(jìn)行定制,其方法就是修改相應(yīng)的系統(tǒng)環(huán)境變量。
常見的環(huán)境變量如下。
☆PATH是系統(tǒng)路徑。
☆HOME是系統(tǒng)根目錄。
☆HISTSIZE是指保存歷史命令記錄的條數(shù)。
☆LOGNAME是指當(dāng)前用戶的登錄名。
☆HOSTNAME是指主機(jī)的名稱,若應(yīng)用程序要用到主機(jī)名,通常是從這個(gè)環(huán)境變量中來取得的。
☆SHELL是指當(dāng)前用戶用的是哪種shell。
☆LANG/LANGUGE是和語言相關(guān)的環(huán)境變量,使用多種語言的用戶可以修改此環(huán)境變量。
☆MAIL是指當(dāng)前用戶的郵件存放目錄。
設(shè)置環(huán)境變量方法如下。
ü通過echo顯示字符串(指定環(huán)境變量)。
ü通過export設(shè)置新的環(huán)境變量。
ü通過env顯示所有環(huán)境變量。
ü通過set命令顯示所有本地定義的shell變量。
ü通過unset命令來清除環(huán)境變量。
讀者可以試著用“env”命令查看“su-root”(或“su–”)和“suroot”的區(qū)別。
2.用戶管理(useradd和passwd)Linux中常見用戶管理命令如表2.2所示,本書僅以u(píng)seradd和passwd為例進(jìn)行詳細(xì)講解,其他命令類似,請讀者自行學(xué)習(xí)使用。
表2.2 Linux常見用戶管理命令
命令
命令含義
格式
useradd
添加用戶賬號(hào)
useradd[選項(xiàng)]用戶名
usermod
設(shè)置用戶賬號(hào)屬性
usermod[選項(xiàng)]屬性值
userdel
刪除對應(yīng)用戶賬號(hào)
userdel[選項(xiàng)]用戶名
groupadd
添加組賬號(hào)
groupadd[選項(xiàng)]組賬號(hào)
groupmod
設(shè)置組賬號(hào)屬性
groupmod[選項(xiàng)]屬性值
groupdel
刪除對應(yīng)組賬號(hào)
groupdel[選項(xiàng)]組賬號(hào)
passwd
設(shè)置賬號(hào)密碼
passwd[對應(yīng)賬號(hào)]
id
顯示用戶ID、組ID和用戶所屬的組列表
id[用戶名]
groups
顯示用戶所屬的組
groups[組賬號(hào)]
who
顯示登錄到系統(tǒng)的所有用戶
who
(1)作用。
①useradd:添加用戶賬號(hào)。
②passwd:更改對應(yīng)用戶的賬號(hào)密碼。
(2)格式。
①useradd:useradd[選項(xiàng)]用戶名。
②passwd:passwd[選項(xiàng)][用戶名]。
其中的用戶名為修改賬號(hào)密碼的用戶,若不帶用戶名,缺省為更改當(dāng)前使用者的密碼。
(3)常用參數(shù)
①useradd主要選項(xiàng)參數(shù)如表2.3所示。
表2.3 useradd命令常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-g
指定用戶所屬的群組
-m
自動(dòng)建立用戶的登入目錄
-n
取消建立以用戶名稱為名的群組
②passwd:一般很少使用選項(xiàng)參數(shù)。
(4)使用實(shí)例。
[root@localhost~]#useradddavid
[root@localhost~]#passwddavid
Newpassword:(輸入密碼)
Retypenewpassword:(再輸入一次密碼,以確認(rèn)輸入的正確性)
passwd:allauthenticationtokensupdatedsuccessfully
[root@localhost~]#su–david
[david@localhost~]$
[david@localhost~]$pwd(查看當(dāng)前目錄)
/home/david(該用戶的工作目錄)
實(shí)例中先添加了用戶名為david的用戶,接著又為該用戶設(shè)置了賬號(hào)密碼。從su的命令可以看出,該用戶添加成功,其工作目錄為“/home/david”。
(5)使用說明。
n 在添加用戶時(shí),這兩個(gè)命令是一起使用的,其中,useradd必須用root的權(quán)限。而且useradd指令所建立的賬號(hào),實(shí)際上是保存在“/etc/passwd”文本文件中,文件中每一行包含一個(gè)賬號(hào)信息。
n 在缺省情況下,useradd所做的初始化操作包括在“/home”目錄下為對應(yīng)賬號(hào)建立一個(gè)同名的主目錄,并且還為該用戶單獨(dú)建立一個(gè)與用戶名同名的組。
n adduser只是useradd的符號(hào)鏈接(關(guān)于符號(hào)鏈接的概念在本節(jié)后面會(huì)有介紹),兩者是相同的。
n passwd還可用于普通用戶修改賬號(hào)密碼,Linux并不采用類似Windows的密碼回顯(顯示為*號(hào)),所以輸入的這些字符用戶是看不見的。密碼最好包括字母、數(shù)字和特殊符號(hào),并且設(shè)成6位以上。
3.系統(tǒng)管理命令(ps和kill)Linux中常見的系統(tǒng)管理命令如表2.4所示,本書以ps和kill為例進(jìn)行講解。
表2.4 Linux常見系統(tǒng)管理命令
命令
命令含義
格式
ps
顯示當(dāng)前系統(tǒng)中由該用戶運(yùn)行的進(jìn)程列表
ps[選項(xiàng)]
top
動(dòng)態(tài)顯示系統(tǒng)中運(yùn)行的程序(一般為每隔5s)
top
kill
輸出特定的信號(hào)給指定PID(進(jìn)程號(hào))的進(jìn)程
kill[選項(xiàng)]進(jìn)程號(hào)(PID)
uname
顯示系統(tǒng)的信息(可加選項(xiàng)-a)
uname[選項(xiàng)]
setup
系統(tǒng)圖形化界面配置
setup
crontab
循環(huán)執(zhí)行例行性命令
crontab[選項(xiàng)]
shutdown
關(guān)閉或重啟Linux系統(tǒng)
shutdown[選項(xiàng)][時(shí)間]
uptime
顯示系統(tǒng)已經(jīng)運(yùn)行了多長時(shí)間
uptime
clear
清除屏幕上的信息
clear
(1)作用。
①ps:顯示當(dāng)前系統(tǒng)中由該用戶運(yùn)行的進(jìn)程列表。
②kill:輸出特定的信號(hào)給指定PID(進(jìn)程號(hào))的進(jìn)程,并根據(jù)該信號(hào)完成指定的行為。其中可能的信號(hào)有進(jìn)程掛起、進(jìn)程等待、進(jìn)程終止等。
(2)格式。
①ps:ps[選項(xiàng)]。
②kill:kill[選項(xiàng)]進(jìn)程號(hào)(PID)。
kill命令中的進(jìn)程號(hào)為信號(hào)輸出的指定進(jìn)程的進(jìn)程號(hào),當(dāng)選項(xiàng)是缺省時(shí)為輸出終止信號(hào)給該進(jìn)程。
(3)常見參數(shù)。
①ps主要選項(xiàng)參數(shù)如表2.5所示。
表2.5 ps命令常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-ef
查看所有進(jìn)程及其PID(進(jìn)程號(hào))、系統(tǒng)時(shí)間、命令詳細(xì)目錄、執(zhí)行者等
-aux
除可顯示-ef所有內(nèi)容外,還可顯示CPU及內(nèi)存占用率、進(jìn)程狀態(tài)
-w
顯示加寬并且可以顯示較多的信息
②kill主要選項(xiàng)參數(shù)如表2.6所示。
表2.6 kill命令常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-s
將指定信號(hào)發(fā)送給進(jìn)程
-p
打印出進(jìn)程號(hào)(PID),但并不送出信號(hào)
-l
列出所有可用的信號(hào)名稱
(4)使用實(shí)例。
[root@localhostroot]#ps–ef
UIDPIDPPIDCSTIMETTYTIMECMD
root1002005?00:00:05init
root2102005?00:00:00[keventd]
root3002005?00:00:00[ksoftirqd_CPU0]
root4002005?00:00:00[ksoftirqd_CPU1]
root7421102005?00:00:00/usr/local/bin/ntpd-c/etc/ntp.
root2178721739017:16pts/100:00:00grepntp
[root@localhostroot]#kill-97421(殺死進(jìn)程)
[root@localhostroot]#ps-ef|grepntp
root2178921739017:16pts/100:00:00grepntp
該實(shí)例中首先查看所有進(jìn)程,并終止進(jìn)程號(hào)為7421的ntp進(jìn)程,之后再次查看時(shí)已經(jīng)沒有該進(jìn)程號(hào)的進(jìn)程。
(5)使用說明。
n ps在使用中通常可以與其他一些命令結(jié)合起來使用,主要作用是提高效率。
n ps選項(xiàng)中的參數(shù)w可以寫多次,通常最多寫3次,它的含義為加寬3次,這足以顯示很長的命令行了。例如:ps–auxwww。
小知識(shí)
管道是Linux中信息通信的重要方式。它是把一個(gè)程序的輸出直接連接到另一個(gè)程序的輸入,而不經(jīng)過任何中間文件。管道線是指連接兩個(gè)或更多程序管道的通路。在shell中字符”|”表示管道線。如前例子中的ps–ef|grepntp所示,ps–ef的結(jié)果直接輸入到grepntp的程序中(關(guān)于grep命令在后面會(huì)有詳細(xì)的介紹)。grep、pr、sort和wc都可以在上述管道線上工作。讀者可以靈活地運(yùn)用管道機(jī)制
4.磁盤相關(guān)命令(fdisk)
Linux中與磁盤相關(guān)的命令如表2.7所示,本書僅以fdisk為例進(jìn)行講解。
表2.7 Linux常見系統(tǒng)管理命令
選項(xiàng)
參數(shù)含義
格式
free
查看當(dāng)前系統(tǒng)內(nèi)存的使用情況
free[選項(xiàng)]
df
查看文件系統(tǒng)的磁盤空間占用情況
df[選項(xiàng)]
du
統(tǒng)計(jì)目錄(或文件)所占磁盤空間的大小
du[選項(xiàng)]
fdisk
查看硬盤分區(qū)情況及對硬盤進(jìn)行分區(qū)管理
fdisk[-l]
(1)作用。
fdisk可以查看硬盤分區(qū)情況,并可對硬盤進(jìn)行分區(qū)管理,這里主要介紹如何查看硬盤分區(qū)情況,另外,fdisk也是一個(gè)非常好的硬盤分區(qū)工具,感興趣的讀者可以另外查找資料學(xué)習(xí)如何使用fdisk進(jìn)行硬盤分區(qū)。
(2)格式。
fdisk[-l]
(3)使用實(shí)例。
[root@localhost~]#fdisk-l
Disk/dev/hda:40.0GB,40007761920bytes
240heads,63sectors/track,5168cylinders
Units=cylindersof15120*512=7741440bytes
DeviceBootStartEndBlocksIdSystem
/dev/hda1*110848195008+cW95FAT32(LBA)
/dev/hda21085516730867480fW95Ext'd(LBA)
/dev/hda51085243910243768+bW95FAT32
/dev/hda62440406412284968+bW95FAT32
/dev/hda740655096779952683Linux
/dev/hda85096516552208182Linuxswap
Disk/dev/sda:999MB,999816704bytes
4heads,8sectors/track,61023cylinders
Units=cylindersof32*512=16384bytes
Diskidentifier:0x00000000
DeviceBootStartEndBlocksIdSystem
/dev/sda1*161024976379+bW95FAT32
可以看出,使用“fdisk–l”列出了文件系統(tǒng)的分區(qū)情況。
(4)使用說明
n 使用fdisk必須擁有root權(quán)限。
n IDE硬盤對應(yīng)的設(shè)備名稱分別為hda、hdb、hdc和hdd,SCSI硬盤對應(yīng)的設(shè)備名稱則為sda、sdb、…。此外,hda1代表hda的第一個(gè)硬盤分區(qū),hda2代表hda的第二個(gè)分區(qū),依此類推。
n 通過查看/var/log/messages文件,可以找到Linux系統(tǒng)已辨認(rèn)出來的設(shè)備代號(hào)。
5.文件系統(tǒng)掛載命令(mount)(1)作用。
掛載文件系統(tǒng),它的使用權(quán)限是超級(jí)用戶或/etc/fstab中允許的使用者。正如1.2.1節(jié)中所述,掛載是指在分區(qū)和目錄之間建立映射關(guān)系的過程,而掛載點(diǎn)是指掛載在文件樹中的位置。使用mount命令可以把文件系統(tǒng)掛載到相應(yīng)的目錄下,并且由于Linux中把設(shè)備都當(dāng)成文件一樣使用,因此,mount命令也可以掛載不同的設(shè)備。
通常,在Linux下“/mnt”目錄是專門用于掛載不同的文件系統(tǒng)的,它可以在該目錄下新建不同的子目錄來掛載不同的設(shè)備文件系統(tǒng)。
(2)格式。
mount[選項(xiàng)][類型]設(shè)備文件名掛載點(diǎn)目錄
其中的類型是指設(shè)備文件的類型。
(3)常見參數(shù)
mount常見參數(shù)如表2.8所示。
表2.8 mount命令選項(xiàng)常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-a
依照/etc/fstab的內(nèi)容裝載所有相關(guān)的硬盤
-l
列出當(dāng)前已掛載的設(shè)備、文件系統(tǒng)名稱和掛載點(diǎn)
-t類型
將后面的設(shè)備以指定類型的文件格式裝載到掛載點(diǎn)上。常見的類型有前面介紹過的幾種:vfat、ext3、ext2、iso9660、nfs等
-f
通常用于除錯(cuò)。它會(huì)使mount不執(zhí)行實(shí)際掛上的動(dòng)作,而是模擬整個(gè)掛上的過程,通常會(huì)和-v一起使用
(4)使用實(shí)例。
使用mount命令主要通過以下幾個(gè)步驟。
①確認(rèn)是否為Linux可以識(shí)別的文件系統(tǒng),Linux可識(shí)別的文件系統(tǒng)只要是以下幾種。
n Windows95/98常用的FAT32文件系統(tǒng):vfat。
n WindowsNT/2000的文件系統(tǒng):ntfs。
n OS/2用的文件系統(tǒng):hpfs。
n Linux用的文件系統(tǒng):ext2、ext3、nfs。
n CD-ROM光盤用的文件系統(tǒng):iso9660。
②確定設(shè)備的名稱,可通過使用命令“fdisk-l”查看。
③查找掛載點(diǎn)。
必須確定掛載點(diǎn)已經(jīng)存在,也就是在“/mnt”下的相應(yīng)子目錄已經(jīng)存在,一般建議在“/mnt”下新建幾個(gè)如“/mnt/windows”,“/mnt/usb”的子目錄,現(xiàn)在有些新版本的Linux(如Fedora、Ubuntu、紅旗Linux、中軟Linux、MandrakeLinux)都可自動(dòng)掛載文件系統(tǒng),RedHatLinux僅可自動(dòng)掛載光驅(qū)。
④掛載文件系統(tǒng)如下所示。
[root@locaohost~]#mkdir-p/mnt/win/c
[root@locaohost~]#mount-tvfat/dev/hda1/mnt/win/c
[root@localhost~]#cd/mnt/win/c
24.s03e01.pdtv.xvid-sfm.rmvbDocumentsandSettingsProgramFiles
24.s03e02.pdtv.xvid-sfm.rmvbDownloadsRecycled
…
C盤是原先筆者Windows系統(tǒng)的啟動(dòng)盤??梢?,在掛載了C盤之后,可直接訪問Windows下的C盤的內(nèi)容。
⑤在使用完該設(shè)備文件后可使用命令umount將其卸載。
[root@localhost~]#umount/mnt/win/c
[root@localhost~]#cd/mnt/win/c
[root@localhost~]#ls/mnt/win/c
可見,此時(shí)目錄“/mnt/win/c”下為空。Windows下的C盤已被成功卸載。
小知識(shí)
·在Linux下如何使用U盤呢?
一般U盤為SCSI格式的硬盤,其格式為vfat格式,其設(shè)備號(hào)可通過“fdisk–l”進(jìn)行查看,假若設(shè)備名為“/dev/sda1”,則可用如下命令將其掛載:
mount-tvfat/dev/sda1/mnt/usb
·若想設(shè)置在開機(jī)時(shí)自動(dòng)掛載,可在文件“/etc/fstab”中加入相應(yīng)的設(shè)置行即可。
2.1.2文件相關(guān)命令Linux中有關(guān)文件的操作非常重要,也非常常用,本節(jié)將對Linux系統(tǒng)的文件操作命令進(jìn)行詳細(xì)講解。
1.cd(1)作用。
改變當(dāng)前工作目錄。
(2)格式。
cd[路徑]
其中的路徑為要改變的工作目錄,可為相對路徑或絕對路徑。
(3)使用實(shí)例。
[root@localhost~]#cd/home/david/
[root@localhostdavid]#pwd
[root@localhostdavid]#/home/david/
該實(shí)例中變更工作目錄為“/home/david/”,在后面的“pwd”(顯示當(dāng)前目錄)的結(jié)果中可以看出。
(4)使用說明。
n 該命令將當(dāng)前目錄改變至指定路徑的目錄。若沒有指定路徑,則回到用戶的主目錄(例如:“/home/david”為用戶david的主目錄)。為了改變到指定目錄,用戶必須擁有對指定目錄的執(zhí)行和讀權(quán)限。
n 該命令可以使用通配符。
n 使用“cd–”可以回到前次工作目錄。
n “./”代表當(dāng)前目錄,“../”代表上級(jí)目錄。
2.ls(1)作用
列出目錄和文件的信息。
(2)格式。
ls[選項(xiàng)][文件]
其中文件選項(xiàng)為指定查看指定文件的相關(guān)內(nèi)容,若未指定文件,默認(rèn)查看當(dāng)前目錄下的所有文件。
(3)常見參數(shù)。
ls主要選項(xiàng)參數(shù)見表2.9所示。
表2.9 ls命令常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-1,--format=single-column
一行輸出一個(gè)文件(單列輸出)
-a,-all
列出目錄中所有文件,包括以“.”開頭的隱藏文件
-d
將目錄名和其他文件一樣列出,而不是列出目錄的內(nèi)容
-l,--format=long,--format=verbose
除每個(gè)文件名外,增加顯示文件類型、權(quán)限、硬鏈接數(shù)、所有者名、組名、大?。˙yte)及時(shí)間信息(如未指明是其他時(shí)間即指修改時(shí)間)
-f
不排序目錄內(nèi)容,按它們在磁盤上存儲(chǔ)的順序列出
(4)使用實(shí)例。
[david@localhosttest]$ls-l
total220
drwxr-xr-x2rootroot4096Mar312005bin
drwxr-xr-x3rootroot4096Apr32005boot
-rw-r--r--1rootroot0Apr242002test.run
…
該實(shí)例查看當(dāng)前目錄下的所有文件,并通過選項(xiàng)“-l”顯示出詳細(xì)信息。
顯示格式說明如下。
文件類型與權(quán)限鏈接數(shù)文件屬主文件屬組文件大小修改的時(shí)間名字
(5)使用說明。
n 在ls的常見參數(shù)中,-l(長文件名顯示格式)的選項(xiàng)是最為常見的??梢栽敿?xì)顯示出各種信息。
n若想顯示出所有“.”開頭的隱藏文件,可以使用-a,這在嵌入式開發(fā)中很常用。
注意
Linux中的可執(zhí)行文件不是與Windows一樣通過文件擴(kuò)展名來標(biāo)識(shí)的,而是通過設(shè)置文件相應(yīng)的可執(zhí)行屬性來實(shí)現(xiàn)的。
3.mkdir(1)作用。
創(chuàng)建一個(gè)目錄。
(2)格式。
mkdir[選項(xiàng)]路徑
(3)常見參數(shù)。
mkdir主要選項(xiàng)參數(shù)如表2.10所示。
表2.10 mkdir命令常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-m
對新建目錄設(shè)置存取權(quán)限,也可以用chmod命令(在本節(jié)后會(huì)有詳細(xì)說明)設(shè)置
-p
可以是一個(gè)路徑名稱。此時(shí)若此路徑中的某些目錄尚不存在,在加上此選項(xiàng)后,系統(tǒng)將自動(dòng)建立好那些尚不存在的目錄,即一次可以建立多個(gè)目錄
(4)使用實(shí)例。
[david@localhost~]$mkdir-p./hello/my
[david@localhost~]$cdhello/my
[david@localhostmy]$pwd(查看當(dāng)前目錄命令)
/home/david/hello/my
該實(shí)例使用選項(xiàng)“-p”一次創(chuàng)建了./hello/my多級(jí)目錄。
[david@localhostmy]$mkdir-m777./why
[david@localhostmy]$ls-l
total4
drwxrwxrwx2rootroot4096Jan1409:24why
該實(shí)例使用改選項(xiàng)“-m”創(chuàng)建了相應(yīng)權(quán)限的目錄。對于“777”的權(quán)限在本節(jié)后面會(huì)有詳細(xì)的說明。
(5)使用說明。
該命令要求創(chuàng)建目錄的用戶在創(chuàng)建路徑的上級(jí)目錄中具有寫權(quán)限,并且路徑名不能是當(dāng)前目錄中已有的目錄或文件名稱。
4.cat(1)作用。
連接并顯示指定的一個(gè)或多個(gè)文件的有關(guān)信息。
(2)格式。
cat[選項(xiàng)]文件1文件2…
其中的文件1、文件2為要顯示的多個(gè)文件。
(3)常見參數(shù)。
cat命令的常見參數(shù)如表2.11所示。
表2.11 cat命令常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-n
由第一行開始對所有輸出的行數(shù)編號(hào)
-b
和-n相似,只不過對于空白行不編號(hào)
(4)使用實(shí)例。
[david@localhost~]$cat-nhello1.chello2.c
1#include<stdio.h>
2voidmain()
3{
4printf("Hello!Thisismyhome!n");
5}
6#include<stdio.h>
7voidmain()
8{
9printf("Hello!Thisisyourhome!n");
10}
在該實(shí)例中,指定對hello1.c和hello2.c進(jìn)行輸出,并指定行號(hào)。
5.cp、mv和rm(1)作用。
①cp:將給出的文件或目錄復(fù)制到另一文件或目錄中。
②mv:為文件或目錄改名或?qū)⑽募梢粋€(gè)目錄移入另一個(gè)目錄中。
③rm:刪除一個(gè)目錄中的一個(gè)或多個(gè)文件或目錄。
(2)格式。
①cp:cp[選項(xiàng)]源文件或目錄目標(biāo)文件或目錄
②mv:mv[選項(xiàng)]源文件或目錄目標(biāo)文件或目錄
③rm:rm[選項(xiàng)]文件或目錄
(3)常見參數(shù)。
①cp主要選項(xiàng)參數(shù)如表2.12所示。
表2.12 cp命令常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-a
保留鏈接、文件屬性,并復(fù)制其子目錄,其作用等于dpr選項(xiàng)的組合
-d
復(fù)制時(shí)保留鏈接
-f
刪除已經(jīng)存在的目標(biāo)文件而不提示
-i
在覆蓋目標(biāo)文件之前將給出提示要求用戶確認(rèn)。回答y時(shí)目標(biāo)文件將被覆蓋,而且是交互式復(fù)制
-p
此時(shí)cp除復(fù)制源文件的內(nèi)容外,還將把其修改時(shí)間和訪問權(quán)限也復(fù)制到新文件中
-r
若給出的源文件是一個(gè)目錄文件,此時(shí)cp將遞歸復(fù)制該目錄下所有的子目錄和文件。此時(shí)目標(biāo)文件必須為一個(gè)目錄名
②mv主要選項(xiàng)參數(shù)如表2.13所示。
表2.13 mv命令常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-i
若mv操作將導(dǎo)致對已存在的目標(biāo)文件的覆蓋,此時(shí)系統(tǒng)詢問是否重寫,并要求用戶回答y或n,這樣可以避免誤覆蓋文件
-f
禁止交互操作。在mv操作要覆蓋某已有的目標(biāo)文件時(shí)不給任何指示,在指定此選項(xiàng)后,i選項(xiàng)將不再起作用
③rm主要選項(xiàng)參數(shù)如表2.14所示。
表2.14 rm命令常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-i
進(jìn)行交互式刪除
-f
忽略不存在的文件,但從不給出提示
-r
指示rm將參數(shù)中列出的全部目錄和子目錄均遞歸地刪除
(4)使用實(shí)例。
①cp
[root@wwwhello]#cp-a./my/why/./
[root@wwwhello]#ls
mywhy
該實(shí)例使用-a選項(xiàng)將“/my/why”目錄下的所有文件復(fù)制到當(dāng)前目錄下。而此時(shí)在原先目錄下還有原有的文件。
②mv
[root@wwwhello]#mv-i./my/why/./
[root@wwwhello]#ls
mywhy
該實(shí)例中把“/my/why”目錄下的所有文件移至當(dāng)前目錄,則原目錄下文件被自動(dòng)刪除。
③rm
[root@wwwhello]#rm–r-i./why
rm:descendintodirectory'./why'?y
rm:remove'./why/my.c'?y
rm:removedirectory'./why'?y
該實(shí)例使用“-r”選項(xiàng)刪除“./why”目錄下所有內(nèi)容,系統(tǒng)會(huì)進(jìn)行確認(rèn)是否刪除。
(5)使用說明。
①cp:該命令把指定的源文件復(fù)制到目標(biāo)文件,或把多個(gè)源文件復(fù)制到目標(biāo)目錄中。
②mv
n 該命令根據(jù)命令中第二個(gè)參數(shù)類型的不同(是目標(biāo)文件還是目標(biāo)目錄)來判斷是重命名還是移動(dòng)文件,當(dāng)?shù)诙€(gè)參數(shù)類型是文件時(shí),mv命令完成文件重命名,此時(shí),它將所給的源文件或目錄重命名為給定的目標(biāo)文件名;
n 當(dāng)?shù)诙€(gè)參數(shù)是已存在的目錄名稱時(shí),mv命令將各參數(shù)指定的源文件均移至目標(biāo)目錄中;
n 在跨文件系統(tǒng)移動(dòng)文件時(shí),mv先復(fù)制,再將原有文件刪除,而連至該文件的鏈接也將丟失。
③rm
n 如果沒有使用-r選項(xiàng),則rm不會(huì)刪除目錄;
n 使用該命令時(shí)一旦文件被刪除,它是不能被恢復(fù)的,所以最好使用-i參數(shù)。
6.chown和chgrp(1)作用。
①chown:修改文件所有者和組別。
②chgrp:改變文件的組所有權(quán)。
(2)格式。
①chown:chown[選項(xiàng)]...文件所有者[所有者組名]文件
其中的文件所有者為修改后的文件所有者。
②chgrp:chgrp[選項(xiàng)]...文件所有組文件
其中的文件所有組為改變后的文件組擁有者。
(3)常見參數(shù)。
chown和chgrp的常見參數(shù)意義相同,其主要選項(xiàng)參數(shù)如表2.15所示。
表2.15 chown和chgrp命令常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-c,-changes
詳盡地描述每個(gè)file實(shí)際改變了哪些所有權(quán)
-f,--silent,--quiet
不打印文件所有權(quán)就不能修改的報(bào)錯(cuò)信息
(4)使用實(shí)例。
在筆者的系統(tǒng)中一個(gè)文件的所有者原先是這樣的。
[root@localhosttest]#$ls-l
-rwxr-xr-x15apecteldavid40966月4200XuClinux-dist.tar
可以看出,這是一個(gè)文件,文件擁有者是apectel,具有可讀寫和執(zhí)行的權(quán)限,它所屬的用戶組是david,具有可讀和執(zhí)行的權(quán)限,但沒有可寫的權(quán)限,同樣,系統(tǒng)其他用戶對其也只有可讀和執(zhí)行的權(quán)限。
首先使用chown將文件所有者改為root。
[root@localhosttest]#chownrootuClinux-dist.tar
[root@localhosttest]#ls–l
-rwxr-xr-x15rootdavid40966月4200XuClinux-dist.tar
可以看出,此時(shí),該文件擁有者變?yōu)榱藃oot,它所屬文件用戶組不變。
接著使用chgrp將文件用戶組變?yōu)閞oot。
[root@localhosttest]#chgrprootuClinux-dist.tar
[root@localhosttest]#ls–l
-rwxr-xr-x15rootroot40966月4200XuClinux-dist.tar
(5)使用說明。
n 使用chown和chgrp必須擁有root權(quán)限。
小知識(shí)
在進(jìn)行有關(guān)文件的操作時(shí),若想避免輸入冗長的文件,在文件名沒有重復(fù)的情況下可以使用輸入文件前幾個(gè)字母+<Tab>鍵的方式,即:cd/uC<tab>會(huì)顯示cd/uClinux-list
7.chmod(1)作用。
改變文件的訪問權(quán)限。
(2)格式。
chmod可使用符號(hào)標(biāo)記進(jìn)行更改和八進(jìn)制數(shù)指定更改兩種方式,因此它的格式也有兩種不同的形式。
①符號(hào)標(biāo)記:chmod[選項(xiàng)]…符號(hào)權(quán)限[符號(hào)權(quán)限]…文件
其中的符號(hào)權(quán)限可以指定為多個(gè),也就是說,可以指定多個(gè)用戶級(jí)別的權(quán)限,但它們中間要用逗號(hào)分開表示,若沒有顯式指出則表示不作更改。
②八進(jìn)制數(shù):chmod[選項(xiàng)]…八進(jìn)制權(quán)限文件…
其中的八進(jìn)制權(quán)限是指要更改后的文件權(quán)限。
(3)選項(xiàng)參數(shù)。
chmod主要選項(xiàng)參數(shù)如表2.16所示。
表2.16 chmod命令常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-c
若該文件權(quán)限確實(shí)已經(jīng)更改,才顯示其更改動(dòng)作
-f
若該文件權(quán)限無法被更改也不要顯示錯(cuò)誤信息
-v
顯示權(quán)限變更的詳細(xì)資料
(4)使用實(shí)例。
chmod涉及文件的訪問權(quán)限,在此對相關(guān)的概念進(jìn)行簡單的回顧。
在1.3.1節(jié)中已經(jīng)提到,文件的訪問權(quán)限可表示成:-rwxrwxrwx。在此設(shè)有3種不同的訪問權(quán)限:讀(r)、寫(w)和運(yùn)行(x)。3個(gè)不同的用戶級(jí)別:文件擁有者(u)、所屬的用戶組(g)和系統(tǒng)里的其他用戶(o)。在此,可增加一個(gè)用戶級(jí)別a(all)來表示所有這3個(gè)不同的用戶級(jí)別。
①第一種符號(hào)連接方式的chmod命令中,用加號(hào)“+”代表增加權(quán)限,用減號(hào)“−”代表刪除權(quán)限,等于號(hào)“=”代表設(shè)置權(quán)限。
例如,原先筆者系統(tǒng)中有文件uClinux20031103.tgz,其權(quán)限如下所示。
[root@localhosttest]#ls–l
-rw-r--r--1rootroot79708616Mar242005uClinux20031103.tgz
[root@localhosttest]#chmoda+rx,u+wuClinux20031103.tgz
[root@localhosttest]#ls–l
-rwxr-xr-x1rootroot79708616Mar242005uClinux20031103.tgz
可見,在執(zhí)行了chmod之后,文件擁有者除擁有所有用戶都有的可讀和執(zhí)行的權(quán)限外,還有可寫的權(quán)限。
②對于第二種八進(jìn)制數(shù)指定的方式,將文件權(quán)限字符代表的有效位設(shè)為“1”,即“rw-”、“rw-”和“r--”的八進(jìn)制表示為“110”、“110”、“100”,把這個(gè)二進(jìn)制串轉(zhuǎn)換成對應(yīng)的八進(jìn)制數(shù)就是6、6、4,也就是說該文件的權(quán)限為664(三位八進(jìn)制數(shù))。這樣對于轉(zhuǎn)化后八進(jìn)制數(shù)、二進(jìn)制及對應(yīng)權(quán)限的關(guān)系如表2.17所示。
表2.17 轉(zhuǎn)化后八進(jìn)制數(shù)、二進(jìn)制及對應(yīng)權(quán)限的關(guān)系
轉(zhuǎn)換后八進(jìn)制數(shù)
二進(jìn)制
對應(yīng)權(quán)限
轉(zhuǎn)換后八進(jìn)制數(shù)
二進(jìn)制
對應(yīng)權(quán)限
0
000
沒有任何權(quán)限
1
001
只能執(zhí)行
2
010
只寫
3
011
只寫和執(zhí)行
4
100
只讀
5
101
只讀和執(zhí)行
6
110
讀和寫
7
111
讀、寫和執(zhí)行
同上例,原先筆者系統(tǒng)中有文件genromfs-0.5.1.tar.gz,其權(quán)限如下所示。
[root@localhosttest]#ls–l
-rw-rw-r--1daviddavid20543Dec292004genromfs-0.5.1.tar.gz
[root@localhosttest]#chmod765genromfs-0.5.1.tar.gz
[root@localhosttest]#ls–l
-rwxrw-r-x1daviddavid20543Dec292004genromfs-0.5.1.tar.gz
可見,在執(zhí)行了chmod765之后,該文件的擁有者權(quán)限、文件組權(quán)限和其他用戶權(quán)限都恰當(dāng)?shù)貙?yīng)了。
(5)使用說明
n 使用chmod必須具有root權(quán)限。
想一想
chmodo+xuClinux20031103.tgz是什么意思?它所對應(yīng)的八進(jìn)制數(shù)指定更改應(yīng)如何表示?
8.grep(1)作用。
在指定文件中搜索特定的內(nèi)容,并將含有這些內(nèi)容的行標(biāo)準(zhǔn)輸出。
(2)格式。
grep[選項(xiàng)]格式[文件及路徑]
其中的格式是指要搜索的內(nèi)容格式,若缺省“文件及路徑”則默認(rèn)表示在當(dāng)前目錄下搜索。
(3)常見參數(shù)。
grep主要選項(xiàng)參數(shù)如表2.18所示。
表2.18 grep命令常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-c
只輸出匹配行的計(jì)數(shù)
-I
不區(qū)分大小寫(只適用于單字符)
-h
查詢多文件時(shí)不顯示文件名
-l
查詢多文件時(shí)只輸出包含匹配字符的文件名
-n
顯示匹配行及行號(hào)
-s
不顯示不存在或無匹配文本的錯(cuò)誤信息
-v
顯示不包含匹配文本的所有行
(4)使用實(shí)例。
[root@localhosttest]#grep"hello"/-r
Binaryfile./iscit2005/備份/iscit2004.sqlmatches
./ARM_TOOLS/uClinux-Samsung/linux-2.4.x/Documentation/s390/Debugging390.txt:helloworld$2=0
…
在本例中,“hello”是要搜索的內(nèi)容,“/-r”是指定文件,表示搜索根目錄下的所有文件。
(5)使用說明。
n 在缺省情況下,“grep”只搜索當(dāng)前目錄。如果此目錄下有許多子目錄,“grep”會(huì)以如下形式列出:“grep:sound:Isadirectory”。這會(huì)使“grep”的輸出難以閱讀。但有以下兩種解決的方法。
①明確要求搜索子目錄:grep–r(正如上例中所示);
②忽略子目錄:grep-dskip。
n 當(dāng)預(yù)料到有許多輸出時(shí),可以通過管道將其轉(zhuǎn)到“less”(分頁器)上閱讀:如grep"h"./-r|less分頁閱讀。
n grep特殊用法。
greppattern1|pattern2files:顯示匹配pattern1或pattern2的行;
greppattern1files|greppattern2:顯示既匹配pattern1又匹配pattern2的行;
小知識(shí)
在文件命令中經(jīng)常會(huì)使用pattern正則表達(dá)式,它是可以描述一類字符串的模式(Pattern),如果一個(gè)字符串可以用某個(gè)正則表達(dá)式來描述,就稱這個(gè)字符和該正則表達(dá)式匹配。這和DOS中用戶可以使用通配符“*”代表任意字符類似。在Linux系統(tǒng)上,正則表達(dá)式通常被用來查找文本的模式,以及對文本執(zhí)行“搜索-替換”操作等。
正則表達(dá)式的主要參數(shù)有如下
·:忽略正則表達(dá)式中特殊字符的原有含義;
·^:匹配正則表達(dá)式的開始行;
·$:匹配正則表達(dá)式的結(jié)束行;
·<:從匹配正則表達(dá)式的行開始;
·>:到匹配正則表達(dá)式的行結(jié)束;
·[]:單個(gè)字符,如[A]即A符合要求;
·[-]:范圍,如[A-Z],即A、B、C一直到Z都符合要求;
·。:所有的單個(gè)字符;
·*:所有字符,長度可以為0。
9.find(1)作用。
在指定目錄中搜索文件,它的使用權(quán)限是所有用戶。
(2)格式。
find[路徑][選項(xiàng)][描述]
其中的路徑為文件搜索路徑,系統(tǒng)開始沿著此目錄樹向下查找文件。它是一個(gè)路徑列表,相互用空格分離。若缺省路徑,那么默認(rèn)為當(dāng)前目錄。
其中的描述是匹配表達(dá)式,是find命令接受的表達(dá)式。
(3)常見參數(shù)。
[選項(xiàng)]主要參數(shù)如表2.19所示。
表2.19 find選項(xiàng)常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-depth
使用深度級(jí)別的查找過程方式,在某層指定目錄中優(yōu)先查找文件內(nèi)容
-mount
不在其他文件系統(tǒng)(如Msdos、Vfat等)的目錄和文件中查找
[描述]主要參數(shù)如表2.20所示。
表2.20 find描述常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-name
支持通配符*和?
-user
用戶名:搜索文件屬主為用戶名(ID或名稱)的文件
輸出搜索結(jié)果,并且打印
(4)使用實(shí)例。
[root@localhosttest]#find./-namehello*.c
./hello1.c
./iscit2005/hello2.c
在該實(shí)例中使用了-name的選項(xiàng)支持通配符。
(5)使用說明。
n 若使用目錄路徑為“/”,通常需要查找較多的時(shí)間,可以指定更為確切的路徑以減少查找時(shí)間。
n find命令可以使用混合查找的方法,例如,想在/etc目錄中查找大于500000字節(jié),并且在24小時(shí)內(nèi)修改的某個(gè)文件,則可以使用-and(與)把兩個(gè)查找參數(shù)鏈接起來組合成一個(gè)混合的查找方式,如“find/etc-size+500000c-and-mtime+1”。
10.locate(1)作用。
用于查找文件。其方法是先建立一個(gè)包括系統(tǒng)內(nèi)所有文件名稱及路徑的數(shù)據(jù)庫,之后當(dāng)尋找時(shí)就只需查詢這個(gè)數(shù)據(jù)庫,而不必實(shí)際深入檔案系統(tǒng)之中了。因此其速度比find快很多。
(2)格式。
locate[選項(xiàng)]
(3)locate主要選項(xiàng)參數(shù)如表2.21所示。
表2.21 locate命令常見參數(shù)列表
選項(xiàng)
參數(shù)含義
-u
從根目錄開始建立數(shù)據(jù)庫
-U
在指定的位置開始建立數(shù)據(jù)庫
-f
將特定的文件系統(tǒng)排除在數(shù)據(jù)庫外,例如proc文件系統(tǒng)中的文件
-r
使用正則運(yùn)算式做尋找的條件
-o
指定數(shù)據(jù)庫的名稱
(4)使用實(shí)例。
[root@localhosttest]#locateissue-U./
[root@localhosttest]#updatedb
[root@localhosttest]#locate-rissue*
./ARM_TOOLS/uClinux-Samsung/lib/libpam/doc/modules/pam_issue.sgml
./ARM_TOOLS/uClinux-Samsung/lib/libpam/modules/pam_issue
./ARM_TOOLS/uClinux-Samsung/lib/libpam/modules/pam_issue/Makefile
./ARM_TOOLS/uClinux-Samsung/lib/libpam/modules/pam_issue/pam_issue.c
…
實(shí)例中首先在當(dāng)前目錄下建立了一個(gè)數(shù)據(jù)庫,并且在更新了數(shù)據(jù)庫之后進(jìn)行正則匹配查找。通過運(yùn)行可以發(fā)現(xiàn)locate的運(yùn)行速度非???。
(5)使用說明。
locate命令所查詢的數(shù)據(jù)庫由updatedb程序來更新,而updatedb是由crondaemon周期性建立的,但若所找到的檔案是最近才建立或剛改名的,可能會(huì)找不到,因?yàn)閡pdatedb默認(rèn)每天運(yùn)行一次,用戶可以由修改crontab配置(etc/crontab)來更新周期值。
11.ln(1)作用。
為某一個(gè)文件在另外一個(gè)位置建立一個(gè)符號(hào)鏈接。當(dāng)需要在不同的目錄用到相同的文件時(shí),Linux允許用戶不用在每一個(gè)需要的目錄下都存放一個(gè)相同的文件,而只需將其他目錄下的文件用ln命令鏈接即可,這樣就不必重復(fù)地占用磁盤空間。
(2)格式。
ln[選項(xiàng)]目標(biāo)目錄
(3)常見參數(shù)。
n -s建立符號(hào)鏈接(這也是通常惟一使用的參數(shù))。
(4)使用實(shí)例。
[root@localhosttest]#ln-s../genromfs-0.5.1.tar.gz./hello
[root@localhosttest]#ls-l
total77948
lrwxrwxrwx1rootroot24Jan1400:25hello->../genromfs-0.5.1.tar.gz
該實(shí)例建立了當(dāng)前目錄的hello文件與上級(jí)目錄之間的符號(hào)鏈接,可以看見,在hello的ls–l中的第一位為“l”,表示符號(hào)鏈接,同時(shí)還顯示了鏈接的源文件。
(5)使用說明。
n ln命令會(huì)保持每一處鏈接文件的同步性,也就是說,不論改動(dòng)了哪一處,其他的文件都會(huì)發(fā)生相同的變化。
n ln的鏈接分軟鏈接和硬鏈接兩種。
軟鏈接就是上面所說的ln-s****,它只會(huì)在用戶選定的位置上生成一個(gè)文件的鏡像,不會(huì)重復(fù)占用磁盤空間,平時(shí)使用較多的都是軟鏈接。
硬鏈接是不帶參數(shù)的ln****,它會(huì)在用戶選定的位置上生成一個(gè)和源文件大小相同的文件,無論是軟鏈接還是硬鏈接,文件都保持同步變化。