Linux 基础指令详解 —— 从入门到熟练

Linux 基础指令详解 ------ 从入门到熟练

📌 本文适合 Linux 初学者,涵盖最常用的 20+ 条指令,配合示例帮助快速上手。


1. ls

作用: 列出目录中的文件和子目录信息。

cpp 复制代码
ls [选项] [目录]
选项 作用
-l 显示详细信息(权限、大小、时间等)
-a 显示所有文件,包括隐藏文件(. 开头)
-h 文件大小以 KB/MB 显示,更易读
-t 按修改时间排序,最新优先
-R 递归显示子目录内容

常用示例:

cpp 复制代码
ls -l          # 详细列表
ls -a          # 显示隐藏文件
ls -lh         # 详细 + 易读大小
ls -lhS        # 按文件大小排序(大→小)
ls *.txt        # 只列出 .txt 文件

ls -l 输出解读:

cpp 复制代码
-rw-r--r-- 1 user group 4096 Jun 10 10:00 file.txt
字段 含义
-rw-r--r-- 文件类型 + 权限(所有者/组/其他)
1 硬链接数
user / group 所有者 / 所属组
4096 文件大小(字节)
Jun 10 10:00 最后修改时间
file.txt 文件名

💡 小技巧: .(当前目录)和 ..(父目录)是文件系统的标准组成部分,ls -a 时会显示。


2. pwd

作用: 显示当前所在的完整路径。

cpp 复制代码
pwd
# 输出示例:/home/user/projects

3. cd

作用: 切换工作目录。

复制代码
cd [目录]
命令 效果
cd .. 返回上一级目录
cd ~ 进入当前用户家目录
cd - 返回上次所在目录
cd /home/user/ 绝对路径跳转
cd ../day02/ 相对路径跳转

💡 Linux 目录结构是一棵倒置的树,根节点为 /,所有文件和目录都挂载在其下。


4. touch

作用: 创建空文件,或更新已有文件的时间戳。

复制代码
touch [选项] 文件名
cpp 复制代码
touch file.txt              # 创建空文件(已存在则更新时间戳)
touch a.txt b.txt c.txt     # 同时创建多个文件
touch -a file.txt           # 只更新访问时间
touch -m file.txt           # 只更新修改时间

5. mkdir

作用: 创建目录(文件夹)。

复制代码
mkdir [选项] 目录名
选项 作用
-p 递归创建多级目录(不存在则自动创建父目录)
-m 创建时指定权限
-v 显示创建过程
复制代码
mkdir new_folder                    # 创建单个目录
mkdir dir1 dir2 dir3                # 同时创建多个目录
mkdir -p a/b/c                      # 递归创建多级目录
mkdir -p project/{src,doc,test}     # 一次创建多个子目录

⚠️ 直接 mkdir a/b/ca 不存在会报错,加上 -p 即可解决。


6. rmdir / rm

rmdir ------ 删除空目录

复制代码
rmdir 目录名         # 删除空目录
rmdir -p dir1/dir2   # 递归删除(若父目录也为空则一起删)

rm ------ 删除文件或目录

复制代码
rm [选项] 文件或目录
选项 作用
-r 递归删除目录及其内容
-f 强制删除,不提示
-i 删除前逐一询问确认
复制代码
rm file.txt          # 删除文件
rm -r dir1           # 删除目录(含子文件)
rm -i *.txt          # 交互式删除所有 .txt 文件

严禁执行: rm -rf /,这会删除系统所有文件,造成灾难性后果!

对比 rmdir rm
操作对象 仅空目录 文件或目录
安全性 低(需谨慎)

7. cp

作用: 复制文件或目录。

复制代码
cp [选项] 源 目标
选项 作用
-r 递归复制目录(复制目录必须加)
-i 覆盖前询问确认
-v 显示复制过程
-p 保留原文件权限、时间戳等属性
-u 仅复制比目标更新的文件(增量备份)
复制代码
cp file.txt backup.txt              # 复制并重命名
cp notes.txt ~/Documents/           # 复制到指定目录
cp -r project/ project_backup/      # 递归复制整个目录
cp *.jpg /photos/                   # 复制所有 jpg 文件
cp -p -r website/ /var/www/         # 保留权限和时间戳

8. mv

作用: 移动文件/目录,或重命名。

复制代码
mv [选项] 源 目标
选项 作用
-i 覆盖前提示确认
-v 显示操作过程
-n 禁止覆盖已有文件
-b 覆盖前自动备份(追加 ~ 后缀)
复制代码
mv file.txt /target_dir/         # 移动文件
mv old_name.txt new_name.txt     # 重命名文件
mv old_dir/ new_dir/             # 重命名目录
mv *.png ~/images/               # 批量移动文件

💡 mv vs cp+rm: 在同一文件系统内,mv 只修改路径指向,不复制数据,速度更快;跨文件系统时等同于 cp + rm


