快速上手Linux核心命令(三):文件和目录操作命令 您所在的位置:网站首页 linux清空文件的命令 快速上手Linux核心命令(三):文件和目录操作命令

快速上手Linux核心命令(三):文件和目录操作命令

#快速上手Linux核心命令(三):文件和目录操作命令| 来源: 网络整理| 查看: 265

@

目录前言cd 切换目录pwd 显示当前路径ls 显示目录下内容及相关属性信息mkdir 创建目录tree 以树形结构显示目录下的内容touch 创建空白文件或改变文件的时间戳属性cp 复制文件或目录mv 移动或重命名文件rm 删除文件或目录chown 改变文件或目录的用户用户组chmod 改变文件或目录的权限chgrp 更改文件用户组ln 硬链接与软连接redlink 查看符号连接文件的内容find 查找目录下的文件xargs 将标准输入转换成命令行参数rename 重命名文件file 显示文件类型md5sum 计算和校验文件的MD5值

前言

这期呢主要说一说Linux中文件与目录相关的命令,一共包含19个命令

cd 切换目录

1、简介

cd 是“change directory” 中每个单词的首字母,其功能是从当前目录切换到目标路径。

2、语法格式

cd [参数选项] [目标路径]

3、参数说明

这里呢只列出常用参数

参数选项 参数说明 - 从当前目录切换到用户上一次所在目录 ~ 从当前目录切换到家目录,即假设当前登录的用户是xiezhr,执行命令后路径将切换到/home/xiezhr .. 从当前目录切换到上一级目录

在使用cd命令时,配合“tab”键的自动补全功能,可以大大提高效率。

既然说到了切换路径,我们这里就说一说什么时相对路径?什么时绝对路径?

简单来说,从“/”根目录开始的路径为绝对路径,不从“/”开始的为相对路径。 /home/xiezhr、/home/user/local 是绝对路径,而 date/,webapp/log/ 为相对路径

4、实践操作

① 进入系统 /usr/local 目录 。这里我们会用到pwd命令来显示当前所在路径,这个命令我们会在下一个命令中讲,这里知道即可

[root@xiezhr ~]# cd /usr/local/ [root@xiezhr local]# pwd /usr/local

② 切换到上级目录

[root@xiezhr local]# pwd /usr/local [root@xiezhr local]# cd .. [root@xiezhr usr]# pwd /usr

③ 切换到父目录的父目录

[root@xiezhr local]# pwd /usr/local [root@xiezhr local]# cd ../../ [root@xiezhr /]# pwd /

④ 返回当前用户上一次所在的目录

[root@xiezhr ~]# cd /usr/local/ [root@xiezhr local]# cd /root/ [root@xiezhr ~]# pwd /root [root@xiezhr ~]# cd - /usr/local

⑤ 返回家目录【当前用户为root用户,家目录为/root】

[root@xiezhr local]# cd /usr/local/ [root@xiezhr local]# pwd /usr/local [root@xiezhr local]# cd ~ [root@xiezhr ~]# pwd /root pwd 显示当前路径

1、简介

pwd 是“print working directory”每个单词的首字母,功能是打印/显示当前所在目录姐绝对路径。在实际工作中,我们经常会在各个目录之间切换,切换的多了,很容易忘记走到哪了,这时就需要有一幅地图指引我们,使我们不至于迷路。由此可见这个命令的重要性

2、语法格式

pwd [参数选项]

3、参数说明

一般不需要加参数

4、实践操作

① 进入到/usr/local后显示路径

[root@xiezhr ~]# cd /usr/local/ [root@xiezhr local]# pwd /usr/local ls 显示目录下内容及相关属性信息

1、简介

ls 是“list” 英文单词的缩写,功能是列出当前目录下的内容和内容属性信息。类似于DOS系统下的dir命令

2、语法格式

ls [参数选项] [文件或目录]

由于用的比较少,这里就不作说明了,大概知道就好了

3、参数说明

参数 参数说明 -l 使用长格式列出文件即目录信息 相当于直接使用ll -a 显示目录下的所有文件,包括.开头的隐藏文件 -t 根据最后修改时间(time)排序,默认是按文件名排序的 -r 以相反次序排序 -F 在条目后加上文件类型的只是符号(*、/、=、@、|中的一个) -d 当遇到目录时,列出目录本身而非目录内文件 -h 以人类可读信息显示文件或目录大小,如1KB,23M,3GB等

4、实践操作

① 直接使用ls命令,不带参数,显示当前目录下的文件和路径

[root@xiezhr test]# ls a.txt b.txt c.txt dir1 dir2 dir3

②加上【-a】参数,显示所有文件,包含隐藏文件("."开头的为隐藏文件),如下所示,ls没有显示隐藏文件,ls -a 显示了隐藏文件.d.txt

[root@xiezhr test]# ls a.txt b.txt c.txt dir1 dir2 dir3 [root@xiezhr test]# ls -a . .. a.txt b.txt c.txt dir1 dir2 dir3 .d.txt

