『壹』 塊設備文件和字元設備文件的本質區別是什麼
設備文件分為Block
Device Driver和Character Device Drive兩類。 Device Drive又被稱為字元設備或裸設備raw
devices; Block Device Driver通常成為塊設備。而Block Device Driver是以固定大小長度來傳送轉移資料
;Character Device Driver是以不定長度的字元傳送資料 。且所連接的Devices也有所不同,Block
Device大致是可以隨機存取(Random Access)資料的設備,如硬碟機或光碟機;而Character
Device剛好相反,依循先後順序存取資料的設備,如印表機 、終端機等皆是。
/dev/dsk對應的為塊設備,文件系統的操作用到它,如mount。/dev/rdsk對應的為字元設備(裸設備,rdsk的r即為 raw),fsck
newfs等會涉及到。一般我們的操作系統和各種軟體都是以塊方式讀寫硬碟,這里的塊是邏輯塊,創建文件系統時可以選擇,windows里叫簇。可看 newfs or
mkfs的manual。oracle是比較常見的字元方式讀寫硬碟。
字元設備還是塊設備的定義屬於操作系統的設備訪問層,與實際物理設備的特性無必然聯系。設備訪問層下面是驅動程序,所以只要驅動程序提供的方式,都可以。也就是說驅動程序支持stream方式,那麼就可以用這種方式訪問,驅動程序如果還支持block方式,那麼你想用哪種方式訪問都可以,典型的比如硬碟式的裸設備,兩種都支持塊設備(block
device):是一種具有一定結構的隨機存取設備,對這種設備的讀寫是按塊進行的,他使用緩沖區來存放暫時的數據,待條件成熟後,從緩存一次性寫入設備或從設備中一次性讀出放入到緩沖區,如磁碟和文件系統等字元設備(Character
device):這是一個順序的數據流設備,對這種設備的讀寫是按字元進行的,而且這些字元是連續地形成一個數據流。他不具備緩沖區,所以對這種設備的讀寫是實時的,如終端、磁帶機等。
系統中能夠隨機(不需要按順序)訪問固定大小數據片(chunks)的設備被稱作塊設備,這些數據片就稱作塊。最常見的塊設備是硬碟,除此以外,還有軟盤驅動器、CD-ROM驅動器和快閃記憶體等等許多其他塊設備。注意,它們都是以安裝文件系統的方式使用的——這也是塊設備一般的訪問方式。
另一種基本的設備類型是字元設備。字元設備按照字元流的方式被有序訪問,像串口和鍵盤就都屬於字元設備。如果一個硬體設備是以字元流的方式被訪問的話,那就應該將它歸於字元設備;反過來,如果一個設備是隨機(無序的)訪問的,那麼它就屬於塊設備。
這兩種類型的設備的根本區別在於它們是否可以被隨機訪問——換句話說就是,能否在訪問設備時隨意地從一個位置跳轉到另一個位置。舉個例子,鍵盤這種設備提供的就是一個數據流,當你敲入「fox」這個字元串時,鍵盤驅動程序會按照和輸入完全相同的順序返回這個由三個字元組成的數據流。如果讓鍵盤驅動程序打亂順序來讀字元串,或讀取其他字元,都是沒有意義的。所以鍵盤就是一種典型的字元設備,它提供的就是用戶從鍵盤輸入的字元流。對鍵盤進行讀操作會得到一個字元流,首先是「f」,然後是「o」,最後是「x」,最終是文件的結束(EOF)。當沒人敲鍵盤時,字元流就是空的。硬碟設備的情況就不大一樣了。硬碟設備的驅動可能要求讀取磁碟上任意塊的內容,然後又轉去讀取別的塊的內容,而被讀取的塊在磁碟上位置不一定要連續,所以說硬碟可以被隨機訪問,而不是以流的方式被訪問,顯然它是一個塊設備。
內核管理塊設備要比管理字元設備細致得多,需要考慮的問題和完成的工作相比字元設備來說要復雜許多。這是因為字元設備僅僅需要控制一個位置—當前位置—而塊設備訪問的位置必須能夠在介質的不同區間前後移動。所以事實上內核不必提供一個專門的子系統來管理字元設備,但是對塊設備的管理卻必須要有一個專門的提供服務的子系統。不僅僅是因為塊設備的復雜性遠遠高於字元設備,更重要的原因是塊設備對執行性能的要求很高;對硬碟每多一分利用都會對整個系統的性能帶來提升,其效果要遠遠比鍵盤吞吐速度成倍的提高大得多。另外,我們將會看到,塊設備的復雜性會為這種優化留下很大的施展空間。
linux驅動程序中字元設備和塊設備的三點區別
1.字元設備只能以位元組為最小單位訪問,而塊設備以塊為單位訪問,例如512位元組,1024位元組等
2.塊設備可以隨機訪問,但是字元設備不可以
3.字元和塊沒有訪問量大小的限制,塊也可以以位元組為單位來訪問
『貳』 看到書上介紹unix操作系統文件類型的設備文件,裡面說把設備文件分為字元設備文件和塊設備文件,這樣
在UNIX系統中抄文件分為四襲種:
1普通文件(ordinary file),
分為: (1) 文本文件
(2) 二進制文件
2 目錄文件(directory)
3 特殊文件(special file),分為:
(1)塊設備文件
(2)字元設備文件
4 符號鏈接文件
(symbolic links)
其中特殊文件也稱設備文件,代表著某種設備,一般放在/dev目錄下,如/dev/cd0表示光碟機。
特殊文件分為塊設備文件和字元設備文件,塊設備文件以區塊為輸入輸出單元,如磁碟;
字元設備文件是以字元作為輸入輸出單元,如串口。符號連接文件包含一指針,這指針會指向文件的所在。
字元設備特殊文件進行I/O操作不經過操作系統的緩沖區,而塊設備特殊文件用來同外設進行定長的包傳輸。字元特殊文件與外設進行I/o操作時每次只傳輸一個字元。而對於塊設備特殊文件來說,它用了cache機制,在外設和內存之間一次可以傳送一整塊數據。
不同的傳輸方式當然可以實現減少時間開銷了!
希望對您有幫助!
『叄』 linux命令怎麼打開字元設備文件
在Linux中使用ls-l命令來列出文件時,b、c字母開頭的文件,分別表示區塊(block)設備和字元(character)設備,是特殊類型的文件。也就是說Linux字元設備文件以c字母做為開始標志 。
可以執行如下命令,查看到大量字元設備的文件:
ls-l/dev | more
執行結果如下圖所示:

