Linux重定向和檔案查詢

2021-09-29 22:03:07 字數 4878 閱讀 9417

首先引出linux中一句比較經典的話。

linux下一切皆檔案。

檔案分為:普通檔案,目錄檔案,鏈結檔案,裝置檔案。

檔案描述符定義:是核心為了高效管理已被開啟的檔案所建立的索引,用於指向被開啟的檔案,所有執行i/o操作的系統呼叫都通過檔案描述符;檔案描述符是乙個簡單的非負整數,用以標明每乙個被程序所開啟的檔案,程式剛啟動的時候,第乙個開啟的檔案是0,第二個是1…可以理解為是乙個檔案的身份id。

輸入輸出標準說明:

stdin 標準輸入 預設的裝置鍵盤 檔案編號為:0

stdout 標準輸出 預設的裝置是顯示器 檔案編號為:1 ,也可以重定向到檔案

stderr 標準錯誤 預設的裝置是顯示器 檔案編號為:2 ,也可以重定向到檔案

檢視乙個程序開啟了哪些檔案?

語法:ll /pro/程序id/fd

例如:vim /etc/passwd

ps -aux | grep passwd

ll /proc/21582/fd

注意:對檔案描述符的操作就是對檔案本身的操作。可以通過操作檔案描述來修改檔案。

ulimit -n #檢視乙個程序最多可以同時開啟的檔案數。

ulimit -n 1024 #修改乙個程序最多可以同時開啟的檔案數為1024

當然這個並不能永久修改的。

輸出重定向:

定義:將命令的正常輸出結果儲存到指定的檔案中,而不是直接顯示在顯示器螢幕上。

重定向操作符號使用:">" 「>>」 操作符號

表示將標準輸出內容輸出到檔案,如果檔案有內容會覆蓋原始檔的內容。

表示將標準輸出內容追加到檔案,不會覆蓋原始檔內容。

uname -a 檢視版本資訊

輸入重定向

將命令中接受輸入的途徑由預設的鍵盤改為其他檔案,而不是等待從鍵盤輸入。

eof本意是 end of file,表明到了檔案末尾。」eof「通常與」<<「結合使用,「< df.txt << eof

swdded

ddds

sddd

sdfsdde

eof錯誤重定向:

將命令執行過程**現的錯誤資訊(選項或引數錯誤)儲存到指定的檔案,而不是直接顯示到顯示器

作用:錯誤資訊儲存到檔案

操作符:錯誤重定向符號: 2>(使用標準輸入和輸出的時候省略了0,1)

在實際應用中,錯誤重定向可以用來收集執行的錯誤資訊,為排錯提供依據。

注意:使用2>進行錯誤重定向的時候會覆蓋原檔案內容,如果是想追加到檔案,那麼只能是2>>

null黑洞和zero空檔案

在linux作業系統中,裝置節點並不一定要對應物理裝置。沒有這種對應關係的裝置被稱之為偽裝置,作業系統運用它們實現多種多樣的功能,/dev/null和/dev/zero就是這樣的裝置,類似的還有/dev/urandom,/dev/tty等。

/dev/null 寫入null的所有內容都會永遠丟失。

/dev/zero介紹

和/dev/null類似,/dev/zero也是乙個特殊的字元裝置檔案,當我們使用或讀取它的時候,它會提供無限連續不斷的空的資料流(特殊的資料格式流)。

/dev/zero檔案的常見應用場景有二:

a./dev/zero檔案覆蓋其他檔案資訊。

b.產生指定大小的空檔案,例如:交換檔案、模擬虛擬檔案系統等。

使用dd命令產生乙個50m的檔案

引數:if 代表輸入檔案。如果不指定if,預設就會從stdin中讀取輸入。

of 代表輸出檔案。如果不指定of,預設就會將stdout作為預設輸出。

bs 代表位元組為單位的塊大小。

[root@izwz952xgnqujs6qna2i25z ~]# dd if=/dev/zero of=3.txt bs=1m count=50

50+0 records in

50+0 records out

52428800 bytes (52 mb) copied, 0.0333127 s, 1.6 gb/s

[root@izwz952xgnqujs6qna2i25z ~]# du -sh 3.txt 檢視檔案大小的命令

50m 3.txt

&> 和》&符號

&表示等同於的意思

管道 | 的使用

注意:1.管道命令只處理前乙個命令的正確輸出,不處理錯誤輸出

2.管道右邊的命令,必須能夠接受標準輸入的資料流命令才行

3.管道符可以把兩條命令連起來,它可以連線多個命令使用。

tee命令

功能:讀取標準輸入的資料,並將其內容輸出成檔案。

tee指令會從標準輸入裝置讀取資料,將其內容輸出到標準輸出裝置,同時儲存成檔案.

檢視檔案一般有以下幾個命令:

which 檢視可執行檔案的位置

whereis 檢視可執行檔案的位置及相關檔案

locate 配合資料庫快取,快速檢視檔案位置

grep 過濾匹配,它是乙個檔案搜尋工具

find 查詢相關檔案 這個查詢使用的是絕對路徑

