CSA总结复习2——文件管理
目录
三.文件管理(-【普通文本文件】、d【目录】、l【软链接文件】)
3.1目录文件管理
3.1.1创建 mkdir[创建目录] +目录名 +-p /-v
命名规则:
3.1.2查看 ls :列出目录内容
储存单位 tree :树状形式列出目录内容 可+ -L +数字 表示目录树的最大显示深度
3.1.3 别名
3.1.5 删除 ——rm
3.2 普通文件管理
3.2.1创建
文件命名的规则:
3.2.2 文件信息的查看
3.2.3编辑 (echo vim 重定向)
3.2.4 删除
3.2.5 历史 ——history
3.3软硬链接文件管理
3.4文件内容处理
3.4.1 grep命令
3.4.2 sort命令
3.4.3 uniq 命令
3.4.4 cut命令
3.4.5 wc 命令
3.5文件的复制和移动
3.5.1 cp命令
3.6查看文件(笔试面试)
3.6.1find 命令
3.6.2 whereis 命令
3.6.3 which命令
三.文件管理(-【普通文本文件】、d【目录】、l【软链接文件】)
三要素:1.文件名 2.文件位置 3.文件类型
3.1目录文件管理
3.1.1创建 mkdir[创建目录] +目录名 +-p /-v
注:-p:快速创建出目录结构中指定的每个目录,对于已经存在的目录不会覆盖,没有报错
-v:显示创建目录的详细过程
如果需要创建多个父子关系的目录,需要在后面+ -p
查看是否创建成功用:
[root@ghl ~]# echo $? #打印上条命令执行后的返回码,如果是0,代表执行成功,是其他数字就是不成功
0
命名规则:
不能使用/当文件名,/是用来做根目录的,也是用来做路径分隔符
文件名不超过255个字符
3.1.2查看 ls :列出目录内容
常用选项:
[root@ghl ~]# ls / #查看/目录内容
[root@ghl ~]# ls /root #查看/目录下的root目录内容
[root@ghl ~]# ls / /root #查看/目录以及/目录下的root目录内容
[root@ghl ~]# ls -l #查看当前目录下的文件以及它们的属性信息
[root@ghl ~]# ls -l /root/111/ #查看/目录下的root目录下的111目录下的内容,以及它们的属性信息
[root@ghl ~]# ls 111 -d #查看当前目录下111目录本身,而不是111目录下的内容
[root@ghl ~]# ls -dl 111 #查看当前目录下111目录本身,以及111目录本身的属性信息
[root@ghl ~]# ls -l 111 #查看当前目录下111目录下的内容,以及改目录下内容的属性信息
[root@ghl ~]# ls -lh / #查看属性的时候,大小单位转换为K、M、G的形式,-h选项和-l选项连用
[root@ghl ~]# ls 111 -R #查看当前目录下的111目录下文件内容,并且查看111目录下的子目录的文件内容
储存单位 tree :树状形式列出目录内容 可+ -L +数字 表示目录树的最大显示深度
3.1.3 别名
[root@ghl ~]# alias ping1='ping -c 3' #设置ping -c 3的别名为ping1。临时设置,终端关闭就失效了#永久设置别名
[root@ghl ~]# echo "alias ping1='ping -c 3'" >> .bashrc #.bashrc是在root用户家目录下的文件,所以只对root用户生效#取消别名
[root@ghl ~]# unalias ping1 #取消别名ping1
3.1.5 删除 ——rm
-r:递归的删除目录及其文件
-f:强制删除,没有提示
rm -rf 删除文件且不提示
3.2 普通文件管理
3.2.1创建
touch(创建普通文件)
mkdir(创建目录文件)
文件命名的规则:
- 不能用/当文件名,/是用来做根的,也是用路径分隔符
- 文件名不能超过255字符
- 区分大小写
- 目录也是文件,在同一路径下,两个不同类型文件不能同名
3.2.2 文件信息的查看
file:查看文件类型
stat:显示文件属性信息
3.2.3编辑 (echo vim 重定向)
echo:显示一行文本
重定向:
1.输出重定向
> 覆盖 >>追加
1 标准输出 2 标准错误输出
[root@xsq ~]# echo this is root > 1.txt #把this is root内容保存到1.txt文件中,以覆盖的形式保存
[root@xsq ~]# cat 1.txt
this is root
[root@xsq ~]# echo this is rootroot > 1.txt #把this is rootroot内容保存到1.txt文件中,以覆盖的形式保存
[root@xsq ~]# cat 1.txt
this is rootroot
[root@xsq ~]# echo this is root >> 1.txt #把this is root内容保存到1.txt文件中,以追加的形式保存
[root@xsq ~]# cat 1.txt
this is rootroot
this is root
[root@xsq ~]# echo 444 > 2.txt #2.txt文件原本不存在,通过echo > 会被创建出来
2.输入重定向
<: 输入重定向,从文件读取数据,不是从键盘读取
<<:自定义结束符,<< end (意思是以end作为结束符号)
[root@xsq ~]# cat << eof #直接cat,输入啥,显示啥,结束输入eof
> 123
> 345
> 456
> eof
123
345
456
[root@xsq ~]# cat > 6.txt << end #直接cat,输入啥,啥就保存到6.txt文件中,结束输入end。保存的形式是覆盖。
> 456
> 789
> end
[root@xsq ~]# cat 6.txt
456
789
[root@xsq ~]# cat >> 7.txt << end #直接cat,输入啥,啥就保存到6.txt文件中,结束输入end。保存的形式是追加。
> ooo
> ppp
> end
[root@xsq ~]# cat >> 7.txt << end #直接cat,输入啥,啥就保存到6.txt文件中,结束输入end。保存的形式是追加。
> aaa
> bbb
> end
vim —vi的改进版,一款程序员的文本编辑器
命令模式:G 跳转到文档末行的行首ngg 跳转到文档某首行的行首(n是数字,1gg就是跳转到第一行行首)^或者home 光标跳转到行首$或者end 光标跳转到行尾/关键字 快速匹配关键字yy 复制光标所在行p 粘贴在光标所在行的下一行cc 剪切光标所在行u 撤销插入模式:a 光标右移一个字符之后在光标前插入内容。A 光标移动到行尾之后在光标前插入内容。i 光标不变,在光标前插入内容I 光标移动到行首,在光标前插入内容s 删除光标所在字符,在光标前插入内容S 删除光标所在行,在光标前插入内容(S是大写)o 光标跳转到下一行,在光标前插入内容O 光标跳转到上一行,在光标前插入内容(O是大写)末行模式:! 强制:w 保存:q 退出:x 保存退出:q! 强制退出:wq! 强制保存退出:set nu 显示行号:set nonu 取消行号:%s/root/ooo 匹配所有行中第一出现root关键字,替换为ooo:%s/root/ooo/g 匹配所有行中出现的所有root关键字,替换为ooo:12,18 co 40 把12行到18行的内容复制到40行后:1,5d 删除1到5行:1,$d 删除1到最后一行:1d 删除第一行
[root@xsq ~]# vim /etc/vimrc #进入/etc/vimrc配置文件之后在最后一行添加 set tabstop=2可以修改tab键为两个字符
vim的异常处理
[root@xsq ~]# vim 1.txt #随便输入什么内容之后保存退出[root@xsq ~]# vim 1.txt #打开之后是命令模式,在这里按ctrl+z模拟异常退出#输入R(r)然后回车是对源文件内容(最开始的文件内容)进行编辑#输入E(e)是对该文件上一次的内容进行编辑#然后正常编辑文件,正常保存退出#通过ls -a 命令查看同名的隐藏文件(上述的隐藏文件是.1.txt.swp),通过rm命令将其删除。
3.2.4 删除
rm :删除文件
[root@xsq ~]# rm -f *.txt #删除.txt结尾的文件3.2.5
3.2.5 历史 ——history
3.3软硬链接文件管理
===============================硬链接=====================[root@xsq ~]# echo aaa > a.txt[root@xsq~]# lsa.txt[root@xsq ~]# cat a.txtaaa[root@xsq~]# ll a.txt-rw-r--r--. 1 root root 4 Jan 11 11:12 a.txt[root@xsq~]# ls -i a.txt #查看a.txt文件的inode号35987683 a.txt[root@xsq~]# ln /root/a.txt /root/a_hard.txt #给/目录下的root目录下的a.txt文件创建软链接文件,取名为a_hard.txt。[root@xsq~]# ls -i a_hard.txt #查看a_hard.txt文件的inode号35987683 a_hard.txt[root@xsq~]# cat a_hard.txtaaa[root@xsq~]# echo bbb >> a.txt[root@xsq ~]# cat a.txtaaabbb[root@xsq ~]# cat a_hard.txtaaabbb[root@xsq~]# echo ccc >> a_hard.txt[root@xsq ~]# cat a.txtaaabbbccc[root@xsq~]# cat a_hard.txtaaabbbccc[root@xsq~]# rm -rf a.txt #删除[root@xsq ~]# cat a.txtcat: a.txt: No such file or directory[root@xsq~]# cat a_hard.txtaaabbbccc[root@xsq~]# ln /root/666 /root/666_hard #不能给目录创建硬链接ln: /root/666: hard link not allowed for directory
=================================软链接===========================[root@xsq~]# mkdir aaa/bbb/ccc/ddd/eee/fff/ggg -p[root@xsq~]# echo kkk > aaa/bbb/ccc/ddd/eee/fff/ggg/k.txt[root@xsq~]# cat aaa/bbb/ccc/ddd/eee/fff/ggg/k.txtkkk[root@xsq~]# cd aaa/bbb/ccc/ddd/eee/fff/ggg/[root@xsq ggg]# pwd/root/aaa/bbb/ccc/ddd/eee/fff/ggg[root@xsq ggg]# lsk.txt[root@xsq ggg]# cat k.txtkkk[root@xsqggg]# ln -s /root/aaa/bbb/ccc/ddd/eee/fff/ggg/k.txt /root/k_soft.txt #创建软链接[root@xsq ggg]# cd[root@xsq ~]# pwd/root[root@xsq~]# cat k_soft.txtkkk[root@xsq ~]# ls -i /root/aaa/bbb/ccc/ddd/eee/fff/ggg/k.txt #查看inode18760124 /root/aaa/bbb/ccc/ddd/eee/fff/ggg/k.txt[root@xsq~]# ls -i /root/k_soft.txt35987685 /root/k_soft.txt[root@xsq~]# echo k89 >> /root/aaa/bbb/ccc/ddd/eee/fff/ggg/k.txt[root@xsq~]# cat /root/aaa/bbb/ccc/ddd/eee/fff/ggg/k.txtkkkk89[root@xsq~]# cat k_soft.txtkkkk89[root@xsq~]# echo k90 >> k_soft.txt[root@xsq~]# cat /root/aaa/bbb/ccc/ddd/eee/fff/ggg/k.txtkkkk89k90[root@xsq~]# cat k_soft.txtkkkk89k90[root@xsq~]# rm -rf /root/aaa/bbb/ccc/ddd/eee/fff/ggg/k.txt #删除源文件[root@xsq~]# cat /root/aaa/bbb/ccc/ddd/eee/fff/ggg/k.txtcat: /root/aaa/bbb/ccc/ddd/eee/fff/ggg/k.txt: No such file or directory[root@xsq~]# cat k_soft.txt #删除源文件之后,软链接文件也不能使用了cat: k_soft.txt: No such file or directory[root@xsq~]# ls111 444 666 anaconda-ks.cfg dir2 dir5 dir8 Downloads file1 file3 file6 file9 k_soft.txt Public 2.txt 444.txt aaa Desktop dir3 dir6 dir9 file file10 file4 file7 file.txt Music Templates 333 555 a_hard.txt dir1 dir4 dir7 Documents File file2 file5 file8 ip.log Pictures Videos[root@xsq ~]# ln /root/666 /root/666_hardln: /root/666: hard link not allowed for directory[root@xsq~]# ln -s /root/666 /root/666_soft #可以给目录创建软链接#创建软硬链接的时候用完整路径(绝对路径)创建。
软硬链接对比
硬链接 | 软链接 | |
命令 | ln源文件 硬链接文件 | ln -s源文件 软链接文件 |
inode | 源文件与硬链接文件的inode一样 | 源文件与软链接文件的inode不一样 |
删除源文件 | 硬链接文件还能使用 | 不可用 |
目录 | 用户不能创建硬链接 | 可以 |
特点 | 硬链接是源文件的备份 | 类似wimdos的桌面快捷方式 |
3.4文件内容处理
3.4.1 grep命令
grep:打印符合模式的行
常用选项:
选项 | 作用 |
-i | 忽略大小写 |
-n | 显示匹配到的内容的行号 |
-v | 显示未匹配到的内容 |
-w | 完全匹配 |
使用特殊符号匹配:
匹配模式 | 说明 |
grep h 文件名 | 查看文件里有字符h的行 |
grep [q] 文件名 | 匹配[]中的字符的行 |
grep ^[q] 文件名 | 匹配一q开始的行 |
grep ^[qf] 文件名 | 匹配一q或者f开始的行 |
grep ^[ ^qf ] 文件名 | 不匹配一q或者f开始的行 |
grep ^[0-9] 文件名 | 匹配以数字开头的行 |
grep q$ 文件名 | 匹配以q结束的行 |
grep ^$ | 过滤空白行 |
3.4.2 sort命令
sort :按文本的行进行排序,默认是ASCll码升序(从小到大)排序
常用选项:
选项 | 功能 |
-n | 数字大小排序 |
-r | 降序排序 |
-t | 指定单个字符分隔符 |
-k | 选择指定字段 |
3.4.3 uniq 命令
uniq :去除文本中连续的重复行
uniq -c : 统计出现的次数
[root@xsq ~]# cat 222.txt
this is 111
this is 111
this is 111
this is 222
this is 333
this is 222
[root@xsq ~]# uniq 222.txt
this is 111
this is 222
this is 333
this is 222
[root@xsq ~]# uniq 222.txt -c #分隔开的一样的不算
3 this is 111
1 this is 222
1 this is 333
1 this is 222
3.4.4 cut命令
cut : 处理一字段(列)为单位的文本数据
常用选项
选项 | 功能 |
-d | 指定分隔符 |
-f | 选择指定字段 |
[root@xsq~]# cat ip.log2022/12/01 12:00 10.0.0.1 Chrome2022/12/11 12:00 192.168.1.2 Chrome2022/12/12 12:00 10.0.0.2 Chrome2023/01/01 13:00 192.168.1.2 firefox2023/06/06 15:01 10.0.0.2 firefox2023/08/01 13:00 192.168.1.2 firefox[root@xsq ~]# cut -d " " -f 3 ip.log #以空格为分隔符,取出第三部分10.0.0.1192.168.1.210.0.0.2192.168.1.210.0.0.2192.168.1.2[root@xsq ~]# cut -d " " -f 3 ip.log | sort #以空格为分隔符,取出第三部分,用sort命令进 行排序10.0.0.110.0.0.210.0.0.2192.168.1.2192.168.1.2192.168.1.2[root@xsq ~]# cut -d " " -f 3 ip.log | sort | uniq -c #以空格为分隔符,取出第三部分,用sort命令进行排序,用uniq统计1 10.0.0.12 10.0.0.23 192.168.1.2[root@xsq ~]# cut -d " " -f 3 ip.log | sort | uniq -c | tail -1 #取出最后一个3 192.168.1.2
3.4.5 wc 命令
wc:统计指定文件的行数、字符或者字节数
常用选项:
选项 | 作业 |
-l | 只显示行数 |
-w | 只显示单词数 |
-m | 只显示字符 |
-c | 只显示字节数 |
3.5文件的复制和移动
3.5.1 cp命令
cp:复制文件或者目录
常用选项
选项 | 功能 |
-r | 递归复制目录 |
-p | 复制源文件的内容 还能修改时间和访问权限也复制到新文件中 |
#格式:cp 选项 源文件 目标文件[root@xsq~]# cp 222.txt dir1/ #将当前目录下的222.txt文件复制到dir1目录下[root@xsq~]# cp 444.txt 111.txt dir1/ #将当前目录下的444.txt文件和111.txt文件复制到dir1目录下[root@xsq~]# cp 111.txt dir1/ #如果dir1目录下有111.txt文件,这时候再复制一个,就会提示是否要覆盖cp: overwrite 'dir1/111.txt'? n[root@xsq~]# cp 222.txt dir1/222_1.txt #将当前目录下的222.txt文件复制到dir1目录下并且重命名为222_1.txt[root@xsq~]# tree dir1/dir1/|-- 111.txt|-- 222.txt|-- 222_1.txt`-- 444.txt0 directories, 4 files[root@xsq~]# cp 111 dir1/ #将当前目录下的111目录复制到dir1目录下,需要加上-r选项cp: -r not specified; omitting directory '111'[root@xsq~]# cp 111 dir1/ -r #将当前目录下的111目录复制到dir1目录下[root@xsq~]# tree dir1dir1|-- 111|-- 111.txt|-- 222.txt|-- 222_1.txt`-- 444.txt1 directory, 4 files
3.5.2mv 命令
mv :移动/重命名文件
#格式:mv 选项 源文件 目标文件[root@xsq ~]# mv 222.txt dir2 # 将当前路径下的222.txt文件移动到dir2目录中[root@xsq~]# tree dir2dir2`-- 222.txt0 directories, 1 file[root@ghl ~]# mv 111.txt 2.txt 444.txt dir2 #将当前路径下的222.txt和2.txt和444.txt文件移动到dir2目录中[root@xsq~]# tree dir2dir2|-- 111.txt|-- 2.txt|-- 222.txt`-- 444.txt0 directories, 4 files[root@xsq ~]# mv a_hard.txt aa.txt #对a_hard.txt文件重命名为aa.txt
3.6查看文件(笔试面试)
3.6.1find 命令
find:在目录层面结构中搜索文件
选项 | 功能 |
-name | 根据文件的名字进行查找 |
-size | 按照文件大小匹配,单位:c/k/M/G,其中c k 是小写 |
-maxdepth levels -mindepth levels | 最多查找多少层目录;最少查找多少层目录 |
-type b/d/c/p/l/f | 匹配文件类型 (块设备、目录、字符设备、管道、链接、文本、文本文件) |
-exec …… {}\; | 后面可跟用于进一步处理搜索结果的命令 |
-user | 匹配所有者 |
-group | 匹配所有组 |
-perm | 根据权限匹配 |
[root@xsq ~]# find ./ -iname "file*" #在当前目录下查找名为file开头的文件且忽略大小写[root@xsq~]# ll /etc/virc -h #/目录下的etc目录下的virc文件的大小为1.2k-rw-r--r--. 1 root root 1.2K Aug 5 23:45 /etc/virc[root@xsq~]# find /etc -size 1.2k #不支持小数点查找。1.2k被当成2k
[注意:] 删除5天以前的日志文件应该怎么做?
[root@localhost ~]# find /var/log -type f -mtime +5 -exec rm -rf {} \;
3.6.2 whereis 命令
whereis:搜索系统命令的可执行文件路径和说明文档