Linux的文件操作2

9、目录权限:

文件或文件夹有三种权限,分别为read(读权限)、write(写权限)、execute(执行权限)
有三种用户可以拥有权限:创建者,同组用户,其他用户
(1)查看文件权限
在这里插入图片描述
此文件,创建者拥有读和写的权限(从左数234位);同组用户拥有读的权限(从567位);其他用户拥有读的权限(从左数8910位)
(2)修改文件权限

  • 二进制方法:可读(4)可写(2)可执行(1)
    在这里插入图片描述
    此时,创建者拥有读、写、执行的权限;同组用户和其他用户拥有读和写的权限
  • 字符方法
    “a”表示所有用户,“u”表示创建者(属组)、“g”表示创建者同组用户、“o”表示其他用户;“+”表示添加权限,“-”表示取消权限;“r”表示读权限、“w”表示写权限、“x”表示写权限。
    在这里插入图片描述
    此时,创建者的写和执行权限被取消。

在这里插入图片描述
此时,增加了同组用户的执行权限。

  • 等号方法

chmod u=rwx 给创建者读、写、执行权限
chmod g=u 将创建者权限给同组用户
chmod go= 同组用户和其他用户没有权限

  • 快速写法

chmod +x 给创建者,同组用户,其他用户增加执行权限

注:目录默认权限为666(无执行位);文件默认权限为777。

10、设置掩码

(1)查看掩码
在这里插入图片描述
(2)修改掩码
umask 777:权限相反,777表示无权限
在这里插入图片描述

11、权限的特殊位

SUID(设置用户id):有效用户id会变成该文件所有者的id。对可执行文件设置,执行时用的是属组权利,而不是使用者权利。
SGID:同组用户可以共享文件。
Sticky bit(粘连位/T属性):告诉系统在程序完成后在内存中保存一份运行程序的备份,如该程序常用,可为系统节省点时间,不用每次从磁盘加载到内存。
在这里插入图片描述
(1)设置特殊位

  • 数字方法
    在这里插入图片描述
  • 符号方法

chmod u+s 设置SUID
chmod g+s 设置SGID
在这里插入图片描述
在这里插入图片描述
注:大写S代表该用户无执行权限,虽然设置了SUID或者SGID,但无法使用

12、设置权限位

ACL:访问控制列表
setfacl可以对每一个文件或目录设置更精确的文件权限
(1)getfacl 查看用户对于文件的权限
在这里插入图片描述
(2)setfacl -m 给用户添加权限
在这里插入图片描述
此时,给用户u1添加了对于x1文件的rwx权限(权限后面的“+”表示权限位已开启)
(3)setfacl -b 清除设置的权限
在这里插入图片描述
(4)setfacl -d 对于目录设置默认acl
在这里插入图片描述

13、显示文件

(1)cat 显示文件所有信息
(2)head 显示文件最开始几条信息
在这里插入图片描述
(3)tail 显示文件最后几条信息
在这里插入图片描述
(4)less 分屏显示文件信息(pageup和pagedown翻页,q退出)——显示完不会留在界面中
在这里插入图片描述
(5)more 分屏显示文件信息(按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示)——显示完会留在界面中
在这里插入图片描述
(6)uniq 显示文件并取消重复的行
在这里插入图片描述
(7)wc 显示文件内容
wc test:显示文件的行数,字数,字节数
wc -l test:只显示行数
wc -w test:只显示字数
wc -c test:只显示字节数
在这里插入图片描述
在这里插入图片描述

14、文件排序

(1)sort 按照首字母顺序进行排序
在这里插入图片描述
(2)sort -r 从大到小排序
在这里插入图片描述
(3)sort -k2 按照第2个字段进行排序
(4)sort -t 指定分隔符 sort -t’,’
(5)sort -n 按照数字顺序排序

15、截取和查找文件内容

(1)cut -b 以字节为单位进行分割
在这里插入图片描述
(2)cut -c以字符为单位进行分割
在这里插入图片描述
(3)cut -d 自定义分隔符,默认为制表符
cut -f 与-d一起使用,指定显示哪个区域
在这里插入图片描述
寻找文件中以“:”分隔的所有信息的第一个字段
(4)grep 在文件中查找字符串
在这里插入图片描述
(5)grep -i 忽略字符大小写的差别查找字符串
在这里插入图片描述
(6)grep -v 显示不包含该字符串的所有行
在这里插入图片描述
(7)grep -n 在显示符合样式的那一行之前,标示出该行的列数编号
在这里插入图片描述

16、vi/vim编辑器

  • 命令模式(command mode)控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式、底行模式下。
  • 插入模式(Insert mode):只有在插入模式下,才可以做文字输入,按ESC键可回到命令模式。
  • 底行模式(last line
    mode):将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号。不过一般我们在使用时把vi简化成两个模式,就是将底行模式也算入命令模式。

(1)打开、保存、关闭文件
vi 打开文件
:w 保存文件
:w test.txt 将文件保存为test.txt
:q 退出编辑器
:q! 退出编辑器不保存
:wq 保存并退出编辑器
(2)插入文本或行(vi命令模式下使用,执行下面命令后将进入插入模式,按ESC键可退出插入模式)
a //在当前光标位置的右边添加文本
i //在当前光标位置的左边添加文本
A //在当前行的末尾位置添加文本
I //在当前行的开始处添加文本(非空字符的行首)
O //在当前行的上面新建一行
o //在当前行的下面新建一行
R //替换(覆盖)当前光标位置及后面的若干文本
J //合并光标所在行及下一行为一行(依然在命令模式)
(3)移动光标(vi命令模式下使用)
按 Ctrl+f :屏幕往后移动一页。
按 Ctrl+b :屏幕往前移动一页。
按 Ctrl+u :屏幕往后移动半页。
按 Ctrl+d :屏幕往前移动半页。
按数字 0 :移到当前行的开头。
按 G :移动到文章的最后。
按 $ :移动到光标所在行的行尾。
按 ^ :移动到光标所在行的行首。
按 w :光标跳到下个字的开头。
按 e :光标跳到下个字的字尾。
按 b :光标回到上个字的开头。
按 #l :光标往后移的第#个位置,如:5l,56l。
(4)删除、恢复字符或行(vi命令模式下使用)
x :每按一次,删除光标所在位置的后面一个字符。
#x :删除光标所在位置的后面#个字符,例如, 6x 表示删除光标所在位置的后面6个字符。
X :每按一次,删除光标所在位置的前面一个字符。
#X :删除光标所在位置的前面#个字符,例如, 20X 表示删除光标所在位置的前面20个字符。
dd :删除光标所在行。
#dd :从光标所在行开始删除#行
(5)跳至指定行(vi命令模式下使用)
n+ //向下跳n行
n- //向上跳n行
nG //跳到行号为n的行
G //跳至文件的底部
(6)复制、粘贴(vi命令模式下使用)
yy //将当前行复制到缓存区,也可以用 “ayy 复制,”a 为缓冲 区,a也可以替换为a到z的任意字母,可以完成多个复制任务。
nyy //将当前行向下n行复制到缓冲区,也可以用 “anyy 复制,”a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。
yw //复制从光标开始到词尾的字符。
nyw //复制从光标开始的n个单词。
y^ //复制从光标到行首的内容。
y$ //复制从光标到行尾的内容。
p //粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用”ap 进行粘贴。
P //粘贴剪切板里的内容在光标前,如果使用了前面的自定义缓冲区,建议使用”aP 进行粘贴。
在这里插入图片描述