③ 加上【-l】参数,显示文件目录的详细信息 这个参数时我们最常用的,这个命令会列出文件或目录类型、权限、所属组、创建修改时间(最后一次修改时间,如果时新创建的文件则为创建时间),需要熟练掌握

[root@xiezhr test]# ls -l total 12 -rw-r--r-- 1 root root 0 Mar 10 23:39 a.txt -rw-r--r-- 1 root root 0 Mar 10 23:39 b.txt -rw-r--r-- 1 root root 0 Mar 10 23:39 c.txt drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir1 drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir2 drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir3

小技巧:上面的命令我们会发现,时间没显示年份,那么怎么才能显示出我们肉眼既可以看懂的时间呢?

[root@xiezhr test]# ls -l --time-style=long-iso total 16 -rw-r--r-- 1 root root 22 2022-03-10 23:44 a.txt -rw-r--r-- 1 root root 0 2022-03-10 23:39 b.txt -rw-r--r-- 1 root root 0 2022-03-10 23:39 c.txt drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir1 drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir2 drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir3

哇哦,上面命令这么长,使用起来真的不方便,我们给它起个别名吧,这样叫起来也比较方便

[root@xiezhr test]# alias lst='ls -l --time-style=long-iso' [root@xiezhr test]# alias |grep lst alias lst='ls -l --time-style=long-iso' [root@xiezhr test]# lst total 16 -rw-r--r-- 1 root root 22 2022-03-10 23:44 a.txt -rw-r--r-- 1 root root 0 2022-03-10 23:39 b.txt -rw-r--r-- 1 root root 0 2022-03-10 23:39 c.txt drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir1 drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir2 drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir3

④ 加上【-F】参数,F是大写,在文件尾部加上文件类型符号(、/、=、@、|)中一个 **""表示普通可执行文件、"/"表示目录、"="表示套接字、"@"表示符号链接、"|"表示FIFOs** 具体文件类型可以参照【文件类型】这篇文章

[root@xiezhr test]# ls -F a.txt b.txt c.txt dir1/ dir2/ dir3/ # 三个目录尾部加上了/

小技巧:通过【-F】参数,可以过滤出所有目录和普通文件

[root@xiezhr test]# ls -F # 当前路径下一共包含三个文件和三个目录 a.txt b.txt c.txt dir1/ dir2/ dir3/ [root@xiezhr test]# ls -F|grep / # 过滤出所有路径 dir1/ dir2/ dir3/ [root@xiezhr test]# ls -F|grep -v / #过滤出普通文件 a.txt b.txt c.txt

⑤ 假设一个目录下面有很多很多个文件,我们忘记了最近改过的文件的名字(年纪大了,记性越来越不好),这时候要找出它,可以用如下命令

[root@xiezhr test]# touch xiezhr.txt [root@xiezhr test]# ls -lt total 16 -rw-r--r-- 1 root root 0 Mar 11 23:02 xiezhr.txt -rw-r--r-- 1 root root 0 Mar 11 22:52 tt.txt -rw-r--r-- 1 root root 22 Mar 10 23:44 a.txt -rw-r--r-- 1 root root 0 Mar 10 23:39 c.txt -rw-r--r-- 1 root root 0 Mar 10 23:39 b.txt drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir3 drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir2 drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir1

我们最近创建或修改的文件就排在最前面了,有没有很方便哦 当然了,可以让你最显目,也可以让你排到最后去。ls -lrt 即可按照时间倒序排。-r 是倒序的意思

mkdir 创建目录

1、简介

mkdir 是"make directoy" 英文单词的缩写,功能是创建目录。如果目录存在则提示已存在,不会继续创建

2、语法格式

mkdir [参数选项] [目录]

3、参数说明

参数 参数说明 -p 递归创建目录。即可以父目录儿子目录孙子目录重孙目录....等一起创建 -m 创建目录的同时授予权限

4、实践操作 ① mkdir 不带任何参数

[root@xiezhr test]# ls a.txt b.txt c.txt dir1 dir2 dir3 tt.txt xiezhr.txt [root@xiezhr test]# mkdir xiezhr [root@xiezhr test]# ls a.txt b.txt c.txt dir1 dir2 dir3 tt.txt xiezhr xiezhr.txt

② 同时创建多个目录

[root@xiezhr test]# ls a.txt b.txt c.txt dir1 dir2 dir3 tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mkdir dir4 dir5 dir6 [root@xiezhr test]# ls a.txt b.txt c.txt dir1 dir2 dir3 dir4 dir5 dir6 tt.txt xiezhr xiezhr.txt

③ 使用【-p】参数递归创建目录

[root@xiezhr test]# ls a.txt b.txt c.txt dir1 dir2 dir3 tt.txt xiezhr.txt [root@xiezhr test]# mkdir -p xiezhr/test [root@xiezhr test]# tree . ├── a.txt ├── b.txt ├── c.txt ├── dir1 ├── dir2 ├── dir3 ├── tt.txt ├── xiezhr │ └── test └── xiezhr.txt 5 directories, 5 files

④ 使用【-m】参数,创建目录同时授权

