linux文件和权限管理心得,linux下的文件和目录管理自我总结

linux下的文件和目录管理自我总结

2

3 摘要:主要总结了linux下的文件和目录的管理,包括各种命令的使用和分类整理。

4

5 1, 目录与路径

6 .相对路径和绝对路径

7 以/打头的就是绝对路径,它会从根路径/开始寻找你要去的路径名。而不以/打头的就是相对路径,

例如:

8 cd /home/zhengxh #绝对路径

9 cd ./mydir [和 cd mydir相同] #相对路径,以当前目录为起始目录

10 cd ../mydir #相对路径,以当前目录的上一层目录为起始目录

11

12 2, 目录的相关操作

13

14 .目录的相关符号

15 . #代表当前目录

16 .. #代表当前目录的父目录

17 - #代表上一次进入的目录,即:$OLDPWD的值

18 ~ #代表使用者的家(/home/username) 目录

19 ~user #代表user的家目录

20

21 .几个常见的目录处理命令

22

23 cd (变换目录)

24

25 cd dirname

26

27 #如果不加任何路径,就默认回到自己的家目录了,挺方便的把:)

28 cd ./mydir #就在当前目录下的mydir目录

29 cd .. #切换到上层目录

30 cd - #切换到上次所在的目录

31 cd ~ #切换到我的家目录

32 cd ~user #切换到user的家目录即:/home/user目录

33 #注意:一般root用户才能切换

34 cd /tmp #绝对路径,切换到/tmp目录

35

36

37 pwd (显示当前所在路径)

38

39 参数:

40 -P #显示实际的物理路径,而不是符号链接路径

41

42 #以下例子可以看出-P参数加上后

43 #显示的是实际的物理路径,而不是符号链接路径

44 --------------------------------------------------------

45 [zhengxh@hoverzg stdshell]$ ls -l md

46 lrwxrwxrwx 1 zhengxh cvs 5 6月 14 10:44 md -> mydir

47

48 #上面的是一个链接文件

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 (创建新目录)

58

59 参数:

60 -m #设定新创建目录的权限-m $(umask -S)这是默认的权限,

61 #(-m 554) 设定自己的权限,不需要关umask的值

62 -p #如果你创建的目录中有任何不存在的目录,该参数都会为你创建

63

64 --------------------------------------------------------

65 #可以看只有最后一层的目录,权限都变成了777

66 #注意:在-p 和-m参数一起使用时,只有最后一层的目录变成你设定的目录,

67 #而其他的则会使用默认的目录权限

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 注意:该命令只能删除空目录,而且是每个目录必须都为空

81 参数:

82 -p #连同上层父目录一起删除

83

84 --------------------------------------------------------

85 #注意:使用-p参数时,要指定删除目录的最后一层,而不能只写到第一层,

86 #因为,它不为空阿:)

87 [zhengxh@hoverzg stdshell]$ mkdir -p test1/test2/test3

88

89 #要写到最后一层为空的目录,否则会提示错误

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 [选项]... [文件]...

100

101 -a, --all 不隐藏任何以 . 字符开始的项目

102 -A, --almost-all 列出除了 . 及 .. 以外的任何项目

103 -d, --directory 列出目录而不是列出文件名

104 -f 不进行排序,-aU 选项生效,-lst 选项失效

105 -l 以列表的形式列出文件的完整信息

106 -h 以人类可读的方式列出文件的大小(K,M)

107 -F 加上文件类型的指示符号 (*/=@| 其中一个)

108 *:代表可執行檔; /:代表目錄;@:代表链接文件

109 =:代表 socket 檔案; |:代表 FIFO 檔案;

110 -i, --inode 印出每个文件的 inode 号

111 -n, --numeric-uid-gid 类似 -l,但列出 UID 及 GID 号

112 -Q, --quote-name 将项目名称括上双引号

113 -r, --reverse 依相反次序排列

114 -R, --recursive 同时列出所有子目录层

115 -S 以文件大小排序

116 -t 以修改的时间先后顺序排序

117 -X 根据扩展名排序

118 -1 每行只列出一个文件

119 -u 配合 -lt:显示访问时间而且依访问时间排序

120 配合 -l:显示访问时间但根据名称排序

121 否则:根据访问时间排序

122

123 --full-time 显示完整的时间,包括年份

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 (复制转移与删除)

134

135 cp (复制文件或目录)

