马哥博客作业第二周

≡放荡痞女 提交于 2020-03-30 08:16:44

3月23日课程:文件管理

1. 相对路径:一般情况下相对的是当前所在的目录!*特殊情况下也可能不是相对于当前目录而是相对于某个目录。

2. Ls 命令 及其各选项

3. Sata 查看三个文件时间 所有者 大小 节点等! modify time 修改文件内容时间 change time 属性更改时间 所有者或文件类型  access time 文件读取时间。

4. Chown 更改文件所有者 change owner

5. File + 文件  查看文件类型

6. Linux对文件后缀要求不严格,更改后缀依然可以用。

7.  Linux和windows文件格式不一样,相互需要转换才能使用。dos2unix  可以将windows格式改成linux格式,unix2dos linux格式改成 windows格式。

8. Hexdump  看文件2进制内容

9. 编码   中国GB2312  全球utf8

10. 文件通配符 文件通配符可以用来匹配符合条件的多个文件,方便批量管理。文件通配符采有特定的符号,表示特定的含义

11. cp  选项属性  cp -a 常用于备份  特殊文件一定要保存属性复制

 

 

 复制整个文件包括隐藏文件  .开头的文件

只复制隐藏文件

12.   mv 移动文件 更改位置 也可以改名 ,同一分区移动数据,速度很快:数据位置没有变化。不同分区移动数据,速度相对慢:数据位置发生了变化

13. rename 批量改名

 

 

14. rm 删除   

删除文件内所有文件!

这是删除 /data  和 / 根

更改rm 路径 让命令失效

特殊文件 符号开头的 删除方式

rm虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用shred安全删除文件

常见选项:

-z 最后一次覆盖添加0,以隐藏覆盖操作

-v 能够显示操作进度

-u 覆盖后截断并删除文件

-n # 指定覆盖文件内容的次数(默认值是3次)

alias rm='DIR=/data/backup`date +%F%T`;mkdir $DIR;mv -t $DIR'

删除文件 定义成移动到/data/下生成的backup时间文件

15. Tree 文件目录 -r 之列文件夹

16. Mkdir -pv 创建多个父子目录 显示过程

17. Rmdir 删除文件夹 只能删除空的文件夹 -p 从后面空文件夹向前递归删除空的文件夹

18. 文件元数据和节点表编号

一个指针4k 有12 个指针块。文件小于 48k 直接指针找储存

间接指针 4k指针 有1024个指针指向1024个数据块,文件小等于 4M

双重间接指针:4k指针 有1024 * 1024个指针 ,文件小等于 4G

三重间接指针:4k 指针 有1024 *1024*1024个指针,文件小等于4T

目录内容 :文件名称和节点编号等

节点表:文件的权限 所有者 大小 时间信息等

数据区:文件的数据

命令和inode 关系

cp 命令

l 分配一个空闲的inode号,在inode表中生成新条目

l 在目录中创建一个目录项,将名称与inode编号关联

l 拷贝数据生成新的文件

rm 命令

l 链接数递减,从而释放的inode号可以被重用

l 把数据块放在空闲列表中

l 删除目录项

l 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

mv和inode

l 如果mv命令的目标和源在相同的文件系统,作为mv 命令

l 用新的文件名创建对应新的目录项

l 删除旧目录条目对应的旧的文件名

l 不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!

l 如果目标和源在一个不同的文件系统, mv相当于cp和rm

19. df 查看磁盘分区情况

   df -h 磁盘内存情况  df -i 磁盘节点编号情况

面试题:提示磁盘空间块满了 但是df 内存还剩很多 可能因 节点编号不足!

20. 内存满了  可以删除一个不用的大文件 当时如果程序还在使用,内存不会立即释放,停止这个程序才会释放!  不推荐使用  

方法:文件清零

通用

 

> 大文件路径   也可以清空文件 但是有些 shell 不支持

21.硬盘文件添加

 

21. 不同分区可以使用相同的节点编号,文件不同。 同一分区两个不同文件不能使用同一个节点编号

22. 硬链接hard   创建 ln filename   【linkname】

  给一个文件创建不同的名字。