[root@xiezhr test]# mkdir -m 755 dir tree 以树形结构显示目录下的内容

1、简介

tree 一看到这个命令,我们就知道是树的意思,当然了这里的树并非种的树,而是以树形结构显示目录下内容。

2、语法格式

tree [参数选项] [目录]

3、参数说明

参数 参数说明 -d 只显示目录 -L level 遍历目录的最大层数,level为大于0的整数

4、实践操作

注意:个别Linux版本可能没有默认安装tree,大家也不用慌,我们按照如下步骤安装即可

下载安装包 wget http://mama.indstate.edu/users/ice/tree/src/tree-1.7.0.tgz 解压安装包 tar -zxvf tree-1.7.0.tgz 切换到解压后的目录 cd tree-1.7.0 编译安装 make install 大功告成,输入tree 命令回车

① 不带参数的tree

[root@xiezhr test]# tree . ├── a.txt ├── b.txt ├── c.txt ├── dir ├── dir1 ├── dir2 ├── dir3 ├── tt.txt ├── xiezhr │ └── test └── xiezhr.txt 6 directories, 5 files

② 加上【-d】参数,只显示目录

[root@xiezhr test]# tree -d . ├── dir ├── dir1 ├── dir2 ├── dir3 └── xiezhr └── test 6 directories

③ 加上【-L leave】 列出目录下第leave层结构

[root@xiezhr test]# tree -L 1 . ├── a.txt ├── b.txt ├── c.txt ├── dir ├── dir1 ├── dir2 ├── dir3 ├── tt.txt ├── xiezhr └── xiezhr.txt 5 directories, 5 files

④ 加上【-f】显示完整的路径名称 加上【-i】则不显示树枝部分

[root@xiezhr test]# tree -f . ├── ./a.txt ├── ./b.txt ├── ./c.txt ├── ./dir ├── ./dir1 ├── ./dir2 ├── ./dir3 ├── ./tt.txt ├── ./xiezhr │ └── ./xiezhr/test └── ./xiezhr.txt 6 directories, 5 files [root@xiezhr test]# tree -i . a.txt b.txt c.txt dir dir1 dir2 dir3 tt.txt xiezhr test xiezhr.txt 6 directories, 5 files [root@xiezhr test]# tree -fi . ./a.txt ./b.txt ./c.txt ./dir ./dir1 ./dir2 ./dir3 ./tt.txt ./xiezhr ./xiezhr/test ./xiezhr.txt 6 directories, 5 files

⑤ 加上【-F】参数区分目录和文件

[root@xiezhr test]# tree -F . ├── a.txt ├── b.txt ├── c.txt ├── dir/ ├── dir1/ ├── dir2/ ├── dir3/ ├── tt.txt ├── xiezhr/ │ └── test/ └── xiezhr.txt 6 directories, 5 files

尾部带/的为目录

touch 创建空白文件或改变文件的时间戳属性

1、简介

touch 是触摸的意思,摸一下文件可以创建空白文件或改变文件时间属性 touch 不能创建目录但是能改变目录的时间戳属性

2、语法格式

touch [参数选项] [文件]

3、参数说明

参数 参数说明 -a 只更改文件最后访问时间 -m 只更改文件最后修改时间 -d string 使用字符串string代表的时间模板设置指定文件的时间属性

4、实践操作

① 不带任何参数

[root@xiezhr test]# touch xiezhr.txt [root@xiezhr test]# ls a.txt b.txt c.txt dir dir1 dir2 dir3 tt.txt xiezhr xiezhr.txt

②更改文件时间戳属性(文件的时间戳属性:访问时间、修改时间、状态改变时间)

stat 查看文件时间戳属性 -m 更改文件修改时间 -a 更改文件的访问时间 [root@xiezhr test]# stat xiezhr.txt File: ‘xiezhr.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 2661 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2022-03-12 21:04:32.681919249 +0800 Modify: 2022-03-12 21:04:32.681919249 +0800 Change: 2022-03-12 21:04:32.681919249 +0800 Birth: - [root@xiezhr test]# touch -m xiezhr.txt [root@xiezhr test]# stat xiezhr.txt File: ‘xiezhr.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 2661 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2022-03-12 21:04:32.681919249 +0800 Modify: 2022-03-12 21:08:22.344330251 +0800 Change: 2022-03-12 21:08:22.344330251 +0800 Birth: - [root@xiezhr test]# touch -a xiezhr.txt [root@xiezhr test]# stat xiezhr.txt File: ‘xiezhr.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 2661 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2022-03-12 21:08:42.528893719 +0800 Modify: 2022-03-12 21:08:22.344330251 +0800 Change: 2022-03-12 21:08:42.528893719 +0800 Birth: - cp 复制文件或目录

1、简介

cp 是copy 英文单词的缩写,功能是复制文件或目录

2、语法格式

cp [参数选项] [源文件] [目标文件]

3、参数说明

参数 参数说明 -p 复制时保持源文件的权限、时间属性 -d 如果复制的文件时符号链接,那么仅赋值符号链接本身,而且保留符号链接所指向的目标文件或目录 -r 递归复制目录,即复制目录下所有层级的子目录及文件 -a 等同于-p、-d、-r三个命令总和 -i 覆盖已有文件提示用户确认

