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 补全键 它会把/补上!
软连接的链接数和文件内的点有关 浅蓝色是软连接
3月25日课程:标准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 )或命令(末)行模式:保存,退出等
命令模式 --> 插入模式
- i insert, 在光标所在处输入
- I 在当前光标所在行的行首输入
- a append, 在光标所在处后面输入
- A 在当前光标所在行的行尾输入
- o 在当前光标所在行的下方打开一个新行
- O 在当前光标所在行的上方打开一个新行
- 插入模式 --- ESC-----> 命令模式
- 命令模式 ---- : ----> 扩展命令模式
- 扩展命令模式 ----ESC,enter----> 命令模式
来源:https://www.cnblogs.com/xinhua666/p/12596382.html