『肆』 字元型驅動設備是怎麼創建設備文件的,發分別列舉手動和自動
1手動mknod
2 自動調用函數
『伍』 關於Linux操作系統的一些命令是什麼
Linux系統中的命令實在是太多了,簡單包括兩類命令,一類是內部命令,指的是Shell自身提供的功能,一類是外部命令,指的是第三方的控制台應用程序。
一般來說,沒必要完全學習所有的命令,大體上有個印象,用到的時候去查一下幫助文檔,久而久之,自然熟練。
下面是網友整理的20個最常用的Linux命令:
1. ls命令
ls命令是列出目錄內容(List Directory Contents)的意思。運行它就是列出文件夾里的內容,可能是文件也可能是文件夾。
2. lsblk命令
"lsblk"就是列出塊設備。除了RAM外,以標準的樹狀輸出格式,整齊地顯示塊設備。
3. md5sum命令
「md5sum」就是計算和檢驗MD5信息簽名。md5 checksum(通常叫做哈希)使用匹配或者驗證文件的文件的完整性,因為文件可能因為傳輸錯誤,磁碟錯誤或者無惡意的干擾等原因而發生改變。
4. dd命令
「dd」命令代表了轉換和復制文件。可以用來轉換和復制文件,大多數時間是用來復制iso文件(或任何其它文件)到一個usb設備(或任何其它地方)中去,所以可以用來製作USB啟動器。
6. history命令
「history」命令就是歷史記錄。它顯示了在終端中所執行過的所有命令的歷史。
7. sudo命令
「sudo」(super user do)命令允許授權用戶執行超級用戶或者其它用戶的命令。通過在sudoers列表的安全策略來指定。
8. mkdir命令
「mkdir」(Make directory)命令在命名路徑下創建新的目錄。然而如果目錄已經存在了,那麼它就會返回一個錯誤信息"不能創建文件夾,文件夾已經存在了"("cannot create folder, folder already exists")
9. touch 命令
「touch」命令代表了將文件的訪問和修改時間更新為當前時間。touch命令只會在文件不存在的時候才會創建它。如果文件已經存在了,它會更新時間戳,但是並不會改變文件的內容。
10. chmod 命令
「chmod」命令就是改變文件的模式位。chmod會根據要求的模式來改變每個所給的文件,文件夾,腳本等等的文件模式(許可權)。
11. chown命令
「chown」命令就是改變文件擁有者和所在用戶組。每個文件都屬於一個用戶組和一個用戶。在你的目錄下,使用"ls -l",你就會看到像這樣的東西。
12. apt命令
Debian系列以「apt」命令為基礎,「apt」代表了Advanced Package Tool。APT是一個為Debian系列系統(Ubuntu,Kubuntu等等)開發的高級包管理器,在Gnu/Linux系統上,它會為包自動地,智能地搜索,安裝,升級以及解決依賴。
13. tar命令
「tar」命令是磁帶歸檔(Tape Archive),對創建一些文件的的歸檔和它們的解壓很有用。
14. cal 命令
「cal」(Calender),它用來顯示當前月份或者未來或者過去任何年份中的月份。
16. cat命令
「cat」代表了連結(Concatenation),連接兩個或者更多文本文件或者以標准輸出形式列印文件的內容。
17. cp 命令
「」就是復制。它會從一個地方復制一個文件到另外一個地方。
18. mv 命令
「mv」命令將一個地方的文件移動到另外一個地方去。
19. pwd 命令
「pwd」(print working directory),在終端中顯示當前工作目錄的全路徑。
20. cd 命令
最後,經常使用的「cd」命令代表了改變目錄。它在終端中改變工作目錄來執行,復制,移動,讀,寫等等操作。
『陸』 如何查找目錄下包含某個字元串的所有文件
查找目錄下的所有文件中是否含有某個字元串
find .|xargs grep -ri "IBM"
查找目錄下的所有文件中是否含有某個字元串,並且只列印出文件名
find .|xargs grep -ri "IBM" -l
1、正則表達式
(1)正則表達式一般用來描述文本模式的特殊用法,由普通字元(例如字元a-z)以及特殊字元(稱為元字元,如/、*、?等)組成。
(2)基本元字元集及其含義
^ :只匹配行首。 如^a 匹配以a開頭的行abc,a2e,a12,aaa,......
$ :只匹配行尾。 如^a 匹配以a結尾的行bca,12a,aaa,.......
* :匹配0個或多個此單字元。 如(a)* 匹配 空,a,aa,aaa,....
[] :只匹配[]內字元。可以是一個單字元,也可以是字元序列,用","將裡面要匹配的不同字元串分開。也可以使用-來表示[]內字元序列的范圍,如[1-5]表示[12345]
\ :只用來屏蔽一個元字元的特殊含義。 如\*,\',\",\|,\+,\^,\. 等
.:(點)只匹配任意單字元。
pattern\{n\}:只用來匹配前面pattern出現的次數.n為次數。如a\{2\}匹配aa.
pattern\{n,\}:含義同上,但次數最少為n.如a\{2,\}匹配aa,aaa,aaaa,.....
pattern\{n,m\}:含義同上,但次數在n和m之間。如a\{2,4\}匹配aa,aaa,aaaa三個
(3)舉例說明:
^$ :匹配空行
^.$ :匹配包含一個字元的行
\*\.pas :匹配以*.pas結尾的所有字元或文件
[0123456789]或[0-9] :假定要匹配任意一個數字
[a-z] :任意小寫字母
[A-Za-z] :任意大小寫字母
[S,s] :匹配大小寫S
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\} :匹配IP地址 [0-9]\{3\}三個0-9組成的字元串;\. :匹配點(注意這里點是特殊的字元,所以要用"\"來屏蔽其含義)
2、find介紹
(1)查找具有某些特徵文件的命令,可遍歷當前目錄甚至於整個文件系統來查看某些文件或目錄,其遍歷大的文件系統時一般放在後台執行。
(2)find命令的一般形式
find pathname -options [-print -exec -ok]
-pathname :find命令所查找的目錄路徑。如用"."來表示當前的目錄,用/來表示系統根目錄
-print :find命令將匹配的文件輸出到標准輸出
-exec: find命令對匹配的文件執行該參數所給出的shell命令,相應的命令形式為
'command'{} \; (注意{}和\之間的空格)
-ok 和 -exec的作用相同,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行。
options有如下幾種:
-name :按照文件名查找文件
-perm :按照文件許可權來查找文件
-user :按照文件屬主來查找文件
-group :按照文件所屬的組來查找文件
-mtime -n +n 按照文件的更改時間來查找文件,-n表示文件更改時間距現在n天以內,+n表示文件更改時間距現在n天以前。find命令還有-atime 和-ctime選項,但它們都和-mtime選項相似。
-size n[c]查找文件長度為n塊的文件,帶有c時表示文件長度以位元組計。
-nogroup 查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在
-newer file1 !file2查找更改時間比文件file1新但比文件file2舊的文件
-depth 先查找指定目錄有無匹配文件,若無則再在子目錄中查找
-type 查找某一類型的文件,如
b :塊設備文件
d:目錄
e:字元設備文件
p;管道文件
l:符號鏈接文件
f:普通文件
(3)find命令舉例
find -name "*.txt" -print 查找txt結尾的文件並輸出到屏幕上
find /cmd ".sh" -print 查找/cmd目錄下所有sh文件,並輸出
find . -perm 755 -print 查找當前目錄下許可權為755的文件,並輸出
find `pwd` -user root -print 查找當前目錄下屬主為root的文件,並輸出
find ./ -group sunwill -print 查找當前目錄下所屬主是sunwill的文件
find /var -mtime -5 -print 查找/var目錄下更改時間為5天內的所有文件
find /var -mtime +5 -print 查找/var目錄下更改時間為5天以前的所有文件
find /var -newer "myfile1" ! -newer "myfile2" -print 查找/var目錄下比myfile1新,但是比myfile2舊的所有文件。
find /var -type d -print 查找/var目錄下所有目錄
find /var -type l -print 查找/var目錄下所有的符號鏈接文件。
find . -size +1000000c -print 查找當前目錄下大於1000000位元組的文件
find / -name "con.file" -depth -print 查找根目錄下有無"con.file",若無則在其子目錄中查找
find . -type f -exec ls -l {} \; 查找當前目錄下是否有普通文件,若有則執行ls -l
(4)xargs命令
在 使用find命令的-exec選項處理匹配到的文件時,find命令將所有匹配到的文件一起傳遞給exec。不幸的是,有些系統對能夠傳遞給exec的命 令長度有限制,這樣find命令運行幾分鍾之後就算出現溢出錯誤。錯誤信息通常是「參數列太長」或「參數列溢出」。這就是xargs的用處所在,特別是與 find命令一起使用,exec會發起多個進程,而xargs會多個,只有一個
find ./ -perm -7 -print | xargs chmod o-w 查找許可權為7的文件並傳遞給chmod處理
3、grep介紹
(1)grep 的一般格式為 grep [options] 基本正則表達式 [文件]
字元串參數最好採用是雙引號括,一是以防被誤解為shell命令,二是可以用來查找多個單片語成的字元串
-c:只輸出匹配行的記數
-i:不區分大小寫(只適用於單個字元)
-h:查詢多個文件時不顯示文件名
-H:只顯示文件名
-l:查詢多文件時只輸出包含匹配字元的文件名
-n:只顯示匹配行及其行號
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的所有行。
(2)舉例說明:
grep ^[^210] myfile 匹配myfile中以非2、1、0開頭的行
grep "[5-8][6-9][0-3]" myfile 匹配myfile中第一位為5|6|7|8,第二位6|7|8|9,第三位為0|1|2|3的三個字元的行
grep "4\{2,4\}" myfile 匹配myfile中含有44,444或4444的行
grep "\?" myfile匹配myfile中含有任意字元的行
(3)grep命令類名
[[:upper:]] 表示[A-Z]
[[:alnum:]] 表示[0-9a-zA-Z]
[[:lower:]] 表示[a-z]
[[:space:]] 表示空格或者tab鍵
[[:digit:]] 表示[0-9]
[[:alpha:]] 表示[a-zA-Z]
如:grep "5[[:digit:]][[:digit:]]" myfile 匹配myfile中含有5開頭接下去兩位都是數字的行。
4.awk介紹
可以從文件或字元串中基於指定規則瀏覽和抽取信息,是一種自解釋的變成語言。
(1)awk命令行方式 awk [-F filed-spearator] 'command' input-files
awk腳本:所有awk命令插入一個文件,並使awk程序可執行,然後用awk命令解釋器作為腳本的首行,以便通過鍵入腳本名稱來調用它。awk腳本是由各種操作和模式組成。
模式部分決定動作語句何時觸發及觸發事件。(BEGIN,END)
動作對數據進行處理,放在{}內指明(print)
(2)分隔符、域和記錄
awk執行時,其瀏覽域標記為$1,$2,...$n.這種方法成為域標識。$0為所有域。
(3)舉例說明:
awk '{print $0}' test.txt |tee test.out 輸出test.txt中所有行$0表示所有域
awk -F : '{print $1} test.txt |tee test.out' 同上。。只是分隔符為":"
awk 'BEGIN {print "IPDate\n"}{print $1 "\t" $4} END{print "end-of-report"}' test.txt
開始時列印「IPDate」結束時列印「end-of-report」中間列印主體信息,比如總共匹配三條信息,則輸出如下:
IPDate
1 first
2 second
3 third
end-of-report
(4)匹配操作符 ~ 匹配,!~ 不匹配
cat test.txt |awk '$0~/210.34.0.13/' 匹配test.txt中為210.34.0.13的行
awk '$0!~/210.34.0.13' test.txt 匹配test.txt中不是210.34.0.13的行
awk '{if($1=="210.34.0.13") print $0}' test.txt 匹配 test.txt中第一個域為210.34.0.13的行。
5、sed介紹
sed不與初始化文件打交道,它操作的只是一個拷貝,然後所有的改動如果沒有重定向到一個文件,將輸出到屏幕。
sed是一種很重要的文本過濾工具,使用一行命令或者使用管道與grep與awk相結合。是一種非交互性文本流編輯。
(1)調用sed的三種方式
使用sed命令行格式為:sed [options] sed命令 輸入文件
使用sed腳本文件格式為:sed[options] -f sed腳本文件 輸入文件
sed腳本文件[options] 輸入文件
--不管是使用shell命令行方式或腳本文件方式,如果沒有指定輸入文件,sed從標准輸入中接受輸入,一般是鍵盤或重定向結果。
(2)sed 命令的options如下
-n:不列印
-c:下一命令是編輯命令
-f:如果正在調用sed腳本文件
(3)sed在文件中查詢文本的方式
--使用行號,可以是一個簡單的數字,或是一個行號的范圍
--使用正則表達式
(4)讀取文本的方式
x x為一行號
x,y 表示行號范圍從x到y
/pattern/ 查詢包含模式的行
/pattern/pattern/ 查詢包含兩個模式的行
pattern/,x 在給定的行號上查詢包含模式的行
x,/pattern/ 通過行號和模式查詢匹配行
x,y! 查詢不包含指定行號x和y的行
(5)基本sed編輯命令
p 列印匹配行
d 刪除匹配行
= 顯示文件行號
a\ 在定位行號後附加新文本信息
i\ 在定位行號後插入新文本信息
c\ 用新文本替換定位文本
s 使用替換模式替換相應模式
r 從另一個文件中讀文件
w 寫文本到一個文件
q 第一個模式匹配完成後推出或立即退出
l 顯示與八禁止ASCII代碼等價的控制字元
{} 在定位行執行的命令組
n 從另一個文件中讀文本下一行,並附加在下一行
g 將模式2粘貼到/pattern n/
y 傳送字元
(6)舉例說明:
sed -n '2p' test.txt 列印第二行的信息(注意:-n是不列印不匹配的信息,若沒加-n,則列印文件的所有信息而不是匹配信息)
sed -n '1,4p' test.txt 列印第一行到第四行的信息
sed -n '/los/p' test.txt模式匹配los,並列印出來
sed -n '2,/los/p' test.txt 從第二行開始。。知道匹配第一個los
sed -n '/^$/p' test.txt 匹配空行
sed -n -e '/^$/p' -e '/^$/=' test.txt 列印空行及行號
sed -n '/good/a\morning' test.txt 在匹配到的good後面附加morning
sed -n '/good/i\morning' test.txt 在匹配到的good前面插入morning
sed -n '/good/c\morning' test.txt 將匹配到的good替換成morning
sed '1,2d' test.txt 刪除第1和2行
sed 's/good/good morning/g' test.txt 匹配good並替換成goodmorning
send 's/good/& hello /p' test.txt 匹配到good就在其後面加上hello
send 's/good/ hello &/p' test.txt 匹配到good就在其前面加上hello
6.合並與分割(sort,uniq,join,cut,paste,split)
(1)sot命令
sort [options] files 許多不同的域按不同的列順序排序
-c 測試文件是否已經排序
-m 合並兩個排序文件
-u 刪除所有同樣行
-o 存儲sort結果的輸出文件名
-t 域分隔符,用非空格或tab開始排序
+n :n 為列號,使用此列號開始排序
-n 指定排序是域上的數字分類項
-r 比較求逆
sort -c test.txt 測試文件是否分類過
sort -u test.txt 排序並合並一樣的行
sort -r test.txt 以相反的順序排列
sort -t "/" +2 test.txt 以"/"分隔,第二個域開始分類
(2)uniq命令
uniq [options ] files 從一個文本文件中去除或禁止重復行
-u 只顯示不重復行
-d 只顯示有重復數據行,每種重復行只顯示其中一行
-c 列印每一重復行出現次數
-f :n為數字,前n個域被忽略
uniq -f 2 test.txt 忽略前2個域
(3)join 命令
join [options] file1 file2 用來將來自兩個分類文本文件的行連在一起
-an,n為一數字,用於連接時從文件n中顯示不匹配行
-onm ,連接域,n為文件號,m為域號
-jnm,n為文件號,m為域號,使用其他域作連接域
-t ,域分隔符。用來設置非空格或tab鍵的域分隔符。
(4)split命令
split -output_file_size intput_filename output_filename
用來將大文件分割成小文件。
-b n,每個分割文件的大小n
-C n,每個分割文件一行最多n位元組
-l n,每個分割文件的行數
-n,同-l n
split -10 test.txt 將test.txt分割成10行的小文件
(5)cut 命令
cut -c n1-n2 filename 顯示每行從開頭算起 n1 到 n2 的文字。
cut -c 3-5 test.txt 顯示test.txt中每行從第3到第5個字元
『柒』 Linux下字元設備文件的概念及舉例
不是後綴,記住linux不使用後綴來識別文件類型
你使用 ls -al
drwxr-xr-x. 4 root root 100 Apr 26 15:05 cpu
lrwxrwxrwx. 1 root root 13 Apr 26 15:05 fd -> /proc/self/fd
brw-rw----. 1 root disk 7, 0 Apr 26 15:05 loop0
crw-rw----. 1 root lp 6, 2 Apr 26 15:05 lp2
你仔細看第一位 d代表文件目錄文件,l代表鏈接文件,b代表塊設備文件,c代表字元設備文件
`-'
regular file
`b'
block special file
`c'
character special file
`C'
high performance ("contiguous data") file
`d'
directory
`D'
door (Solaris 2.5 and up)
`l'
symbolic link
`M'
off-line ("migrated") file (Cray DMF)
`n'
network special file (HP-UX)
`p'
FIFO (named pipe)
`P'
port (Solaris 10 and up)
`s'
socket
`?'
some other file type
『捌』 如何在Linux下查找文件內容包含某個特定字元串的文件
如何在Linux下查找文件內容包含某個特定字元串的文件?
我的目錄下面有test1和test2兩個文件夾,裡面都含有很多文件,其中test2裡面還包含一個test文件夾
我想請問的是,如何通過查找關鍵字test從而找到test1跟test2還有test,並且不顯示其他文件
我嘗試過用find/path-nametest查找,結果出來的是/path/test2/test
lstest*查找,結果連同test1跟test2裡面的子文件都顯示出來,羅列了一大堆
我還嘗試了用findtest*查找,結果跟用上面的一樣,只是羅列的方式不一樣而已
『玖』 "Linux的常用的文件類型分為哪六種各自的標志符是什麼
在Linux中,有一句經典的話叫做一切皆文件」。
文件分類:
(1)普通文件(regular):存在於外部存儲器中,用於存儲普通文件。
(2)目錄文件(directory):用於存放目錄項,是文件系統管理的重要文件類型。
(3)管道文件(pipe):一種用於進程間通信的特殊文件,也稱為命名管道FIFO。
(4)套接字文件(socket):一種用於網路間通信的特殊文件。
(5)鏈接文件(link);用於間接訪問另外一個目標文件,相當於widows快捷方式。
(6)字元設備文件(character):字元設備在應用層的訪問結構。
(7)塊設備文件(block):塊設備在應用層的訪問介面。
在linux終端下輸入ls -l命令,學習linux每條文件信息的最左邊的一個字元即表示了該文件的類別:
b:塊設備文件
c:字元設備文件
d:目錄文件
l:鏈接文件
p:管道文件
-:普通文件
s:套接字文件
『拾』 如何搜索所有含有這個字元串的文件
查找目錄所文件否含某字元串
查找目錄所文件否含某字元串
find .|xargs grep -ri "IBM"
查找目錄所文件否含某字元串,並且列印文件名
find .|xargs grep -ri "IBM" -l
1.則表達式
(1)則表達式般用描述文本模式特殊用由普通字元(例字元a-z)及特殊字元(稱元字元/、*、?等)組
(2)基本元字元集及其含義
^ :匹配行首 ^a 匹配a行abc,a2e,a12,aaa,......
$ :匹配行尾 ^a 匹配a結尾行bca,12a,aaa,.......
* :匹配0或單字元 (a)* 匹配 空a,aa,aaa,....
[] :匹配[]內字元單字元字元序列用","面要匹配同字元串使用-表示[]內字元序列范圍[1-5]表示[12345]
\ :用屏蔽元字元特殊含義 \*,\',\",\|,\+,\^,\. 等
.:(點)匹配任意單字元
pattern\{n\}:用匹配前面pattern現數.n數a\{2\}匹配aa.
pattern\{n,\}:含義同數少n.a\{2,\}匹配aa,aaa,aaaa,.....
pattern\{n,m\}:含義同數nm間a\{2,4\}匹配aa,aaa,aaaa三
(3)舉例說明:
^$ :匹配空行
^.$ :匹配包含字元行
\*\.pas :匹配*.pas結尾所字元或文件
[0123456789]或[0-9] :假定要匹配任意數字
[a-z] :任意寫字母
[A-Za-z] :任意寫字母
[S,s] :匹配寫S
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\} :匹配IP址 [0-9]\{3\}三0-9組字元串;\. :匹配點(注意點特殊字元所要用"\"屏蔽其含義)
2.find介紹
(1)查找具某些特徵文件命令遍歷前目錄甚至於整文件系統查看某些文件或目錄其遍歷文件系統般放台執行
(2)find命令般形式
find pathname -options [-print -exec -ok]
-pathname :find命令所查找目錄路徑用"."表示前目錄用/表示系統根目錄
-print :find命令匹配文件輸標准輸
-exec: find命令匹配文件執行該參數所給shell命令相應命令形式
'command'{} \; (注意{}\間空格)
-ok -exec作用相同種更安全模式執行該參數所給shell命令執行每命令前都給提示讓用戶確定否執行
options幾種:
-name :按照文件名查找文件
-perm :按照文件許可權查找文件
-user :按照文件屬主查找文件
-group :按照文件所屬組查找文件
-mtime -n +n 按照文件更改間查找文件-n表示文件更改間距現n內+n表示文件更改間距現n前find命令-atime -ctime選項都-mtime選項相似
-size n[c]查找文件度n塊文件帶c表示文件度位元組計
-nogroup 查找效所屬組文件即該文件所屬組/etc/groups存
-newer file1 !file2查找更改間比文件file1新比文件file2舊文件
-depth 先查找指定目錄匹配文件若則再目錄查找
-type 查找某類型文件
b :塊設備文件
d:目錄
e:字元設備文件
p;管道文件
l:符號鏈接文件
f:普通文件
(3)find命令舉例
find -name "*.txt" -print 查找txt結尾文件並輸屏幕
find /cmd ".sh" -print 查找/cmd目錄所sh文件並輸
find . -perm 755 -print 查找前目錄許可權755文件並輸
find `pwd` -user root -print 查找前目錄屬主root文件並輸
find ./ -group sunwill -print 查找前目錄所屬主sunwill文件
find /var -mtime -5 -print 查找/var目錄更改間5內所文件
find /var -mtime +5 -print 查找/var目錄更改間5前所文件
find /var -newer "myfile1" ! -newer "myfile2" -print 查找/var目錄比myfile1新比myfile2舊所文件
find /var -type d -print 查找/var目錄所目錄
find /var -type l -print 查找/var目錄所符號鏈接文件
find . -size +1000000c -print 查找前目錄於1000000位元組文件
find / -name "con.file" -depth -print 查找根目錄"con.file",若則其目錄查找
find . -type f -exec ls -l {} \; 查找前目錄否普通文件若則執行ls -l
(4)xargs命令
使用find命令-exec選項處理匹配文件find命令所匹配文件起傳遞給exec幸些系統能夠傳遞給exec命 令度限制find命令運行幾鍾算現溢錯誤錯誤信息通參數列太或參數列溢xargs用處所特別與 find命令起使用,exec發起進程xargs
find ./ -perm -7 -print | xargs chmod o-w 查找許可權7文件並傳遞給chmod處理
3.grep介紹
(1)grep 般格式 grep [options] 基本則表達式 [文件]
字元串參數採用雙引號括防誤解shell命令二用查找單片語字元串
-c:輸匹配行記數
-i:區寫(適用於單字元)
-h:查詢文件顯示文件名
-H:顯示文件名
-l:查詢文件輸包含匹配字元文件名
-n:顯示匹配行及其行號
-s:顯示存或匹配文本錯誤信息
-v:顯示包含匹配文本所行
(2)舉例說明:
grep ^[^210] myfile 匹配myfile非2、1、0行
grep "[5-8][6-9][0-3]" myfile 匹配myfile第位5|6|7|8第二位6|7|8|9第三位0|1|2|3三字元行
grep "4\{2,4\}" myfile 匹配myfile含44,444或4444行
grep "\?" myfile匹配myfile含任意字元行
(3)grep命令類名
[[:upper:]] 表示[A-Z]
[[:alnum:]] 表示[0-9a-zA-Z]
[[:lower:]] 表示[a-z]
[[:space:]] 表示空格或者tab鍵
[[:digit:]] 表示[0-9]
[[:alpha:]] 表示[a-zA-Z]
:grep "5[[:digit:]][[:digit:]]" myfile 匹配myfile含5接兩位都數字行
4.awk介紹
文件或字元串基於指定規則瀏覽抽取信息種自解釋變語言
(1)awk命令行式 awk [-F filed-spearator] 'command' input-files
awk腳本:所awk命令插入文件並使awk程序執行用awk命令解釋器作腳本首行便通鍵入腳本名稱調用awk腳本由各種操作模式組
模式部決定作語句何觸發及觸發事件(BEGIN,END)
作數據進行處理放{}內指明(print)
(2)隔符、域記錄
awk執行其瀏覽域標記$1,$2,...$n.種域標識$0所域
(3)舉例說明:
awk '{print $0}' test.txt |tee test.out 輸test.txt所行$0表示所域
awk -F : '{print $1} test.txt |tee test.out' 同隔符":"
awk 'BEGIN {print "IPDate\n"}{print $1 "\t" $4} END{print "end-of-report"}' test.txt
始列印IPDate結束列印end-of-report間列印主體信息比總共匹配三條信息則輸:
IPDate
1 first
2 second
3 third
end-of-report
(4)匹配操作符 ~ 匹配,!~ 匹配
cat test.txt |awk '$0~/210.34.0.13/' 匹配test.txt210.34.0.13行
awk '$0!~/210.34.0.13' test.txt 匹配test.txt210.34.0.13行
awk '{if($1=="210.34.0.13") print $0}' test.txt 匹配 test.txt第域210.34.0.13行
5.sed介紹
sed與初始化文件打交道操作拷貝所改沒重定向文件輸屏幕
sed種重要文本濾工具使用行命令或者使用管道與grep與awk相結合種非交互性文本流編輯
(1)調用sed三種式
使用sed命令行格式:sed [options] sed命令 輸入文件
使用sed腳本文件格式:sed[options] -f sed腳本文件 輸入文件
sed腳本文件[options] 輸入文件
--管使用shell命令行式或腳本文件式沒指定輸入文件sed標准輸入接受輸入般鍵盤或重定向結
(2)sed 命令options
-n:列印
-c:命令編輯命令
-f:調用sed腳本文件
(3)sed文件查詢文本式
--使用行號簡單數字或行號范圍
--使用則表達式
(4)讀取文本式
x x行號
x,y 表示行號范圍xy
/pattern/ 查詢包含模式行
/pattern/pattern/ 查詢包含兩模式行
pattern/,x 給定行號查詢包含模式行
x,/pattern/ 通行號模式查詢匹配行
x,y! 查詢包含指定行號xy行
(5)基本sed編輯命令
p 列印匹配行
d 刪除匹配行
= 顯示文件行號
a\ 定位行號附加新文本信息
i\ 定位行號插入新文本信息
c\ 用新文本替換定位文本
s 使用替換模式替換相應模式
r 另文件讀文件
w 寫文本文件
q 第模式匹配完推或立即退
l 顯示與八禁止ASCII代碼等價控制字元
{} 定位行執行命令組
n 另文件讀文本行並附加行
g 模式2粘貼/pattern n/
y 傳送字元
(6)舉例說明:
sed -n '2p' test.txt 列印第二行信息(注意:-n列印匹配信息若沒加-n則列印文件所信息匹配信息)
sed -n '1,4p' test.txt 列印第行第四行信息
sed -n '/los/p' test.txt模式匹配los並列印
sed -n '2,/los/p' test.txt 第二行始知道匹配第los
sed -n '/^$/p' test.txt 匹配空行
sed -n -e '/^$/p' -e '/^$/=' test.txt 列印空行及行號
sed -n '/good/a\morning' test.txt 匹配good面附加morning
sed -n '/good/i\morning' test.txt 匹配good前面插入morning
sed -n '/good/c\morning' test.txt 匹配good替換morning
sed '1,2d' test.txt 刪除第12行
sed 's/good/good morning/g' test.txt 匹配good並替換goodmorning
send 's/good/& hello /p' test.txt 匹配good其面加hello
send 's/good/ hello &/p' test.txt 匹配good其前面加hello
6.合並與割(sort,uniq,join,cut,paste,split)
(1)sot命令
sort [options] files 許同域按同列順序排序
-c 測試文件否已經排序
-m 合並兩排序文件
-u 刪除所同行
-o 存儲sort結輸文件名
-t 域隔符用非空格或tab始排序
+n :n 列號使用列號始排序
-n 指定排序域數字類項
-r 比較求逆
sort -c test.txt 測試文件否類
sort -u test.txt 排序並合並行
sort -r test.txt 相反順序排列
sort -t "/" +2 test.txt "/"隔第二域始類
(2)uniq命令
uniq [options ] files 文本文件除或禁止重復行
-u 顯示重復行
-d 顯示重復數據行每種重復行顯示其行
-c 列印每重復行現數
-f :n數字前n域忽略
uniq -f 2 test.txt 忽略前2域
(3)join 命令
join [options] file1 file2 用自兩類文本文件行連起
-ann數字用於連接文件n顯示匹配行
-onm 連接域n文件號m域號
-jnmn文件號m域號使用其域作連接域
-t 域隔符用設置非空格或tab鍵域隔符
(4)split命令
split -output_file_size intput_filename output_filename
用文件割文件
-b n每割文件n
-C n每割文件行n位元組
-l n每割文件行數
-n同-l n
split -10 test.txt test.txt割10行文件
(5)cut 命令
cut -c n1-n2 filename 顯示每行算起 n1 n2 文字
cut -c 3-5 test.txt 顯示test.txt每行第3第5字元
Linux查找文件內容用命令:
1、文件內容查找匹配指定字元串列:
$ grep "查找字元串" 文件名
2、文件內容查找與則表達式匹配行:
$ grep –e 則表達式 文件名
3、查找區寫:
$ grep –i "查找字元串" 文件名
4、查找匹配行數:
$ grep -c "查找字元串" 文件名
5、文件內容查找匹配指定字元串列:
$ grep –v "查找字元串" 文件名
6、根目錄始查找所擴展名.log文本文件並找包含ERROR行
find / -type f -name "*.log" | xargs grep "ERROR"
7、例 :查找/SqLogs/access.log文件包含".exe" 或者"TCP_DENIED"記錄
1:grep /SqLogs/access.log –e ".exe
grep /SqLogs/access.log –e "TCP_DENIED
2:find /SqLogs –type f –name access.log | xargs grep ".exe"
find /SqLogs –type f –name access.log | xargs grep "TCP_DENIED"
公司通SQUID代理伺服器共享網候某些原新版本應用程序或者財務報稅軟體使用所查看 access.log文件查找原由於LOG文件太雖每都執行壓縮重建LOG文件幾十MLOG文件內容太直接打查看再查找浪費間麻煩前用
tail –n 100 /SqLogs/access.log命令找起麻煩面兩命令幫我忙短間幫我找問題所享給家