主题
命令行基础
命令行是 Linux 的核心交互方式。图形界面能做到的事,命令行几乎都能做;而命令行能做到的很多事,图形界面做不到。本篇带你掌握日常使用最频繁的命令。
Shell 是什么
Shell 是你和操作系统之间的翻译官。你在终端输入命令,Shell 解析后交给内核执行,然后把结果显示给你。
绝大多数 Linux 发行版默认使用 bash(Bourne Again Shell)。确认你的 Shell:
bash
echo $SHELL
# 输出类似 /bin/bash常用命令速查
下面 10 个命令覆盖了 80% 的日常操作。每条都建议你在终端里敲一遍。
目录浏览
bash
pwd # 显示当前所在目录(Print Working Directory)
ls # 列出当前目录下的文件
ls -l # 详细列表(权限、大小、时间)
ls -la # 包括隐藏文件(以 . 开头)
ls -lh # 文件大小以人类可读的格式显示
cd /path/to/dir # 切换目录
cd ~ # 回到用户家目录
cd - # 回到上一个目录
cd .. # 回到上一级目录文件操作
bash
mkdir mydir # 创建目录
mkdir -p a/b/c # 递归创建多层目录
touch file.txt # 创建空文件,或更新文件时间戳
cp file1 file2 # 复制文件
cp -r dir1 dir2 # 递归复制目录
mv old new # 移动/重命名(移动和重命名是同一条命令)
rm file # 删除文件
rm -r dir # 递归删除目录
rm -rf dir # ⚠️ 强制删除,不提示确认rm -rf 的威力
rm -rf / 会删掉整个系统。rm -rf * 会删掉当前目录下所有内容。使用 rm 前一定三思,尤其是加了 -f(force)参数的时候。
文件查看
bash
cat file # 一次性显示全部内容(适合小文件)
less file # 分页查看(按 q 退出,/ 搜索,n 下一个)
head file # 显示文件前 10 行
head -n 20 file # 显示前 20 行
tail file # 显示文件最后 10 行
tail -f /var/log/syslog # 实时追踪日志(Ctrl+C 退出)文件通配符
通配符让你批量操作文件,省去一个个敲文件名的麻烦:
| 通配符 | 含义 | 示例 |
|---|---|---|
* | 匹配任意多个字符 | ls *.txt 列出所有 txt 文件 |
? | 匹配单个任意字符 | ls file?.txt 匹配 file1.txt, fileA.txt |
[abc] | 匹配括号内的任一字符 | ls file[123].txt 匹配 file1.txt, file2.txt, file3.txt |
[a-z] | 匹配范围内的任一字符 | ls [a-z]*.txt 以小写字母开头的 txt |
bash
# 实用例子
rm *.log # 删除所有 .log 文件
mv *.jpg ~/images/ # 移动所有 jpg 到 images 目录
ls report_202[0-9].* # 列出 report_2020 ~ report_2029 开头的文件管道和重定向
管道 |
管道的本质:把左边命令的输出,作为右边命令的输入。
bash
# 查看 ps 输出中包含 "nginx" 的行
ps aux | grep nginx
# 统计当前目录下有多少文件
ls | wc -l
# 查看最大的 5 个文件
du -sh * | sort -hr | head -5管道是 Linux 哲学「每个程序只做一件事,但做好它」的核心体现。用管道串联小工具,可以组合出强大的功能。
重定向
| 符号 | 含义 |
|---|---|
> | 输出重定向到文件(覆盖) |
>> | 输出重定向到文件(追加) |
< | 从文件读取输入 |
2> | 错误输出重定向 |
&> | 标准输出 + 错误输出一起重定向 |
bash
echo "hello" > file.txt # 写内容到文件(覆盖)
echo "world" >> file.txt # 追加内容到文件
sort < unsorted.txt # 对文件内容排序
ls /nonexist 2>/dev/null # 忽略错误信息
make &> build.log # 把所有输出(包括错误)写入日志/dev/null
/dev/null 是 Linux 的「黑洞」。任何写入它的内容都会被丢弃。当你不想看到某个命令的输出时,把输出重定向到这里。
man 帮助
Linux 自带了超详细的离线手册:
bash
man ls # 查看 ls 命令的手册
man man # 连 man 本身都有手册在 man 页面中:按 / 搜索关键词,n 跳到下一个匹配,q 退出。
记不住参数没关系,随时 man 一下——老手也经常翻手册。
history 历史
bash
history # 查看命令历史
!123 # 重新执行第 123 条命令
!! # 重新执行上一条命令
!$ # 引用上一条命令的最后一个参数
Ctrl+R # 反向搜索历史命令(强烈推荐,输入关键词即可找到)Ctrl+R 是最实用的快捷键
在终端里按 Ctrl+R,然后输入关键词(比如 nginx),bash 会搜索历史中最匹配的命令。再按 Ctrl+R 切换下一个匹配。找到后按回车执行,或按左右方向键编辑。
练习题
在服务器上完成以下操作:
- 创建目录
~/linux-practice,在里面创建logs和backup子目录 - 在
logs目录下创建三个文件:app.log、error.log、access.log - 查看
logs目录的内容,用通配符只列出.log结尾的文件 - 用
echo和>>向app.log追加一行日志 - 用管道统计
/etc目录下有多少文件和目录:ls /etc | wc -l - 用
history查看今天敲过的命令 - 用
man ls查看ls有哪些排序参数
做完对照答案?没有答案——Linux 的问题是开放式的,你操作后得到的结果就是正确答案。关键是理解每一步在做什么。
下一步
掌握了命令行基本操作,接下来深入 Linux 文件系统,了解目录结构和权限模型。