古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。这篇文章主要讲述#yyds干货盘点#Linux常见面试题之文件管理命令相关的知识,希望能为你提供帮助。
cat 命令
cat 命令用于连接文件并打印到标准输出设备上。cat 主要有三大功能:
1.一次显示整个文件:
cat filename
2.从键盘创建一个文件:
cat > filename
只能创建新文件,不能编辑已有文件。
3.将几个文件合并为一个文件:
cat file1 file2 > file
-b 对非空输出行号
-n 输出所有行号
实例:
(1)把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里
cat -n log2012.log log2013.log
(2)把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里
cat -b log2012.log log2013.log log.log
(3)使用 here doc 生成新文件
cat > log.txt < < EOF
> Hello
> World
> PWD=$(pwd)
> EOF
ls -l log.txt
cat log.txt
Hello
World
PWD=/opt/soft/test
(4)反向列示
tac log.txt
PWD=/opt/soft/test
World
Hello
chmod 命令
Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以控制文件如何被他人所调用。
用于改变 linux 系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。可使用 ls -l test.txt 查找。
以文件 log2012.log 为例:
-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log
第一列共有 10 个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是 d,表示是一个目录。从第二个字符开始到第十个 9 个字符,3 个字符一组,分别表示了 3 组用户对文件或者目录的权限。权限字符用横线代表空许可,r 代表只读,w 代表写,x 代表可执行。常用参数:
-c 当发生改变时,报告处理信息
-R 处理指定目录以及其子目录下所有文件
权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
权限代号:
r :读权限,用数字 4 表示
w :写权限,用数字 2 表示
x :执行权限,用数字 1 表示
-:删除权限,用数字 0 表示
s :特殊权限
实例:
(1)增加文件 t.log 所有用户可执行权限
chmod a+x t.log
(2)撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息
chmod u=r t.log -c
(3)给 file 的属主分配读、写、执行(7)的权限,给 file 的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod 751 t.log -c(或者:chmod u=rwx,g=rx,o=x t.log -c)
(4)将 test 目录及其子目录所有文件添加可读权限
chmod u+r,g+r,o+r -R text/ -c
chown 命令
chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID;组可以是组名或者组 ID;文件是以空格分开的要改变权限的文件列表,支持通配符。
-c 显示更改的部分的信息
-R 处理指定目录及子目录
实例:
(1)改变拥有者和群组 并显示改变信息
chown -c mail:mail log2012.log
(2)改变文件群组
chown -c :mail t.log
(3)改变文件夹及子文件目录属主及属组为 mail
chown -cR mail: test/
cp 命令
将源文件复制至目标文件,或将多个源文件复制至目标目录。
注意:命令行复制,如果目标文件已经存在会提示是否覆盖,而在 shell 脚本中,如果不加 -i 参数,则不会提示,而是直接覆盖!
【#yyds干货盘点#Linux常见面试题之文件管理命令】-i 提示
-r 复制目录及目录内所有项目
-a 复制的文件与原文件时间一样
实例:
(1)复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖。
cp -ai a.txt test
(2)为 a.txt 建议一个链接(快捷方式)
cp -s a.txt link_a.txt
find 命令
用于在文件树中查找文件,并作出相应的处理。
命令格式:
find pathname -options [-print -exec -ok ...]
命令参数:
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print:find命令将匹配的文件输出到标准输出。
-exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为command\\; ,注意 和\\;之间的空格。
-ok:和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
命令选项:
-name 按照文件名查找文件
-perm 按文件权限查找文件
-user 按文件属主查找文件
-group 按照文件所属的组来查找文件。
-type查找某一类型的文件,诸如:
b - 块设备文件
d - 目录
c - 字符设备文件
l - 符号链接文件
p - 管道文件
f - 普通文件
实例:
(1)查找 48 小时内修改过的文件
find -atime -2
(2)在当前目录查找 以 .log 结尾的文件。. 代表当前目录
find ./ -name *.log
(3)查找 /opt 目录下 权限为 777 的文件
find /opt -perm 777
(4)查找大于 1K 的文件
find -size +1000c
(5)查找等于 1000 字符的文件
find -size +1000c
-exec 参数后面跟的是 command 命令,它的终止是以 ; 为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。 花括号代表前面 find 查找出来的文件名。
推荐阅读
- #yyds干货盘点#MyBatis-plus学习笔记
- kubernetes-部署longhorn
- MYSQL事务超全知识总结#yyds干货盘点#
- 用pipeline来实现一个自由风格的构建
- 有关 CentOS 7 minimal 初始配置
- #yyds干货盘点#害,这恼人的BOM头
- #yyds干货盘点#--ELK-Elasticsearch介绍-1
- #yyds干货盘点#Windows Server之CA证书服务器看不到"web服务器"模板
- Ubuntu 18.04.1安装k8s的时候,提示缺少依赖包kubernetes-cni (= 0.7.5)