linux文件過濾
1. linux怎樣用grep過濾
^不知道你是想實現什麼目的,如果你是想只顯示配置文件中的以 # 號開頭的內行,那就使用
# grep ^# filename
如果容是想顯示除 # 號開頭的行的話呢,只需加個參數-v (-v 表示相反的過濾)就行了
# grep -v ^# filename
2. linux怎樣載入文件過濾驅動
文件系統過濾驅動是一種可選的,為文件系統提供具有附加值功能的驅動程序。文件系統過濾驅動是一種核心模式組件,它作為Windows NT執行體的一部分運行。
文件系統過濾驅動可以過濾一個或多個文件系統或文件系統卷的I/O操作。按不同的種類劃分,文件系統過濾驅動可以分成日誌記錄、系統監測、數據修改或事件預防幾類。通常,以文件系統過濾驅動為核心的應用程序有防毒軟體、加密程序、分級存儲管理系統等。
二、文件系統過濾驅動並不是設備驅動
設備驅動是用來控制特定硬體I/O設備的軟體組件。例如:DVD存儲設備驅動是一個DVD驅動。
相反,文件系統過濾驅動與一個或多個文件系統協同工作來處理文件I/O操作。這些操作包括:創建、打開、關閉、枚舉文件和目錄;獲取和設置文件、目錄、卷的相關信息;向文件中讀取或寫入數據。另外,文件系統過濾驅動必須支持文件系統特定的功能,例如緩存、鎖定、稀疏文件、磁碟配額、壓縮、安全、可恢復性、還原點和卷裝載等。
下面兩部分詳細的闡述了文件系統過濾驅動和設備驅動之間的相似點與不同點。
三、安裝文件系統過濾驅動
對於Windows XP和後續操作系統來說,可以通過INI文件或安裝應用程序來安裝文件系統過濾驅動(對於Windows 2000和更早的操作系統,過濾驅動通常通過服務控制管理器Service Control Manager來進行安裝)。
四、初始化文件系統過濾驅動
與設備驅動類似,文件系統過濾驅動也使用DriverEntry常式進行初始化工作。在驅動程序載入後,載入驅動相同的組件將通過調用驅動程序的 DriverEntry常式來對驅動程序進行初始化工作。對於文件系統過濾驅動來說,載入和初始化過濾驅動的系統組件為I/O管理器。
DriverEntry常式運行於系統線程上下文中,其IRQL = PASSIVE_LEVEL。本常式可分頁,詳細信息參見MmLockPagableCodeSection。
DriverEntry常式定義如下:
NTSTATUS
DriverEntry (
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
本常式有兩個輸入參數。第一個參數,DriverObject為系統在文件系統過濾驅動載入時所創建的驅動對象;第二個參數,RegistryPath為包含驅動程序注冊鍵路徑的Unicode字元串。
文件系統過濾驅動按如下順序執行DriverEntry常式:
01、創建控制設備對象:
文件系統過濾驅動的DriverEntry常式通常以創建控制設備對象作為該常式的起始。創建控制設備對象的目的在於允許應用程序即使在過濾驅動載入到文件系統或卷設備對象之前也能夠直接與過濾驅動進行通信。
注意:文件系統也會創建控制設備對象。當文件系統過濾驅動將其自身附加到文件系統之上時(而不是附加到某一特定文件系統卷),過濾驅動同樣將其自身附加到文件系統的控制設備對象之上。
在FileSpy驅動範例中,控制設備對象按如下方式創建:
RtlInitUnicodeString(&nameString, FILESPY_FULLDEVICE_NAME);
status = IoCreateDevice(
DriverObject, //DriverObject
0, //DeviceExtensionSize
&nameString, //DeviceName
FILE_DEVICE_DISK_FILE_SYSTEM, //DeviceType
FILE_DEVICE_SECURE_OPEN, //DeviceCharacteristics
FALSE, //Exclusive
&gControlDeviceObject); //DeviceObject
RtlInitUnicodeString(&linkString, FILESPY_DOSDEVICE_NAME);
status = IoCreateSymbolicLink(&linkString, &nameString);
與文件系統不同,文件系統過濾驅動並不是一定要為其控制設備對象命名。如果傳遞給DeviceName參數一個非空(Non-NULL)值,該值將作為控制設備對象的名稱。接下來,在前面的代碼範例中DriverEntry可以調用IoCreateSymbolicLink常式來將該對象的核心模式名稱與應用程序可見的用戶模式名稱關聯到一起(同樣可以通過調用IoRegisterDeviceInterface來使設備對象對應用程序可見)。
注意:由於控制設備對象是唯一不會附加到設備堆棧中的設備對象,因此控制設備對象是唯一的可安全命名的設備對象。由此,是否為文件系統過濾驅動的控制設備對象是否命名是可選的。
注意:文件系統的控制設備對象必須命名。過濾設備對象從不命名。
3. 如何通過linux命令根據某一列值唯一來過濾數據
你可以這樣做:
(1)為Server的那些使用者建立單獨的賬戶,例如:user01、....等等(可以給每個人建立一個單獨的賬戶。當然,為了使系統中的賬戶不至於太多而導致難以管理,也可以按照他們所在的部門、項目組(或工作組)、或是其它分類方式去建立賬戶)。
(2)對每個賬戶下的$HOME/.profile文件或者是$HOME/.cshrc文件(視不同用戶的SHELL來決定,例如:bsh和sh就是.profile,csh就是.cshrc),用
chown root:root ... (例如: chown root:root .cshrc)
命令將它們改成root用戶及屬組所有,只有root用戶才可以更改它們。
(3)在每個用戶的$HOME/.profile或是$HOME/.cshrc等shell環境配置文件中,將你認為是危險的命令做以下的轉換:
alias 命令名='echo 管理員不運行執行該命令'
例如: alias format='echo 管理員不運行執行該命令'
這樣這些用戶就無法執行你限定的命令,執行之後都顯示「管理員不運行執行該命令」。
如果覺得改.profile或是.cshrc文件不保險,還可以在每個用戶的$HOME下建立.login文件,也用上述的方法將它改成root用戶屬組的,在裡面加入
alias 命令名='echo 管理員不運行執行該命令'
效果更好。
----看到了你的問題追加。我覺得要是大家都只能使用root賬戶,那麼這個系統的規劃是否合理?假如一定都要使用root賬戶的話,對於每個用戶在鍵入命令的過程中,你很難去捕獲他們都正在敲入什麼命令。只有等他們在命令行上都輸入完了,回車確認之後才可能去發現他們執行的進程。假如真有這樣的一個監控程序在你的系統中,就算是監控到了,那麼那些進程已經開始運行了,對很多人來說已經是無法收拾了,只有及時的殺掉那些進程了。建議你把敏感的命令給rename了算了,例如mv format frmt
----呵呵,你也夠執著的。既然一定要寫個程序,那我就說說大概的思路吧!具體的程序代碼你可以自己去寫,這樣也有些成就感。:)
不過我能保證,就算採用這樣的做法也不會取得什麼好的效果,尤其是大家都使用root賬戶。我用unix類操作系統近十年,聽我一句勸告不會有什麼害處啊!
程序思路:
(1)定義你的敏感命令列表(可以賦值給一個字元串數組)。
(2)獲取你本人在系統中當前的tty編號,以及你自己的IP地址(你是從哪個IP地址發起的telnet?如果你本人使用Console,也需要如此)。
(3)按照你的敏感命令列表,循環檢測除了自己的tty及IP地址之外的,其它tty及IP地址發起的敏感命令進程,如果發現,立即予以kill -9。並向相應的tty發送警告信息。
注意:這個循環是無限循環;這個程序是一個守護進程(Daemon)。除非接到進程中止信號,否則它將一直運行。這樣做的缺點是,循環檢測並殺掉那些敏感進程的過程並不能確保實時性,在發現相應的進程時,那些進程可能已經運行了一小段時間,盡管這段時間非常非常的短,但是也可能已經產生了效力甚至是危害。不過,這也是沒辦法的事情了。誰要你非要這樣呢?
4. Linux如何過濾空文件
if test ! -s file 命令可以判斷是否是空文件,
把這段代碼添加到你的腳本裡面就可以過濾了。
5. 什麼過濾操作在Linux中如何實現
過濾操作就是指在一大堆文本信息中篩選出你關心的數據。
一般用 ls + 通配符,或 grep, sed 或 awk 這些支持正則表達式的工具都可以實現過濾操作。
比如:
ls *.jpg #過濾出當前目錄下以jpg為後綴的所有文件,這是通配符用法
grep "abc" file.txt #過濾出file.txt中包含abc的行,這里沒有使用正則表達式
ls | grep "[a-z][0-9].csv" #從ls的結果中過濾出文件名格式為一個字母加一位數字並以.csv為後綴的文件名,這里用了正則表達式(字母集合[a-z]與數字集合[0-9])
6. linux使用find命令如何過濾文件夾
先用find 查找的時候,制定不查找「.」開頭的文件夾
find /your/dir -type d ! -name ".*"
7. linux 查找文件過濾 find命令
用下面的命令查找文件make-3.80-5.rpm:
find
/
-name
make-3.80-5.rpm
-print
如果模糊查找,需要使用單引號,例如:
find
/
-name
'make-3.*.rpm'
-print
命令裡面的第一個/表示開始搜索的文件夾,如果/文件太多了,可以換為/etc等
8. 從linux指令的結果中過濾出需要的部分並寫入指定文件
Linux下可以復用sed命令向文件制中追加內容。
案例:把/etc/test1文件中1-10行內容寫入到test2中
12
sed
-n
'1,10'p
/etc/test1
>>test2#將file1的1-10行追加到file2
sed命令行格式為:sed
[-nefri]
『command』
輸入文本
常用選項:-n∶使用安靜(silent)模式;
-e∶直接在指令列模式上進行
sed
的動作編輯;
-f∶直接將
sed
的動作寫在一個檔案內;
-r∶sed
的動作支援的是延伸型正規表示法的語法;
-i∶直接修改讀取的檔案內容,而不是由螢幕輸出。
9. linux下按時間過濾文件如何設置
find dir -mtime +10 -a -mtime -20
找出最後寫入時間為10天-20天前的文件
你這樣算算就好了
-mtime是天
-mmin是分鍾
10. linux中用VI編輯文件時,如何忽略掉#標記的內容呢
^vi ~/.vimrc
增加:
set foldmethod=expr
set foldexpr=getline(v:lnum)=~'^#s*'?1:0
編輯文件時輸入 zc 隱藏注釋,輸入 zo 恢復注釋
原理是利用回折疊,答將連續的注釋行折疊,缺點是單獨的注釋行沒法隱藏