✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:Java案例分享专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:Linux系统中的文件查看和查询命令
文章目录
- 💖 文件查看命令
- 💫 cat命令
- 💫 tac命令
- 💫 more命令
- 💫 less命令
- 💫 head命令
- 💫 tail命令
- 💖 文件查询命令
- 💫 locate命令
- 💫 Whereis命令
- 💫 find命令
- 💫 find 的复杂应用
💖 文件查看命令
常用的查看命令有:cat、tac、more、less、head、tail、nl
命令 | 解释 |
---|---|
cat | 由第一行开始显示档案内容; |
tac | 从最后一行开始显示档案内容,tac是cat的倒写; |
more | 一页一页地显示档案内容; |
less | 与more类似,但比more更好,它可以往前翻页; |
head | 只看前几行; |
tail | 只看末尾几行; |
nl | 显示行号。 |
💫 cat命令
名称:cat
全称:concatenate
使用权限:所有使用者
使用方式:cat [-AbeEnstTuv] [–help] [–version] file Name
说明:将文件串连接后传到基本输出(输出到屏幕或加>file Name 重定向到另外的文件)。
参数 | 说明 |
---|---|
-n或–number | 由1开始对所有输出的行数编号。 |
-b或–number-nonblank | 和-n相似,但对空白行不编号。 |
-s或–squeeze-blank | 当遇到有连续两行以上的空白行,就代换为一行。 |
-v或–show-nonprinting | 显示具体格式。 |
💫 tac命令
名称:tac
使用权限:所有使用者
使用方式:tac fileName
说明:将文件从最后一行到第一行反向输出。
💫 more命令
名称:more
使用权限:所有使用者
使用方式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [filename…]
说明:类似cat,不过会以一页一页地显示,方便使用者逐页阅读,按空格键(Space)往下一页显示,按B键往回(back)一页显示,而且还有搜寻字串的功能(与vi相似)。使用中,按H键,可以查看说明文件
💫 less命令
名称:less
使用权限:所有使用者
使用方式:less [Option] filename
参数 | 说明 |
---|---|
-c | 从顶部(从上到下)刷新屏幕,并显示文件内容,而不是通过底部滚动完成刷新。 |
-f | 强制打开文件,二进制文件显示时,不提示警告。 |
-i | 搜索时忽略大小写,除非搜索串中包含大写字母。 |
-I | 搜索时忽略大小写,除非搜索串中包含小写字母。 |
-m | 显示读取文件的百分比。 |
-M | 显示读取文件的百分比、行号及总行数。 |
-N | 在每行前输出行号。 |
说明:less的作用与more十分相似,不同的是less允许使用者往回翻页,以浏览已经看过的部分,同时因为less并未在一开始就读入整个文件,因此在遇到大型文件的开启时,会比一般的文书编辑器(如vi)来得快速。
💫 head命令
名称:head
使用权限:所有使用者
使用方式:head [Option] filename
参数 | 说明 |
---|---|
-n | 后面接数字,代表显示几行。 |
说明:以行为单位进行数据读取。
💫 tail命令
名称:tail
使用权限:所有使用者
使用方式:tail [Option] filename
参数 | 说明 |
---|---|
-n | 后面接数字,代表显示几行。 |
说明:以行为单位读取文档最后n行的数据。
💖 文件查询命令
Linux下有locate、whereis以及find命令可以供选择查找文件。
💫 locate命令
名称:locate
使用权限:所有使用者。
使用方式:locate [-d] [–help] [–version] keyword
补充说明:locate指令用于查找符合条件的文档,它会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。
参数 | 说明 |
---|---|
-d或—database= | 配置locate指令使用的数据库。locate指令预设的数据库位于/var/lib/slocate目录里,文档名为slocate.db,可使用这个参数另行指定。 |
–help | 在线帮助。 |
–version | 显示版本信息。 |
-i | 忽略大小写。 |
-r | 后面接正则表达式。 |
说明1:在caowei目录下创建了6个空文件,并且其名字中都有whb字样,但是使用locate whb查找却没有找到刚刚建立的几个文件。
说明2:使用locate查找速度非常快,因为locate是在以建立的数据库/var/lib/slocate/里面查找资料的,根本没有去找文件本身,所以不用去硬盘当中存取文件,结果当然速度很快。但有个限制就是locate所依赖的数据库每天更新一次,所以当新建一些文件的时候是查不到的,要想查找到新建的文件需要更新这个数据库,可以使用updatedb命令更新数据库,不过只有root账户才可以手动更新数据库。
说明3:updatedb用来更新数据库。
说明4:当时用updatedb命令更新数据库时,会有一个长时间的等待过程,不是系统死机,这是在执行更新。如果想让其在后台执行,可以在执行的时候在前面加上&符号,让其在后台执行。
说明5:出现updatedb无法打开临时文件的问题是因为权限不够,所以切换到了root账户下。切换的时候加了“-”,意思是保持原来的环境变量。
说明6:当updatedb完毕后,再次使用locate whb去查询,发现仍然看不到,因为测试的东西都在/tmp目录下,updatedb默认更新是不包含/tmp/下的内容,所以即使更新了数据库还是看不到想要的数据。
💫 Whereis命令
名称:whereis
使用权限:所有使用者
使用方式:whereis [-bfmsu] [-B <目录>…] [-M <目录>…] [-S <目录>…] [文件…]
补充说明:whereis指令会在特定目录中查找符合条件的文件。这些文件的类型应属于原始代码、二进制文件,或是帮助文件。
参数 | 说明 |
---|---|
-b | 只查找二进制文件。 |
-B<目录> | 只在设置的目录下查找二进制文件。 |
-f | 不显示文件名前的路径名称。 |
-m | 只查找说明文件。 |
-M<目录> | 只在设置的目录下查找说明文件。 |
-s | 只查找原始代码文件。 |
-S<目录> | 只在设置的目录下查找原始代码文件。 |
-u | 查找不包含指定类型的文件。 |
💫 find命令
find命令相对于前面两个查询命令速度慢,但功能非常强大。
名称:find
使用权限:和要查找的文件相关
使用方式:find pathname -options [-print –exec –ok…]
参数 | 说明 |
---|---|
pathname | find命令所查找的目录路径: .表示当前目录,/表示系统根目录。 |
find命令将匹配的文件输出到标准输出。 | |
-exec | find命令对于匹配的文件执行该参数所给出的shell命令。相应命令的形式为‘command’{} ;注意{}和;之间的空格。 |
-ok | 和-exec的作用相同,只不过以一种更安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。 |
补充说明:find命令是这三个搜索命令中功能最强大的,如果用户有读取的权限,可以将Linux磁盘中的任何文件全部搜索并显示出来,但正式因为其功能如此强大也导致其搜索速度不如另外两个搜索命令。
参数 | 说明 |
---|---|
-name | 按照文件名查找文件。 |
-perm | 按照文件权限来查找文件。 |
-prune | 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。 |
-user | 按照文件所属用户来查找文件。 |
-group | 按照文件所属的组来查找文件。 |
-mtime | -n、+n按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime选项,它们都和-mtime选项基本一样。 |
-nogroup | 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。 |
-nouser | 查找无有效属组的文件,即该文件的属组在/etc/passwd中不存在。 |
-newer file | file为一个已经存在的文件名称,查找比file更新的文件名。 |
-type | 查找某一类型的文件,列举如下。 |
b – 块设备文件; | |
d – 目录; | |
c – 字符设备文件; | |
p – 管道文件; | |
l – 符号链接文件; | |
f – 普通文件。 | |
-size | [±]查找大小比size还要大(+)或者小(-)的文件,size的衡量标准说明如下: |
c代表byte; | |
k代表1M byte | |
-depth | 在查找文件时,首先查找当前目录中的文件,然后在其子目录中查找。 |
-fstype | 查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件包含了本系统中有关文件系统的信息。 |
-mount | 在查找文件时不跨越文件系统mount点。 |
-follow | 如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。 |
-cpio | 对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。 |
查找httpd.conf这个文件在系统的哪个目录下
说明:find为查找;“/”为在根目录下查找,但如果需要在其他的目录下查找则直接输入目录信息即可;-name后面接要查找的文件名字,这里需要注意的是挡在admin账户下查找httpd.conf的时候提示权限不够,切换账户至root后可得到结果。
💫 find 的复杂应用
find的特殊功能是能够执行额外的命令,find为查找命令;pathname为find所查找的范围;-option为find的参数,可以加上上面列举的所有参数;-exec表示额外命令的开始;command是额外命令;-parameter为command所带的参数;{}代表find与后面参数结合起来查找的结果;“\;”为额外命令的结束。
.代表目前目录;-type f代表普通文件;-exec执行的额外命令为ls -l
将当前目录下的所有目录查找出来并复制到/tmp目录下。
说明1:这个命令组合执行的结果不是将当前目录复制到/tmp,而是将当前目录下的所有内部文件全部复制到/tmp目录中。
说明2:cp {},代表复制的源为find所得到的结果,/tmp当前为目标所在了。
码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。