一、Linux 的目录结构
Linux 的目录结构是一个树状结构,以根目录(/)为起点,以下是常见的 Linux 目录结构的主要内容:
/ 根路径
├── bin: 存放系统指令(命令),如ls、cp、mv等,这些命令可以被所有用户执行。
├── boot: 存放启动相关的文件,包括内核(kernel)和引导程序。
├── dev: 存放设备文件,包括硬盘、键盘、鼠标等设备的文件。
├── etc: 存放系统的配置文件,例如网络配置、用户配置等。
├── home: 存放普通用户的家目录,每个用户在此目录下有各自的子目录。
├── lib: 存放系统程序运行时需要的函数库文件。
├── media: 用于挂载可移动介质(如光盘、U盘)的挂载点。
├── mnt: 通常用于挂载临时文件系统,例如其他硬盘分区或者NFS网络共享。
├── opt: 用于安装额外的软件包的目录。
├── proc: 虚拟文件系统,存储当前正在运行的进程和内核信息。
├── root: 超级用户(root)的家目录。
├── sbin: 存放系统指令(命令),只能由超级用户执行,如ifconfig、fdisk等。
├── tmp: 存放临时文件,重启后会清空该目录。
├── usr: 存放系统软件资源,包括二进制指令和库文件。
└── var: 存放经常变化的文件,如日志、备份文件等。├── cache: 应用程序的缓存文件。├── log: 系统日志文件。├── spool: 打印队列和邮件队列等临时性数据。├── tmp: 存放临时文件。└── www: 存放网站文件,如Web服务器的相关文件。
ls / # 查看根目录
- 蓝色:目录(文件夹)
- 绿色:可执行文件。
- 红色:压缩文件或归档文件。
- 棕色:设备文件(如硬盘、U盘等)。
- 黑色:普通文件。
- 浅蓝色:链接文件(软链接或硬链接)。
- 灰色:其他类型的文件,如套接字(socket)等。
二、目录与文件查看命令
1、ls 命令:
作用:
- 列出目录中的文件和子目录。
格式:
ls [选项] [文件/目录]
常用参数:
-l
:以长格式显示文件信息-a
:显示所有文件,包括隐藏文件(以“.”开头的文件)-d
:仅显示目录本身,而不是显示目录中的文件和子目录-R
:递归地显示目录及其子目录中的文件和子目录
用法示例:
1)ls
:列出当前目录的文件和子目录
2)ls -a /home/user/
:显示 /home/user/
目录下所有文件和子目录,包括隐藏文件
.
表示当前目录,即/home/user/
..
表示当前目录的父级目录,即/home/ (简单理解为出现了..就代表当前目标存在父级目录)
通过显示 ..
,ls -a
命令帮助你识别当前目录的父级目录,方便导航和操作文件系统的目录结构
3)ls -l
:以长格式显示当前目录的文件和子目录
解释:drwxr-xr-x. 2 user user 6 10月 8 16:45 公共
d
:表示这是一个目录。rwxr-xr-x
:这是文件权限的部分,以三组三个字符(rwx
)的形式表示。第一组代表所有者(user)的权限,第二组代表所属组(user)的权限,第三组代表其他用户的权限。每个字符的含义是:r
:读取权限,表示可以读取文件或访问目录内的文件列表。w
:写入权限,表示可以编辑、修改或删除文件。x
:执行权限,对于文件表示可以执行,对于目录表示可以进入并访问其内容。
2
:表示该目录中的链接数。user user
:表示所有者(user)和所属组(user)的用户名。6
:表示文件夹中的项目数(包括子目录和文件),但是如果不是目录而是文件这个的数字就 代表指向该文件的硬链接数量。10月 8 16:45
:表示最后修改的日期和时间。公共
:目录的名称。
4)
ls -d /home/user/
:显示 /home/user/
目录本身,而不是其中的文件和子目录(作用:判断目录是否存在)
5) ls -ld /home/user/(
将 -d 和 -l 组合使用):
显示指定目录的详细信息,并且不会显示目录内的文件和子目录的详细信息。
ls
:列出目录内容和文件信息。-l
:以长格式(详细信息)显示文件和目录。-d
:显示目录本身的详细信息,而不是列出目录中的内容。
所以,ls -ld /home/user/
命令会以详细的长格式显示 /home/user/
目录的信息,而不显示该目录下的文件和子目录的详细信息。
解释: drwx------. 16 user user 4096 10月 8 17:01 /home/user/
:
d
表示这是一个目录。rwx------.
表示对于拥有该目录的用户(user),具有读、写和执行权限;对于该用户所在的组(user),没有任何权限;对于其他用户,也没有任何权限。16
表示该目录下的子项目(包括子目录和文件)的数量,不包括 "." 和 ".." 目录。user user
表示该目录所属的用户和组。即该目录被user
用户所拥有,user
组为其所属组。4096
表示该目录的容量大小为 4096 bytes,即 4KB。10月 8 17:01
表示该目录的最后修改时间为 10 月 8 日 17 点 01 分。
6)ls -R /home/user/
:递归地显示 /home/user/
目录及其子目录中的所有文件和子目录。
2、cd 命令:
作用:
- 进入指定的目录。
格式:
cd [目录]
用法示例:
1)切换到上级目录:
cd ..
2)切换到当前用户的主目录(通常是 /home/username/
):
cd 或 cd ~
3)切换到绝对路径指定的目录:
cd /var/log/ 或 cd / # 直接切换到根目录
4)切换到当前工作目录下的子目录:
cd 子目录名
5)切换到上次工作的目录:
cd -
6)使用主目录中定义的快捷方式切换目录,例如切换到桌面目录:
cd ~/桌面
3、pwd 命令:
作用:
- 显示当前所在的目录路径。
格式:
pwd
用法示例:
1)pwd
:显示当前所在的目录路径
4、mkdir 命令:
作用:
- 创建一个新目录。
格式:
mkdir [选项] 目录
常用参数:
-p
:递归创建多级目录,如果父级目录不存在也会创建
用法示例:
1)mkdir ~/桌面/newdir
:在 桌面
目录中创建新目录 newdir
2)mkdir -p ~/桌面/dir1/dir2
:递归创建多级目录
5、rmdir 命令:
作用:
- 删除一个空目录。
格式:
rmdir 目录
用法示例:
1)rmdir ~/桌面/newdir
:删除 桌面
目录中的 newdir
目录
6、touch 命令:
作用:
- 创建一个新文件或更新现有文件的时间戳。
格式:
touch [选项] 文件
常用参数:
-c
:仅在文件不存在时才创建文件
用法示例:
1)touch /home/user/桌面/
file.txt
:创建一个名为 file.txt
的新文件
因为这里是在桌面上创建文件可以将路径改成系统提供的快捷方式:touch ~/桌面/
file.txt
2)touch -c /home/user/existingfile.txt
:仅在文件 existingfile.txt
不存在时才创建文件
7、cat 命令:
作用:
- 查看文件内容,将文件内容输出到终端中。
格式:
cat [选项] 文件
常用参数:
-n
:显示行号-b
参数用于在显示文件内容时,对非空行进行编号
用法示例:
假设有一个名为 file.txt
的文件,其中内容如下:
Line 1 Line 2 Line 3
1)cat /home/user/桌面/file.txt
:查看 /home/user/桌面/
目录中的 file.txt.txt
文件的内容
2)cat -n /home/user/桌面/file.txt
:显示 /home/user/桌面/
目录中的 file.txt.txt
文件的内容,并附带行号
3)cat -b /home/user/桌面/file.txt
:显示 /home/user/桌面/
目录中的 file.txt.txt
文件的内容,并附带行号(仅非空行才有行号)
8、tac
命令:
作用:
tac
命令用于逆序输出指定文件的内容,按行从最后一行到第一行进行输出。
格式:
tac [选项] 文件
常用参数:
-b, --before
:在每行前面不加空格。-r, --regex
:将模式视为正则表达式。
用法示例:
1)运行 tac file.txt
命令将输出:
9、more
命令
作用:
more
命令用于分页显示长文本文件的内容。它允许你按需查看文件的一部分内容,并在需要时逐页滚动浏览。
格式:
more [选项] 文件
常用按键:
- 按下空格键(Space)会向下滚动一页内容
- 按下回车键(Enter)则会向下滚动一行内容
b
键,它被用于往回查看一页内容- 按下
q
键可以退出more
命令,停止显示更多内容
用法示例:
1)more file.txt
10、echo 命令
作用:
echo
命令用于在终端中显示文本内容或将文本输出到文件。
格式:
echo [选项] [文本]
其中,选项可以用来对输出进行一些控制,文本是要显示或输出的内容。
选项:
-e
:启用转义字符解析。例如,\n
将被解析为换行符。-n
:禁止添加结尾的换行符。默认情况下,echo
输出文本后会自动添加一个换行符\n
。-E
:禁用转义字符解析。默认情况下,echo
会将部分特殊字符进行转义解析,如\n
被解析为换行符。
用于重定向输出的特殊符号:
-
>
:将命令的输出重定向到一个文件,如果文件不存在,则会创建一个新文件;如果文件已存在,则会先清空文件内容再写入新的输出。例如,使用
echo "Hello" > output.txt
将文本 "Hello" 写入到名为 "output.txt" 的文件中。如果该文件已存在,则会被清空。 -
>>
:将命令的输出追加到一个文件末尾,如果文件不存在,则会创建一个新文件。例如,使用
echo "World" >> output.txt
将文本 "World" 追加到名为 "output.txt" 的文件末尾。如果该文件不存在,则会创建一个新文件并写入内容。
用法示例:
1)显示文本:
echo Hello, World!
输出:Hello, World!
2)将文本输出到文件:
echo Hello, Echo! > output.txt
将文本 Hello, Echo!
写入到文件 output.txt
中(若文件已存在,则会覆盖原有内容)。
3)追加文本到文件:
echo New content >> output.txt
将文本 New content
追加写入到文件 output.txt
的末尾(若文件已存在)。
4)显示特殊字符:
echo "Hello\tWorld!"
输出:Hello World!
,这里的 \t
表示水平制表符。
11、less
命令
作用:
- 浏览和查看文本文件的内容
基本格式为:
less [选项] [文件名]
-
选项:
less
命令支持多种选项,用于控制浏览和搜索等功能。常见的选项包括:-N
:显示行号。-i
:忽略搜索时的大小写。-F
:以智能方式判断是否需要使用less
,适用于非交互式环境。-q
:在只有一个文件时,禁止提示 "Press RETURN"。- 等等,还有其他选项可供使用。
-
文件名:指定要浏览的文本文件的名称或路径。
在打开文件后,您可以使用以下命令来浏览和搜索文件:
-
向下滚动页面:
- 使用下箭头键、空格键、PageDown 键:向下滚动一页。
- 使用上箭头键、Backspace 键、PageUp 键:向上滚动一页。
- 使用向下滚轮(如果可用):滚动几行。
-
退出
less
:- 按下
q
键:退出less
并返回到终端。 - 按下
Ctrl + C
:强制退出less
。
- 按下
-
搜索文本:
- 在
less
中按下/
键,然后输入要搜索的关键词,按下回车键进行搜索。 - 使用
n
键:在文件中查找下一个匹配项。 - 使用
N
键:在文件中查找上一个匹配项。
- 在
-
跳转到特定行:
- 按下
g
键:跳转到文件的开头。 - 按下
G
键:跳转到文件的末尾。 - 输入行号 +
g
键:跳转到指定的行号。
- 按下
用法示例:
1)less -N output.txt
12、head
命令
作用:
head
命令用于显示文件的开头几行内容,默认情况下,它显示文件的前 10 行
基本格式:
- head [选项] [文件名]
-
选项:
head
命令支持以下一些常用选项:-n NUM
或--lines=NUM
:显示文件的前NUM
行内容(NUM
是一个整数)。-c NUM
或--bytes=NUM
:显示文件的前NUM
字节内容(NUM
是一个整数)。-q
或--quiet
:当处理多个文件时,不显示文件名。-v
或--verbose
:当处理多个文件时,显示文件名。- 等等,还有其他选项可供使用。
-
文件名:要显示开头内容的文件名称或路径。
用法示例:
1)head -n 5 file.txt:显示文件 file.txt
的前 5 行内容
默认情况下,如果没有指定行数,head
命令将显示文件的前 10 行。您可以根据需要调整要显示的行数。
13、tail
命令
作用:
tail
命令用于显示文件的末尾几行内容,默认情况下,它显示文件的最后 10 行
基本格式:
- tail [选项] [文件名]
-
选项:
tail
命令支持以下一些常用选项:-n NUM
或--lines=NUM
:显示文件的最后NUM
行内容(NUM
是一个整数)。-c NUM
或--bytes=NUM
:显示文件的最后NUM
字节内容(NUM
是一个整数)。-f
或--follow
:实时跟踪文件的变化,类似于tail -f
命令。-q
或--quiet
:当处理多个文件时,不显示文件名。-v
或--verbose
:当处理多个文件时,显示文件名。- 等等,还有其他选项可供使用。
-
文件名:要显示末尾内容的文件名称或路径。
用法示例:
1) tail -n 5 file.txt:
示文件 example.txt
的最后 5 行内容
默认情况下,如果没有指定行数,tail
命令将显示文件的最后 10 行。您可以根据需要调整要显示的行数。
2) tail -f ping.txt:
实时跟踪文件的变化
这在查看日志文件或监视文件更新时非常有用。
14、grep 命令
作用:
grep
是一个强大的文本搜索工具,用于在文件中查找指定字符串
基本格式:
- grep [选项] 要查找的字符串 [文件名]
-
选项:
grep
命令支持许多选项来控制搜索的行为,以下是一些常用的选项:-i
:忽略大小写进行匹配。-r
或--recursive
:递归地搜索指定目录及其子目录下的文件。-l
:只显示包含匹配模式的文件名,而不显示匹配的具体内容。-n
:显示匹配行的行号。-v
:显示不包含匹配模式的行。-c
:显示匹配模式的行数统计。- -E:
-E
命令是grep
命令的一个扩展版本,支持使用扩展正则表达式进行匹配 - 等等,还有其他选项可供使用。
-
文件名:要进行搜索的文件名称或路径。可以指定多个文件,也可以使用通配符进行文件匹配。
用法示例:
1)grep "hello" file
.txt:在文件 file.txt
中搜索包含字符串 "hello" 的行
2)grep -i "hello" file
.txt:忽略大小写进行匹配
3)grep -E [正则] file
.txt:使用正则表达式进行匹配
- 匹配 h 或 t 开头的字符
grep -E '^h|^t' ./file.txt
- 匹配包含特定单词的行:
grep -E 'apple' file.txt
上述命令会匹配并显示 file.txt
文件中所有包含 "apple" 的行。
- 忽略大小写进行匹配:
grep -Ei 'hello' file.txt
加上 -i
选项可以忽略大小写,使得匹配不区分大小写。
- 匹配特定模式的行:
grep -E '[0-9]{3}-[0-9]{4}' file.txt
上述命令会匹配并显示 file.txt
文件中符合 "XXX-XXXX" 格式的行,其中 "X" 表示数字。
- 反向匹配:
grep -Ev 'apple' file.txt
- 使用正则表达式的元字符:
grep -E '\b[A-Za-z]+\b' file.txt
不写了,正则表达式有很多种组合,需要用到的时候直接上网查找即可。
15、find
命令
作用:
- 用于在文件系统中查找文件和目录的工具(grep 命令是在文件中查找字符串)
基本格式:
- find [path] [expression]
- 其中
[path]
是需要查找的目录或文件路径,而[expression]
是查找条件和操作选项。
默认情况下,find
命令会递归地搜索指定目录中的所有子目录和文件,找到符合条件的文件,并根据指定选项执行操作。
以下是一些常见的 find
命令选项:
-name pattern
:按照文件名进行搜索,可以使用通配符模式。-type type
:按照文件类型进行搜索,常用的类型包括f
(普通文件)、d
(目录)、l
(符号链接)等。-size [+/-]size
:按照文件大小进行搜索,可以使用单位c
(字节)、k
(千字节)、M
(兆字节)等。-mtime [+/-]days
:按照修改时间进行搜索,可以使用单位+
(大于)、-
(小于)来匹配指定天数内修改的文件。-exec command {} \;
:对搜索结果执行指定的命令操作。- -user:用于按照文件所有者(用户)进行搜索。可以使用
-user
选项后跟用户名或用户ID来查找属于特定用户的文件。
用法示例:
1)find ~/桌面 -name file.txt
:
按文件名进行搜索:
上述命令会在 /桌面/ 搜索文件名为:
file.txt 的文件
2)find ~/桌面 -type f:
按文件类型进行搜索:
上述命令会在 /桌面/
目录及其子目录中搜索普通文件。
3)find ~/桌面 -type d:
按目录进行搜索:
上述命令会在 /桌面
目录及其子目录中搜索目录。
4)find ~/桌面 -size +10M:
按文件大小进行搜索:
上述命令会在 /桌面
目录及其子目录中搜索大小大于 10MB 的文件。
5)find ~/桌面 -mtime -7:
按时间戳进行搜索:
上述命令会在 /桌面
目录及其子目录中搜索最近 7 天内修改过的文件。
6)find ~/桌面 -name "*.txt" -exec rm {} \; :
执行命令操作:
上述命令会在 /桌面
目录及其子目录中搜索所有以 ".txt" 结尾的文件,并执行 rm
命令来删除这些文件。
总结
这些命令有很多命令对应的参数那就更多了,但是我们不需要全部记住可以先记住命令关键字,命令的具体参数可以使用:man [具体的命令关键字] # 查找命令说明
主要还是要多练多使用,用的多了自然就记住了,有些关键字如果是只记住前面几个字符就可以使用“tab键”进行补全。