136 将文件复制至,或将多个复制至。

137 用法:cp [选项]... 来源 目的地

138 或:cp [选项]... 来源... 目录

139

140 -a, --archive 等於 -dpR

141 -d 不会找出符号链接指示的真正目的地

142 -f, --force 强制进行,而不会让用户确认

143 -i, --interactive 覆盖文件前需要确认

144 -H 使用命令列中的符号链接指示的真正目的地

145 -l, --link 链接而非复制文件

146 -L, --dereference 一定先找出符号链接指示的真正目的地

147 -u 当源和目的文件有差异时,将会覆盖原来的文件

148 -p/-c 保留/不保留源文件的属性

149 -R, -r, --recursive 复制目录及目录内的所有项目

150 -s, --symbolic-link 只创建符号链接而不是复制文件

151 注意:和ln -s的效果一样,创建时要在目标目录下

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参数之前,我们复制到mytestdir中的仅仅是一个符号链接。

167 而且一般这个符号链接由于路径改变所以已经没有意义。而加了L参数后,把整个

168 目录都复制过去了,目录名是符号链接的名字。

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 #请看上面的复制过来的目录时间和权限都改变了

177 #如果要保持它原来的属性,请加上-p选项。

178

179

180 #cp的其他用法

181 (1)cp /dev/cdrom xxxx.iso 将光盘做成iso文件

182

183 --------------------------------------------------------

184

185 rm (删除文件和目录)

186

187 用法:rm [选项]... 目录...

188 -f, --force 强制删除,不提示用户

189 -i, --interactive 在删除前要寻问用户

190 -r, -R, --recursive 轮训删除

191 -d, --directory 可以用来删除符号链接目录

192 -- 删除一个头是-的文件

193

194

195 --------------------------------------------------------

196 [zhengxh@hoverzg stdshell]$ rm -hh

197 rm:无效选项 -- h

198 请尝试执行‘rm --help’来获取更多信息。

199 [zhengxh@hoverzg stdshell]$ rm -- -hh

200 rm:是否删除一般文件‘-hh’? y

201

202 --------------------------------------------------------

203

204 mv (删除文件或更改目录/文件名)

205

206 用法:mv [选项]... 来源 目的地

207 或:mv [选项]... 来源... 目录

208

209 -f, --force 强制删除,不提示用户

210 -i, --interactive 在删除前要寻问用户

211 -u, --update 只在文件比目的地文件新,或目的地文件

212 不存在时才会移动

213

214

215

216 rename (批量文件名的更改)

217

218 rename [现有文件包含字符串] [更改后的字符串] [文件列表]

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, 文件内容查看

238

239 * cat 由第一行開始顯示檔案內容

240 * tac 從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫!

241 * nl 顯示的時候,順道輸出行號!

242 * more 一頁一頁的顯示檔案內容

243 * less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!

244 * head 只看頭幾行

245 * tail 只看尾巴幾行

246 * od 以二進位的方式讀取檔案內容!

247

248

249 cat (将文件内容或标准输入-,连续的输出到标准输出)

250

251 用法: cat [-AEnTv] [FILE]...

252

253 -A,--show-all 相当于-vET的组合,可以列出一些特殊的字符

254 -e 相当于-vE选项的组合

255 -E, --show-ends 在行的末尾显示$符号

256 -n, --number 在输出行的前面加上行号

257 -s, --squeeze-blank 只打印多个连续空白行的一行

258 -t 相当于-vT选项的组合

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 #可以看到多个空白行只显示了一个空白行

289

290 --------------------------------------------------------

291

292 tac (反向显示)

293

294 -r, --regex 按正则表达式作为分隔符,把内容反转

295 -s, --separator=STRING 使用STRING而不是默认的/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 (给输出的文件内容加上行号)

315 nl 可以对行号进行比较多的样式的设计,包括:

316 (1) 行号的位数

317 (2) 行号的补零设计

318

319 參數:

320 -b :指定行號指定的方式,主要有兩種:

321 -b a :表示不論是否為空行,也同樣列出行號;

322 -b t :(默认)如果有空行,空的那一行不要列出行号;

323 -n :列出行號表示的方法,主要有三種:

324 -n ln :行號在螢幕的最左方顯示;

325 -n rn :行號在自己欄位的最右方顯示,且不加 0 ;

326 -n rz :行號在自己欄位的最右方顯示,且加 0 ;