4、实践操作

① 将文件a.txt 复制为 aaa.txt

[root@xiezhr test]# cp a.txt aaa.txt [root@xiezhr test]# ls aaa.txt a.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt

②复制目录,将dir 目录复制为dir_bak

[root@xiezhr test]# ls aaa.txt a.txt b.txt c.txt dir dir1 dir2 dir3 tt.txt xiezhr xiezhr.txt [root@xiezhr test]# cp -r dir dir_bak [root@xiezhr test]# ls aaa.txt a.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt mv 移动或重命名文件

1、简介

mv 是 move 的缩写,功能是移动重命名文件

2、语法格式

mv [参数选项] [源文件] [目标文件]

3、参数说明

参数 参数说明 -f 若目标文件已经存在,则不会询问直接覆盖 -i 若目标文件已存在,则会询问是否覆盖 -n 不覆盖已经存在的文件 -u 在源文件比目标文件新,或目标文件不存在时才进行移动

4、实践操作

① 给文件改名(如果a1.txt 不存在,则将aaa.txt 重命名为a1.txt)

[root@xiezhr test]# ls aaa.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv aaa.txt a1.txt [root@xiezhr test]# ls a1.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt

② 给文件重命名(如果a2.txt存在,则将a1.txt 覆盖为a2.txt)

[root@xiezhr test]# ls a1.txt a2.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv a1.txt a2.txt mv: overwrite ‘a2.txt’? y [root@xiezhr test]# ls a2.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt

③ 移动单个文件或多个文件

[root@xiezhr test]# ls a2.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv a2.txt dir/ [root@xiezhr test]# ls b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv b.txt c.txt dir/ [root@xiezhr test]# ls dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt

④移动目录 如果目录存在则将文件移动到目录中,如果不存在则将目录改名

[root@xiezhr test]# ls a2.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv a2.txt dir/ [root@xiezhr test]# ls b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv b.txt c.txt dir/ [root@xiezhr test]# ls dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv dir1 dir [root@xiezhr test]# ls dir dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# mv dir2 dir5 [root@xiezhr test]# ls dir dir3 dir5 dir_bak tt.txt xiezhr xiezhr.txt rm 删除文件或目录

1、简介

rm 时rmove 英文单词的缩写,功能时删除一个或多个文件、目录。rm是Linux中最危险的命令。如果删错了那只有跑路了~ 慎重慎重慎重😂

2、语法格式

rm [参数选项] [文件或目录]

3、参数说明

参数 参数说明 -f 强制删除,忽率不存在的文件,不提示确认 -r 递归删除目录及其内容

4、实践操作

① 不带参数的删除,删除需要确认

[root@xiezhr test]# ls a.txt b.txt c.txt dir dir3 dir5 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# rm a.txt rm: remove regular empty file ‘a.txt’? y [root@xiezhr test]# ls b.txt c.txt dir dir3 dir5 dir_bak tt.txt xiezhr xiezhr.txt

②强制删除文件,不需要确认

[root@xiezhr test]# ls b.txt c.txt dir dir3 dir5 dir_bak tt.txt xiezhr xiezhr.txt [root@xiezhr test]# rm -f b.txt [root@xiezhr test]# ls c.txt dir dir3 dir5 dir_bak tt.txt xiezhr xiezhr.txt

③ 递归删除目录文件

[root@xiezhr test]# tree dir1/ dir1/ └── a └── b └── t.txt 2 directories, 1 file [root@xiezhr test]# rm -rf dir1/ [root@xiezhr test]# ls c.txt dir dir3 dir5 dir_bak tt.txt xiezhr xiezhr.txt

注意:数据无价,慎重、慎重、慎重

尽量用mv代替rm ,先将文件移动到其他目录/tmp,类似于windows的垃圾回收站 删除前必须备份,即使只是删除一个很不起眼的文件 如果非要用到“rm -rf”,一定要确认好路径,别来个rm -rf/ 那就真的玩完了,跑路都是小事,如果造成损失可能要负法律责任。 chown 改变文件或目录的用户用户组

1、简介

chown 是change owner 英文的缩写,用于改变文件或目录的所属用户和用户组

2、语法格式

chown [参数选项] [用户:用户组] [文件或目录] chown 用户 文件或目录 # 仅仅授权用户 chown :组 文件或目录 # 仅仅授权组 chown 用户:组 文件或目录 # 不仅授权用户,还授权组

3、参数说明

参数 参数说明 -R 递归更改目录的用户和用户组

4、实践操作

① 更改文件的用户和组

[root@xiezhr test]# ll c.txt -rw-r--r-- 1 root root 0 Mar 14 22:37 c.txt [root@xiezhr test]# chown xiezhr:xiezhr c.txt [root@xiezhr test]# ll c.txt -rw-r--r-- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt

② 递归更改目录即目录下所有目录及文件的用户和用户组属性

