Linux笔记——cat、diff、grep、touch、file、find命令

文章目录

  • cat
  • diff
  • grep
  • touch
  • file
  • cp
  • find
  • find&locate

cat

将文件的内容打印到标准输出的命令

-A, --show-all 等于-vET
-b, --number-nonblank 对非空输出行编号
-e 等于-vE
-E, --show-ends 在每行结束处显示"$"
-n, --number 对输出的所有行编号
-s, --squeeze-blank 不输出多行空行
-t 与-vT 等价
-T, --show-tabs 将跳格字符显示为^I
-v, --show-nonprinting 识别特殊字符

diff

比较文件的差异的命令

diff命令在最简单的情况下,比较给定的两个文件的不同。如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入。diff命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。

例如:创建两个目录file2和file4,分别创建一个目录file3和一个文件mary,两个file3中再创建不同的内容,两个mary中也写入不同的内容

[root@localhost ~]# ll file2
总用量 0
drwxr-xr-x. 2 root root 6 7月  20 11:26 file3
-rw-r--r--. 1 root root 0 7月  20 11:27 mary
[root@localhost ~]# ll file4
总用量 4
drwxr-xr-x. 3 root root 17 7月  20 11:31 file3
-rw-r--r--. 1 root root 12 7月  20 11:30 mary
[root@localhost ~]# ls file2/file3
[root@localhost ~]# ls file4/file3
app
[root@localhost ~]# cat file2/mary
hahaha
[root@localhost ~]# cat file4/mary
hello world

然后在用diff命令对比file2和file4,可以发现: 对于两个子目录file3名称进行了对比,并没有对比内容;而对于两个文件mary还对比了内容。

[root@localhost ~]# diff file2 file4
file2/file3 和 file4/file3 有共同的子目录
diff file2/mary file4/mary
1c1
< hahaha
---
> hello world

一般-y -W两个参数一起使用

  • -y或–side-by-side:以并列的方式显示文件的异同之处。

  • -W或–width:在使用-y参数时,指定栏宽。

[root@localhost ~]# diff file1 file3 -y -W 30
mylinux all mylinux all
       | everyday
see you       <
[root@localhost ~]# diff file1 file3 -y -W 50
mylinux all  mylinux all
        | everyday
see you        <

一般centos新版本下载vim后会自带vimdiff命令

[root@localhost ~]# vimdiff file1 file3

在这里插入图片描述

grep

过滤文本的命令。Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来,具体参数参考help。
一般常用到的参数:

参数 作用
-n 输出的同时打印行号
-i 不区分大小写
-o 只显示匹配到的内容
-v 输出除匹配内容以外的内容

touch

一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来; 二是用来创建新的空文件。

  • 直接用touch file1,最近访问、最近更改、最近改动时间全部更新;
  • stat [文件名]:查看文件详细信息。
    可以注意到以下例子中最近访问、最近改动、最近更改全部更新
[root@localhost ~]# stat file1
  文件:"file1"
  大小:2523       块:8          IO 块:4096   普通文件
设备:fd00h/64768d Inode:817644      硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-07-20 13:24:54.458906191 +0800
最近更改:2020-07-20 13:23:51.061858413 +0800
最近改动:2020-07-20 13:23:51.061858413 +0800
创建时间:-
[root@localhost ~]# touch file1
[root@localhost ~]# stat file1
  文件:"file1"
  大小:2523       块:8          IO 块:4096   普通文件
设备:fd00h/64768d Inode:817644      硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-07-20 13:26:56.286971893 +0800
最近更改:2020-07-20 13:26:56.286971893 +0800
最近改动:2020-07-20 13:26:56.286971893 +0800
创建时间:-
参数 作用
-a 只修改文件的access(访问)时间
-c 不创建不存在的文件
-d 使用指定的日期时间,而非现在的时间
-r 按指定文件的时间创建文件
  • access
    表示最后一次访问(仅仅是访问,没有改动)文件的时间 —cat —vim
  • modify
    表示最后一次修改文件的时间 —vim “123”
  • change
    表示最后一次对文件属性改变的时间,包括权限,大小,属性等等 —vim —chmod +x file

file

file命令用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件
类型,而不是像Windows通过扩展名来确定文件类型的。

[root@localhost ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text

cp

cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
例:假如123不存在或者不是一个目录,都无法将多个文件或目录cp到123中。

[root@localhost ~]# cp file1 file3 123
cp: 目标"123" 不是目录
[root@localhost ~]# mkdir 123
[root@localhost ~]# cp file1 file3 123
[root@localhost ~]# cd 123
[root@localhost 123]# ls
file1  file3
参数 作用
-r 递归复制目录
-d 复制链接文件
-p 保留源文件或目录的属性(所有着、所属组、权限与时间(只能在root中执行)

find

在指定的路径下查找指定文件的命令

find [-path……] -options [-print -exec -ok]

[root@localhost ~]# find /etc/ -name passwd
/etc/passwd
/etc/pam.d/passwd
  • path
    要查找的目录路径。 ~ 表示$HOME目录 . 表示当前目录 / 表示根目录
  • print
    表示将结果输出到标准输出。
[root@localhost ~]# find /etc/ -name passwd -print
/etc/passwd
/etc/pam.d/passwd
[root@localhost ~]# find /etc/ -name passwd -print0
/etc/passwd/etc/pam.d/passwd[root@localhost ~]# 
  • exec
    对匹配的文件执行该参数所给出的shell命令。 形式为command {} ;,注意{}与;之间有空格
[root@localhost ~]# find . -name file3 -exec stat {} \; 
  文件:"./file3"
  大小:21         块:8          IO 块:4096   普通文件
设备:fd00h/64768d Inode:817643      硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-07-20 11:54:42.601694824 +0800
最近更改:2020-07-20 11:54:30.550645950 +0800
最近改动:2020-07-20 11:54:30.550645950 +0800
创建时间:-
  • ok
    与exec作用相同, 区别在于,在执行命令之前,都会给出提示,让用户确认是否执行

options常用的有下选项:

  • -name:按照名字查找
  • -perm:安装权限查找
  • -prune:不再当前指定的目录下查找
  • -user:文件属主来查找
  • -group:文件所属组来查找
  • -nogroup:查找无有效所属组的文件
  • -nouser:查找无有效属主的文件
  • -type:按照文件类型查找

find&locate

locate

第一步:安装locate

[root@localhost ~]# yum install mlocate-0.26-8.el7.x86_64

第二部:手动更新数据库

[root@localhost ~]# updatedb  #手动更新数据库

工作特性:
查找速度快;模糊查找;非实时查找。
依赖于事先构建好的索引库
注意:索引构建过程需要遍历整个根文件系统,极消耗资源;
参数用法:

  • -b:只匹配路径中的基名;
  • -c:统计出共有多少个符合条件的文件;
  • -r:正则查找

find与locate区别
find :查找真正的文件系统。
locate :locate自己的数据库。将文件系统定时的更新到自己的数据库中 。

你可能感兴趣的:(linux)