#----------------------------------------------------------#html
# ====> 紅色字體 -特指煮酒我的所見。加粗則爲須要重點注意。 #linux
煮酒品茶:鬱悶的緊,發佈文章說使用什麼沉餘格式。分兩章寫,方可解決。nginx
一塊兒學shell之文件處理之二(八)shell
http://cwtea.blog.51cto.com/4500217/876617安全
序:7個小結,列出文件、使用touch更新修改時間、臨時性文件的創建與使用、尋找文件、執行命令:xargs、文件系統的空間信息、比較文件。
Ls
語法:ls [ options ] [ file(s) ]
用途:列出文件目錄的內容。
主要選項:百度結果,能夠man ls查看。
-------------------------------------------------------------------------------
-a 列出目錄下的全部文件,包括以 . 開頭的隱含文件。
-b 把文件名中不可輸出的字符用反斜槓加字符編號(就象在C語言裏同樣)的形式列出。
-c 輸出文件的 i 節點的修改時間,並以此排序。
-d 將目錄象文件同樣顯示,而不是顯示其下的文件。
-e 輸出時間的所有信息,而不是輸出簡略信息。
-f -U 對輸出的文件不排序。
-g 無用。
-i 輸出文件的 i 節點的索引信息。
-k 以 k 字節的形式表示文件的大小。
-l 列出文件的詳細信息。
-m 橫向輸出文件名,並以「,」做分格符。
-n 用數字的 UID,GID 代替名稱。
-o 顯示文件的除組信息外的詳細信息。
-p -F 在每一個文件名後附上一個字符以說明該文件的類型,「*」表示可執行的普通
文件;「/」表示目錄;「@」表示符號連接;「|」表示FIFOs;「=」表示套
接字(sockets)。
-q 用?代替不可輸出的字符。
-r 對目錄反向排序。
-s 在每一個文件名後輸出該文件的大小。
-t 以時間排序。
-u 以文件上次被訪問的時間排序。
-x 按列輸出,橫向排序。
-A 顯示除 「.」和「..」外的全部文件。
-B 不輸出以 「~」結尾的備份文件。
-C 按列輸出,縱向排序。
-G 輸出文件的組的信息。
-L 列出連接文件名而不是連接到的文件。
-N 不限制文件長度。
-Q 把輸出的文件名用雙引號括起來。
-R 列出全部子目錄下的文件。
-S 以文件大小排序。
-X 以文件的擴展名(最後一個 . 後的字符)排序。
-1 一行只輸出一個文件。
--color=no 不顯示彩色文件名
--help 在標準輸出上顯示幫助信息。
--version 在標準輸出上輸出版本信息並退出。
-----------------------------------------------------------------
注:Ls結果自適應shell窗口大小。
-----------------------------------------------
[root@bogon 9wjcl]# echo \a
a
[root@bogon 9wjcl]# echo \\a
\a
[root@bogon 9wjcl]# echo \\\a
\a
------------------------------------------------
# 隱藏文件
[root@bogon 9wjcl]# touch .1 .2 .3
[root@bogon 9wjcl]# ls
one three two
[root@bogon 9wjcl]# ls .*
.1 .2 .3
.:
one three two
..:
51ctodown 8csjb 9wjcl down nginx
[root@bogon 9wjcl]# echo *
one three two
[root@bogon 9wjcl]# echo .*
. .. .1 .2 .3
[root@bogon 9wjcl]# echo \.*
. .. .1 .2 .3
[root@bogon 9wjcl]# echo \\.*
\.*
[root@bogon 9wjcl]# ls -d .*
. .. .1 .2 .3
[root@bogon 9wjcl]# ls -a
. .. .1 .2 .3 one three two
[root@bogon 9wjcl]# ls -l
總計 0
-rw-r--r-- 1 root root 0 05-21 17:48 one
-rw-r--r-- 1 root root 0 05-21 17:48 three
-rw-r--r-- 1 root root 0 05-21 17:48 two
------------------------------------------------------------------------------
-l 每行上的首字符描述爲文件類型:-爲通常文件,d爲目錄,l爲符號鏈接,接下來9個爲文件權限,w寫x執行r爲讀。
第五欄以字節爲單位的文件大小,六七八欄爲最後修改時間、月、日、年。表示
----------------------
顯示完整的時間精準度:
[root@localhost ~]# ls -l --full-time /bin/kill
-rwxr-xr-x 1 root root 14864 2009-09-04 03:52:31.000000000 +0800 /bin/kill
使用touch更新修改時間:百度參數
----------------------------------------------------------------------------------
http://www.linuxso.com/command/touch.html
touch - 修改文件的時間戳記.
總覽
touch [-acm][-r ref_file(參照文件)|-t time(時間值)] file(文件名)...
被廢棄的版本:
touch [-acm][ugly_time] file(文件)...
GNU版本:
touch [-acfm] [-r file(參照文件)] [-t decimtime(時間值)] [-d time(時間值)] [--time={atime,access,use,mtime,modify}] [--date=time] [--reference=file] [--no-create] [--help] [--version] [--] file(文件)...
-------------------------------------------------
[root@localhost ~]# touch -t 195002030000.00 a
[root@localhost ~]# ls -l --full-time a
-rw-r--r-- 1 root root 0 1950-02-03 00:00:00.000000000 +0800 a
-r複製時間
[root@localhost ~]# touch -r a b
[root@localhost ~]# ls -l --full-time b
-rw-r--r-- 1 root root 0 1950-02-03 00:00:00.000000000 +0800 b
臨時性文件的創建與使用:
/tmp與/var/tmp
介紹:/tmp會在系統開機時清空,而/var/tmp仍然存在,由於有些文字編輯程序,會將它們的備份文件存放在這裏,從而系統毀損後能夠用來恢復數據。大部分系統會將/tmp放在常人存型的文件系統裏,以便快速訪問。安全問題應該設置/tmp的權限。
$$變量:
Trap
Mktemp:創建安全文件名。
/dev/random與/dev/urandom特殊文件
尋找文件:
快速尋找文件:
Locate
--------------------------
查看gcc所在地
[root@localhost ~]# locate gcc
/lib/libgcc_s-4.1.2-20080825.so.1
/lib/libgcc_s.so.1
/lib64/libgcc_s-4.1.2-20080825.so.1
/lib64/libgcc_s.so.1
/root/nginx/nginx-0.8.46/auto/cc/gcc
................................................
尋找命令存儲位置type:
調味用一個沒有路徑的命令時,它在文件系統的位置。
------------------------------------------------
[root@localhost ~]# type gcc
gcc is /usr/bin/gcc
[root@localhost ~]# type type
type is a shell builtin
[root@localhost ~]# type newgcc
-bash: type: newgcc: not found
[root@localhost ~]# type gcc
gcc is /usr/bin/gcc
[root@localhost ~]# type mypwd
-bash: type: mypwd: not found
[root@localhost ~]# type pwd
pwd is a shell builtin
[root@localhost ~]# type foobar
-bash: type: foobar: not found
-------------------------------------------
Find查找
Find與其餘UNIX命令最大的不一樣處在於:要查找的文件與目錄,要放在參數列表的第一位,且目錄幾乎是遞歸地向下深刻(尋找),最終要顯示而選定名稱的選項或操做放在命令行的最後。
1、find命令的通常形式爲;
find pathname -options [-print -exec -ok ...]
2、find命令的參數;
pathname: find命令所查找的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。
-print: find命令將匹配的文件輸出到標準輸出。
-exec: find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式爲'command' { } \;,注意{ }和\;之間的空格。
-ok: 和-exec的做用相同,只不過以一種更爲安全的模式來執行該參數所給出的shell命令,在執行每個命令以前,都會給出提示,讓用戶來肯定是否執行。
---------------------------------------------------------
-name
按照文件名查找文件。
-perm
按照文件權限來查找文件。
-prune
使用這一選項可使find命令不在當前指定的目錄中查找,若是同時使用-depth選項,那麼-prune將被find命令忽略。
-user
按照文件屬主來查找文件。
-group
按照文件所屬的組來查找文件。
-mtime -n +n
按照文件的更改時間來查找文件, - n表示文件更改時間距如今n天之內,+ n表示文件更改時間距如今n天之前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。
-nogroup
查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。
-nouser
查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。
-newer file1 ! file2
查找更改時間比文件file1新但比文件file2舊的文件。
-type
查找某一類型的文件,諸如:
b - 塊設備文件。
d - 目錄。
c - 字符設備文件。
p - 管道文件。
l - 符號連接文件。
f - 普通文件。
-size n:[c] 查找文件長度爲n塊的文件,帶有c時表示文件長度以字節計。
-depth:在查找文件時,首先查找當前目錄中的文件,而後再在其子目錄中查找。
-fstype:查找位於某一類型文件系統中的文件,這些文件系統類型一般能夠在配置文件/etc/fstab中找到,該配置文件中包含了本系統中有關文件系統的信息。
-mount:在查找文件時不跨越文件系統mount點。
-follow:若是find命令遇到符號連接文件,就跟蹤至連接所指向的文件。
-cpio:對匹配的文件使用cpio命令,將這些文件備份到磁帶設備中。
另外,下面三個的區別:
-amin n
查找系統中最後N分鐘訪問的文件
-atime n
查找系統中最後n*24小時訪問的文件
-cmin n
查找系統中最後N分鐘被改變文件狀態的文件
-ctime n
查找系統中最後n*24小時被改變文件狀態的文件
-mmin n
查找系統中最後N分鐘被改變文件數據的文件
-mtime n
查找系統中最後n*24小時被改變文件數據的文件
取自:http://hi.baidu.com/minebin/blog/item/94671a361bffb8d7a3cc2bae.html
----------------------------------------------
Find與ls和shell不一樣的地方:它沒有隱藏文件的概念,點開頭的文件名,find也能找到。另find不排序文件名。它以它讀到目錄的順序依次顯示。隨機排序的。最後find處理目錄時,它會自動弟宴深刻目錄結構,尋找在那之下的任何東西,除非你使用-prune選項要求不要這麼作。
注:當使用find進行破壞性目的的shell腳本時必須完全執行調試,例如在命令前插入echo。
---------------------------
查找s開頭的文件名和文件
[root@localhost test]# find s*
sub
sub/5
不要在此目錄查找文件
[root@localhost test]# find -prune
.
[root@localhost test]# find . -prune
.
注:
-size選項必須接上一個數字參數,默認值以512字節爲單位的大小 。
-type選項必須接上一個單詞母參數,以標明文件類型。
-follow選項要求find接上符號鏈接,你能夠用此來找出斷掉的鏈接:
-links選項要求接上一個整數,如未指定正負號,它會只選擇具備指定數量的直接鏈接的文件,若是爲負號、則只尋找鏈接數小於該數字(絕對值)的文件,若是是正號,則權選擇鏈接數大於該數的文件。 Find . -links +1
-atime\-ctime\-mtime選項必須接上一個以天爲單位的整數,若是未指定正負號,即指確實的幾天前,若是爲負,則指少於該天數(絕對值)。爲正,則大於該天數。通常用find . -mtime -7 查改一週前修改過的文件。
-------------------------------------------------------
尋找文件大小塊小於10(5120字節)的非空文件
[root@localhost test]# find . -size +0 -a -size -10
.
./sub
./sub/sub3
尋找空文件,或過去一年都未讀取過的文件
[root@localhost test]# find . -size 0 -o -atime +365
./.4
./2
./.3
./sub/5
./sub/sub3/6
./1
--------------------------------------------------------
尋找問題文件:-print0
---------------------------------------------------------------------------
將問題字符轉換爲可見的S與N
[root@localhost test]# find -print0 | tr ' \n\0' 'SN\n'|sort
.
./1
./2
./.3
./.4
./sub
./sub/5
./sub/sub3
./sub/sub3/6
-------------------------------------------------------------
煮酒品茶:好像沒看出有問題,不知道是沒有找到問題文件仍是出錯了。