Linux(文件管理 图片+大白话)
后面也会持续更新,学到新东西会在其中补充。
建议按顺序食用,欢迎批评或者交流!
缺什么东西欢迎评论!我都会及时修改的!
在这里真的很感谢这位老师的教学视频让迷茫的我找到了很好的学习视频
王晓春老师的个人空间-王晓春老师个人主页-哔哩哔哩视频
文件管理基本命令
根目录下面有什么文件夹呢
/bin /boot /usr /root /sys /proc /var /etc 等等等...
绝对路径和相对路径
相对路径是相对当前所在文件夹为/opt
一般指定相对于当前工作目录,特殊场景下,是相对于某目录的位置 (配置文件中)
ls
-a | 隐藏文件 |
-l | 显示时间文件大小文件所有者 |
-R | 递归 访问文件夹若此文件夹有子目录则会一直访问下去 |
-d | 查看本身文件夹 |
ls 实际上是一个别名 也就是加了个颜色
不想用别名 使用旧名
-R递归访问 直接把你祖宗都找出来
查看目录本身内容
ll
ll 也是使用了一个别名
atime | acess time 文件被读了 |
ctime | change time 所有者改变 属性更改 |
mtime | modify time 修改时间 |
chown change owner
修改一个文件哪个时间会改变呢
三个时间都看到
inode 唯一标识身份号 每个用户账号都有唯一的UID
怎么区分文件类型呢
文件的最上面头部信息 存放了关于这个文件的格式信息
叫做magic number魔数
什么乱七八糟的不能简单一点吗!
okok!
还可以查看命令本身
window Linux可执行程序都是二进制文件
cat 看不了二进制文件
Linux不挑后缀
echo有内部 和 外部命令 外部命令没有内部优先级高
ls是外部命令删了就没了
文件七种类型
- | 普通文件 |
b | 块设备 |
l | 软连接 |
c | 字符设备 |
d | 目录 |
s | 套接字 |
p | 管道文件 |
批量查看文件类型
window和Linux格式转换(重点)
转换文件格式
yum -y install man-pages
man ascii
回车 和 换行不是一个东西?
当然不是 我们敲下回车键做了两件事
1.光标从第一行到第二行
2.并且光标位置在开头也就是换行和回车同时都做了
早期的Linux为了节省存储就把回车换行当成一个字节了 也就是 0a
而windows 还是两个字节包含0d 0a
所以需要转换一下!
yum -y install dos2unix dos(windows) -> unix(linux)
dos2unix wintest.txt
yum -y install unix2dos unix(linux) -> dos(windows)
unix2dos wintest.txt
编码格式转换
字符集也得一样 Linux默认是utf-8 当然windows 也得选择 utf-8
也可以使用命令转换 gb2312 和 ISO-8859一样的 注意Linux默认是UTF-8
-f 是文件原编码 -t是文件要转换编码 -o是输出
文件通配符
使用范围:ls 对现有文件进行过滤touch是创建的所以不识别通配符(看不懂别着急下面有解释)
* | 匹配多个字符或零个 不匹配.开头文件即隐藏文件 |
? | 匹配任何单个字符 |
~ | 当前家目录 cd ~root |
. | 当前目录 |
~- | 上一个目录 这个是用户呆的上一次目录而不是父目录比如 pwd 查看当前目录 假如是/ 我cd 到 /data 这个时候我当前 目录为/data 我的上一个目录就是/ |
.. | 父目录 |
[0-9] | 0-9任意一个数字 |
[^0-9] | 除了数字任意一个字符 |
[wang] | 取得是wang 4个字母中的一个 |
下面有创建语句别着急先理解一下这些符号
[a-c] 列出的文件顺序是 a A b B c 发现大写C没有了对吧
因为是[a-c] 没有到C
[a-Z]就全显示了
若是只想显示小写怎么办呢
[:lower:] 代表a-z [[:lower:]]代表取一个a-z(不包括大写) 取一个
实在不能理解就记住是这样写的就行
file[wang] 取得是wang 4个字母中的一个 ^代表相反
隐藏文件
.开头的为隐藏文件
*匹配不了.开头的文件 *不包含隐藏文件
小练一下
1 ls /etc/i*[0-9]*[[:lower:]]
2 ls /etc/[0-9]*[^0-9]
3 ls [^a-zA-Z][a-zA-Z]*
4 ls -d /etc/rc[0-6]*
5 ls /etc/[mnrp]*.conf
6 ls -d /root/.* == l.
7 ls -d /etc/*/显示文件夹 ls -d /etc/*显示文件和文件夹显示/var目录下所有以i开头,以一个小写字母结尾,且中 间出现至少一位数字的文件或目录
ls /var/i*[0-9]*[[:lower:]]
显示/etc目录下所有以m开头以非数字结尾的文件或目录
ls /etc/m*[^0-9]
显示/etc目录下,所有以.d结尾的文件或目录
ls /etc/*.d
ls -d .* = l. .可以代表当前文件夹 ..代表父文件夹
通配符被取消掉
''单引号可以把通配符功能取消掉
文件的创建与复制
touch
touch 里面识别不了通配符!
ls 对现有文件进行过滤touch是创建的所以不识别通配符
刷新时间
创建日志
[root@study data]# date
2024年 10月 30日 星期三 16:43:09 CST
[root@study data]# date -d "-1 year"
2023年 10月 30日 星期一 16:43:26 CST
[root@study data]# date -d "-1 day"
2024年 10月 29日 星期二 16:43:35 CST
[root@study data]# date +%F_%T
2024-10-30_16:45:58
[root@study data]# touch `date -d "-1 day" +%F_%T`.log
[root@study data]# ls
2024-10-29_16:47:26.log
[root@study data]# touch $(date -d "1 year" +%F_%T).log
[root@study data]# ls
2024-10-29_16:47:26.log 2025-10-30_16:47:46.log练习
把/etc/目录下所有文件,备份到/data独立的子目录下,并且要求子目录格式为backupYYYY-mm-dd
[root@study data]#cp -a /etc/ /data/backup`date + %F`创建/data/rootdir目录,并且复制/root下所有文件到该目录内,要求保留原有权限
[root@study data]#cp -a /root /data/rootdir
copy
cp source dest
cp source dir 这里的source可以有多个
cp -t dir source 也可以把dir 放前面 只是交换了位置 还是source到dir
一个文件的属性非常重要!!!!!!!
-p | 保存权限所有权和时间戳 |
-r | 递归 |
-d | 不复制原文件只复制链接 |
-a | 上面命令我全包了!常用于备份 |
-v | 显示过程 |
-i | 询问是否覆盖 |
-f | 如是不能覆盖 删除了再创建 |
--backup | 版本递增 |
-b | 只保留最近的 |
复制文件
复制文件夹
改名
一个神奇现象(非常重要!)
这个时候我们再执行这个命令怎么说?cp -r /etc/ /data/etcbackup
有必要总结一下
cp -r /etc/ /data/etcbackup
- 若/data/下面无目录 将/etc/改为/etcbackup/存放
- 若/data/下面以有/etcbackup/ 将/etc放入
- 若/data/下面已有/etc/backup/ /etc/backup/下面已有/etc/ 选择是否覆盖
复制软连接
我们实际上拷贝的是软连接指向的文件也就是centos-release
还有高手?
咳咳,av组合也不是不行
覆盖是否询问
结论:-i导致的
用户可以覆盖root用户的文件吗
这个时候如是cp -f 1.txt hosts 可以吗?
这里的逻辑是删除了root用户的hosts wang用户创了一个一模一样所以属主也变了
再提问一下用xiaowang 可以删除 xiaowang文件吗
为啥可以删除? 这里权限又不足了!
自己家是不是自己做主 那root用户文件跑到我家里面我肯定可以删除啊!
备份
版本递增
最近一次备份
-b的大哥
别把硬盘给撑爆了
块设备文件会导致磁盘撑满
所以要输入-a 保留属性
不要低估霸道的力量(非常重要)
别人文件你拷过来拷成别人的文件,等于别人又创建一个文件。
-a 就不能起保留属主的作用了 凡事都有优先级 并不是绝对的
其实我感觉我这里没有解释清楚做几个实验!
- 在wang用户下
- root 属主 复制到除了wang家目录其他地方都是权限不足
- 在wang家目录就算-a 也还是显示wang创建的文件
- 在wang家目录可以删除重命名root文件(任意用户文件)
- 在root用户下
- 任意用户文件 root用户都可以复制到任意文件夹
- root使用-a 可以保留其他用户使用的记录
复制隐藏和非隐藏文件
说白了就算把整个wang文件夹下的东西复制到了/opt/下
文件的移动和重命名
mv
和cp 非常像
mv source dest
mv source dir 这里的source可以有多个
mv -t dir source 也可以把dir 放前面 只是交换了位置 还是source到dir
既可以移动也可改名
同一分区速度快,不同分区速度慢
同一分区文件都在分区里只需改名字就行不用动磁盘当然快
批量改名
rename conf conf.bak f* 将f*文件中含有conf修改成conf.bakrename .bak '' *bak 去掉文件含有bak后缀
文件删除
rm
rm -rf 谨慎使用!
删除当前文件夹
rm -rf * == rm -rf ./*但是删不了隐藏文件
rm -rf .* 删除有风险 会删除到父目录
rm -rf .[^.]* 删除隐藏文件
若看不懂这个表达式建议再看看上方文件通配符
rm -rf .
我们删除当前文件夹总共分两步
- rm -rf * == rm -rf ./*删除非隐藏当前文件夹
- rm -rf .[^.]* 删除隐藏当前文件夹
好像直接删除文件夹也行好麻烦(bushi)
rm -rf /*
非常危险!!!! 直接给根目录的子目录干没了这里就不演示了
生产中建议
忘记rm拿mv代替 将文件移动到新目录
将rm改成mv
删掉rm或改名
删除-f
有这么一个文件该怎么删除?
rm --help
but 有局限
还是rm ./xx更加通用
目录操作
tree
yum -y install tree
tree -d 只列文件夹不列文件
mkdir
-p | 递归创建文件夹 |
-v | 显示创建过程 |
rmdir基本没咋用过这里不赘述了
练习
mkdir -p /testdir/dir1/x 后面都是这样
参考文献
1文件管理基本命令和windows文本和Linux文本格式的区别_哔哩哔哩_bilibili
40:52 echo 内部命令 可以看一下
2文件管理相关命令创建新文件和复制_哔哩哔哩_bilibili
3文件管理基本命令_哔哩哔哩_bilibili
总结
本人基本上是个人理解加参考其他大佬的肯定有很多问题欢迎指正,我会及时修改。