Linux系統(tǒng)開發(fā): 命令進階學(xué)習(xí)(一)
一、解壓縮命令介紹
linux下最常用的打包程序是tar命令,使用tar打出來的包我們常稱為tar包,tar包文件的命令通常都是以.tar結(jié)尾的,生成tar包后,就可以用其它的程序來進行壓縮了。
1.1.1 tar命令介紹
功能:tar是一個壓縮解壓工具。利用tar,用戶可以為某一特定文件創(chuàng)建檔案(備份文件),也可以在檔案中改變文件,或者向檔案中加入新的文件。tar最初被用來在磁帶上創(chuàng)建檔案,現(xiàn)在,用戶可以在任何設(shè)備上創(chuàng)建檔案,如軟盤。利用tar命令,可以把一大堆的文件和目錄全部打包成一個文件,這對于備份文件或?qū)讉€文件組合成為一個文件以便于網(wǎng)絡(luò)傳輸是非常有用的。linux上的tar是GNU版本的。
語法:tar ?[主選項+輔選項] ?<目標(biāo)文檔> ?<源文件或者目錄>
使用該命令時,主選項是必須要有的,它告訴tar要做什么事情,輔選項是輔助使用的,可以選用。
參數(shù):
c 創(chuàng)建新的檔案文件。如果用戶想備份一個目錄或是一些文件,就要選擇這個選項。
r 把要存檔的文件追加到檔案文件的未尾。例如用戶已經(jīng)作好備份文件,又發(fā)現(xiàn)還有一個目錄或是一些文件忘記備份了,這時可以使用該選項,將忘記的目錄或文件追加到備份文件中。
t 列出檔案文件的內(nèi)容,查看已經(jīng)備份了哪些文件。
u 更新文件。就是說,用新增的文件取代原備份文件,如果在備份文件中找不到要更新的文件,則把它追加到備份文件的最后。
x 從檔案文件中釋放文件。
注意:c/x/t 僅能存在一個!不可同時存在!
輔助選項:
b 該選項是為磁帶機設(shè)定的。其后跟一數(shù)字,用來說明區(qū)塊的大小,系統(tǒng)預(yù)設(shè)值為20(20*512 bytes)。
f 使用檔案文件或設(shè)備,這個選項通常是必選的。請留意,在 f 之后要立即接檔名喔!不要再加參數(shù)!
k 保存已經(jīng)存在的文件。例如我們把某個文件還原,在還原的過程中,遇到相同的文件,不會進行覆蓋。
m 在還原文件時,把所有文件的修改時間設(shè)定為現(xiàn)在。
M 創(chuàng)建多卷的檔案文件,以便在幾個磁盤中存放。
v 詳細報告tar處理的文件信息。如無此選項,tar不報告文件信息。
w 每一步都要求確認。
z 用gzip來壓縮/解壓縮文件,后綴名為.gz,加上該選項后可以將檔案文件進行壓縮,但還原時也一定要使用該選項進行解壓縮。
j 用bzip2來壓縮/解壓縮文件,后綴名為.bz2,加上該選項后可以將檔案文件進行壓縮,但還原時也一定要使用該選項進行解壓縮。
1.1.2 tar命令解壓/壓縮使用范例
將/test目錄下的所有文件打包為test.tar文件。
# tar -cvf test.tar /test
注意:如果打包的文件或者目錄是絕對路徑,可能會出現(xiàn)提示:tar: 從成員名中刪除開頭的“/”
在參數(shù)中加上-P即可消除。
示例:
# tar -cvPf test.tar /test
解壓打包的.tar文件
# tar -xvf test.tar
更新文件
就是說,用新增的文件取代原備份文件,如果在備份文件中找不到要更新的文件,則把它追加到備份文件的最后。
# tar -uf test.tar 123.c
列出已經(jīng)打包的文件,可以用于查看已經(jīng)備份了哪些文件。
# tar -tf test.tar
使用gzip來壓縮/解壓縮文件
# tar -czf test.tar.gz test/? //壓縮
# tar -xzf test.tar.gz????? //解壓
使用bzip2來壓縮/解壓縮文件
# tar -cjf test.tar.bz2 test/?? //壓縮
# tar -xjf test.tar.bz2?????? //解壓
1.1.3 ZIP格式壓縮/解壓
linux下提供了zip和unzip程序?qū)IP格式壓縮包進行處理,zip是壓縮程序,unzip是解壓程序。它們的參數(shù)選項很多,下面只做簡單介紹。
將所有.jpg的文件壓縮成一個zip包
# zip all.zip *.jpg
將all.zip中的所有文件解壓出來
# unzip all.zip
常用參數(shù):
-r 遞 歸處理,將指定目錄下的所有文件和子目錄一并處理。
壓縮指定目錄下的所有文件
# zip -r 123.zip /test/
二、磁盤操作相關(guān)命令介紹
1.2.1 fdisk命令:磁盤分區(qū)
Linux下的fdisk功能是極其強大的,用它可以劃分出最復(fù)雜的分區(qū)。
查看設(shè)備的詳細信息。# fdisk -l
在console上輸入fdisk/dev/sda,可進入分割硬盤模式。
輸入m顯示所有命令列示。
輸入p顯示硬盤分割情形。
輸入a設(shè)定硬盤啟動區(qū)。
輸入n設(shè)定新的硬盤分割區(qū)。
輸入e硬盤為[延伸]分割區(qū)(extend)。
輸入p硬盤為[主要]分割區(qū)(primary)。
輸入t改變硬盤分割區(qū)屬性。
輸入d刪除硬盤分割區(qū)屬性。
輸入q結(jié)束不存入硬盤分割區(qū)屬性。
輸入w結(jié)束并寫入硬盤分割區(qū)屬性。
1.2.2 dd命令:磁盤備份命令
dd是Linux/UNIX 下的一個非常有用的命令,作用是將一個指定文件拷貝到磁盤的指定塊。可以用于磁盤備份、程序燒寫等應(yīng)用。
基本語法: ?dd iflag=dsync oflag=dsync if=<輸入文件> of=<輸出的文件> seek=<跳過的塊數(shù)量>
dd命令的主要選項:
if=file
輸入文件名,缺省為標(biāo)準(zhǔn)輸入。
of=file
輸出文件名,缺省為標(biāo)準(zhǔn)輸出。
ibs=bytes
一次讀入 bytes 個字節(jié)(即一個塊大小為 bytes 個字節(jié))。
obs=bytes
一次寫 bytes 個字節(jié)(即一個塊大小為 bytes 個字節(jié))。
bs=bytes
同時設(shè)置讀寫塊的大小為 bytes ,可代替 ibs 和 obs 。
cbs=bytes
一次轉(zhuǎn)換 bytes 個字節(jié),即轉(zhuǎn)換緩沖區(qū)大小。
skip=blocks
從輸入文件開頭跳過 blocks 個塊后再開始復(fù)制。
seek=blocks
從輸出文件開頭跳過 blocks 個塊后再開始復(fù)制。(通常只有當(dāng)輸出文件是磁盤或磁帶時才有效)。
count=blocks
僅拷貝 blocks 個塊,塊大小等于 ibs 指定的字節(jié)數(shù)。
conv=conversion[,conversion...]
用指定的參數(shù)轉(zhuǎn)換文件。
數(shù)字:b=512 ,k=1024
運用實例
修復(fù)硬盤
dd if=/dev/sda of=/dev/sda
當(dāng)硬盤較長時間(比如1,2年)放置不使用后,磁盤上會產(chǎn)生magnetic flux point(磁通點)。當(dāng)磁頭讀到這些區(qū)域時會遇到困難,并可能導(dǎo)致I/O錯誤。當(dāng)這種情況影響到硬盤的第一個扇區(qū)時,可能導(dǎo)致硬盤報廢。上邊的命令有可能使這些數(shù)據(jù)起死回生。且這個過程是安全,高效的。
清除磁盤數(shù)據(jù)
# dd if=/dev/urandom /dev/sdb
利用隨機的數(shù)據(jù)填充硬盤,在某些必要的場合可以用來銷毀數(shù)據(jù)。執(zhí)行此操作以后,/dev/sdb將無法掛載,創(chuàng)建和拷貝操作無法執(zhí)行。 其中的/dev/urandom是產(chǎn)生隨機數(shù)的文件。
也可以直接獲取隨機數(shù)據(jù):
# dd if=/dev/urandom of=123.dat bs=1024k count=2
其中bs表示每一個塊的大小是1024kb。count就表示塊數(shù)量。 加起來就會拷貝(1024*2)kb的數(shù)據(jù)
磁盤備份
dd if=/dev/sdb of=disk.img
將磁盤數(shù)據(jù)備份到當(dāng)前目錄的disk.img文件。備份之后可以使用壓縮軟件打開。如果需要恢復(fù)直接將參數(shù)變換個位置。
dd if= disk.img of=/dev/sdb
從光盤拷貝iso鏡像
dd if=/dev/cdrom of=/root/cd.iso
拷貝光盤數(shù)據(jù)到root文件夾下,并保存為cd.iso文件。
程序燒寫
dd iflag=dsync oflag=dsync if=123.bin of=/dev/sdb seek=1057
將123.bin文件拷貝到/dev/sdb設(shè)備中,seek表示跳過1057個塊之后再進行拷貝。
1.2.3 mount命令:掛載硬盤或鏡像
mount命令用于掛載磁盤分區(qū)或者網(wǎng)絡(luò)文件系統(tǒng)。
語法:mount -t [文件系統(tǒng)類型] [將要掛載的設(shè)備] [-o 選項] [掛載的目標(biāo)目錄]
注: 通過-t這個參數(shù),我們來指定文件系統(tǒng)的類型,一般的情況下不指定也能自動識加。-t 后面跟 ext3 、ext2 、reiserfs、vfat 、ntfs、nfs 等;可以通過查看mount的幫助文檔進行查看詳細信息。
-o ?主要用來描述設(shè)備或檔案的掛接方式。常用的參數(shù)有:
loop:用來把一個文件當(dāng)成硬盤分區(qū)掛接上系統(tǒng)
ro:采用只讀方式掛接設(shè)備
rw:采用讀寫方式掛接設(shè)備
iocharset:指定訪問文件系統(tǒng)所用字符集
運用實例
掛載SD卡分區(qū)到指定目錄
# mount /dev/sdb2 /test/
將sdb2設(shè)備掛載到/test目錄下。
如果掛載之后需要取消,可以使用umount命令。
# umount? /test/
掛載光盤映像文件到指定目錄
# mount 123.iso -o loop /test/
將123.iso文件當(dāng)成硬盤掛載到/test目錄下。
將一個目錄掛載到另一個目錄下
# mount --bind /work/ ?/test/
相當(dāng)于使用ln建立鏈接一樣效果。
使用mount命令掛載NFS網(wǎng)絡(luò)文件系統(tǒng)
# mount -t nfs 192.168.11.123:/work /test/
如果掛載提示設(shè)備資源上鎖,可以使用下面方式進行掛載:
# mount -t nfs -o nolock 192.168.11.123:/work /test/
其中192.168.11.123表示服務(wù)器的IP地址,/work表示NFS服務(wù)器共享的目錄。/test/表示本地掛載的目錄。
搭建NFS服務(wù)器方法
首先設(shè)置將要共享的路徑。
編輯/etc/exports文件,示例:
/work/ *(rw,no_root_squash,sync)
重啟NFS服務(wù)器
# service nfs restart
1.3 文件搜索與修改
1.3.1 find命令:搜索文件
命令功能:用于在文件樹種查找文件,并作出相應(yīng)的處理。
語法:find [查找的路徑] [選項] [表達式]
命令選項
-name
按照文件名查找文件。
-perm
按照文件權(quán)限來查找文件。
-prune
使用這一選項可以使find命令不在當(dāng)前指定的目錄中查找,如果同時使用-depth選項,那么-prune將被find命令忽略。
-user
按照文件屬主來查找文件。
-group
按照文件所屬的組來查找文件。
-mtime -n +n
按照文件的更改時間來查找文件, - n表示文件更改時間距現(xiàn)在n天以內(nèi),+ n表示文件更改時間距現(xiàn)在n天以前。
-nogroup
查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。
-nouser
查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。
-newer file1 ! file2
查找更改時間比文件file1新但比文件file2舊的文件。
-type
查找某一類型的文件,諸如:
b - 塊設(shè)備文件。
d - 目錄。
c - 字符設(shè)備文件。
p - 管道文件。
l - 符號鏈接文件。
f - 普通文件。
-size n:
[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節(jié)計。
-depth :
在查找文件時,首先查找當(dāng)前目錄中的文件,然后再在其子目錄中查找。
-fstype:
查找位于某一類型文件系統(tǒng)中的文件,這些文件系統(tǒng)類型通常可以在配置文件/etc/fstab中找到,該配置文件中包含了本系統(tǒng)中有關(guān)文件系統(tǒng)的信息。
-mount :
在查找文件時不跨越文件系統(tǒng)mount點。
-follow:
如果find命令遇到符號鏈接文件,就跟蹤至鏈接所指向的文件。
-cpio? :
對匹配的文件使用cpio命令,將這些文件備份到磁帶設(shè)備中。
-amin n
查找系統(tǒng)中最后N分鐘訪問的文件
-atime n
查找系統(tǒng)中最后n*24小時訪問的文件
-cmin n
查找系統(tǒng)中最后N分鐘被改變文件狀態(tài)的文件
-ctime n
查找系統(tǒng)中最后n*24小時被改變文件狀態(tài)的文件
-mmin n
查找系統(tǒng)中最后N分鐘被改變文件數(shù)據(jù)的文件
-mtime n
查找系統(tǒng)中最后n*24小時被改變文件數(shù)據(jù)的文件
根據(jù)文件名查找文件
# find /work/ -name 123.c
在/work目錄下查找名稱為123.c的文件。
根據(jù)通配符進行查找文件
# find /work/ -name "*.c"
在/work目錄下查找以.c為后綴的文件。注意:該查找方式區(qū)分大小寫。
不區(qū)分大小寫的方式:
# find /work/ -iname "*.c"
同時查找多個文件
# find /work/ -name "*.txt" -o -name "*.c" -o -name "*.h"
在/work目錄下查找以.c、.txt、.h為后綴的文件。 主要參數(shù)是-o。
匹配路徑或者文件
# find /work/ -path "*mplayer*"
在/work目錄下查找包含mplayer字符的文件和目錄。
根據(jù)正則表達式查找
# find /work/ -regex ".*\.h∥\.c
\.
h
‖
\.
c
$"
否定參數(shù)
# find /work/ ! -name "*.c"
在/work目錄下查找不是以.c為后綴的文件。
根據(jù)文件類型搜索
# find /work/ -type f
在/work目錄下查找類型為f的普通文件。
常用的類型:f 普通文件、 l 符號連接、 d 目錄、 c 字符設(shè)備、 b 塊設(shè)備、 s 套接字、 p ?Fifo管道文件
根據(jù)文件大小進行匹配
# find /work/ -type f -size 200k
在/work目錄下查找類型為f的普通文件,并且文件的大小為200k。
文件大小單元:
b —— 塊(512字節(jié))
c —— 字節(jié)
w —— 字(2字節(jié))
k —— K字節(jié)
M —— 兆字節(jié)
G —— G字節(jié)
常用大小搜索方式:
搜索大于100KB的文件 # find /work/ -type f -size +100k
搜索小于100KB的文件 # find /work/ -type f -size -100k
搜索等于100KB的文件 # find /work/ -type f -size 100k
根據(jù)文件時間戳進行搜索
UNIX/Linux文件系統(tǒng)每個文件都有三種時間戳:
訪問時間(-atime/天,-amin/分鐘):用戶最近一次訪問時間。
修改時間(-mtime/天,-mmin/分鐘):文件最后一次修改時間。
變化時間(-ctime/天,-cmin/分鐘):文件數(shù)據(jù)元(例如權(quán)限等)最后一次修改時間。
最近七天內(nèi)被訪問過的所有文件:find /work -type f -atime -7
搜索恰好在七天前被訪問過的所有文件: find /work -type f -atime 7
搜索超過七天內(nèi)被訪問過的所有文件: find /work -type f -atime +7
搜索訪問時間超過10分鐘的所有文件: find /work -type f -amin +10
找出比file.log修改時間更長的所有文件: find . -type f -newer file.log
查找并刪除指定文件
find /test/ -work f -name "*.c" -delete
在work目錄下查找以.c為后綴的文件,并將其刪除。
根據(jù)權(quán)限進行查找
# find /work/ -type f -perm 777
在/work目錄下搜索出權(quán)限為777的文件。
借助-exec選項與其他命令結(jié)合使用
查找并刪除指定的文件
# find /work/ -name "*.txt" -ok rm? {} \;
# find /work/ -name "*.txt" -exec rm? {} \;
在work目錄下查找以.txt為后綴的文件,將其全部刪除。
其中-ok和-exec行為一樣,不過-ok會給出提示,是否執(zhí)行相應(yīng)的操作,而-exec不會提示,直接執(zhí)行。
{} 用于與-exec和-ok選項結(jié)合使用來匹配所有文件。
查找并拷貝文件
# find /work/ -name "*.txt" -exec cp? {} /opt/ \;
在work目錄下查找以.txt為后綴的文件,將其全部拷貝到/opt目錄下。
執(zhí)行多條命令的方法
因為單行命令中-exec參數(shù)中無法使用多個命令,我們可以將命令寫成腳本,然后使用-exec進行調(diào)用。
# find /work/ -name "*.txt" -exec ./text.sh {} \;
{}是匹配所有文件,傳遞給腳本之后,在腳本中使用$1獲取傳入的參數(shù)信息。
腳本文件中的代碼示例: echo $1
1.3.2 grep命令:文本搜索工具
Linux系統(tǒng)中g(shù)rep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用權(quán)限是所有用戶。
語法:grep [選項] [文件]
主要選項:
-c
只輸出匹配行的計數(shù)。
-i
不區(qū)分大 小寫(只適用于單字符)。
-h
查詢多文件時不顯示文件名。
-l
查詢多文件時只輸出包含匹配字符的文件名。
-n
顯示匹配行及行號。
-s
不顯示不存在或無匹配文本的錯誤信息。
-v
顯示不包含匹配文本的所有行。
正則表達式主要參數(shù):
\
忽略正則表達式中特殊字符的原有含義。
^
匹配正則表達式的開始行。
$
匹配正則表達式的結(jié)束行。
\<
從匹配正則表達 式的行開始。
\>
到匹配正則表達式的行結(jié)束。
[ ]
單個字符,如[A]即A符合要求 。
[ - ]
范圍,如[A-Z],即A、B、C一直到Z都符合要求 。
。
所有的單個字符。
*
有字符,長度可以為0。
使用實例
搜索文本并添加文本
grep -q "12345" /work/test.txt || echo "12345" >> /work/test.txt
在/work/test.txt文件中搜索12345這個字符串?dāng)?shù)據(jù),如果有就不執(zhí)行||后面的代碼,如果沒有,就執(zhí)行||后面的代碼。-q在這里是將grep變?yōu)轭愃朴趇f的效果。
同時搜索多個文件
# grep "A" /work/*.c
在work目錄下以.c后綴的文件中搜索A這個數(shù)據(jù),如果搜索成功,會將A出現(xiàn)的行打印到屏幕上。
搜索輸出行與行號
# grep -n "data" 123.c
在123.c文件中搜索data數(shù)據(jù),搜索成功后將data所在的行與行號全部打印出來。
大小寫敏感
# grep -i "data" 123.c
輸出所有含有data或DAT的字符串的行。
1.3.3 sed命令:在線編輯器
sed 是一種在線編輯器,它一次處理一行內(nèi)容。處理時,把當(dāng)前處理的行存儲在臨時緩沖區(qū)中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕。接著處理下一行,這樣不斷重復(fù),直到文件末尾。文件內(nèi)容并沒有改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反復(fù)操作;編寫轉(zhuǎn)換程序等。
Sed本質(zhì)上是一個編輯器,但是它是非交互式的,這點與VIM不同;同時它又是面向字符流的,輸入的字符流經(jīng)過Sed的處理后輸出。這兩個特性使得Sed成為命令行下面非常有用的一個處理工具。
sed的處理流程,簡化后是這樣的:
讀入新的一行內(nèi)容到緩存空間;
從指定的操作指令中取出第一條指令,判斷是否匹配pattern;
如果不匹配,則忽略后續(xù)的編輯命令,回到第2步繼續(xù)取出下一條指令;
如果匹配,則針對緩存的行執(zhí)行后續(xù)的編輯命令;完成后,回到第2步繼續(xù)取出下一條指令;
當(dāng)所有指令都應(yīng)用之后,輸出緩存行的內(nèi)容;回到第1步繼續(xù)讀入下一行內(nèi)容;
當(dāng)所有行都處理完之后,結(jié)束;
語法:
sed [-hnV][-e 亚洲妓女综合网99| 亚洲日韩AV一区二区三区中文| 亚洲精品私拍国产福利在线| 亚洲乱色伦图片区小说| 亚洲校园春色另类激情| 亚洲精品美女视频| 亚洲综合久久1区2区3区| 久久亚洲AV成人无码电影| 久久99国产亚洲精品观看| 亚洲AV无码专区国产乱码电影 | 亚洲一区中文字幕在线电影网| 91亚洲国产在人线播放午夜| 久久久久亚洲Av无码专| 亚洲黄色在线观看网站| 亚洲欧洲日韩国产| 亚洲AV无码成人专区| 亚洲人成7777| 亚洲乱妇老熟女爽到高潮的片| 亚洲精品无码久久久久久| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 国产亚洲美女精品久久| 国产成人 亚洲欧洲| mm1313亚洲精品国产| 亚洲精品国产福利一二区| 亚洲午夜福利精品久久| 在线a亚洲v天堂网2019无码| 国产亚洲精品a在线无码| 久久亚洲精品成人| 777亚洲精品乱码久久久久久 | va天堂va亚洲va影视中文字幕| 国产精品高清视亚洲精品| 亚洲精品无码永久在线观看男男| 亚洲国产成人无码AV在线| 成人亚洲综合天堂| 国产成人亚洲影院在线观看| 国产V亚洲V天堂A无码| 久久精品亚洲一区二区三区浴池| 亚洲视频在线不卡| 亚洲最大成人网色香蕉| 亚洲精品无码av中文字幕| 亚洲AⅤ优女AV综合久久久|