硬链接创建不能跨分区!  硬链接互相不影响,只影响链接数,对应同一个节点号。都能访问文件删除原文件名其他链接名依然可以访问文件。

23.

                                                                 删库

24. 工作中技巧

运行中删除一个文件表,如果执行命令会清空文件名 标识对应储存块为空闲可用,会产生大量的 磁盘 I O  可能会导致系统崩溃!!所以建立一个硬链接 删除原文件名 不会导致磁盘I O ,空闲时再去删除这个硬链接

 25. 符号链接 symbolic 软连接 soft

  软连接类似于windows 快捷方式

 *创建软连接 ln -s  不会增长原文件链接数,原始文件删除软连接就不能用了(依赖于原始文件)

创建时 原始文件路径相对路径不是相对当前工作目录、

  写的时候原始文件路径是相对于软连接的路径。例子

 支持夸分区 也支持文件夹

工作中应用    例如软件升级 降级

 

 

 

 如果新版本有BUG 可以降级 将新的软连接删除,创建以前的软连接!(软件回滚)

*删除软连接的时候软链接名后面不能加 /     加/会删除原文件内容。所以删除软连接时候慎用 TAB 补全键 它会把/补上!

软连接的链接数和文件内的点有关       浅蓝色是软连接

 

325日课程:标准I/O重定向和管道

1. 标准输入和输出

  程序= 指令 + 数据     读入数据: input  输出数据: output

打开一个文件都有一个fd  : file descriptor 文件描述符

Linux 给程序提供三种I/O 设备

l 标准输入 STDIN)   -0 默认接受来自终端窗口输入

l 标准输出 STDOUT)  -1 默认输出到终端窗口

l 标准错误 STDERR)  -2 默认输出到终端窗口

    默认情况下都是在当前终端窗口执行!!

PROC 文件夹 是运行程序文件夹 里面是文件运行进程编号文件夹!

Ps aux 查看运行程序对应进程编号。(部分路径不显示)

* 生产中找一个程序的路径:先用ps aux 找到程序对应的文件编号,再到PROC内进入到相应的文件编号文件内就可以看到对应的路径!

 

查看当前SHELL 文件描述符

2. I/O 重定向 redirect

  将默认输入,输出或错误对应的设备改变,指向新的目标

  STDOUT和STDERR 可以重定向到指定文件,而非默认的当前终端

格式: cmd + 操作符号 + 文件名

l  1>或 >      把STDOUT重定向到文件   会覆盖文件内容 也能生成空文件

l    2>        把STDERR 重定向到文件

l    &>        把所有输出重定向到文件 无论标准还是错误输出!

提示信息属于 2>   标准错误信息

如果不想覆盖 可以 >> 追加文件内容

多个命令重定向要用( a;b ;c ){ a;s;c;} 括起来

老式重定向写法:

                先执行正确的    再把错误的定向到正确内

 

 

 

面试问题:最后一种写法效果不一样。

        

 

 

利用重定向将命令输出写到文件,再将文件重定向到程序作为输入

3.管道

  | 把前一个命令的输出 作为后一个命令的输入

  格式 CMD | CMD | CMD

 要求    管道符 前面命令必须有标准输出  后面命令必须需要标准输入

4.单、多行重定向

单行重定向

多行重定向 提高效率 减少计算机负担减少磁盘I/O

 

 

                                                        标准 缩写

PS2= “ ”  影响多行重定向提示符的 变量

5. 发邮件

  Mail -s 收件人 < 邮件内容文件      批量发邮件

6. Tr 装换和删除字符

  -d -- delete:删除所有属于第一个字符集的字符

    

                                   删除abc

-s --squeeze-repeats:把所有连续重复的字符以单独一个字符表示。即去重!

压缩连续字符为一个

 -t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符

 

-c -C --complement:取字符集的补集

删除除了 abc 其他字符

 Tr -选项  参数 <  文件  修改文件内容

应用:

7. 将输出显示倒过来

  8. Tee命令  既能输出显示也能保存进文件

 

 

 

 