[root@xiezhr test]# ll -d dir drwxr-xr-x 3 root root 4096 Mar 13 16:08 dir [root@xiezhr test]# chown -R xiezhr.xiezhr dir/ [root@xiezhr test]# ll -d dir drwxr-xr-x 3 xiezhr xiezhr 4096 Mar 13 16:08 dir chmod 改变文件或目录的权限

1、简介

chmod 是change mode 英文单词的缩写,用户改变文件或目录的权限。该命令只有文件的属主和root用户可以使用

2、语法格式

chmod [参数选项] [模式选项] [文件或目录]

我们输入如下命令后,会显示文件或目录的详细信息。那么开头的一堆东西代表什么呢?

[root@xiezhr test]# ll total 20 -rw-r--r-- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt drwxr-xr-x 3 xiezhr xiezhr 4096 Mar 13 16:08 dir drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir3

如上图所示,

Linux权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)

第一位代表文件类型,-表示普通文件 d 表示目录

r是read的缩写,代表可读权限 对应4

w是write的缩写,代表可写权限 对应2

x是execute的缩写,代表可执行权限 对应1

-没有任何权限 对应0

a 是all 的缩写,代表所有等于u、g、o的综合

u 是user的缩写,代表文件拥有者

g 是group的缩写,代表用户组

o 是other的缩写,代表其他用户

3、参数说明

参数 参数说明 -R 递归处理指定目录及其子目录下的所有文件

4、实践操作 ① 设置所有权限为空

[root@xiezhr test]# ll c.txt -rw-r--r-- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt [root@xiezhr test]# chmod a= c.txt [root@xiezhr test]# ll c.txt ---------- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt

② 设置文件拥有者具有文件可执行属性

[root@xiezhr test]# ll c.txt ---------- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt [root@xiezhr test]# chmod u+x c.txt [root@xiezhr test]# ll c.txt ---x------ 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt

②设置文件组具有文件可写权限

[root@xiezhr test]# ll c.txt ---x------ 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt [root@xiezhr test]# chmod g+w c.txt [root@xiezhr test]# ll c.txt ---x-w---- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt

③ 设置其他用户具有文件可读权限

[root@xiezhr test]# ll c.txt ---x-w---- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt [root@xiezhr test]# chmod o+r c.txt [root@xiezhr test]# ll c.txt ---x-w-r-- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt

④ 多个权限一起

[root@xiezhr test]# ll c.txt ---x-w-r-- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt [root@xiezhr test]# chmod ugo+x c.txt [root@xiezhr test]# ll c.txt ---x-wxr-x 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt

⑤ 撤销其他用户可执行权限

[root@xiezhr test]# ll c.txt ---x-wxr-x 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt [root@xiezhr test]# chmod o-x c.txt [root@xiezhr test]# ll c.txt ---x-wxr-- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt

⑥ 通过数字设置文件拥有者可读可写可执行、用户组可读可执行、其他用户可读可执行

[root@xiezhr test]# ll c.txt ---x-wxr-- 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt [root@xiezhr test]# chmod 755 c.txt [root@xiezhr test]# ll c.txt -rwxr-xr-x 1 xiezhr xiezhr 0 Mar 14 22:37 c.txt

⑦使用【-R】参数递归授予dir目录下所有文件权限

[root@xiezhr test]# ll dir total 8 -rw-r--r-- 1 xiezhr xiezhr 90 Mar 13 15:24 a2.txt -rw-r--r-- 1 xiezhr xiezhr 0 Mar 10 23:39 b.txt -rw-r--r-- 1 xiezhr xiezhr 0 Mar 10 23:39 c.txt drwxr-xr-x 2 xiezhr xiezhr 4096 Mar 10 23:38 dir1 [root@xiezhr test]# chmod -R 755 dir/ [root@xiezhr test]# ll dir total 8 -rwxr-xr-x 1 xiezhr xiezhr 90 Mar 13 15:24 a2.txt -rwxr-xr-x 1 xiezhr xiezhr 0 Mar 10 23:39 b.txt -rwxr-xr-x 1 xiezhr xiezhr 0 Mar 10 23:39 c.txt drwxr-xr-x 2 xiezhr xiezhr 4096 Mar 10 23:38 dir1 chgrp 更改文件用户组

1、简介

chgrp 是change group 的缩写,仅仅用于改变文件的用户组。chgrp 允许普通用户改变文件所属的组,只要该用户是该组的一员。一般我们都使用chown 命令

2、语法格式

chgrp [参数选项] [用户组] [文件或目录]

3、参数说明

参数 参数说明 -R 递归更改文件的用户组

4、实践操作

①修改文件组属性

[root@xiezhr test]# ll a.txt -rw-r--r-- 1 root root 0 Mar 15 21:35 a.txt [root@xiezhr test]# chgrp xiezhr a.txt [root@xiezhr test]# ll a.txt -rw-r--r-- 1 root xiezhr 0 Mar 15 21:35 a.txt

② 递归改变文件用户组属性

