目录结构&&必会命令①

目录结构&&必会命令①
[TOC]
碎碎念
如何记忆命令

如何有效提问


对方可能在忙,没看见提问,当你解决问题后,一定要把总结再发给对方
⭐star法则
英文: 星星

Linux系统目录结构
目录结构概述

📌 一切从根 / 开始
⚠️ \ 这个是反斜线,不要搞混

windows 反斜线
C:\# 120G固态硬盘D:\# 1T的机械硬盘 1T=1000G📌 可以看出来Linux中它的效率高一点,找东西方便、快
Linux 类似windows只有一块c盘 斜线
/etc/oldboy.txt/etc/network/xx.txt
核心目录(根下)


/proc和/sys
📌 /proc 和 /sys 类似,因为他们都是记录的内存中的信息,内存不占用磁盘,这两个目录存在,但是里面的内容不占用磁盘空间,所以叫他们为虚拟目录
/bin和/sbin
在 Linux 系统中,/bin 和 /sbin 都是存放**“可执行二进制文件(命令)“**的目录
/bin 存放所有用户(包括普通用户和 root)都可以使用的基本系统命令
/sbin 存放只有系统管理员(root) 才能使用的系统管理命令

路径表示形式

练习示例
🥶当我们小人来到了**/root目录下**

🌰 案例1. 进入到 /opt 目录
1)相对路径进入/opt目录下[root@Kylin ~]# cd /[root@Kylin /]# lsbin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var[root@Kylin /]# cd opt # 相对路径方式进入opt[root@Kylin opt]# pwd/opt'当前路径为/opt'
========================================
2)绝对路径进入/opt目录[root@Kylin ~]# cd /opt # 绝对路径方式进入opt[root@Kylin opt]# pwd/opt'结果一样'Linux系统核心命令
tab键

📌 自动补全(命令,路径)
命令
![]()
- tab键后

路径
又或者非常经典的网卡路径

- tab键后
![]()
💡 合理运用会有出其不意的效果
pwd
📌 显示当前所在的路径 (print working directory)
# 直接回车[root@Kylin ~]# pwd/root'显示当前工作目录'cd
📌 切换路径 (change directory)
1)直接回车 回到家目录[root@Kylin ~]# cd[root@Kylin ~]# pwd/root'回到家目录了'
2)cd ~# 回到家目录[root@Kylin ~]# cd ~[root@Kylin ~]# pwd/root'同样回到~'🧣以上两条命令等价
家目录:
~登录进去默认的所处的路径位置image-20260620161551324
. (点) — 当前目录
.. (点点) — 上一级目录
⚠️ cd - 返回上一次所在的目录位置
3)cd .# 表示当前的目录[root@Kylin ~]# cd .[root@Kylin ~]# pwd/root'原地不动'
4)cd ..# 表示上一级目录[root@Kylin ~]# cd ..[root@Kylin /]# pwd/'往上走了一层'
5)cd ../..# 表示回到上两级目录[root@Kylin network-scripts]# pwd/etc/sysconfig/network-scripts/'☘️'[root@Kylin network-scripts]# cd ../..[root@Kylin sysconfig]# pwd/etc/sysconfig'从network-scripts回到了sysconfig'mkdir
📌 创建目录 make directory,如果目录存在则不会再创建

- 脚本中 -p 选项可以重复创建 ✅ 不报错
💡 初期,建议大家用绝对路径创建目录


mkdir dir1 dir2
📌 创建多个目录,中间用空格隔开
1)在/opt下创建1和2目录[root@Kylin ~]# mkdir /opt/1 /opt/2[root@Kylin ~]# ll /opt/total 0drwxr-xr-x 2 root root 6 10月 28 11:37 1drwxr-xr-x 2 root root 6 10月 28 11:37 2'两个目录都创建成功了'
========================================
2)在不同的路径下创建目录[root@Kylin ~]# mkdir ./test01 /opt/test01 /etc/test01# 创建了: 当前目录下./test01 /opt/test01 /etc/test01'一次性在三个不同路径创建目录'-p选项
📌 ==递归==创建目录,目录不存在则创建、==存在则忽略==
# 案例: 创建多级目录a/b/c/d 使用-p参数# -p 递归创建目录[root@Kylin ~]# mkdir -p a/b/c[root@Kylin ~]# lltotal 0drwxr-xr-x 3 root root 15 10月 28 11:45 a[root@Kylin ~]# tree aa└── b └── c'一口气创建了三级目录'-v选项
📌 显示创建过程

🧣tree
📌 tree 树形结构显示目录
面试题
统计一下某个目录下总共有多少个目录或者文件!
[root@Kylin ~]# tree /etc...313 directories, 826 files# /etc/目录总共313个目录和826个文件
# 反思: 其实直接执行这条命令的时候,有许多冗余的显示,那么如何去取最后一行呢?[root@Kylin ~]# tree /etc | tail -n 1# tail -n 1 取最后一行即可
touch
📌 创建普通文件,不存在则创建

ll默认查看 modify 时间,即修改时间- 详细请参考
find详解
- 详细请参考
隐藏用法
📌 文件存在 —> 则更新时间

疑问: 上图变化的时间,究竟是什么时间? 访问access or 修改modify or 改变change
答案是: 实际上共同更新了该文件的 访问时间(access) 和 修改时间(modify) 和 改变(change) 为当前系统时间

