首先引出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
swddednull黑洞和zero空檔案ddds
sddd
sdfsdde
eof錯誤重定向:
將命令執行過程**現的錯誤資訊(選項或引數錯誤)儲存到指定的檔案,而不是直接顯示到顯示器
作用:錯誤資訊儲存到檔案
操作符:錯誤重定向符號: 2>(使用標準輸入和輸出的時候省略了0,1)
在實際應用中,錯誤重定向可以用來收集執行的錯誤資訊,為排錯提供依據。
注意:使用2>進行錯誤重定向的時候會覆蓋原檔案內容,如果是想追加到檔案,那麼只能是2>>
在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中的所有程序,...