[root@xiezhr test]# ll dir3/ total 0 -rw-r--r-- 1 root root 0 Mar 15 21:37 a.txt -rw-r--r-- 1 root root 0 Mar 15 21:37 b.txt [root@xiezhr test]# chgrp -R xiezhr dir3/ [root@xiezhr test]# ll dir3/ total 0 -rw-r--r-- 1 root xiezhr 0 Mar 15 21:37 a.txt -rw-r--r-- 1 root xiezhr 0 Mar 15 21:37 b.txt ln 硬链接与软连接

1、简介

ln 是link英文单词缩写,功能是创建文件间的链接(链接分为软链接和硬链接)

当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

那么什么是硬链接?什么又是软链接呢?

【软链接】

1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式 2.软链接可以 跨文件系统 ,硬链接不可以 3.软链接可以对一个不存在的文件名进行链接 4.软链接可以对目录进行链接

【硬链接】

1.硬链接,以文件副本的形式存在。但不占用实际空间。 2.不允许给目录创建硬链接 3.硬链接只有在同一个文件系统中才能创建

2、语法格式

3、参数说明

参数 参数说明 无参数 创建硬链接 -s 创建硬链接

4、实践操作

①为a.txt 创建软连接linka。如果a.txt丢失,linka失效

[root@xiezhr dir]# ll total 4 -rw-r--r-- 1 root root 17 Mar 15 22:25 a.txt [root@xiezhr dir]# ln -s a.txt linka [root@xiezhr dir]# ll total 4 -rw-r--r-- 1 root root 17 Mar 15 22:25 a.txt lrwxrwxrwx 1 root root 5 Mar 15 22:28 linka -> a.txt

② 给文件a.txt创建硬链接,lna,a.txt与lna的各项属性相同

[root@xiezhr dir]# ll total 4 -rw-r--r-- 1 root root 17 Mar 15 22:25 a.txt lrwxrwxrwx 1 root root 5 Mar 15 22:28 linka -> a.txt [root@xiezhr dir]# ln a.txt lna [root@xiezhr dir]# ll total 8 -rw-r--r-- 2 root root 17 Mar 15 22:25 a.txt lrwxrwxrwx 1 root root 5 Mar 15 22:28 linka -> a.txt -rw-r--r-- 2 root root 17 Mar 15 22:25 lna

总结:

【删除软连接文件,对源文件及硬链接文件无影响】删除软连接linka,对a.txt和lna无影响 【删除硬链接文件,对源文件及软链接文件无影响】删除硬链接lna,对a.txt和linka无影响 【删除源文件,对硬链接文件无影响,但会导致软链接失效】 删除a.txt,对lna无影响,linka链接失效 【只有同事删除源文件、硬链接文件才会真正删除整个文件】删除lna、a.txt 整个文件才会被删除 redlink 查看符号连接文件的内容

1、简介

我们使用cat/more 查看软链接文件时,只能查看源文件内容,不能查看软链接的时哪个文件。这时候readlink就派上用场了

2、语法格式

readlink [参数选项] [文件]

3、参数说明

一般不加参数

4、实践操作

① 查看软链接linka

[root@xiezhr dir]# cat linka ffdfdfadf fdfdf [root@xiezhr dir]# readlink linka a.txt find 查找目录下的文件

1、简介

find 根据根据意思,你可能就知道其功能了。find用户查找目录下的文件,同时也可以调用其他命令执行相应操作

2、语法格式

find [路径] [操作语句] [执行的动作]

3、参数说明

参数 参数说明 pathname 命令所查找的路径,常用的.表示当前路径,/表示系统根目录 -maxdepth levels 查找的最大目录级数,leves 为自然数 -name 按照文件名查找文件,支持*、?、[] 通配符 -type 查找某一类型的文件① b[块设备文件] ② c[字符设备文件] ③ d[目录] ④ p[管道文件] ⑤ l[符号链接文件] ⑥ f[普通文件] ⑦s[stocket文件] -exec 对匹配的文件执行该参数所给出的shell命令 ! 取反 -a 取交集,and -o 取并集,or

4、实践操作

① 【-name】根据文件名检索

区分大小写,需要忽略文件名中的大小写,可以使用 -iname参数 可配合通配符"*"、"?" 使用 "?" 可以表示任意一个单一的符号 "*" 可以表示任意数量(包括 0)的未知符号 # 查找 /home/test 目录下所有文件名以 .txt 结尾的文件 [root@xiezhr test]# find /home/test/ -name '*.txt' /home/test/.d.txt /home/test/dir/a.txt /home/test/dir3/b.txt /home/test/dir3/a.txt /home/test/a.txt /home/test/tt.txt /home/test/c.txt /home/test/xiezhr.txt # 查找 /home/test 目录下所有文件名刚好为 1 个字符的文件 [root@xiezhr test]# find /home/test/ -name '?.txt' /home/test/dir/a.txt /home/test/dir3/b.txt /home/test/dir3/a.txt /home/test/a.txt /home/test/c.txt

② 【-type】 根据文件类型检索

# 查找 /home/test 目录下所有java普通文件 下面命令中f 代表普通文件。上面参数中已说明 [root@xiezhr test]# find /home/test/ -type f -name '*.java' /home/test/user.java /home/test/money.java /home/test/test.java /home/test/xiezhr.java