追溯一下这个 touch 命令: from Qwen3
- touch 命令在 Linux/Unix 系统中主要用于更新文件的时间戳(都更新)
- 但如果指定的文件不存在,touch 的默认行为是:✅️ 自动创建一个空文件(大小为 0 字节)
✅ 我们一直都在使用它的默认行为!
-a选项
📌 仅更新访问时间(access)

-m选项
📌 仅更新修改时间(modify)

touch a.txt b.txt
📌 创建多个文件,中间用空格隔开
1)创建多个文件[root@Kylin ~]# touch b.txt c.txt[root@Kylin ~]# lltotal 0-rw-r--r-- 1 root root 0 10月 28 11:08 b.txt-rw-r--r-- 1 root root 0 10月 28 11:08 c.txt'两个文件都创建好了'
========================================
2)在opt下创建oldboy.txt — 相对路径[root@Kylin ~]# cd /opt/[root@Kylin opt]# pwd/opt[root@Kylin opt]# touch oldboy.txt'先cd到/opt再创建'
3)在opt下创建oldboy.txt — 绝对路径[root@Kylin ~]# touch /opt/oldboy.txt'一步到位,推荐'touch ./d.txt
📌 在当前路径下创建文件使用 ./
💡 建议大家,在当前目录下创建文件或者是目录,使用
./文件或./目录而不是直接跟上文件或目录,从而避免犯错
[root@Kylin ~]# touch ./d.txt[root@Kylin ~]# lltotal 0-rw-r--r-- 1 root root 0 10月 28 11:14 d.txt'在当前目录下创建了d.txt'touch ../a.txt
📌 在上一级目录创建文件
[root@Kylin ~]# touch ../a.txt# 在/root的上一级 / 目录下创建a.txt深层目录也可以使用:
# 在sysconfig目录下创建oldboy.txt[root@Kylin network-scripts]# pwd/etc/sysconfig/network-scripts/'☘️'[root@Kylin network-scripts]# touch ../oldboy.txt# ../ 就是上一级 /etc/sysconfig/ls
📌 显示文件和目录信息
ls
📌 显示当前目录下所有的文件

ll -i
📌 查看文件的详细信息以及inode号码
[root@oldboyedu ~]# ll -i oldboy.txt67157818 -rw-r--r-- 1 root root 12 Nov 4 11:46 oldboy.txt# 最前面的数字67157818就是inode号码ls -l
📌 显示文件的详细信息(modify修改时间)

ls -lh
📌 人类可读的方式显示大小

📌 单位换算
1KB = 1024B 1MB = 1024KB 1GB = 1024MB 1TB = 1024GB
ll
📌 ll 不是命令,ll 是 ls -l 的外号
✅️ 执行 ll 相当于是执行的 ls -l

ls -lu
- ==小写的u==
📌 显示文件的详细信息(access访问时间)

ls -d
📌 显示目录本身

💡 几乎不单独使用
-d选项,啥也看不了
ls -ld 目录
📌 显示目录本身的详细信息

💡 归根结底还是
-l选项太强大了,查看详细信息
ls -l /etc/指定目录/
📌 显示指定目录下所有的文件,查看的是目录里面的,而不是目录本身
# 案例: 显示指定目录/etc/sysconfig/下所有的文件和子目录[root@oldboy /]# ls /etc/sysconfig/anaconda dhcpd ip6tables kernel nftables.conf rsyslogatd ebtables-config ip6tables-config man-db ...ls oldboy.txt
📌 查看文件是否存在

ls a.txt b.txt
📌 查看多个文件
# 案例: 一次性查看多个文件[root@text /]# ls a.txt b.txtls: cannot access a.txt: No such file or directoryls: cannot access b.txt: No such file or directory❌ '文件不存在时会报错提示'
💡 记得用空格分隔就行
ls -a
📌 显示系统中隐藏文件
# 案例: 查看当前目录的隐藏文件[root@Kylin ~]# ls -a. .. .bash_history .bash_logout .bash_profile .bashrc .cshrc .tcshrc '以 . 开头的都是隐藏文件'
ls -lt
📌 按照时间显示文件
💡 最新修改的文件在开头

ls -lrt
📌 文件太多了,找出最新修改的文件,并显示在末尾
-r # 逆序显示文件


cat
cat 文件
📌 查看文件的内容

cat -A 文件
📌 显示出文件中的特殊隐藏符号,每一行以 $ 结尾

cat -n 文件
📌 显示行号

👽 这里总共8行
cat > 文件名
📌 “覆盖""新建”内容
'> 是覆盖重定向,<<EOF是标准输入结束标记'[root@Kylin ~]# cat > a.txt <<EOFheheEOF[root@Kylin ~]# cat a.txthehecat >> 文件名
📌 追加内容
'>> 表示追加到文件末尾,不会覆盖原有内容'[root@Kylin ~]# cat >> a.txt <<EOFaaaabbbbEOF[root@Kylin ~]# cat a.txtheheaaaabbbb合并文件内容
[root@Kylin ~]# echo aaa > a.txt[root@Kylin ~]# echo bbb > b.txt[root@Kylin ~]# cat a.txtaaa[root@Kylin ~]# cat b.txtbbb
'将a.txt和b.txt中的内容合并到c.txt'
# 两个文件的内容 > 到一个文件里面去[root@Kylin ~]# cat a.txt b.txt > c.txt[root@Kylin ~]# cat c.txtaaabbb# 合并: 先cat多个文件,再用>重定向到新文件文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!




