http://blog.csdn.net/zg_hover/article/details/2572060 2008 linux下的文件和目錄管理自我總結(jié)
2
3 摘要:主要總結(jié)了linux下的文件和目錄的管理,包括各種命令的使用和分類整理。
4
5 1, 目錄與路徑
6 .相對(duì)路徑和絕對(duì)路徑
7 以/打頭的就是絕對(duì)路徑,,它會(huì)從根路徑/開始尋找你要去的路徑名。而不以/打頭的就是相對(duì)路徑,
例如:
8 cd /home/zhengxh #絕對(duì)路徑
9 cd ./mydir [和 cd mydir相同] #相對(duì)路徑,,以當(dāng)前目錄為起始目錄
10 cd ../mydir #相對(duì)路徑,以當(dāng)前目錄的上一層目錄為起始目錄
11
12 2, 目錄的相關(guān)操作
13
14 .目錄的相關(guān)符號(hào)
15 . #代表當(dāng)前目錄
16 .. #代表當(dāng)前目錄的父目錄
17 - #代表上一次進(jìn)入的目錄,即:$OLDPWD的值
18 ~ #代表使用者的家(/home/username) 目錄
19 ~user #代表user的家目錄
20
21 .幾個(gè)常見的目錄處理命令
22
23 cd (變換目錄)
24
25 cd dirname
26
27 #如果不加任何路徑,,就默認(rèn)回到自己的家目錄了,,挺方便的把:)
28 cd ./mydir #就在當(dāng)前目錄下的mydir目錄
29 cd .. #切換到上層目錄
30 cd - #切換到上次所在的目錄
31 cd ~ #切換到我的家目錄
32 cd ~user #切換到user的家目錄即:/home/user目錄
33 #注意:一般root用戶才能切換
34 cd /tmp #絕對(duì)路徑,切換到/tmp目錄
35
36
37 pwd (顯示當(dāng)前所在路徑)
38
39 參數(shù):
40 -P #顯示實(shí)際的物理路徑,,而不是符號(hào)鏈接路徑
41
42 #以下例子可以看出-P參數(shù)加上后
43 #顯示的是實(shí)際的物理路徑,,而不是符號(hào)鏈接路徑
44 --------------------------------------------------------
45 [zhengxh@hoverzg stdshell]$ ls -l md
46 lrwxrwxrwx 1 zhengxh cvs 5 6月 14 10:44 md -> mydir
47
48 #上面的是一個(gè)鏈接文件
49 [zhengxh@hoverzg stdshell]$ cd md
50 [zhengxh@hoverzg md]$ pwd
51 /home/zhengxh/stdshell/md
52 [zhengxh@hoverzg md]$ pwd -P
53 /home/zhengxh/stdshell/mydir
54 --------------------------------------------------------
55
56
57 mkdir (創(chuàng)建新目錄)
58
59 參數(shù):
60 -m #設(shè)定新創(chuàng)建目錄的權(quán)限-m $(umask -S)這是默認(rèn)的權(quán)限,
61 #(-m 554) 設(shè)定自己的權(quán)限,,不需要關(guān)umask的值
62 -p #如果你創(chuàng)建的目錄中有任何不存在的目錄,,該參數(shù)都會(huì)為你創(chuàng)建
63
64 --------------------------------------------------------
65 #可以看只有最后一層的目錄,權(quán)限都變成了777
66 #注意:在-p 和-m參數(shù)一起使用時(shí),,只有最后一層的目錄變成你設(shè)定的目錄,,
67 #而其他的則會(huì)使用默認(rèn)的目錄權(quán)限
68
69 [zhengxh@hoverzg stdshell]$ mkdir -p -m 777 dir1/dir2/dir3
70 [zhengxh@hoverzg stdshell]$ ls -Rl dir1/
71 drwxr-xr-x 3 zhengxh cvs 4096 6月 14 11:16 dir1
72 drwxr-xr-x 3 zhengxh cvs 4096 6月 14 11:16 dir2
73 drwxrwxrwx 2 zhengxh cvs 4096 6月 14 11:16 dir3
74
75 --------------------------------------------------------
76
77
78 rmdir (刪除空的路徑)
79
80 注意:該命令只能刪除空目錄,而且是每個(gè)目錄必須都為空
81 參數(shù):
82 -p #連同上層父目錄一起刪除
83
84 --------------------------------------------------------
85 #注意:使用-p參數(shù)時(shí),,要指定刪除目錄的最后一層,,而不能只寫到第一層,
86 #因?yàn)?,它不為空?)
87 [zhengxh@hoverzg stdshell]$ mkdir -p test1/test2/test3
88
89 #要寫到最后一層為空的目錄,,否則會(huì)提示錯(cuò)誤
90 [zhengxh@hoverzg stdshell]$ rmdir -p test1
91 rmdir: ‘test1’: 目錄非空
92 [zhengxh@hoverzg stdshell]$ rmdir -p test1/test2/test3/
93
94 --------------------------------------------------------
95
96 3, 文件和目錄的管理
97
98 ls (文件和目錄查看命令)
99 用法:ls [選項(xiàng)]... [文件]...
100
101 -a, --all 不隱藏任何以 . 字符開始的項(xiàng)目
102 -A, --almost-all 列出除了 . 及 .. 以外的任何項(xiàng)目
103 -d, --directory 列出目錄而不是列出文件名
104 -f 不進(jìn)行排序,-aU 選項(xiàng)生效,,-lst 選項(xiàng)失效
105 -l 以列表的形式列出文件的完整信息
106 -h 以人類可讀的方式列出文件的大小(K,M)
107 -F 加上文件類型的指示符號(hào) (*/=@| 其中一個(gè))
108 *:代表可執(zhí)行檔,; /:代表目錄;@:代表鏈接文件
109 =:代表 socket 檔案,; |:代表 FIFO 檔案,;
110 -i, --inode 印出每個(gè)文件的 inode 號(hào)
111 -n, --numeric-uid-gid 類似 -l,但列出 UID 及 GID 號(hào)
112 -Q, --quote-name 將項(xiàng)目名稱括上雙引號(hào)
113 -r, --reverse 依相反次序排列
114 -R, --recursive 同時(shí)列出所有子目錄層
115 -S 以文件大小排序
116 -t 以修改的時(shí)間先后順序排序
117 -X 根據(jù)擴(kuò)展名排序
118 -1 每行只列出一個(gè)文件
119 -u 配合 -lt:顯示訪問時(shí)間而且依訪問時(shí)間排序
120 配合 -l:顯示訪問時(shí)間但根據(jù)名稱排序
121 否則:根據(jù)訪問時(shí)間排序
122
123 --full-time 顯示完整的時(shí)間,,包括年份
124 --color=[never,always,auto] 顯示顏色的方式
125
126 --------------------------------------------------------
127 [zhengxh@hoverzg stdshell]$ ls -lF --full-time
128 總用量 1732
129 -rw-r--r-- 1 zhengxh cvs 56 2008-06-04 13:51:35.000000000 +0800 22
130 -rw-r--r-- 1 zhengxh cvs 30 2008-05-31 18:30:01.000000000 +0800 33
131 --------------------------------------------------------
132
133 cp, rm, mv (復(fù)制轉(zhuǎn)移與刪除)
134
135 cp (復(fù)制文件或目錄)
136 將<來源>文件復(fù)制至<目的地>,,或?qū)⒍鄠€(gè)<文件>復(fù)制至<目錄>,。
137 用法:cp [選項(xiàng)]... 來源 目的地
138 或:cp [選項(xiàng)]... 來源... 目錄
139
140 -a, --archive 等於 -dpR
141 -d 不會(huì)找出符號(hào)鏈接指示的真正目的地
142 -f, --force 強(qiáng)制進(jìn)行,而不會(huì)讓用戶確認(rèn)
143 -i, --interactive 覆蓋文件前需要確認(rèn)
144 -H 使用命令列中的符號(hào)鏈接指示的真正目的地
145 -l, --link 鏈接而非復(fù)制文件
146 -L, --dereference 一定先找出符號(hào)鏈接指示的真正目的地
147 -u 當(dāng)源和目的文件有差異時(shí),,將會(huì)覆蓋原來的文件
148 -p/-c 保留/不保留源文件的屬性
149 -R, -r, --recursive 復(fù)制目錄及目錄內(nèi)的所有項(xiàng)目
150 -s, --symbolic-link 只創(chuàng)建符號(hào)鏈接而不是復(fù)制文件
151 注意:和ln -s的效果一樣,,創(chuàng)建時(shí)要在目標(biāo)目錄下
152
153 --------------------------------------------------------
154 [zhengxh@hoverzg stdshell]$ ls -l
155 lrwxrwxrwx 1 zhengxh cvs 5 6月 14 10:44 md -> mydir
156
157 [zhengxh@hoverzg stdshell]$ cp -a md mytestdir/
158 [zhengxh@hoverzg stdshell]$ ls -F mytestdir/
159 md@
160
161 [zhengxh@hoverzg stdshell]$ cp -aL md mytestdir/
162 [zhengxh@hoverzg stdshell]$ cd mytestdir/
163 [zhengxh@hoverzg mytestdir]$ ls -F
164 md/
165
166 #可以看到開始沒有加L參數(shù)之前,我們復(fù)制到mytestdir中的僅僅是一個(gè)符號(hào)鏈接,。
167 而且一般這個(gè)符號(hào)鏈接由于路徑改變所以已經(jīng)沒有意義,。而加了L參數(shù)后,把整個(gè)
168 目錄都復(fù)制過去了,,目錄名是符號(hào)鏈接的名字,。
169
170 [zhengxh@hoverzg stdshell]$ ls -l
171 drwxrwxrw- 2 zhengxh cvs 4096 6月 14 11:20 ff
172 [zhengxh@hoverzg stdshell]$ cp -R ff mytestdir/
173 [zhengxh@hoverzg mytestdir]$ ls -l
174 drwxr-xr-- 2 zhengxh cvs 4096 6月 15 10:20 ff
175
176 #請(qǐng)看上面的復(fù)制過來的目錄時(shí)間和權(quán)限都改變了
177 #如果要保持它原來的屬性,請(qǐng)加上-p選項(xiàng),。
178
179
180 #cp的其他用法
181 (1)cp /dev/cdrom xxxx.iso 將光盤做成iso文件
182
183 --------------------------------------------------------
184
185 rm (刪除文件和目錄)
186
187 用法:rm [選項(xiàng)]... 目錄...
188 -f, --force 強(qiáng)制刪除,不提示用戶
189 -i, --interactive 在刪除前要尋問用戶
190 -r, -R, --recursive 輪訓(xùn)刪除
191 -d, --directory 可以用來刪除符號(hào)鏈接目錄
192 -- 刪除一個(gè)頭是-的文件
193
194
195 --------------------------------------------------------
196 [zhengxh@hoverzg stdshell]$ rm -hh
197 rm:無效選項(xiàng) -- h
198 請(qǐng)嘗試執(zhí)行‘rm --help’來獲取更多信息,。
199 [zhengxh@hoverzg stdshell]$ rm -- -hh
200 rm:是否刪除一般文件‘-hh’? y
201
202 --------------------------------------------------------
203
204 mv (刪除文件或更改目錄/文件名)
205
206 用法:mv [選項(xiàng)]... 來源 目的地
207 或:mv [選項(xiàng)]... 來源... 目錄
208
209 -f, --force 強(qiáng)制刪除,不提示用戶
210 -i, --interactive 在刪除前要尋問用戶
211 -u, --update 只在<來源>文件比目的地文件新,或目的地文件
212 不存在時(shí)才會(huì)移動(dòng)
213
214
215
216 rename (批量文件名的更改)
217
218 rename [現(xiàn)有文件包含字符串] [更改后的字符串] [文件列表]
219
220 --------------------------------------------------------
221
222 #把所有.exe文件中的.exe的文件名字符串,,改變成.out
223 [zhengxh@hoverzg stdshell]$ rename .exe .out *.exe
224
225 --------------------------------------------------------
226
227 .取得文件名或目錄名
228
229 basename
230 basename [filename] [后綴字符串]
231
232 dirname
233
234 dirname [dirname] [取得父目錄]
235
236
237 4, 文件內(nèi)容查看
238
239 * cat 由第一行開始顯示檔案內(nèi)容
240 * tac 從最後一行開始顯示,,可以看出 tac 是 cat 的倒著寫!
241 * nl 顯示的時(shí)候,,順道輸出行號(hào),!
242 * more 一頁一頁的顯示檔案內(nèi)容
243 * less 與 more 類似,但是比 more 更好的是,,他可以往前翻頁,!
244 * head 只看頭幾行
245 * tail 只看尾巴幾行
246 * od 以二進(jìn)位的方式讀取檔案內(nèi)容!
247
248
249 cat (將文件內(nèi)容或標(biāo)準(zhǔn)輸入-,連續(xù)的輸出到標(biāo)準(zhǔn)輸出)
250
251 用法: cat [-AEnTv] [FILE]...
252
253 -A,--show-all 相當(dāng)于-vET的組合,,可以列出一些特殊的字符
254 -e 相當(dāng)于-vE選項(xiàng)的組合
255 -E, --show-ends 在行的末尾顯示$符號(hào)
256 -n, --number 在輸出行的前面加上行號(hào)
257 -s, --squeeze-blank 只打印多個(gè)連續(xù)空白行的一行
258 -t 相當(dāng)于-vT選項(xiàng)的組合
259 -T, --show-tabs 顯示TAB鍵為^I
260 -v, --show-nonprinting 顯示非打印字符^和 M-, 除了LFD and TAB
261
262 --------------------------------------------------------
263
264 [zhengxh@hoverzg stdshell]$ cat -A file
265 rwxrwsrwx^Igprs^I512^IGPRS$
266 12345wxrwsrwx^Igprs^I512^Izhengxh$
267 $
268 adf$
269 adf$
270 a$
271 fd$
272 $
273 $
274 $
275 adfadsf$
276 $
277 [zhengxh@hoverzg stdshell]$ cat -sn file
278 1 rwxrwsrwx gprs 512 GPRS
279 2 12345wxrwsrwx gprs 512 zhengxh
280 3
281 4 adf
282 5 adf
283 6 a
284 7 fd
285 8
286 9 adfadsf
287 10
288 #可以看到多個(gè)空白行只顯示了一個(gè)空白行
289
290 --------------------------------------------------------
291
292 tac (反向顯示)
293
294 -r, --regex 按正則表達(dá)式作為分隔符,,把內(nèi)容反轉(zhuǎn)
295 -s, --separator=STRING 使用STRING而不是默認(rèn)的/n把內(nèi)容反轉(zhuǎn)
296
297
298 --------------------------------------------------------
299
300 [zhengxh@hoverzg stdshell]$ tac t
301 d
302 dfa
303 adfa
304 adf
305 this is a test
306 [zhengxh@hoverzg stdshell]$ cat t
307 this is a test
308 adf
309 adfa
310 dfa
311 d
312 --------------------------------------------------------
313
314 nl (給輸出的文件內(nèi)容加上行號(hào))
315 nl 可以對(duì)行號(hào)進(jìn)行比較多的樣式的設(shè)計(jì),包括:
316 (1) 行號(hào)的位數(shù)
317 (2) 行號(hào)的補(bǔ)零設(shè)計(jì)
318
319 參數(shù):
320 -b :指定行號(hào)指定的方式,,主要有兩種:
321 -b a :表示不論是否為空行,,也同樣列出行號(hào);
322 -b t :(默認(rèn))如果有空行,,空的那一行不要列出行號(hào),;
323 -n :列出行號(hào)表示的方法,主要有三種:
324 -n ln :行號(hào)在螢?zāi)坏淖钭蠓斤@示,;
325 -n rn :行號(hào)在自己欄位的最右方顯示,,且不加 0 ;
326 -n rz :行號(hào)在自己欄位的最右方顯示,,且加 0 ,;
327 -w :行號(hào)欄位的佔(zhàn)用的位元數(shù)。
328
329 -----------------例子來自于鳥哥---------------------------
330
331 [root@linux ~]# nl -b a -n rz -w 3 /etc/issue
332 001 Fedora Core release 4 (Stentz)
333 002 Kernel /r on an /m
334 003
335 # 變成了僅有三位數(shù)的行號(hào)了...
336
337 nl 可以將輸出的檔案內(nèi)容自動(dòng)的加上行號(hào),!其結(jié)果與 cat -n 有點(diǎn)不太一樣,,
338 nl 可以將行號(hào)做比較多的顯示設(shè)計(jì),,包括位數(shù)與是否自動(dòng)補(bǔ)齊 0
339 等等的功能呢~
340
341 --------------------------------------------------------
342
343 .文件內(nèi)容的翻頁查看
344
345 more (一頁一頁的翻看文件)
346
347 常見的操作:
348 (回車鍵)Enter 向下翻一行
349 (空白鍵)space 向下翻一頁
350 / 向下查找 n 向下查找下一處
351 q 退出
352
353
354 --------------------------------------------------------
355
356 less (可以上下翻動(dòng),功能強(qiáng)大的文件瀏覽器)
357
358 * 空白鍵 :向下翻動(dòng)一頁,;
359 * [pagedown]:向下翻動(dòng)一頁,;
360 * [pageup] :向上翻動(dòng)一頁;
361 * /字串 :向下搜尋『字串』的功能,;
362 * ?字串 :向上搜尋『字串』的功能,;
363 * n :重複前一個(gè)搜尋 (與 / 或 ? 有關(guān)!)
364 * N :反向的重複前一個(gè)搜尋 (與 / 或 ? 有關(guān),!)
365 * q :離開 less 這個(gè)程式;
366
367 具體的功能請(qǐng)查看 man less 或 less -?/--help
368
369 --------------------------------------------------------
370
371 .取檔案內(nèi)容
372 head, tail, awk, sed, grep
373 后面的三種是專門的語言,,會(huì)專門進(jìn)行筆記,。這里只是說明一下前兩種的用法。
374
375 head (顯示從文件頭開始的前10行-默認(rèn))
376
377 用法:head [選項(xiàng)]... [文件]...
378
379 -c num 顯示前<num>bytes的文件內(nèi)容
380 -n num 顯示前<num>行
381 -v/q 是否顯示/不顯示(默認(rèn))文件名
382
383 ------------------------例子------------------------------
384 [zhengxh@hoverzg stdshell]$ head -q -n 5 test.c
385 #include <stdio.h>
386 #include <unistd.h>
387
388 int
389 main(void)
390 [zhengxh@hoverzg stdshell]$ head -v -n 5 test.c | nl
391 1 ==> test.c <==
392 2 #include <stdio.h>
393 3 #include <unistd.h>
394
395 4 int
396 5 main(void)
397
398 --------------------------------------------------------
399
400 tail (顯示文件的最后10行-默認(rèn))
401
402 用法:tail [選項(xiàng)]... [文件]...
403
404 -c num/+num 顯示前<num>bytes的文件內(nèi)容/從<num>行開始顯示后面的內(nèi)容
405 -n num/+num 顯示前<num>行/從<num>開始顯示后面的內(nèi)容
406 -v/q 是否顯示/不顯示(默認(rèn))文件名
407
408 --------------------------------------------------------
409
410 [zhengxh@hoverzg stdshell]$ head -n 3 test.c | nl -b a
411 1 #include <stdio.h>
412 2 #include <unistd.h>
413 3
414
415 [zhengxh@hoverzg stdshell]$ tail -n +3 test.c | nl -b a
416 1
417 2 int
418 3 main(void)
419 4 {
420 5 int i;
421 6
422 7 for(i=0; i<100; i++){
423 8 fprintf(stderr, "put %d/n", i);
424 9 sleep(1);
425 10 }
426 11 return ;
427 12 }
428 [zhengxh@hoverzg stdshell]$ tail -n 3 test.c | nl -b a
429 1 }
430 2 return ;
431 3 }
432
433 --------------------------------------------------------
434
435 擴(kuò)散:
436
437 .取第10行到20行的內(nèi)容
438 --------------------------------------------------------
439
440 [zhengxh@hoverzg stdshell]$ head -n 20 abs.txt | tail -n 10 | nl -b a
441
442 --------------------------------------------------------
443
444
445 .按照不同編碼顯示文件內(nèi)容
446 主要命令有: od , vim(也可以在編輯器里面轉(zhuǎn)變), hexdump
447
448 od (把文件內(nèi)容用2進(jìn)制的編碼形式顯示出來)
449
450 用法: od [OPTION]... [FILE]...
451
452 -t :後面可以接各種『類型 (TYPE)』的輸出,,例如:
453 a :利用預(yù)設(shè)的字元來輸出,;
454 c :使用 ASCII 字元來輸出
455 d[size] :利用十進(jìn)位(decimal)來輸出資料,每個(gè)整數(shù)佔(zhàn)用 size bytes ,;
456 f[size] :利用浮點(diǎn)數(shù)值(floating)來輸出資料,,每個(gè)數(shù)佔(zhàn)用 size bytes ;
457 o[size] :利用八進(jìn)位(octal)來輸出資料,,每個(gè)整數(shù)佔(zhàn)用 size bytes ,;
458 x[size] :利用十六進(jìn)位(hexadecimal)來輸出資料,每個(gè)整數(shù)佔(zhàn)用 size bytes ,;
459
460 -a same as -t a, 使用預(yù)設(shè)的字符輸出
461 -b same as -t oC, 用八進(jìn)制輸出
462 -c same as -t c, 使用 ASCII 字符輸出
463 -d same as -t u2, select unsigned decimal shorts
464 -f same as -t fF, select floats
465 -h same as -t x2, select hexadecimal shorts
466 -i same as -t d2, select decimal shorts
467 -l same as -t d4, select decimal longs
468 -o same as -t o2, select octal shorts
469 -x same as -t x2, select hexadecimal shorts
470
471 --------------------------------------------------------
472
473 .建立新文件和修改文件時(shí)間
474 touch (建立新文件和修改文件時(shí)間-mtime和atime)
475 .建立新文件
476 .修改文件的atime 和 mtime 兩個(gè)時(shí)間
477
478 [root@linux ~]# touch [-acdmt] 檔案
479 參數(shù):
480 -a :僅僅修改 access time,;
481 -c :僅修改時(shí)間,而不創(chuàng)建文件,;
482 -d :后面可以接日期,,也可以使用 --date="日期或時(shí)間"
483 -m :僅修改 mtime ;
484 -t :后面可以接時(shí)間,,格式為[YYMMDDhhmm]
485
486 * modification time (mtime):該文件的內(nèi)容最后的修改時(shí)間,。
487 * status time (ctime): 該文件的狀態(tài)(訪問權(quán)限、用戶ID,、鏈接數(shù)等)的修改時(shí)間,。
488 * access time (atime): 文件的最后訪問時(shí)間。如 cat ~/.bashrc ,,就更新 atime 了,。
489
490 --------------------------------------------------------
491
492 [zhengxh@hoverzg stdshell]$ touch -t 200706151910 awkf
493 [zhengxh@hoverzg stdshell]$ ls -l awkf
494 -rw-r--r-- 1 zhengxh cvs 95 2007-06-15 awkf
495
496 #注意我們系統(tǒng)默認(rèn)顯示的是mtime,也就是文件的內(nèi)容最后改變的時(shí)間,。
497 #但在復(fù)制文件時(shí),,我們卻無法復(fù)制文件的ctime,。
498
499 [root@linux ~]# ls -l /etc/man.config
500 -rw-r--r-- 1 root root 4506 Apr 8 19:11 /etc/man.config
501 [root@linux ~]# ls -l --time=atime /etc/man.config
502 -rw-r--r-- 1 root root 4506 Jul 19 17:53 /etc/man.config
503 [root@linux ~]# ls -l --time=ctime /etc/man.config
504 -rw-r--r-- 1 root root 4506 Jun 25 08:28 /etc/man.config
505
506 --------------------------------------------------------
507
508 .文件和目錄的權(quán)限操作
509 umask, chattr/lsattr, chown, chmod,
510
511 umask (目前建立文件或目錄的預(yù)設(shè)值)
512 用法: umask [-Sp]
513 -S 以字符的形式打印出預(yù)設(shè)權(quán)限
514 -p 以數(shù)字的形式打印出預(yù)設(shè)的權(quán)限
515 沒有參數(shù)時(shí)數(shù)值形式打印預(yù)值
516 注意:目錄:預(yù)設(shè)的權(quán)限是777減去umask的值
517 文件:預(yù)設(shè)的權(quán)限是777減去umask的預(yù)設(shè)值和每組的可執(zhí)行權(quán)限值,
518 即:每組的可執(zhí)行位--x--x--x也就是文件的最大權(quán)限是666
519 計(jì)算時(shí),,對(duì)于文件要先挖掉文件的可執(zhí)行權(quán)限,,再相減
520 umask 為 003 ,所以拿掉的屬性為 --------wx,,因此:
521 對(duì)于文件要先挖掉可執(zhí)行權(quán)限即: 002: (-rw-rw-rw-) - (--------wx) = -rw-rw-r--
522 目錄: (drwxrwxrwx) - (--------wx) = drwxrwxr--
523
524 --------------------------------------------------------
525
526 #預(yù)設(shè)權(quán)限
527 [zhengxh@hoverzg stdshell]$ umask
528 0022
529 [zhengxh@hoverzg stdshell]$ cat > ee
530 adfa
531
532 #666和022(110-110-110)相減 (000-010-010)
533 [zhengxh@hoverzg stdshell]$ ls -l ee
534 -rw-r--r-- 1 zhengxh cvs 5 6月 19 07:35 ee
535 [zhengxh@hoverzg stdshell]$ ls -l eee
536 -rw-rw-r-- 1 zhengxh cvs 0 6月 19 07:36 eee
537
538 #重新設(shè)定預(yù)設(shè)值
539 [zhengxh@hoverzg stdshell]$ umask 0002
540 [zhengxh@hoverzg stdshell]$ mkdir ffff
541 [zhengxh@hoverzg stdshell]$ ls -l | grep ffff
542 drwxrwxr-x 2 zhengxh cvs 4096 6月 19 07:36 ffff
543
544 --------------------------------------------------------
545
546 chattr (修改文件的隱藏屬性)
547 用法: chattr [-RV] [-+=AacDdijsSu] [-v version] files...
548 -R 改變其子目錄的文件,,符號(hào)文件會(huì)被忽略
549 -v 顯示出修改過程
550 ---
551 參數(shù):
552 + :增加某一個(gè)特殊參數(shù),其他原本存在參數(shù)則不動(dòng),。
553 - :移除某一個(gè)特殊參數(shù),,其他原本存在參數(shù)則不動(dòng)。
554 = :設(shè)定一定,,且僅有後面接的參數(shù)
555
556 i :對(duì)于一個(gè)文件:不能被刪除,、改名、設(shè)定鏈接也無法寫入或新添加內(nèi)容
557 對(duì)于系統(tǒng)文件安全性有很大的益處,。
558 a :如果a屬性被設(shè)定,,這文件就只能增加內(nèi)容,而不能刪除,,只有 root
559 才能設(shè)定這個(gè)屬性,。
560 A :如果 A 這個(gè)屬性,該文件(或目錄)的存取時(shí)間 atime (access)
561 將不可被修改,,可避免例如手手提電腦容易有磁盤I/O 的錯(cuò)誤發(fā)生,!
562 S :如果S屬性被設(shè)定,就類似sync 的功能,!它會(huì)把內(nèi)容同步寫入磁盤中,!
563 可以有效避免文件內(nèi)容的丟失。
564 c :這個(gè)屬性設(shè)定之後,,將會(huì)自動(dòng)的將此檔案『壓縮』,,在讀取的時(shí)候?qū)?huì)自動(dòng)解壓縮,
565 但是在儲(chǔ)存的時(shí)候,,將會(huì)先進(jìn)行壓縮後再儲(chǔ)存(看來對(duì)於大檔案似乎蠻有用的,!)
566 d :當(dāng)dump(備份)程序被執(zhí)行的時(shí)候,設(shè)定 d 屬性將可使該檔案(或目錄)不具有dump功能
567 j :當(dāng)使用 ext3 這個(gè)檔案系統(tǒng)格式時(shí),,設(shè)定 j 屬性將會(huì)使檔案在寫入時(shí)先記錄在
568 journal 中,!但是當(dāng) filesystem 設(shè)定參數(shù)為 data=journalled 時(shí),由於已經(jīng)設(shè)定了
569 日誌了,,所以這個(gè)屬性無效,!
570 s :當(dāng)檔案設(shè)定了 s 參數(shù)時(shí),他將會(huì)被完全的移除出這個(gè)硬碟空間。
571 u :與 s 相反的,,當(dāng)使用 u 來設(shè)定檔案時(shí),,則資料內(nèi)容其實(shí)還存在磁碟中,
572 可以使用來 undeletion.
573 注意:這個(gè)屬性設(shè)定上面,,比較常見的是 a 與 i 的設(shè)定值,,而且很多設(shè)定值必須要身為
574 root 才能夠設(shè)定的喔!
575
576 [root@linux ~]# cd /tmp
577 [root@linux tmp]# touch attrtest
578 [root@linux tmp]# chattr +i attrtest
579 [root@linux tmp]# rm attrtest
580 rm: remove write-protected regular empty file `attrtest'? y
581 rm: cannot remove `attrtest': Operation not permitted
582
583 --------------------------------------------------------
584
585 lsattr (顯示文件的隱藏屬性)
586 Usage: lsattr [-RVadlv] [files...]
587
588 -R 遞歸顯示文件夾和子文件夾里的所有內(nèi)容
589 -a 顯示文件夾里的所有文件包括.
590 -d 顯示目錄,,而不是顯示內(nèi)容
591
592
593 --------------------------------------------------------
594
595 [zhengxh@hoverzg aa]$ lsattr -a
596 ------------- ./cc.back
597 ------------- ./bb
598 ------------- ./bc.tar
599
600 [zhengxh@hoverzg aa]$ lsattr -R
601 ------------- ./cc.back
602 ------------- ./bb
603
604 ./bb:
605 ------------- ./bb/test1
606 ------------- ./bb/test2
607 ------------- ./bb/cc
608
609 ./bb/cc:
610 ------------- ./bb/cc/cc2
611
612 --------------------------------------------------------
613
614 chown (改變文件和目錄的所有者)
615 chgrp (改變文件和目錄的組)
616
617 用法:chown [選項(xiàng)]... 所有者[:[組]] 文件...
618 或:chown [選項(xiàng)]... :組 文件...
619 或:chown [選項(xiàng)]... --reference=參考文件 文件...
620
621 -c, --changes 當(dāng)文件所有者改變了顯示出詳細(xì)信息
622 -f, --silent, --quiet 不輸出錯(cuò)誤消息
623 --reference=RFILE 使用RFILE文件的模式作為目標(biāo)模式而不是OWNER:GROUP的值
624 -R 遞歸改變?cè)撃夸浖捌渥幽夸浐瓦@些目錄下的文件的所有者和組所有者
625
626
627
628
629 chmod (改變文件的屬性)
630
631 用法:chmod [-cfvR]... [ugoa][+-=][rwxXst] 文件...
632 或:chmod [-cfvR]... 八進(jìn)制模式 文件...
633 或:chmod [-cfvR]... --reference=參考文件 文件...
634
635 -c, --changes 當(dāng)文件模式改變了顯示出詳細(xì)信息
636 -f, --silent, --quiet 不輸出錯(cuò)誤信息
637 -v, --verbose 顯示改變的詳細(xì)信息
638 --reference=RFILE 使用RFILE文件的模式作為目標(biāo)模式
639 -R, --recursive 遞歸的改變文件和目錄的屬性
640
641
642 * 4 為 SUID :用戶設(shè)置ID,,把可執(zhí)行文件的權(quán)限在執(zhí)行時(shí)改成文件的所者
643 * 2 為 SGID :組設(shè)置ID
644 * 1 為 Sticky bit :對(duì)目錄設(shè)置,只有對(duì)該目錄有寫權(quán)限的用戶,,并且(1),擁有該文件 (2),擁有此目錄
645 (3),是超級(jí)用戶 滿足這三者之一時(shí)才能更名或刪除該文件,。
646
647 --------------------------------------------------------
648
649 drwxrwxrwt 61 root root 57344 6月 19 18:32 tmp
650
651 #設(shè)置用戶組ID位
652 [zhengxh@hoverzg stdshell]$ chmod u+s t1.sh
653 [zhengxh@hoverzg stdshell]$ ls -l t1.sh
654 -rwsrw-r-- 1 zhengxh zhengxh 143 1月 6 11:02 t1.sh
655 #設(shè)置粘著位
656 [zhengxh@hoverzg stdshell]$ chmod a+t h1.sh
657 [zhengxh@hoverzg stdshell]$ ls -l h1.sh
658 -rwxrw-r-T 1 zhengxh zhengxh 75 4月 11 11:33 h1.sh
659
660 --------------------------------------------------------
661
662 .文件和目錄查找命令
663 file, which, whereis, find, locate, xargs
664
665 file (查看文件的格式)
666 報(bào)告文件類型。
667
668 which (查看命令的位置)
669 用法: which [-a] [程序文件名1] [程序文件名2] [...]
670 該指令會(huì)在PATH所列出的路徑中,,尋找后面列出的程序文件名,。
671 -a 會(huì)尋找包括alias在內(nèi)的程序名
672
673 --------------------------------------------------------
674
675 [zhengxh@hoverzg ~]$ which -a ls pwd whoami hh
676 alias ls='ls --color=tty'
677 /bin/ls
678 /bin/pwd
679 /usr/bin/whoami
680 /usr/bin/which: no hh in
681 (/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin)
682
683 --------------------------------------------------------
684
685 whereis (查看程序的位置)
686 用法:whereis [ -bmsu ] [ -BMS directory... -f ] filename ...
687 -b 只搜索二進(jìn)制文件
688 -m 只找在說明文件 manual路徑下的文件
689 -s 只尋找sources來源文件
690 -u 沒有說明文件的文件
691
692 --------------------------------------------------------
693 [zhengxh@hoverzg ~]$ whereis -b ls
694 ls: /bin/ls
695 [zhengxh@hoverzg ~]$ whereis ls
696 ls: /bin/ls /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz
697 [zhengxh@hoverzg ~]$
698
699 --------------------------------------------------------
700
701 locate (查詢和搜索文件)
702
703 搜索用法: locate [-qi] [-d <path>] [--database=<path>] <search string>...
704 locate [-r <regexp>] [--regexp=<regexp>]
705 數(shù)據(jù)庫用法: locate [-qv] [-o <file>] [--output=<file>]
706 locate [-e <dir1,dir2,...>] [-f <fs_type1,...> ] [-l <level>]
707 [-c] <[-U <path>] [-u]>
708 一般用法: locate [-Vh] [--version] [--help]
709
710 -q - 不輸出錯(cuò)誤信息
711 -i - 大小寫敏感.
712 -d - 說明locate數(shù)據(jù)庫建立的路徑
713 -u - 創(chuàng)建從/開始的索引數(shù)據(jù)庫
714 -U <dir> - 創(chuàng)建從<dir>開始的索引數(shù)據(jù)庫
715 -c - 解析原來locate的配置文件 '/etc/updatedb.conf'
716 當(dāng)使用-u or -U 選項(xiàng)時(shí),如果'updatedb'鏈接到locate則會(huì)自動(dòng)使用該文件
717 -e <dir1,dir2,...> - 使用-u和-U選項(xiàng)時(shí)從locate數(shù)據(jù)庫中排除目錄
718 -f <fs_type1,...> - 使用-u和-U選項(xiàng)時(shí)從locate數(shù)據(jù)庫中排除文件系統(tǒng)類型(ie. NFS, etc)
719 -r <regexp> - 使用基本的正則表達(dá)式查詢
720 --regexp=<regexp> - 使用標(biāo)準(zhǔn)正則表達(dá)式
721
722 --------------------------------------------------------
723
724 #使用正則表達(dá)式
725 [zhengxh@hoverzg writemybook]$ locate -r "上海"
726 /home/zhengxh/music/上海灘.mp3
727
728 #一次搜索多個(gè)文件
729 [zhengxh@hoverzg music]$ locate -q "上海" "天空"
730 /home/zhengxh/music/上海灘.mp3
731 /home/zhengxh/music/classic/天空之城.mp3
732 /home/zhengxh/music/hope/海闊天空.mp3
733
734
735 --------------------------------------------------------
736
737 find (查找文件的位置)
738 用法: find [PATH] [option] [-print -exec -ok]
739
740 選項(xiàng)[option]:
741 1. 與時(shí)間有關(guān)的參數(shù):
742 -atime n :n 為數(shù)字,在 n 天之前的'一天之內(nèi)'被 access 過的文件,;
743 -ctime n :n 為數(shù)字,在 n 天之前的『一天之內(nèi)』被 change 過狀態(tài)的文件,;
744 -mtime n :n 為數(shù)字,,在 n 天之前的『一天之內(nèi)』被 modification 過的文件;
745 -newer file :比file 新的文件就輸出
746
747 2. 與使用者或組名有關(guān)的參數(shù):
748 -uid n :n 為數(shù)字,,這個(gè)數(shù)字是使用者的帳號(hào) ID,,亦即 UID ,這個(gè) UID 是記錄在 /etc/passwd
749 -gid n :n 為數(shù)字,,這個(gè)數(shù)字是群組名稱的 ID,,亦即 GID,這個(gè) GID 記錄在 /etc/group
750 -user name :name 為使用者賬號(hào)名稱,!例如 dmtsai
751 -group name:name 為用戶的組名,,例如 users ;
752 -nouser :選找文件的擁有者不存在 /etc/passwd 的人,!
753 -nogroup :選找文件的組名不存在 /etc/group 的文件,!
754
755 3. 與文件權(quán)限及文件名有關(guān)的參數(shù):
756 -name filename:查詢文件名為 filename 的文件;
757 -size [+-]SIZE:查詢比 SIZE 還要大(+)或小(-)的文件,。這個(gè) SIZE 的規(guī)格有:
758 c: 代表 byte,, k: 代表 1024bytes。所以,,要找比 50KB
759 還要大的文件,,就是『 -size +50k 』
760 -type TYPE :尋找類型為TYPE 的文件,類型主要有:一般文件 (f),
761 裝置文件 (b, c), 目錄 (d), 連接文件 (l), socket (s),
762 及 FIFO (p) 等。
763 -perm mode :查詢文件的屬性等于 mode 的文件,,這個(gè) mode 為類似 chmod
764 的屬性值,,例如, -rwsr-xr-x 的屬性為 4755 ,!
765 -perm -mode :查詢文件的屬性『必須要全部包括 mode 的屬性為』的文件,,例如,
766 要查詢 -rwxr--r-- ,,即 0744 的文件,,使用 -perm -0744,
767 如果一個(gè)文件的屬性為 -rwsr-xr-x ,,即 4755 時(shí),,也會(huì)被列出來,
768 因?yàn)?-rwsr-xr-x 的已經(jīng)包括了 -rwxr--r-- 的屬性了,。
769 -perm +mode :查詢文件的屬性『包含任一 mode 的屬性』的文件,,例如,查詢
770 -rwxr-xr-x ,,亦即 -perm +755 時(shí),,但一個(gè)文件屬性為-rw-------
771 也會(huì)被列出來,因?yàn)樗?-rw.... 的屬性存在,!
772 4. 動(dòng)作選項(xiàng):
773 -exec command :command 為其他指令,,-exec 後面可再接額外的指令來處理搜尋到
774 的結(jié)果。
775 -print :將結(jié)果列印到螢?zāi)簧?,這個(gè)動(dòng)作是預(yù)設(shè)動(dòng)作,!
776
777 --------------------------------------------------------
778
779 範(fàn)例:
780 範(fàn)例一:將過去系統(tǒng)上面 24 小時(shí)內(nèi)有更動(dòng)過內(nèi)容 (mtime) 的檔案列出
781 [root@linux ~]# find / -mtime 0
782 # 那個(gè) 0 是重點(diǎn)!0 代表目前的時(shí)間,,所以,,從現(xiàn)在開始到 24 小時(shí)前,
783 # 有變動(dòng)過內(nèi)容的檔案都會(huì)被列出來,!那如果是三天前的 24 小時(shí)內(nèi),?
784 # find / -mtime 3 ,意思是說今天之前的 3*24 ~ 4*24 小時(shí)之間
785 # 有變動(dòng)過的檔案都被列出的意思,!同時(shí) -atime 與 -ctime 的用法相同,。
786
787 範(fàn)例二:尋找 /etc 底下的檔案,如果檔案日期比 /etc/passwd 新就列出
788 [root@linux ~]# find /etc -newer /etc/passwd
789 # -newer 用在分辨兩個(gè)檔案之間的新舊關(guān)係是很有用的,!
790
791 範(fàn)例三:搜尋 /home 底下屬於 dmtsai 的檔案
792 [root@linux ~]# find /home -user dmtsai
793 # 這個(gè)東西也很有用的~當(dāng)我們要找出任何一個(gè)使用者在系統(tǒng)當(dāng)中的所有檔案時(shí),,
794 # 就可以利用這個(gè)指令將屬於某個(gè)使用者的所有檔案都找出來喔!
795
796 範(fàn)例四:搜尋系統(tǒng)中不屬於任何人的檔案
797 [root@linux ~]# find / -nouser
798 # 透過這個(gè)指令,,可以輕易的就找出那些不太正常的檔案,。
799 # 如果有找到不屬於系統(tǒng)任何人的檔案時(shí),不要太緊張,
800 # 那有時(shí)候是正常的~尤其是您曾經(jīng)以原始碼自行編譯軟體時(shí),。
801
802 範(fàn)例五:找出檔名為 passwd 這個(gè)檔案
803 [root@linux ~]# find / -name passwd
804 # 利用這個(gè) -name 可以搜尋檔名?。?805
806 範(fàn)例六:搜尋檔案屬性為 f (一般檔案) 的檔案
807 [root@linux ~]# find /home -type f
808 # 這個(gè) -type 的屬性也很有幫助喔,!尤其是要找出那些怪異的檔案,,
809 # 例如 socket 與 FIFO 檔案,可以用 find /var -type p 或 -type s 來找,!
810
811 範(fàn)例七:搜尋檔案當(dāng)中含有 SGID/SUID/SBIT 的屬性
812 [root@linux ~]# find / -perm +7000
813 # 所謂的 7000 就是 ---s--s--t ,,那麼只要含有 s 或 t 的就列出,
814 # 所以當(dāng)然要使用 +7000 ,,使用 -7000 表示要含有 ---s--s--t 的所有三個(gè)權(quán)限,,
815 # 因此,就是 +7000 ~瞭乎,?
816
817 範(fàn)例八:將上個(gè)範(fàn)例找到的檔案使用 ls -l 列出來~
818 [root@linux ~]# find / -perm +7000 -exec ls -l {} /;
819 # 注意到,,那個(gè) -exec 後面的 ls -l 就是額外的指令,
820 # 而那個(gè) {} 代表的是『由 find 找到的內(nèi)容』的意思~所以,, -exec ls -l {}
821 # 就是將前面找到的那些檔案以 ls -l 列出長(zhǎng)的資料,!至於 /; 則是表示
822 # -exec 的指令到此為止的意思~意思是說,整個(gè)指令其實(shí)只有在
823 # -exec (裡面就是指令下達(dá)) /;
824 # 也就是說,,-exec 最後一定要以 /; 結(jié)束才行,!這樣瞭解了嗎?,!
825
826 範(fàn)例九:找出系統(tǒng)中,大於 1MB 的檔案
827 [root@linux ~]# find / -size +1000k
828 # 雖然在 man page 提到可以使用 M 與 G 分別代表 MB 與 GB,,
829 # 不過,,俺卻試不出來這個(gè)功能~所以,目前應(yīng)該是僅支援到 c 與 k 吧,!
830
831 --------------------------------------------------------
832
833 xargs ()
834 當(dāng)使用find時(shí),,參數(shù)過長(zhǎng)時(shí)可能會(huì)產(chǎn)生內(nèi)存不足的問題。而用xargs則不會(huì),,因?yàn)樗蛔x一部分,。
835 man xargs可以看出:
836 xargs從標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù),并以空白和換行符分割每個(gè)參數(shù)(引號(hào)中的空白不作為分割符),。
837 然后執(zhí)行指定的命令(并把分解后的參數(shù)附加到命令后面),。
如果沒有指定具體的命令,默認(rèn)使用/bin/echo命令,。
838 如果沒有特別指定,,xargs會(huì)把`_'當(dāng)作結(jié)束標(biāo)志。
839 綜上所述,xargs不適合用作文本處理,,特別是重要的數(shù)據(jù)處理,。
840 xargs處理標(biāo)準(zhǔn)輸入,然后把處理過后的內(nèi)存?zhèn)鹘o后續(xù)的命令作為參數(shù),。
841 使用xargs的主要理由是控制參數(shù)的個(gè)數(shù)和位置,,避免命令行過長(zhǎng)而出現(xiàn)錯(cuò)誤。
842
843
844 --------------------------------------------------------
845 #這樣的話出現(xiàn)了錯(cuò)誤
846 [zhengxh@hoverzg music]$ find /home/zhengxh/music -print | xargs file
847 xargs: unmatched 單 quote; by default quotes are special to xargs unless you
848 use the -0 option
849
850 #請(qǐng)使用tr -d
851 [zhengxh@hoverzg music]$ find . -print | tr -d "/"'" | xargs file
852 .: directory
853 ./月牙泉.mp3: MPEG ADTS, layer III, v1, 160 kBits,
854 44.1 kHz, JntStereo
855 ./pub1195955560195.mp3: MP3 file with ID3 version 2.3.0 tag
856
857
858 --------------------------------------------------------
|