提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

本文围绕Linux基本操作命令展开,以“实用导向”为核心原则,为初学者搭建系统化的学习框架。内容将覆盖日常操作中最核心的场景:文件与目录管理、用户与权限控制、进程管理、系统状态监控等,摒弃冗余的底层原理推导,重点解析命令的基本语法、常用选项及实际应用案例。同时,针对初学者易混淆的知识点(如相对路径与绝对路径、权限符号含义等)进行针对性说明,助力读者快速将命令转化为实操能力,为后续学习Shell脚本编程、服务部署、容器化技术等高级内容筑牢基础。

3.7 创建新目录的方法mkdir

mkdir [选项] 目录位置及名称(绝对路径、相对路径)
-p:递归创建,创建一个已有的目录会报错,加-p则不会报错/当父目录不存在时

在命令行或脚本中,使用 mkdir 命令可以快速创建新目录。以下是具体用法和常见示例:

基本语法

mkdir 目录名

此命令会在当前路径下创建一个名为“目录名”的文件夹。

创建多级目录
添加 -p 参数可自动创建父目录(若不存在):

mkdir -p 父目录/子目录

设置目录权限
通过 -m 参数直接指定权限(如755):

mkdir -m 755 目录名

批量创建目录
支持同时创建多个同级目录:

mkdir dir1 dir2 dir3

在这里插入图片描述

3.8创建空文件touch

使用 touch 命令创建空文件
①文件存在:修改文件或者目录的时间属性,包括存取时间和更改时间。
②文件不存在:创建新文件。

在这里插入图片描述
在这里插入图片描述

创建单个空文件
直接指定文件名即可创建空文件。如果文件已存在,touch 会更新该文件的访问和修改时间戳而不改变内容:

touch filename.txt

批量创建多个空文件
通过空格分隔文件名,可以一次性创建多个空文件:

touch file1.txt file2.txt file3.log

创建带空格的文件名
若文件名包含空格,需使用引号包裹:

touch "new file.txt"

通过大括号扩展创建序列文件
适用于生成有规律的文件名(如带数字序号):

touch report_{1..5}.md  # 创建 report_1.md 到 report_5.md

强制创建文件(忽略符号链接)
默认情况下,若目标文件名是符号链接,touch 会修改链接指向的文件。添加 -h 选项可避免这种行为:

touch -h symlink_file

通过 -t 选项可设置特定时间戳(格式为 [[CC]YY]MMDDhhmm[.ss]):

touch -t 202405301830.00 timestamp_file

使用参考文件的时间戳
-r 选项可复制另一个文件的时间戳到新文件:

touch -r source_file.txt new_file.txt

3.9 创建链接文件ln(软链接、硬链接)

3.9.1软链接(Symbolic Link)

软链接类似于Windows的快捷方式,是一个指向目标文件或目录的特殊文件。删除软链接不会影响目标文件,但删除目标文件后软链接会失效。

创建软链接的命令格式:

ln -s 目标文件路径 链接文件路径

示例:为/home/user/file.txt创建软链接/home/user/link_to_file

ln -s /home/user/file.txt /home/user/link_to_file

查看软链接指向:

ls -l 链接文件路径

3.9.2 硬链接

硬链接是文件系统的直接引用,与原始文件共享相同的inode。删除原始文件后,只要存在至少一个硬链接,文件内容仍然存在。

创建硬链接的命令格式:

ln 目标文件路径 链接文件路径

示例:为/home/user/file.txt创建硬链接/home/user/hardlink_to_file

ln /home/user/file.txt /home/user/hardlink_to_file

查看文件的硬链接数:

ls -l 目标文件路径

关键区别

软链接可以跨文件系统,硬链接不行
软链接可以对目录创建,硬链接通常不能对目录创建
软链接存储的是路径信息,硬链接直接引用inode
删除原始文件后,软链接失效,硬链接不受影响

3.10复制文件或目录cp

基本用法

复制文件到目标目录:

cp source_file destination_directory/

复制文件并重命名:

cp source_file destination_file

递归复制目录

复制整个目录及其内容:

cp -r source_directory destination_directory/

保留文件属性

保留文件的权限、时间戳等属性:

cp -p source_file destination_file

交互模式

覆盖前提示确认:

cp -i source_file destination_file

强制覆盖

不提示直接覆盖现有文件:

cp -f source_file destination_file

显示详细信息

显示复制的文件信息:

cp -v source_file destination_file

创建链接而非复制

创建硬链接:

cp -l source_file destination_file

创建符号链接:

cp -s source_file destination_file

3.11删除文件或目录rm

rm 命令的基本用法

rm 命令用于删除文件或目录。基本语法如下:

rm [选项] 文件或目录

删除文件

直接使用 rm 后跟文件名可以删除单个文件:

rm filename

删除多个文件可以通过空格分隔文件名:

rm file1 file2 file3

删除目录

默认情况下 rm 不能删除目录,需要使用 -r-R 选项递归删除目录及其内容:

rm -r directory_name

强制删除

使用 -f 选项可以强制删除,避免提示确认:

rm -f filename

组合 -rf 可以强制递归删除目录:

rm -rf directory_name

交互式删除

使用 -i 选项会在删除前提示确认,增加安全性:

rm -i filename

删除前显示信息

-v 选项会在删除时显示详细信息:

rm -v filename

注意事项

  1. rm -rf 命令极其危险,特别是以 root 用户执行时可能导致系统文件被删除。
  2. 删除操作通常不可逆,建议先备份重要数据。
  3. 可以使用 --preserve-root 选项防止意外删除根目录(现代系统通常默认启用)。

