目录
前言☀️
Linux 最经典的一句话是:「一切皆文件」,不仅普通的文件和目录,就连块设备、管道、socket 等,也都是统一交给文件系统管理的,掌握了基本的文件管理才能更好地开展后续工作。
1.认识文件系统🌸
Linux当中文件结构为树型结构,根目录为 / ,一切文件和目录均在 / 之中,且Linux的虚拟文件系统允许众多不同类型的文件系统共存,并支持跨文件系统的操作。 Linux的文件是无结构字符流式文件,不考虑文件内部的逻辑结构,只把文件简单地看作是一系列字符的序列。
下面认识一些基本的目录存放内容:
- bin:存放二进制可执行命令的目录,比如之前所讲的切换用户命令su,以及ls等命令,均存储在该目录之下。
- dev:用于存储与外部设备有关信息的目录,比如声卡文件,磁盘文件,当你接入摄像头时,与摄像头有关的信息文件均存储在这。
- root:超级用户root的家目录
- home:普通用户的家目录的集合
- etc:存放系统管理和配置文件,比如网络配置文件等
- usr:最庞大的目录,存放应用程序和文件目录
- tep:用于存放一些临时文件
- var:存放需要经常修改内容的文件,比如打印机、邮件等假脱机目录、系统日志文件等
- lib:存放标准程序设计库目录,又叫动态链接共享库目录,目录中文件类似windows里的后缀名为dll的文件。
2.与目录有关的基本操作🌸
命令 | 作用 |
---|---|
ls | 显示当前目录中包含哪些文件和目录 |
tree | 以树形结构查看当前目录包含哪些文件以及子目录内容 |
mkdir | 创建目录 |
rm | 删除文件或目录 |
2.1 ls -【选项】
很多命令后面都带有选项参数,记不住怎么办?欸,别急,我们可以使用 命令 --help 查看当前命令的选项参数都有哪些,分别有什么作用。
下面介绍几个 ls 常用用法:
- ls:显示当前目录中包含哪些可见文件和目录
- ls -a:显示当前目录中的全部文件和目录,包括隐藏文件
- ls -l:以列表的形式展示当前目录中包含哪些文件和目录,并显示有关信息,如文件的权限,所有者,字节大小,上次修改日期。
2.2 tree
这并不是一个Linux自带的命令,在Ubuntu中,得先用 sudo apt install tree 命令,下载tree命令,CentOS中先用sudo yum install tree命令进行下载。他可以显示当前目录下所包含的文件以及子目录中所包含的文件,以树形结构显示。
2.3 mkdir -【选项】
mkdir 目录名1 目录名2 ....:可在当前目录下创建多个空目录
mkdir -p XX/YY/....:在当前目录中创建一个递归目录,创建一个XX文件夹,里面包含YY文件夹。
2.4 rm 【选项】 (慎用!)
rm 文件名1 文件名2...:删除这些文件,注意:rm 命令默认不会提示确认,删除后文件无法通过常规方法恢复,使用时需谨慎。
rm的选项参数如下表所示:
命令选项 | 功能描述 | 示例及说明 |
---|---|---|
-f | 强制删除文件或目录,忽略不存在的文件,不提示确认 | rm -f file.txt 即使 file.txt 不存在,也不会报错,并强制删除该文件。 |
-r 或 -R | 递归删除目录及其内容(包括所有子文件和子目录) | rm -r dir/ 删除 dir/ 目录及其包含的所有文件和子目录。 |
-i | 在删除文件或目录前提示用户确认 | rm -i file.txt 删除 file.txt 前会提示用户是否确认删除。 |
-v | 显示删除文件或目录的详细过程 | rm -v file.txt 删除时会输出类似 removed 'file.txt' 的信息,显示删除操作的详细情况。 |
-d | 仅删除空目录 | rm -d empty_dir/ 删除名为 empty_dir/ 的空目录,若目录不为空则会报错(一般很少使用此选项,通常用 rmdir 更明确)。 |
程序员经典笑话:“干不动了,直接命令 rm -rf / ,删库跑路”(切勿尝试)
3.路径🌸
3.1 绝对路径与相对路径
- 绝对路径:从根目录 / 开始,一直到目标文件的路径,就是绝对路径,比如:/home/user1
- 相对路径:以当前所处的位置为路径起点,就是相对路径,比如:user1/Desktop
与此同时,我们可以用 ./ 表示自己当前所处的位置,以上图为例,相对路径 ./ 等于 绝对路径 /home
符号 ~ 表示当前用户家目录的位置
3.2 路径有关的常用命令(pwd与cd)
- pwd:显示当前所处的路径
- cd:切换路径,到别的文件位置
使用pwd命令可以看到,我们当前所处的路径为/home/user,使用 cd .. 可以返回到当前目录的上一级目录,也就是/home
// 当前所处位置:/home/user
root@user-virtual-machine:/home/user# cd ../Testuser
// 这里是相对路径的写法,..回到当前的上一级目录,即/home,接着访问home目录下的Testuser目录
// 切换到 /home/Testuser 路径
root@user-virtual-machine:/home/Testuser# cd /home/user/Desktop/
// 使用绝对路径访问
小Tip:我们输入路径的时候,可以使用 Tab 键进行快速补齐,系统会帮我们自动补充好。
4.文件的基本操作🌸
4.1 基本操作
命令 | 功能描述 | 示例 |
---|---|---|
cp | 复制文件或目录 | cp file.txt /path/to/destination/ |
mv | 移动或重命名文件或目录 |
|
rm | 删除文件或目录 | rm file.txt (删除文件) |
touch | 创建空文件 | touch newfile.txt |
file | 查看文件类型 | file file.txt |
上述命令都比较简单,大家可以自行在虚拟机上尝试操作。
4.2 文本编辑
命令 | 功能描述 | 示例 |
---|---|---|
nano | 简单易用的文本编辑器 | nano file.txt |
vi /vim | 功能强大的文本编辑器 | vi file.txt |
gedit | GNOME桌面的图形文本编辑器(需图形界面) | gedit file.txt |
- nano:一个最为简便的文本编辑器,当你使用nano编辑文本时,相关操作参数都会显示在下面,你可以使用键盘的 ctrl+对应参数按键 完成对应的操作。
- vi/vim:vim并非自带的文本编辑器,得先使用 sudo apt install vim 或 sudo yum install vim 下载,当你使用他们开始编辑文本时,可以按键盘的 i 或 o 进入编辑模式,此时你就可以输入修改了,接着点击键盘的 Esc 按键,退出编辑模式,此时输入 :q 表示直接退出,不保存本次编辑内容,:q! 表示强制退出,:wq 表示保存内容退出,:wq!表示强制保存内容退出。
- gedit:平常在自己带桌面界面的虚拟机上可以使用,并且编辑十分方便,如同word编辑一样。但在不带界面的服务器上,gedit就没办法运行了。
4.3 文件内容输出
命令 | 功能描述 | 示例 |
---|---|---|
cat | 查看文件内容(适合小文件) | cat file.txt |
more | 分页查看文件内容 | more file.txt |
less | 分页查看文件内容(可上下滚动) | less file.txt |
head | 查看文件开头部分(默认前10行) | head file.txt |
tail | 查看文件结尾部分(默认最后10行) | tail file.txt |
tail -f | 实时查看文件末尾新增内容(常用于日志) | tail -f /var/log/messages |
当然cat命令可以输出多个文件内容,cat 文件1 文件2,cat还可以用于文件内容的合并,例如:
cat file1.txt file2.txt > combined.txt
4.4 文件查找
- find 【选项】
- find 【查找路径】-name “文件名”:路径可以不填,默认为当前路径查找,按文件名查找文件位置。这里的文件名支持通配符,可以用*来匹配省略的部分,具体看下面的说明。
- find 【查找路径】-type -d:查找路径下的所有目录
- find 【查找路径】-type -f:查找路径下的所有文件
第一行命令,查找当前目录中所有以txt结尾的文件位置,使用*字符进行统配。
第二个命令,查找当前目录下所有的目录文件。
- which 【选项】
which命令是用于查找可执行的二进制文件位置的,可以查找命令所在位置,默认只显示一条有关的文件路径,-a选择参数,可以显示全部有关路径。
4.5 文本内容搜索
- grep 【选项】
grep是一个文本搜索工具,用于在文件中搜索与指定模式匹配的行。它支持正则表达式,可以用于复杂的文本匹配。
选项 | 功能描述 | 示例 |
---|---|---|
-i | 忽略大小写 | grep -i "pattern" file.txt |
-v | 反向匹配,显示不匹配的行 | grep -v "pattern" file.txt |
-r 或 -R | 递归搜索目录 | grep -r "pattern" /path/to/directory |
-n | 显示匹配行的行号 | grep -n "pattern" file.txt |
-c | 统计匹配的行数 | grep -c "pattern" file.txt |
-l | 只显示匹配的文件名 | grep -l "pattern" *.txt |
-w | 匹配整个单词 | grep -w "word" file.txt |
- wc 【选项】
wc(Word Count)用于统计文件的行数、单词数和字节数。
选项 | 功能描述 | 示例 |
---|---|---|
-l | 统计行数 | wc -l file.txt |
-w | 统计单词数 | wc -w file.txt |
-c | 统计字节数 | wc -c file.txt |
5.管道符(|) 🌸
管道符 |
是一个非常强大的工具,它允许将一个命令的输出作为另一个命令的输入。这种机制可以实现多个命令的串联,从而完成复杂的任务。
上面的例子中,第二个命令,将ls的输出结果,作为wc命令执行的对象,统计出一共有5个单词,对应当中的5个文件。
第三个命令,同样将ls的输出结果作为grep的输入,从中查找包含txt的部分。