327 -w :行號欄位的佔用的位元數。

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 # 变成了仅有三位数的行号了...

336

337 nl 可以將輸出的檔案內容自動的加上行號!其結果與 cat -n 有點不太一樣,

338 nl 可以將行號做比較多的顯示設計,包括位數與是否自動補齊 0

339 等等的功能呢~

340

341 --------------------------------------------------------

342

343 .文件内容的翻页查看

344

345 more (一页一页的翻看文件)

346

347 常见的操作:

348 (回车键)Enter 向下翻一行

349 (空白键)space 向下翻一页

350 / 向下查找 n 向下查找下一处

351 q 退出

352

353

354 --------------------------------------------------------

355

356 less (可以上下翻动,功能强大的文件浏览器)

357

358 * 空白鍵 :向下翻動一頁;

359 * [pagedown]:向下翻動一頁;

360 * [pageup] :向上翻動一頁;

361 * /字串 :向下搜尋『字串』的功能;

362 * ?字串 :向上搜尋『字串』的功能;

363 * n :重複前一個搜尋 (與 / 或 ? 有關!)

364 * N :反向的重複前一個搜尋 (與 / 或 ? 有關!)

365 * q :離開 less 這個程式;

366

367 具体的功能请查看 man less 或 less -?/--help

368

369 --------------------------------------------------------

370

371 .取档案内容

372 head, tail, awk, sed, grep

373 后面的三种是专门的语言,会专门进行笔记。这里只是说明一下前两种的用法。

374

375 head (显示从文件头开始的前10行-默认)

376

377 用法:head [选项]... [文件]...

378

379 -c num 显示前bytes的文件内容

380 -n num 显示前行

381 -v/q 是否显示/不显示(默认)文件名

382

383 ------------------------例子------------------------------

384 [zhengxh@hoverzg stdshell]$ head -q -n 5 test.c

385 #include

386 #include

387

388 int

389 main(void)

390 [zhengxh@hoverzg stdshell]$ head -v -n 5 test.c | nl

391 1 ==> test.c <==

392 2 #include

393 3 #include

394

395 4 int

396 5 main(void)

397

398 --------------------------------------------------------

399

400 tail (显示文件的最后10行-默认)

401

402 用法:tail [选项]... [文件]...

403

404 -c num/+num 显示前bytes的文件内容/从行开始显示后面的内容

405 -n num/+num 显示前行/从开始显示后面的内容

406 -v/q 是否显示/不显示(默认)文件名

407

408 --------------------------------------------------------

409

410 [zhengxh@hoverzg stdshell]$ head -n 3 test.c | nl -b a

411 1 #include

412 2 #include

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 扩散:

436

437 .取第10行到20行的内容

438 --------------------------------------------------------

439

440 [zhengxh@hoverzg stdshell]$ head -n 20 abs.txt | tail -n 10 | nl -b a

441

442 --------------------------------------------------------

443

444

445 .按照不同编码显示文件内容

446 主要命令有: od , vim(也可以在编辑器里面转变), hexdump

447

448 od (把文件内容用2进制的编码形式显示出来)

449

450 用法: od [OPTION]... [FILE]...

451

452 -t :後面可以接各種『類型 (TYPE)』的輸出,例如:

453 a :利用預設的字元來輸出;

454 c :使用 ASCII 字元來輸出

455 d[size] :利用十進位(decimal)來輸出資料,每個整數佔用 size bytes ;

456 f[size] :利用浮點數值(floating)來輸出資料,每個數佔用 size bytes ;

457 o[size] :利用八進位(octal)來輸出資料,每個整數佔用 size bytes ;

458 x[size] :利用十六進位(hexadecimal)來輸出資料,每個整數佔用 size bytes ;

459

460 -a same as -t a, 使用预设的字符输出

461 -b same as -t oC, 用八进制输出

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 .建立新文件和修改文件时间

474 touch (建立新文件和修改文件时间-mtime和atime)

475 .建立新文件

476 .修改文件的atime 和 mtime 两个时间

477

478 [root@linux ~]# touch [-acdmt] 檔案

479 参数:

480 -a :仅仅修改 access time;

481 -c :仅修改時間,而不创建文件;

482 -d :后面可以接日期,也可以使用 --date="日期或时间"

483 -m :仅修改 mtime ;

484 -t :后面可以接时间,格式为[YYMMDDhhmm]

485