③ 【-atime -mtime】查找指定时间内修改过的文件

# 查找当前目录,一天内访问过的文件 .表示当前路径,-1表示一天内 [root@xiezhr test]# find . -atime -1 ./user.java ./dir/linka ./dir/lna ./dir/a.txt ./money.java ./test.java ./xiezhr.java # 在/home/test 目录下,查找2天内修改过的文件 [root@xiezhr test]# find /home/test/ -mtime -2 /home/test/ /home/test/user.java /home/test/dir /home/test/dir/linka /home/test/dir/lna

参照上图所示

④ 【!】 进行反向查找

# 查找当前目录下所有目录 [root@xiezhr test]# find -type d . ./dir5 ./xiezhr ./xiezhr/test ./dir ./dir3 ./dir_bak # 查找当前目录下非目录的文件 [root@xiezhr test]# find ! -type d ./user.java ./.d.txt ./dir/linka ./dir/lna ./dir/a.txt ./money.java ./dir3/b.txt ./dir3/a.txt ./test.java

⑤【-size】 根据文件大小查找

如下命令中

"+" 表示大于 "-" 表示小于 "c" 表示字节 "k" 表示kb "M" 表示Mb "G" 表示Gb [root@xiezhr test]# find -size +200c . ./dir5 ./xiezhr ./xiezhr/test ./dir ./dir3 ./dir_bak

⑥ 【-perm】 根据文件权限查找

# 检索 /home/test 目录下权限为 rw-r--r-- 的文件 [root@xiezhr test]# find /home/test/ -perm u=rw-,g=r--,o=r-- /home/test/user.java /home/test/.d.txt /home/test/dir/lna /home/test/dir/a.txt /home/test/money.java

上面列子可以写成如下

[root@xiezhr test]# find /home/test/ -perm 644 /home/test/user.java /home/test/.d.txt /home/test/dir/lna /home/test/dir/a.txt /home/test/money.java

⑦ 查找当前目录下所有普通问及那,并用ls -l 命令将其列出来

[root@xiezhr test]# find -type f -exec ls {} \; ./user.java ./.d.txt ./dir/lna ./dir/a.txt ./money.java

上述列子中

-exec 后面的时操作命令,可以是ls、rm、delete 等命令 命令最后以;结尾,考虑到到各个系统;可能有不同含义,所以在前面加上\进行转义 {} 表示前面find 命令查到的结果,{} 前后必须要有空格

⑧ 在目录中查找n天以前的文件并删除它,实际工作中我们会经常用到。

我们在服务器上部署的应用程序一般都会输出日志文件,时间一长可能日志文件会成百上千,一下就把你的磁盘空间给撑满了。

这时候下面命令就显得很重要了。 一般情况下,这些命令我们我们会配置到Linux任务调度中自动执行

[root@xiezhr test]# find . -type f -name "xiezhr*.log" -mtime +7 -exec rm -f {} \; [root@xiezhr test]#

或者

# | 表示管道符号 xargs是一个向其他命令传递参数的过滤器。后面都会说到 # 下面命令表示 find 查找到的普通文件 传递给rm -f 执行 [root@xiezhr test]# find . -type f -name "xiezhr*.log" -mtime +7 |xargs rm -f [root@xiezhr test]#

或者

[root@xiezhr test]# find . -type f -name "xiezhr*.log" -mtime +7 -delete [root@xiezhr test]#

⑨ 将查找到的文件移动到另一个目录下

# 利用xargs -i 命令将find 查找当前目录下的所有java文件作为参数传递给mv命令 [root@xiezhr test]# find -type f -name "*.java" |xargs -i mv {} dir3/ [root@xiezhr test]# ls dir3 a.txt b.txt money.java test.java user.java xiezhr.java

⑩ 我们想将/home/test 目录下多个的高清电影发给好兄弟,这时就需要筛选出当前目录下所有电影并进行压缩

[root@xiezhr test]# ls a.txt c.txt dir dir3 dir5 dir_bak tt.txt xiezhr xiezhr.txt 化学资料.mp4 数学资料.mp4 物理.mp4 [root@xiezhr test]# find . -name "*.mp4" -exec tar -czvf movie.tar.gz {} \; ./数学资料.mp4 ./物理.mp4 ./化学资料.mp4 [root@xiezhr test]# ls a.txt c.txt dir dir3 dir5 dir_bak movie.tar.gz tt.txt xiezhr xiezhr.txt 化学资料.mp4 数学资料.mp4 物理.mp4

movie.tar.gz 就是最后压缩后的文件

xargs 将标准输入转换成命令行参数

1、简介

xargs 是 extended arguments 单词的缩写。它是命令传递参数的一个过滤器。xargs在上一个例子中已经用到过。它能够捕获一个命令的输出,然后传递给另外一个命令

2、语法格式

xargs [参数选项]

3、参数说明

参数 参数选项 -n 指定每行的最大参数量n,可以将输入的文本划分为多行,每行n个参数,默认空格分隔 -d 自定义分隔符 -i 以{}替代前面的结果

4、实践操作

① 多行输入变单行

