现在的位置: 首页 > 综合 > 正文

FreeBSD文件和目录查找

2013年11月26日 ⁄ 综合 ⁄ 共 1709字 ⁄ 字号 评论关闭

0. 前言
档案搜寻,对于一个新系统来说,可能没有很大的用途;
但是对于一个旧系统,档案及文件越来越多,这时就必须要用搜寻来找寻档案了。 

1.which
指令 : which ( locate a program file in the user's path ) 
语法 : which program 
用途 : 从使用者的执行路径,寻找执行文件。

2.whereis 指令 : whereis ( locate programs ) 
语法 : whereis [ -bms ] program 
用途 : 寻找原始程序数据夹 (source directory), 二进制程序 (binary). 使用手册 (manuals) 
参数 : -b 搜寻二进制程序 ; -m 搜寻使用者手册 ; -s 搜寻原始程序的数据夹

3.find
指令 : find ( walk a file hierarchy ) 
语法 : find 起始目录 -name 欲找的文件名 -print 
用途 : 在档案系统架构中搜寻。 

4.grep 指令 : grep ( print lines matching a pattern ) 
语法 : grep pattern file_name 
用途 : 搜寻档案内容中含有 pattern 的行。

5.locate
指令 : locate ( find filenames quickly ) 
语法 : locate program/file 
用途 : 从系统建立的数据库中搜寻档案及数据夹。
如有出错信息:
freebsd locate: database too small: /var/db/locate.database

则运行/usr/libexec/locate.updatedb 
(要用root身份)
  locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron 
daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab) 
locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。 
  不过第一次在执行update後再使用locate寻找档案常会失败,此时就要执行slocate 
ˉu该命令(也可执行updatedb指令,其效果相同)来更新slocate数据库,该命令会在/usr/sbin下产生slocate执行档,再由locate到此数据库寻找所要找的资料。 

几个有用的prompt参数名:
%B 代表高亮度
%n 代表用者名称
%m 主机名称
%/ 目前的目录

如我要管理好几台 FreeBSD 主机,那么以上几个参数就很重要..
举个实例来说,如我想把我的 prompt 改成这样,而且要高亮度显示:
使用者名称@主机名称[目录名称]>;
则 prompt 的设定应该是这样的..
set prompt = "%B%n@%m[%/]>;"

注意───左右都要有一个空白,否则会出错,导致无法登入,另外如果要统一所有使用者的 prompt 的话,除了更改 /home/使用者/.cshrc 外,最好也在 /etc/csh.cshrc 中设定这一行,另外如要新增使用者也用这种提示,则请在 /usr/share/skel/dot.cshrc
中也加上(或改成)这一行。然后执行:

#sed -i.bak -E s/set\ prompt/#set\ prompt/g /root/.cshrc
要不退出登录立即生效,执行:
#source ~/.cshrc

让FreeBSD终端也显示彩色:Csh在.cshrc文件中添加 alias ls ls -G

如果你不知道命令具体的拼写,只记得其中几个字母,和大概位于什么位置。举个例子,有一个命令中有一个s,后跟两个字母,后面又有一个s,大概位于/sbin下面,可以这样查找:cd /sbin;ls -l |grep '...s..s'
它会找出诸如msdos这样的命令。

【上篇】
【下篇】

抱歉!评论已关闭.