9. passwd --stdin 用户  改密码   passwd -e 强制下次登录改密码

 

 

 

3月27日课程*用户组和权限管理

1. 用户 UID

 2.用户组 GID

   3. 用户和组的关系

    

 

  4. windows创建一个新用户,直接加在Users 组内

  5. 资源能否被访问、命令能否执行是运行者身份有关,非程序命令本身

  6.用户和组的文件夹

 

以前密码是放在passwd文件夹内 因为所有人都能访问不安全所以移到shadow文件内  格式位置用X 补齐

Passwd文件格式

登录名:密码:uid:gid:用户全名注释:用户主目录:用户默认使用SHELL

7.用户创建 useradd

 

 

 

8.Usermod 更改用户信息

 

9.userdel 删除用户

10. 用户组创建groupadd   每个用户只有一个主组 附加组可以多个!

11. 切换用户或以其他身份执行命令

 su 用户 非登录切换  (不完全切换)  su - l 用户登录式切换

Ubuntu 第一次切root 用 sudo -i 输出自己的密码,之后可以改root的命令 passwd

Su  用户 -c 命令 临时切换执行命令!

切换用户想退回  exit

12. 查看用户信息  getent passwd

13. Nologin  和  false  shell类型都是会使用户不能登录

14. Chage -l 用户  显示具体信息

15. windows 默认密码过期时间为42天

16. Gpasswd -a  用户添加组  gpasswd -d 组删除用户  主组成员不能删除

17. Chown 改用户和所属组  -r  递归  文件下所有都更改

18. chmod 更改文件用户所有权限u , g ,  o  (a所有人) + -  rwx

 X 只针对有一个执行权限的文件 添加x权限  没有不添加 给目录加权限

19. 可访问目录最小权限 r x

20. 八进制数字权限r =4   w =2  x =1  有奇数肯定有执行权限  偶数 肯定有执行权限。

21. 数字法改权限  最大777  最小000 

22. Umask 影响新建文件的权限

 Umask 值可修改 持久保存 所有人/etc/bashrc  当前用户 ~/.bashrc

23. 权限功能是文件系统决定的

24. 仅仅一次设置一个文件自定的权限方法  

25.   suid  sgid 加到文件上的特殊权限 只支持2进制文件  给所有人、组执行权限+4xxx s +2xxx s    (只能对自己所属的文件操作删除等)

26. assticky  t选项 +到文件夹 权限  只能自己删自己文件 保护作用

27. 文件夹组加 sgid 权限 会使之后再此文件夹下建立的文件都和此文件夹属于同一个组

总结:

suid:作用于二进制可执行程序,当用户执行此程序时,将会临时继承此程序所有者的权限

sgid:1)作用于二进制可执行程序,当用户执行此程序时,将会临时继承此程序所属组的权限

Sgid作用于目录(文件夹),当用户在此目录下创建新文件时,文件的所属组会自动继承父目录的所属组

stikcy:作用于目录,用户只能删除自已的文件

28. 保证重要数据误操作  chattr +i 啥也不能干  chattr +a 只能追加文件内容     lsattr 查看文件是否加特殊权限

29. Setfacl -m u:zhang:r?w?x? 文件  给某文件设置用户权限

   Getfacl 查看权限用户

  Setfacl -b 删除权限用户   -rb 还原之前权限

Mask 控制添加的用户、组的最高权限 不高于mask设置的权限

30. Vim  文本编辑工具

 命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本

 插入(Insert)或编辑模式:用于修改文本

 扩展命令(extended command )或命令(末)行模式:保存,退出等

        命令模式 --> 插入模式

  1. i insert, 在光标所在处输入
  2. I 在当前光标所在行的行首输入
  3. a append, 在光标所在处后面输入
  4. A 在当前光标所在行的行尾输入
  5. o 在当前光标所在行的下方打开一个新行
  6. O 在当前光标所在行的上方打开一个新行
  •  插入模式 --- ESC-----> 命令模式
  •  命令模式 ---- : ----> 扩展命令模式
  •  扩展命令模式 ----ESC,enter----> 命令模式

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!