一文整理Linux最常用命令大全(附详细实例)
前言
提到Linux,很多人的第一反应是——那个黑乎乎的终端界面。确实,不像Windows有图形化界面,Linux大部分操作都要通过命令行完成。但也正因为如此,Linux拥有了高效、灵活、可自动化的独特魅力。
对于初学者来说,面对一堆陌生指令,确实有点发怵。不过不用担心——命令本质就是程序的调用,和调用函数没太大区别。本文将Linux中最常用的指令分门别类,每条都配有实际例子,学完就能直接在终端上手操作。
通过本文,你将掌握:
| 技能 | 应用场景 |
|---|---|
| 文件与目录操作 | 创建、删除、复制、移动文件 |
| 文本查看与处理 | 看日志、搜关键字、统计行数 |
| 打包与压缩 | 传输或备份文件 |
| 文件传输 | 服务器之间互传文件 |
前置知识: 本文不要求你有多少Linux基础,只要会用键盘就行。
一、文件与目录基础概念
目录和文件是什么
| 概念 | 说明 |
|---|---|
| 目录 | 就是文件夹,里面存着文件名和inode的对应关系 |
| 文件 | 内容 + 属性。即使是空文件,也会因为要存元数据占用一个inode |
文件操作分两类:一类是对内容的操作(读、写、追加),另一类是对属性的操作(改权限、改所有者、重命名)。
目录里的隐藏成员
任何目录(包括空目录)都会自动带上两个隐藏目录:
- . 代表当前目录
- .. 代表上级目录
根目录 / 比较特殊,它的上级还是自己。
隐藏文件规则
文件名以 . 开头的都是隐藏文件,默认看不见,要用 ls -a 才能显示。
文件系统长什么样
从根目录 / 开始往下,整个文件系统就是一棵大树:
- 叶子节点:普通文件或空目录
- 非叶子节点:非空目录
Windows的路径用 \ 分隔,Linux用 /,这个别搞混了。
绝对路径 vs 相对路径
| 路径类型 | 长什么样 | 特点 | 啥时候用 |
|---|---|---|---|
| 绝对路径 | /home/user/test.c | 从根目录写起,唯一确定 | 写脚本、配置文件 |
| 相对路径 | ../test.c | 从当前目录出发 | 日常敲命令更方便 |
二、文件与目录操作指令
ls — 看看目录里有什么
功能:查看文件和目录的属性信息
语法:ls [选项] [目录或文件]
| 命令 | 功能 |
|---|---|
| ls | 只显示非隐藏文件名 |
| ls -l | 显示详细属性(权限、大小、时间等) |
| ls -a | 显示所有文件,包括隐藏的 |
| ls -la | 详细属性 + 隐藏文件(最常用) |
| ls -lh | 文件大小用 KB/MB/GB 显示 |
| ls -i | 显示文件的inode编号 |
ls -l 里的三个时间
| 时间 | 含义 | 啥时候会变 |
|---|---|---|
| Access | 最后访问时间 | cat、grep读文件时更新 |
| Modify | 内容修改时间 | 改文件内容时更新 |
| Change | 状态改变时间 | 改内容或改属性都会更新 |
pwd — 我在哪儿?
语法:pwd
显示当前所在目录的绝对路径,迷路了就敲一下。
[user@localhost test]$ pwd /home/user/test
cd — 换个地方待着
语法:cd [目录名]
| 命令 | 功能 |
|---|---|
| cd .. | 回上级 |
| cd ~ | 回家目录 |
| cd - | 回上一次待的目录 |
| cd /tmp | 绝对路径跳转 |
touch — 新建文件 / 改时间
语法:touch [选项] 文件...
touch newFile.txt # 创建文件 touch -a newFile.txt # 只改访问时间 touch -m newFile.txt # 只改修改时间
mkdir — 建目录
语法:mkdir [选项] dirname...
| 选项 | 功能 |
|---|---|
| -p | 递归创建多级目录 |
mkdir mydir # 普通建 mkdir -p a/b/c/d # 一口气建多层
rmdir — 删空目录
只能删空目录!目录里有东西会报错。
rmdir mydir # 删空目录 rmdir -p a/b/c/d # 递归删空目录
rm — 删除(危险!)
语法:rm [-f-i-r-v] [dirName/dir]
| 选项 | 功能 |
|---|---|
| -f | 强制删,不问 |
| -i | 删之前问一下 |
| -r | 递归删目录 |
rm -rf 直接删除不过回收站,极其危险!手抖可能删库跑路
rm file.txt # 删文件 rm -r dir # 删目录 rm -rf dir # 强制删目录(危险!)
cp — 复制
语法:cp [选项] 源 目标
| 选项 | 功能 |
|---|---|
| -f | 强制覆盖 |
| -i | 覆盖前问一下 |
| -r | 递归复制目录 |
cp a.txt b.txt # 复制文件 cp -r dir1 dir2 # 复制整个目录
mv — 移动或重命名
语法:mv [选项] 源 目标
- 目标是文件 → 重命名
- 目标是目录 → 移动过去
mv a.txt b.txt # 改名 mv a.txt temp/ # 移动到temp目录 mv -i a.txt b.txt # 覆盖前问一下
mv本质是改名+改路径,文件内容纹丝不动,放心用
三、文本查看与处理
echo & printf — 输出点什么
echo "hello world" # 自动换行 printf "hello %d\n" 100 # 格式化输出,要手动加\n
cat — 看文件内容
语法:cat [选项] [文件]
| 选项 | 功能 |
|---|---|
| -b | 非空行编号 |
| -n | 所有行编号 |
| -s | 压缩连续空行 |
小文件直接 cat 一眼看完,大文件用 less 才能愉快地翻页浏览
more — 分页看(简陋版)
空格翻页,回车换行,q退出。缺点是只能往下翻,不能往上。
less — 分页看(推荐)
比more强大多了:
- 上下键翻行
- /关键字 搜索
- ?关键字 往上搜
- q 退出
大文件首选less,不用一次性加载到内存
head & tail — 看头看尾
head -20 log.txt # 看前20行 tail -20 log.txt # 看后20行 tail -f log.txt # 实时跟踪日志(很实用!) head -200 log.txt | tail -20 # 取181~200行
wc — 统计
| 选项 | 功能 |
|---|---|
| wc -l | 统计行数 |
| wc -w | 统计单词数 |
| wc -c | 统计字节数 |
grep — 搜内容
语法:grep [选项] "字符串" 文件
| 选项 | 功能 |
|---|---|
| -i | 忽略大小写 |
| -n | 显示行号 |
| -v | 反向选择(不要这行) |
grep "error" log.txt # 找含error的行 grep -n "error" log.txt # 带行号 grep -iv "error" log.txt # 忽略大小写 + 反选
四、查找与帮助
find — 找文件
语法:find 路径 -name "文件名"
find ~ -name "test.c" # 在家目录找test.c find / -name "*.conf" # 全盘找conf文件
which — 命令在哪
which ls # /usr/bin/ls which python # 看python在哪
whereis 只认识"外部公民"(独立程序),cd 这种 Shell 内置命令它找不到也正常
man — 查手册
语法:man [章节] 命令
| 章节 | 内容 |
|---|---|
| 1 | 普通命令 |
| 2 | 系统调用 |
| 3 | 库函数 |
man printf # 看命令 man 3 printf # 看C函数
五、系统信息与工具
uname — 系统信息
uname -r # 内核版本 uname -a # 全部信息
date — 时间
date # 当前时间 date +%Y-%m-%d # 格式化 date +%s # 时间戳 date -d @1700000000 # 时间戳转日期
cal — 日历
cal # 当月 cal 2000 # 2000年全年 cal -3 # 前后三个月
bc — 计算器
bc # 进入交互模式 1+2*3 # 输入表达式
history — 历史命令
history # 查看历史 !100 # 执行第100条 !! # 执行上一条
六、打包与压缩
先搞清楚两个概念
| 概念 | 干啥的 |
|---|---|
| 打包 | 把多个文件合并成一个,体积不变 |
| 压缩 | 用算法把文件变小 |
zip/unzip — 通用格式
yum install -y zip unzip # 安装 zip backup.zip a.txt b.txt # 压缩多文件 zip -r backup.zip dir/ # 压缩目录 unzip backup.zip # 解压 unzip backup.zip -d /tmp # 解压到指定目录
tar — Linux最常用
语法:tar 参数 压缩包名 源文件
| 参数 | 功能 |
|---|---|
| -c | 打包 |
| -x | 解包 |
| -z | gzip压缩/解压 |
| -j | bzip2压缩/解压 |
| -J | xz压缩/解压 |
| -v | 显示过程 |
| -f | 指定文件名(放最后!) |
| -C | 解压到指定目录 |
tar -czf backup.tar.gz dir/ # 打包+gzip压缩 tar -xzf backup.tar.gz -C /tmp # 解压到/tmp tar -cJf backup.tar.xz dir/ # 打包+xz压缩 tar -xJf backup.tar.xz # 解压xz
格式要匹配!.tar.gz用-z,.tar.xz用-J,混用会报错
七、文件传输
rz/sz — 和Windows互传
用Xshell连Linux时很方便:
yum install -y lrzsz # 安装 rz # 弹窗选文件上传 sz file.txt # 下载文件
scp — 跨服务器传
基于SSH,安全可靠:
# 上传 scp local.txt root@192.168.1.200:/root/ # 下载 scp root@192.168.1.200:/root/remote.txt ./ # 传目录加 -r scp -r local_dir root@192.168.1.200:/root/
八、重定向与管道
重定向
把输出写到文件里:
| 符号 | 功能 |
|---|---|
| > | 覆盖写 |
| >> | 追加写 |
echo "hello" > a.txt # 覆盖 echo "world" >> a.txt # 追加
管道
把前一个命令的输出,传给后一个命令当输入:
head -200 log.txt | tail -20 # 取181~200行 cat log.txt | grep "error" | wc -l # 统计error行数
九、终端快捷键
常用快捷键
| 快捷键 | 功能 |
|---|---|
| Ctrl + C | 强制停掉当前程序 |
| Ctrl + D | 退出登录 |
| Ctrl + L | 清屏 |
| Ctrl + R | 搜历史命令 |
| Tab | 自动补全 |
XShell复制粘贴:Ctrl+Insert复制,Shift+Insert粘贴
关机重启
reboot # 重启 halt # 关机 shutdown -h now # 立刻关机 shutdown -r now # 立刻重启 shutdown -h 20:00 # 定时关机 shutdown -c # 取消定时
云服务器别乱关机,可能丢数据
十、命令的本质
命令就是程序,和我们自己写的C代码没区别。它们放在 /bin、/usr/bin 这些目录下,敲命令就是运行这些程序。
Linux有个理念叫"一切皆文件"——键盘是文件,显示器是文件,连进程都可以是文件。统一用"打开-读写-关闭"来操作。
十一、标准流
程序运行时默认打开三个流:
| 流 | 默认指向 | 啥时候用 |
|---|---|---|
| stdin | 键盘 | scanf读输入 |
| stdout | 显示器 | printf输出 |
| stderr | 显示器 | 报错信息 |
十二、几个思考题
学完本文,来试试回答这些问题:
为什么程序退出了,文件数据还在?
答: 因为数据已经写到磁盘上了。程序运行时数据存在内存(RAM)中,断电即失;而磁盘是持久存储介质,除非物理损坏或主动删除,数据会一直保留。
这就是为什么写代码时要记得保存——程序崩溃了,磁盘上的文件可不会丢!
空文件为啥也占空间?
答: 因为文件系统不仅要存文件内容,还要存文件属性(权限、所有者、创建时间等)。这些元数据存储在inode中,每个文件至少占用一个inode,即使文件内容为空。
可以用 ls -i 查看文件的inode编号
重定向>和管道|有什么区别?
答: 本质区别在于数据的流向:
| 符号 | 作用 | 数据最终去哪儿 |
|---|---|---|
| > 或 >> | 重定向 | 写到文件中 |
| ` | ` | 管道 |
以上就是一文整理Linux最常用命令大全(附详细实例)的详细内容,更多关于Linux常用命令的资料请关注脚本之家其它相关文章!
相关文章
Linux Shell echo命令/printf命令/test命令使用及说明
本文介绍了Linux常用的echo、printf和test命令的用法和功能,对字符串输出、格式化显示以及条件测试进行了简明讲解,并提供了相关示例,适合脚本编写参考2025-10-10


最新评论