486 * modification time (mtime):该文件的内容最后的修改时间。

487 * status time (ctime): 该文件的状态(访问权限、用户ID、链接数等)的修改时间。

488 * access time (atime): 文件的最后访问时间。如 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 #注意我们系统默认显示的是mtime,也就是文件的内容最后改变的时间。

497 #但在复制文件时,我们却无法复制文件的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 .文件和目录的权限操作

509 umask, chattr/lsattr, chown, chmod,

510

511 umask (目前建立文件或目录的预设值)

512 用法: umask [-Sp]

513 -S 以字符的形式打印出预设权限

514 -p 以数字的形式打印出预设的权限

515 没有参数时数值形式打印预值

516 注意:目录:预设的权限是777减去umask的值

517 文件:预设的权限是777减去umask的预设值和每组的可执行权限值,

518 即:每组的可执行位--x--x--x也就是文件的最大权限是666

519 计算时,对于文件要先挖掉文件的可执行权限,再相减

520 umask 為 003 ,所以拿掉的屬性為 --------wx,因此:

521 对于文件要先挖掉可执行权限即: 002: (-rw-rw-rw-) - (--------wx) = -rw-rw-r--

522 目錄: (drwxrwxrwx) - (--------wx) = drwxrwxr--

523

524 --------------------------------------------------------

525

526 #预设权限

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 #重新设定预设值

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 改变其子目录的文件,符号文件会被忽略

549 -v 显示出修改过程

550 ---

551 參數:

552 + :增加某一個特殊參數,其他原本存在參數則不動。

553 - :移除某一個特殊參數,其他原本存在參數則不動。

554 = :設定一定,且僅有後面接的參數

555

556 i :对于一个文件:不能被刪除、改名、设定链接也无法写入或新添加内容

557 对于系统文件安全性有很大的益处。

558 a :如果a属性被设定,这文件就只能增加内容,而不能刪除,只有 root

559 才能設定這個屬性。

560 A :如果 A 这个属性,该文件(或目录)的存取時間 atime (access)

561 将不可被修改,可避免例如手手提电脑容易有磁盘I/O 的错误发生!

562 S :如果S属性被设定,就类似sync 的功能!它会把内容同步写入磁盘中!

563 可以有效避免文件内容的丢失。

564 c :這個屬性設定之後,將會自動的將此檔案『壓縮』,在讀取的時候將會自動解壓縮,

565 但是在儲存的時候,將會先進行壓縮後再儲存(看來對於大檔案似乎蠻有用的!)

566 d :當dump(備份)程序被執行的時候,設定 d 屬性將可使該檔案(或目錄)不具有dump功能

567 j :當使用 ext3 這個檔案系統格式時,設定 j 屬性將會使檔案在寫入時先記錄在

568 journal 中!但是當 filesystem 設定參數為 data=journalled 時,由於已經設定了

569 日誌了,所以這個屬性無效!

570 s :當檔案設定了 s 參數時,他將會被完全的移除出這個硬碟空間。

571 u :與 s 相反的,當使用 u 來設定檔案時,則資料內容其實還存在磁碟中,

572 可以使用來 undeletion.

573 注意:這個屬性設定上面,比較常見的是 a 與 i 的設定值,而且很多設定值必須要身為

574 root 才能夠設定的喔!

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 递归显示文件夹和子文件夹里的所有内容

589 -a 显示文件夹里的所有文件包括.

590 -d 显示目录,而不是显示内容

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 [选项]... 所有者[:[组]] 文件...

618 或:chown [选项]... :组 文件...

619 或:chown [选项]... --reference=参考文件 文件...

620

621 -c, --changes 当文件所有者改变了显示出详细信息

622 -f, --silent, --quiet 不输出错误消息

623 --reference=RFILE 使用RFILE文件的模式作为目标模式而不是OWNER:GROUP的值

624 -R 递归改变该目录及其子目录和这些目录下的文件的所有者和组所有者

625

626

627

628

629 chmod (改变文件的属性)

630

631 用法:chmod [-cfvR]... [ugoa][+-=][rwxXst] 文件...

632 或:chmod [-cfvR]... 八进制模式 文件...

633 或:chmod [-cfvR]... --reference=参考文件 文件...

634

635 -c, --changes 当文件模式改变了显示出详细信息

636 -f, --silent, --quiet 不输出错误信息

637 -v, --verbose 显示改变的详细信息