locate命令和find -name 功能差不多,是它的另外一種寫法,但是這個要比find搜尋快的多,因為find命令查詢的是具體目錄檔案,而locate它搜尋的是乙個資料庫/var/lib/mlocate/mlocate.db,這個資料庫中存有本地所有的檔案資訊;這個資料庫是linux自動建立並每天自動更新維護。相關的配置資訊在/etc/updatedb.conf,檢視定時任務資訊在/etc/cron.daily/mlocate

locate檢視檔案

updatedb 如果是當天使用locate命令查詢檔案必須使用update命令更新資料庫

locate這個命令預設是沒有安裝的,所有應該使用yum -y install mlocate 這個命令進行安裝

然後使用updatedb命令更新資料庫,然後就能查出檔案。他會查出所有相關檔案,這個命令不需要寫出絕對路徑。

grep查詢使用

作用:過濾,它能夠使用正規表示式來搜尋文字,並把結果列印出來。

引數:-v 取反

-i 忽略大小寫

^# 以#開頭

#$ 以#結尾

^$ 空行

-n 對過濾的內容加上行號

| 或者的意思

例子:grep 「nologin|root」 /etc/passwd | wc -l 注意:\表示轉義符 檢視nologin和root的行數。

egrep 「nologin|root」 /etc/passwd | wc -l 注意:egrep是grep的加強版

find 命令:

格式: find 檔案路徑 選項 輸出

路徑名稱:find查詢的目錄路徑,不輸入代表當前目錄。

find命令選項:

-name 按照檔名查詢檔案。 「名稱」

-perm 按照檔案許可權來查詢檔案。666 777 等

-user 按照檔案屬主來查詢檔案

-group 按照檔案所屬的組來查詢檔案

-mtime -n / +n 按照檔案的更改時間來查詢檔案,

按照更改時間或訪問時間等查詢檔案。

如果希望按照更改時間來查詢檔案,可以使用mtime,atime或ctime選項

mtime:檔案最後一次修改的時間

atime:最後一次訪問時間

ctime:檔案的最後一次時間,也就是修改時間。

-exec 這個選項引數後面可以跟自定義的shell命令,格式如下:

find . -name 「*.back」 -exec ls -l {} ;

查詢結果:

-rw-r–r-- 1 root root 0 nov 24 13:48 ./2.back

-rw-r–r-- 1 root root 0 nov 24 13:48 ./3.back

-rw-r–r-- 1 root root 0 nov 24 13:48 ./1.back

例4:把查詢到的檔案複製到乙個指定的目錄

find /root -name 「.txt" -exec cp {} /opt ;

xargs和find命令結合 複製檔案 -i 表示 find 傳遞給xargs的結果 由{}來代替

find . -name ".txt」 | xargs -i cp {} /opt

查詢多個型別的檔案:

比較符的使用:

-a and 並且

-o or 或者

wc命令詳解;

wc [option] file

命令功能

統計指定檔案中的位元組數,字數,行數,並將統計結果顯示輸出。

該命令統計指定檔案中的位元組數,字數,行數,如果沒有給出檔名,則從標準輸入讀取。

wc同時也給出所指定檔案的**計數。

命令引數

-c:統計位元組數

-l:統計行數

-m:統計字元數

-w:統計字數

-l:列印最長行的長度

find /etc -size +20k | wc -l 統計有多少行,

cat /etc/passwd |wc -l 也可以統計出多少行,進而知道有多少個使用者。

按許可權查詢:

-perm

例如:find /root/ -perm 644 檢視檔案許可權為644的檔案

find /root/ -perm -777 查詢檔案許可權不低於777的檔案

-maxdepth 只查詢目錄第一層的檔案和目錄。

命令判斷:

三個特殊符號:; && ||

; 分號 不考慮指令的相關性,連續執行,不保證命令全部執行成功的。

&& 邏輯與 只有在前面的命令執行成功後,後面的命令才回去執行。

|| 如果前面的命令執行成功,後面的命令就不去執行了;或者如果前面的執行不成功,才回去執行後面的。

linux執行命令,是從左往右乙個乙個執行,從上到下執行。

重定向和檔案查詢

檔案描述符 核心 kernel 利用檔案描述符 file descriptor 來訪問檔案。檔案描述符是非負整數。開啟現存盤案或新建檔案時,核心會返回乙個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。linux下一切皆檔案。stdin 標準輸入 如 鍵盤檔案 檔案描述符為 0 stdo...

Linux輸入輸出重定向和檔案查詢值grep命令

一 檔案描述符 linux 的shell命令,可以通過檔案描述符來引用一些檔案,通常使用到的檔案描述符為0,1,2。linux系統實際上有12個檔案描述符,通常使用的檔案描述符如下圖 檔案檔案描述符 輸入檔案 標準輸入 0 預設是鍵盤,為0時是檔案或者其他命令的輸出 輸出檔案 標準輸出 1 預設是螢...

linux 檔案重定向

nohup 所屬包 coreutils 功能說明 該命令可以讓使用者在退出系統之後,繼續於後台中執行程式。注意nohup命令不會自動將程式放到後台執行,因此需要配合shell的特殊字元 使用,放在一行指令的最後,如 nohup command 要想明白檔案重定向,首先需要理解linux中的所有程序,...