[root@xiezhr test]# clear [root@xiezhr test]# cat test.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 [root@xiezhr test]# xargs < test.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18

② 通过【-n】指定每行的输出个数

[root@xiezhr test]# cat test.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 [root@xiezhr test]# xargs -n 4 < test.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18

③ 通过【-d】自定义分隔符

[root@xiezhr test]# echo "xiezhr-的- 个人公众号是:-XiezhrSpace" | xargs -d- -n4 xiezhr 的 个人公众号是: XiezhrSpace

④ 通过【-I】可以指定一个替换的字符串

# xargs -i 参数可以让{}替代前面find查找到的内容 [root@xiezhr test]# find . -name "*.mp4"|xargs -i mv {} dir/ [root@xiezhr test]# ls a.txt c.txt dir dir3 dir5 dir_bak movie.tar.gz test.txt tt.txt xiezhr xiezhr.txt # -I 参数可以指定其他字符代替{},本例中则使用[] 替代{} [root@xiezhr test]# ls a.txt c.txt dir dir2 dir3 dir5 dir_bak movie.tar.gz test.txt tt.txt xiezhr xiezhr.txt [root@xiezhr test]# find . -name "*.txt"|xargs -I [] cp [] dir3 cp: ‘./dir3/b.txt’ and ‘dir3/b.txt’ are the same file cp: ‘./dir3/a.txt’ and ‘dir3/a.txt’ are the same file rename 重命名文件

1、简介

rename 根据名字就可以知道是重命名

2、语法格式

rename from to file

3、参数说明

from 表示需要替换或者需要处理的字符(一般是文件名的一部分或扩展名) to 把前面的from 代表的内容替换成to代表的内容 file 表示待处理的文件,可以用"*"通配所有文件

4、实践操作

[root@xiezhr dir5]# ll total 0 -rw-r--r-- 1 root root 0 Mar 18 20:47 xie_20220315_unfidend.jpg -rw-r--r-- 1 root root 0 Mar 18 20:47 xie_20220316_unfidend.jpg -rw-r--r-- 1 root root 0 Mar 18 20:47 xie_20220317_unfidend.jpg -rw-r--r-- 1 root root 0 Mar 18 20:47 xie_20220318_unfidend.jpg -rw-r--r-- 1 root root 0 Mar 18 20:47 xie_20220319_unfidend.jpg [root@xiezhr dir5]# rename "_unfidend" "" * [root@xiezhr dir5]# ll total 0 -rw-r--r-- 1 root root 0 Mar 18 20:47 xie_20220315.jpg -rw-r--r-- 1 root root 0 Mar 18 20:47 xie_20220316.jpg -rw-r--r-- 1 root root 0 Mar 18 20:47 xie_20220317.jpg -rw-r--r-- 1 root root 0 Mar 18 20:47 xie_20220318.jpg -rw-r--r-- 1 root root 0 Mar 18 20:47 xie_20220319.jpg file 显示文件类型

1、简介

file 我们都知道是文件的意思。其作用就是用于显示文件类型。

2、语法格式

file [参数选项] [文件或目录]

3、参数说明

一般不加参数

4、实践操作

[root@xiezhr dir5]# file xie_20220315.jpg xie_20220315.jpg: empty md5sum 计算和校验文件的MD5值

1、简介

md5sum 用于计算和校验文件的MD5值。世界上没有完全相同的两片叶子,md5是一种不可逆的加密算法。我们可以通过比较两个文件的md5值来判断文件有没有被修改过。

2、语法格式

md5 [参数选项] [文件]

3、参数说明

参数 参数说明 -c 从指定文件中读取MD5校验值,并进行校验

4、实践操作

① 生成一个文件的md5值

[root@xiezhr test]# md5sum a.txt d41d8cd98f00b204e9800998ecf8427e a.txt

②【-c】参数判断文件是否被篡改

-c参数来对文件md5进行校验。校验时,根据已生成的md5来进行校验。生成当前文件的md5,并和之前已经生成的md5进行对比,如果一致则文件没被修改,如果不一致则文件被篡改了。

[root@xiezhr dir6]# ls xiezhr.txt [root@xiezhr dir6]# md5sum xiezhr.txt d41d8cd98f00b204e9800998ecf8427e xiezhr.txt [root@xiezhr dir6]# md5sum xiezhr.txt >data.md5 [root@xiezhr dir6]# echo "个人公众号:XiezhrSpace" >> xiezhr.txt [root@xiezhr dir6]# md5sum xiezhr.txt 8e32899aa04a3a842df366cdd883cdbf xiezhr.txt [root@xiezhr dir6]# md5sum -c data.md5 xiezhr.txt: FAILED md5sum: WARNING: 1 computed checksum did NOT match

这期内容就到这,下期根据思维导图就到了文件内容操作相关的命令使用了。

涉及到的命令有:cat、more、head、tail、less、cut、join、sort等等

敬请期待哦(●’◡’●)

专栏目录:快速上手Linux核心命令专栏目录

上一篇:快速上手Linux核心命令(二):关机、重启

下一篇:快速上手Linux核心命令(四):文件内容相关命令



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有