638 --reference=RFILE 使用RFILE文件的模式作为目标模式

639 -R, --recursive 递归的改变文件和目录的属性

640

641

642 * 4 为 SUID :用户设置ID,把可执行文件的权限在执行时改成文件的所者

643 * 2 为 SGID :组设置ID

644 * 1 为 Sticky bit :对目录设置,只有对该目录有写权限的用户,并且(1),拥有该文件 (2),拥有此目录

645 (3),是超级用户 满足这三者之一时才能更名或删除该文件。

646

647 --------------------------------------------------------

648

649 drwxrwxrwt 61 root root 57344 6月 19 18:32 tmp

650

651 #设置用户组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 #设置粘着位

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 报告文件类型。

667

668 which (查看命令的位置)

669 用法: which [-a] [程序文件名1] [程序文件名2] [...]

670 该指令会在PATH所列出的路径中,寻找后面列出的程序文件名。

671 -a 会寻找包括alias在内的程序名

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 只搜索二进制文件

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 ] [--database=] ...

704 locate [-r ] [--regexp=]

705 数据库用法: locate [-qv] [-o ] [--output=]

706 locate [-e ] [-f ] [-l ]

707 [-c] ] [-u]>

708 一般用法: locate [-Vh] [--version] [--help]

709

710 -q - 不输出错误信息

711 -i - 大小写敏感.

712 -d - 说明locate数据库建立的路径

713 -u - 创建从/开始的索引数据库

714 -U

715 -c - 解析原来locate的配置文件 '/etc/updatedb.conf'

716 当使用-u or -U 选项时,如果'updatedb'链接到locate则会自动使用该文件

717 -e - 使用-u和-U选项时从locate数据库中排除目录

718 -f - 使用-u和-U选项时从locate数据库中排除文件系统类型(ie. NFS, etc)

719 -r - 使用基本的正则表达式查询

720 --regexp= - 使用标准正则表达式

721

722 --------------------------------------------------------

723

724 #使用正则表达式

725 [zhengxh@hoverzg writemybook]$ locate -r "上海"

726 /home/zhengxh/music/上海滩.mp3

727

728 #一次搜索多个文件

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 选项[option]:

741 1. 与时间有关的参数:

742 -atime n :n 为数字,在 n 天之前的'一天之內'被 access 过的文件;

743 -ctime n :n 为数字,在 n 天之前的『一天之內』被 change 过状态的文件;

744 -mtime n :n 为数字,在 n 天之前的『一天之內』被 modification 过的文件;

745 -newer file :比file 新的文件就输出

746

747 2. 与使用者或组名有关的参数:

748 -uid n :n 为数字,這個數字是使用者的帳號 ID,亦即 UID ,這個 UID 是記錄在 /etc/passwd

749 -gid n :n 为数字,這個數字是群組名稱的 ID,亦即 GID,這個 GID 記錄在 /etc/group

750 -user name :name 为使用者帐号名称!例如 dmtsai

751 -group name:name 为用户的组名,例如 users ;

752 -nouser :选找文件的拥有者不存在 /etc/passwd 的人!

753 -nogroup :选找文件的组名不存在 /etc/group 的文件!

754

755 3. 与文件权限及文件名有关的参数:

756 -name filename:查询文件名为 filename 的文件;

757 -size [+-]SIZE:查询比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有:

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 的文件,这个 mode 为类似 chmod

764 的属性值,例如, -rwsr-xr-x 的属性为 4755 !

765 -perm -mode :查询文件的属性『必須要全部包括 mode 的属性为』的文件,例如,

766 要查询 -rwxr--r-- ,即 0744 的文件,使用 -perm -0744,

767 如果一个文件的属性为 -rwsr-xr-x ,即 4755 时,也会被列出來,

768 因为 -rwsr-xr-x 的已经包括了 -rwxr--r-- 的属性了。

769 -perm +mode :查询文件的属性『包含任一 mode 的属性』的文件,例如,查询

770 -rwxr-xr-x ,亦即 -perm +755 时,但一个文件属性为-rw-------

771 也会被列出来,因为他有 -rw.... 的属性存在!

772 4. 动作选项:

773 -exec command :command 為其他指令,-exec 後面可再接額外的指令來處理搜尋到

774 的結果。

775 -print :將結果列印到螢幕上,這個動作是預設動作!

776

777 --------------------------------------------------------

778

779 範例:

780 範例一:將過去系統上面 24 小時內有更動過內容 (mtime) 的檔案列出

781 [root@linux ~]# find / -mtime 0

782 # 那個 0 是重點!0 代表目前的時間,所以,從現在開始到 24 小時前,

783 # 有變動過內容的檔案都會被列出來!那如果是三天前的 24 小時內?

784 # find / -mtime 3 ,意思是說今天之前的 3*24 ~ 4*24 小時之間

785 # 有變動過的檔案都被列出的意思!同時 -atime 與 -ctime 的用法相同。

786

787 範例二:尋找 /etc 底下的檔案,如果檔案日期比 /etc/passwd 新就列出

788 [root@linux ~]# find /etc -newer /etc/passwd

789 # -newer 用在分辨兩個檔案之間的新舊關係是很有用的!

790

791 範例三:搜尋 /home 底下屬於 dmtsai 的檔案

792 [root@linux ~]# find /home -user dmtsai

793 # 這個東西也很有用的~當我們要找出任何一個使用者在系統當中的所有檔案時,

794 # 就可以利用這個指令將屬於某個使用者的所有檔案都找出來喔!

795

796 範例四:搜尋系統中不屬於任何人的檔案

797 [root@linux ~]# find / -nouser

798 # 透過這個指令,可以輕易的就找出那些不太正常的檔案。

799 # 如果有找到不屬於系統任何人的檔案時,不要太緊張,

800 # 那有時候是正常的~尤其是您曾經以原始碼自行編譯軟體時。

801

802 範例五:找出檔名為 passwd 這個檔案

803 [root@linux ~]# find / -name passwd

804 # 利用這個 -name 可以搜尋檔名啊!

805

806 範例六:搜尋檔案屬性為 f (一般檔案) 的檔案

807 [root@linux ~]# find /home -type f

808 # 這個 -type 的屬性也很有幫助喔!尤其是要找出那些怪異的檔案,

809 # 例如 socket 與 FIFO 檔案,可以用 find /var -type p 或 -type s 來找!

810

811 範例七:搜尋檔案當中含有 SGID/SUID/SBIT 的屬性

812 [root@linux ~]# find / -perm +7000

813 # 所謂的 7000 就是 ---s--s--t ,那麼只要含有 s 或 t 的就列出,

814 # 所以當然要使用 +7000 ,使用 -7000 表示要含有 ---s--s--t 的所有三個權限,

815 # 因此,就是 +7000 ~瞭乎?

816

817 範例八:將上個範例找到的檔案使用 ls -l 列出來~

818 [root@linux ~]# find / -perm +7000 -exec ls -l {} /;

819 # 注意到,那個 -exec 後面的 ls -l 就是額外的指令,

820 # 而那個 {} 代表的是『由 find 找到的內容』的意思~所以, -exec ls -l {}

821 # 就是將前面找到的那些檔案以 ls -l 列出長的資料!至於 /; 則是表示

822 # -exec 的指令到此為止的意思~意思是說,整個指令其實只有在

823 # -exec (裡面就是指令下達) /;

824 # 也就是說,-exec 最後一定要以 /; 結束才行!這樣瞭解了嗎?!

825

826 範例九:找出系統中,大於 1MB 的檔案

827 [root@linux ~]# find / -size +1000k

828 # 雖然在 man page 提到可以使用 M 與 G 分別代表 MB 與 GB,

829 # 不過,俺卻試不出來這個功能~所以,目前應該是僅支援到 c 與 k 吧!

830

831 --------------------------------------------------------

832

833 xargs ()

834 当使用find时,参数过长时可能会产生内存不足的问题。而用xargs则不会,因为它只读一部分。

835 man xargs可以看出:

836 xargs从标准输入中读取数据,并以空白和换行符分割每个参数(引号中的空白不作为分割符)。

837 然后执行指定的命令(并把分解后的参数附加到命令后面)。

如果没有指定具体的命令,默认使用/bin/echo命令。

838 如果没有特别指定,xargs会把`_'当作结束标志。

839 综上所述,xargs不适合用作文本处理,特别是重要的数据处理。

840 xargs处理标准输入,然后把处理过后的内存传给后续的命令作为参数。

841 使用xargs的主要理由是控制参数的个数和位置,避免命令行过长而出现错误。

842

843

844 --------------------------------------------------------

845 #这样的话出现了错误

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 #请使用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 --------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值