9. cat

作用: 查看文件内容(适合短文件)。

复制代码
cat [选项] 文件
选项 作用
-n 对所有行显示行号
-b 只对非空行显示行号
-s 合并连续空行为一行
复制代码
cat file.txt         # 查看文件
cat -n file.txt      # 显示行号

10. more / less

more ------ 基础分页查看

复制代码
more 文件名
按键 功能
空格 向下翻一页
Enter 向下翻一行
q 退出

less ------ 增强版分页查看(推荐)

复制代码
less [选项] 文件名
选项 作用
-N 显示行号
-i 搜索时忽略大小写
-S 禁止自动换行
+F 实时追踪文件末尾(类似 tail -f

交互操作:

按键 功能
空格 / PageDown 向下翻页
b / PageUp 向上翻页
/keyword 向下搜索关键词
?keyword 向上搜索关键词
G 跳到文件末尾
gg 跳到文件开头
q 退出

💡 推荐用 less 替代 more,因为 less 支持上下翻页和文本搜索,功能更完整。


11. head / tail

head ------ 查看文件开头

复制代码
head [选项] 文件

head file.txt          # 默认显示前 10 行
head -n 5 file.txt     # 显示前 5 行
head -c 100 file.txt   # 显示前 100 字节

tail ------ 查看文件末尾

复制代码
tail [选项] 文件
选项 作用
-n 指定显示行数
-f 实时跟踪文件更新(监控日志必备)
-c 指定显示字节数
复制代码
tail file.txt             # 默认显示最后 10 行
tail -n 20 file.log       # 显示最后 20 行
tail -f /var/log/nginx/error.log   # 实时监控日志(Ctrl+C 退出)

组合技巧 ------ 提取文件中间部分:

复制代码
head -n 20 file.log | tail -n 10   # 提取第 11~20 行
命令 查看位置 典型用途
head 文件开头 预览文件结构、CSV 表头
tail 文件末尾 监控日志、查看最新记录

12. date / cal

date ------ 显示或设置系统时间

复制代码
date                        # 显示当前时间
date +"%Y-%m-%d"            # 格式化输出:2024-06-11
date +"%Y-%m-%d %H:%M:%S"   # 完整日期时间
date -d "3 days ago"        # 计算 3 天前的日期
date +%s                    # 输出 Unix 时间戳

常用格式符:

符号 含义 示例
%Y 四位年份 2024
%m 月份 06
%d 日期 11
%H:%M:%S 时分秒 14:30:45
%A 星期全称 Tuesday

cal ------ 查看日历

复制代码
cal           # 显示当月日历
cal 2025      # 显示 2025 年全年日历
cal -3        # 显示上月、本月、下月
cal -y        # 显示当年日历

13. find

作用: 在目录中递归搜索文件,支持按名称、大小、时间、权限等多种条件过滤。

复制代码
find [路径] [条件] [操作]

按名称搜索:

复制代码
find /etc -name "*.conf"       # 搜索 .conf 文件(区分大小写)
find . -iname "readme*"        # 搜索(不区分大小写)

按类型/大小/时间搜索:

复制代码
find ~ -type f -size +1M       # 家目录下大于 1MB 的文件
find /tmp -size -100k          # /tmp 下小于 100KB 的文件
find /backup -mtime +30        # 30 天前修改过的文件

限制搜索深度:

复制代码
find . -maxdepth 2 -name "*.conf"   # 仅搜索当前目录和一级子目录

14. grep

作用: 在文件或输入流中搜索匹配指定模式的文本行,支持正则表达式。

复制代码
grep [选项] "搜索模式" [文件]
选项 作用
-i 忽略大小写
-v 反向匹配(显示不含该模式的行)
-n 显示行号
-r 递归搜索子目录
-c 统计匹配行数
-A NUM 显示匹配行及后 N 行
-w 全词匹配
复制代码
grep -i "error" /var/log/syslog             # 忽略大小写搜索
grep -n "main()" program.c                  # 显示行号
grep -r "TODO" ~/projects/                  # 递归搜索目录
grep -v "^#" /etc/nginx/nginx.conf          # 过滤注释行
grep -i -A 2 "error" error.log             # 显示错误及后 2 行
ps aux | grep -v "grep" | grep "nginx"      # 查找 nginx 进程

常用正则:

模式 含义
^ 行首
$ 行尾
. 任意单个字符
* 前一字符 0 次或多次
[abc] 匹配 a、b 或 c

15. zip / unzip / tar

zip ------ 创建压缩包

复制代码
zip [选项] 压缩包.zip 文件或目录

zip notes.zip notes.txt              # 压缩单个文件
zip -r website.zip /var/www/html/    # 递归压缩目录
zip -e secure.zip private.txt        # 加密压缩(会提示输入密码)
zip -r project.zip src/ -x "*.tmp"  # 排除 .tmp 文件

unzip ------ 解压文件

复制代码
unzip archive.zip                    # 解压到当前目录
unzip project.zip -d ~/projects/     # 解压到指定目录
unzip -l backup.zip                  # 查看压缩包内容(不解压)
unzip -P mypassword secure.zip       # 解压加密文件

tar ------ 打包 / 解包(Linux 首选)

复制代码
tar [选项] 归档文件名 [文件或目录]

常用操作:

复制代码
# 打包并压缩(gzip)
tar -czvf backup.tar.gz /data/

# 解压到当前目录
tar -xzvf backup.tar.gz

# 解压到指定目录
tar -xzvf backup.tar.gz -C /backup/

# 查看归档内容
tar -tzvf backup.tar.gz

选项含义:

选项 作用
-c 创建归档
-x 解压归档
-t 查看归档内容
-z 使用 gzip 压缩
-j 使用 bzip2 压缩
-v 显示过程
-f 指定归档文件名

压缩格式对比:

格式 选项 压缩率 速度
.tar -cf 无压缩 最快
.tar.gz -czf 中等 较快
.tar.bz2 -cjf
.tar.xz -cJf 最高 最慢

💡 选哪个? Linux 系统管理优先用 tar;需要跨平台(Windows/macOS 兼容)用 zip


16. 常用快捷键

快捷键 功能 使用场景
Tab 自动补全命令/路径 输入 ls /et 按 Tab 自动补全为 ls /etc/
Ctrl+C 强制终止当前进程 停止卡住或不想等的命令
Ctrl+D 退出终端或结束输入 相当于输入 exit

其他常用命令:

复制代码
uname -a          # 查看系统信息(内核版本、主机名等)
man ls            # 查看 ls 命令的详细手册
sudo reboot       # 重启系统
sudo shutdown -h now    # 立即关机
sudo shutdown -r +10    # 10 分钟后重启
sudo shutdown -c        # 取消计划的关机

17. Shell 运行原理

Shell 是什么?

Shell 是用户与 Linux 内核之间的桥梁,本质是一个命令行解释器。

用户无法直接操作内核(太底层、太危险),Shell 负责:

  1. 解析用户输入的命令
  2. 转交给内核执行
  3. 返回执行结果给用户

📌 类比理解: 内核像汽车发动机,用户是驾驶员,Shell 就是方向盘和油门------把你的简单动作翻译成发动机能执行的指令。

ls 命令的执行流程

复制代码
用户输入 ls -l
    ↓
Shell 解析命令参数
    ↓
Shell 调用 execve() 系统调用启动 ls 程序
    ↓
内核执行 ls,访问文件系统
    ↓
内核返回文件列表
    ↓
Shell 格式化输出到终端

输出重定向

符号 作用
> 覆盖写入文件
>> 追加写入文件
2> 错误信息覆盖写入
2>> 错误信息追加写入
/dev/null 丢弃输出(黑洞)
复制代码
echo "hello" > file.txt         # 覆盖写入
echo "world" >> file.txt        # 追加写入
ls /no_exist 2>/dev/null        # 错误信息不显示

管道符 |

管道将前一个命令的输出 作为后一个命令的输入,实现命令的串联协作。

复制代码
ls -l /usr/bin | more              # 分页查看目录列表
tail -f app.log | grep "ERROR"     # 实时过滤日志中的错误
ps aux | grep "nginx"              # 查找 nginx 进程

总结: 掌握本文中的命令,已经能应对绝大多数 Linux 日常操作。建议在虚拟机或云服务器中逐一练习,熟能生巧。


如有问题欢迎评论区留言交流!觉得有帮助的话点个赞 👍

相关推荐
minji...1 小时前
Linux 网络基础(五)守护进程化,前后台进程组,作业,会话,setsid(),daemon(),端口号频繁更换问题
linux·运维·服务器·网络·c++·tcp/ip
剑神一笑1 小时前
Linux du 命令深度解析:从磁盘占用统计到目录空间分析
linux·运维·前端
AOwhisky1 小时前
Docker 学习笔记:从生态系统到镜像构建
linux·运维·笔记·学习·docker·容器
CoderMeijun1 小时前
Linux 进程间通信:共享内存详解
linux·共享内存·进程间通信·ipc·shmget
坚持就完事了1 小时前
Ubuntu和Centos中安装软件的命令
linux·ubuntu·centos
程序猿编码1 小时前
Linux 高负载场景下 Web 服务访问日志极速定位工具实现解析(C/C++代码实现)
linux·服务器·c语言·前端·c++
CC城子1 小时前
嵌入式Linux宕机问题GDB调试(二)
linux·gdb
2601_955256471 小时前
服务器入侵应急响应SOP:从发现挖矿病毒到安全加固的完整操作流程
服务器·chrome·安全
lifewange1 小时前
VMware如何安装并配置CentOs镜像
linux·运维·centos