替代方案

对于更安全的删除,可以考虑使用 trash-cli 工具将文件移动到回收站而非直接删除:

trash-put filename

3.12移动文件或目录/改名mv

基本语法
mv [选项] 源文件或目录 目标文件或目录

常见用途
移动文件或目录
将文件从当前目录移动到指定目录:
mv file.txt /path/to/destination/

将目录及其内容移动到新位置:
mv dirname/ /new/path/

重命名文件或目录
在同一目录下重命名文件:
mv oldname.txt newname.txt

重命名目录(需在同一父目录下):
mv olddir/ newdir/

常用选项
-i:交互模式,覆盖前询问确认
-n:禁止覆盖已存在的文件
-v:显示详细操作过程
-f:强制覆盖,不提示

注意事项
若目标路径是目录,源文件/目录会被移至该目录下,名称不变。
若目标路径是文件名或新目录名,则执行重命名或移动并重命名。

3.13### 查找命令或文件存放目录的方法

which 是一个常用的命令行工具,用于查找可执行文件或命令的存放路径。它会在系统的 PATH 环境变量所列出的目录中搜索指定的命令或文件。

基本语法:

which [命令名]

示例:

which ls

输出可能是:

/bin/ls

使用 whereis 查找更全面的文件位置

whereis 不仅能找到可执行文件,还能定位相关的源代码、手册页等资源。

基本语法:

whereis [命令名]

示例:

whereis python

输出可能包含:

python: /usr/bin/python /usr/lib/python2.7 /usr/include/python2.7

使用 locate 进行快速全局搜索

locate 通过预建的数据库快速查找文件和目录,适合搜索系统中所有匹配的文件名。

基本语法:

locate [文件名或部分名称]

示例:

locate nginx.conf

输出可能包含:

/etc/nginx/nginx.conf
/usr/share/nginx/conf/nginx.conf

使用 find 进行高级搜索

find 提供了更灵活的搜索方式,可以按名称、类型、时间等条件查找文件。

基本语法:

find [搜索路径] -name [文件名]

示例:

find /usr -name "python*"

输出可能列出所有以 python 开头的文件或目录。

使用 type 检查命令类型

type 可以显示命令的类型(如别名、内置命令或外部可执行文件)。

基本语法:

type [命令名]

示例:

type cd

输出可能是:

cd is a shell builtin

注意事项

  • 部分命令可能是别名或内置命令(如 cd),which 可能无法直接找到其路径。
  • locate 需要定期更新数据库(通过 updatedb 命令),否则可能无法搜索到最新创建的文件。
  • find 是实时搜索,速度较慢但结果最准确。查找命令/文件存放目录which

3.14查找文件或目录find

使用 find 命令查找文件或目录

find 是 Linux 和 Unix 系统中用于查找文件和目录的强大工具,支持多种条件筛选,如名称、类型、大小、时间戳等。

基本语法

find [路径] [选项] [表达式]
  • 路径:指定搜索的起始目录,默认为当前目录(.)。
  • 选项:控制搜索行为,如深度限制等。
  • 表达式:定义匹配条件,如名称、类型等。

按名称查找
通过 -name 选项按文件名匹配(区分大小写):

find /path/to/search -name "filename.txt"

使用 -iname 忽略大小写:

find /path/to/search -iname "*.jpg"

按类型查找

  • 文件-type f
  • 目录-type d
find /path/to/search -type d -name "dir_name"

按时间筛选

  • 修改时间(mtime)-mtime n(n 天前)
    find /path -mtime +7  # 7天前修改的文件
    
  • 访问时间(atime)-atime -1(最近1天内访问)

按大小查找

  • 大于指定大小-size +10M(>10MB)
  • 小于指定大小-size -1G(<1GB)
find /path -size +100M -type f

组合条件

  • 与逻辑(默认):多个条件同时满足
    find /path -name "*.log" -mtime +30 -size +1M
    
  • 或逻辑-o
    find /path -name "*.tmp" -o -name "*.bak"
    

执行操作

  • 删除匹配文件-delete
    find /path -name "*.tmp" -delete
    
  • 执行命令-exec
    find /path -name "*.txt" -exec chmod 644 {} \;
    

其他常用选项

  • 限制搜索深度-maxdepth n
    find /path -maxdepth 2 -name "*.conf"
    
  • 排除目录-prune
    find /path -name "node_modules" -prune -o -name "*.js"
    

示例汇总

  1. 查找当前目录下所有 .py 文件:
    find . -name "*.py"
    
  2. 查找 /var/log 中大于 50MB 的日志文件:
    find /var/log -type f -size +50M -name "*.log"
    
  3. 查找用户主目录下 30 天内未访问的临时文件并删除:
    find ~ -atime +30 -name "*.tmp" -delete
    

通过灵活组合选项,find 可以高效完成复杂的文件检索任务。

总结

掌握这些基本命令,不仅能满足日常系统操作需求,更能培养“自主解决问题”的核心能力:通过man 命令或命令 --help查阅手册、利用管道符(|)组合命令实现复杂需求、通过日志命令排查操作异常,这些能力的迁移价值远超出命令本身。需要着重强调的是,Linux学习的关键在于“实操落地”——只有在实际操作中反复尝试(如模拟文件备份、权限配置)、排查错误(如“权限不足”“路径不存在”等常见问题),才能真正将命令内化为技能,而非停留在理论记忆层面。

更多推荐