Skip to content

命令行基础 ​

命令行是 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 切换下一个匹配。找到后按回车执行,或按左右方向键编辑。

练习题 ​

在服务器上完成以下操作:

  1. 创建目录 ~/linux-practice,在里面创建 logs 和 backup 子目录
  2. 在 logs 目录下创建三个文件:app.log、error.log、access.log
  3. 查看 logs 目录的内容,用通配符只列出 .log 结尾的文件
  4. 用 echo 和 >> 向 app.log 追加一行日志
  5. 用管道统计 /etc 目录下有多少文件和目录:ls /etc | wc -l
  6. 用 history 查看今天敲过的命令
  7. 用 man ls 查看 ls 有哪些排序参数

做完对照答案?没有答案——Linux 的问题是开放式的,你操作后得到的结果就是正确答案。关键是理解每一步在做什么。

下一步 ​

掌握了命令行基本操作,接下来深入 Linux 文件系统,了解目录结构和权限模型。

有问题或补充?欢迎留言