# Linux 命令基础

URL: https://caijiao.org/linux/commands/basics
Source: docs/linux/commands/basics.md
Description: Linux命令行基础教程，学习命令格式、参数、选项、帮助系统、命令历史和快捷键等基础知识，为Linux系统管理和日常操作打下坚实基础。

在Linux系统中，命令行是与系统交互的主要方式之一。掌握命令行基础对于有效地使用Linux系统至关重要。本章节将介绍Linux命令的基本概念、使用方法和常用技巧。

## 命令的基本格式

Linux命令通常遵循以下基本格式：

```bash
command [options] [arguments]
```

- `command`: 命令的名称
- `options`: 命令的选项，通常以 `-` 或 `--` 开头
- `arguments`: 命令的参数，如文件名、目录名等

### 示例

```bash
ls -la /home
```

在这个例子中：
- `ls` 是命令名
- `-la` 是选项（`-l` 表示长格式，`-a` 表示显示所有文件包括隐藏文件）
- `/home` 是参数（指定要列出的目录）

## 命令选项

命令选项用于修改命令的行为。Linux命令的选项通常有两种形式：

### 短选项

以单个连字符 `-` 开头，后跟单个字母。多个短选项可以组合使用。

```bash
ls -la  # 等价于 ls -l -a
```

### 长选项

以两个连字符 `--` 开头，后跟完整的单词。长选项通常用于提高可读性。

```bash
ls --all --format=long  # 等价于 ls -la
```

## 帮助系统

Linux提供了强大的帮助系统，可以帮助用户了解命令的用法。

### man 命令

`man` 命令用于查看命令的手册页。

```bash
man ls
```

手册页通常包含以下部分：

- **NAME**: 命令名称和简要描述
- **SYNOPSIS**: 命令的语法格式
- **DESCRIPTION**: 命令的详细描述
- **OPTIONS**: 命令的所有选项
- **EXAMPLES**: 使用示例
- **SEE ALSO**: 相关命令或文档

### --help 选项

大多数命令都支持 `--help` 选项，可以快速查看命令的基本用法。

```bash
ls --help
```

### info 命令

`info` 命令提供比 `man` 更详细的文档，特别是对于GNU项目的命令。

```bash
info ls
```

## 命令历史

Linux shell会记录用户输入的命令历史，可以通过以下方式访问和使用：

### 查看历史记录

```bash
history
```

### 使用历史命令

- 使用上下箭头键浏览历史命令
- 使用 `!n` 执行历史记录中第n条命令
- 使用 `!!` 重复执行上一条命令
- 使用 `!command` 重复执行最近一次以command开头的命令

## 命令补全

按Tab键可以自动补全命令、文件名和目录名，提高输入效率。

- 输入部分命令名后按Tab键，会自动补全命令
- 输入部分文件名或目录名后按Tab键，会自动补全相应名称
- 如果有多个匹配项，连续按两次Tab键会显示所有可能的选项

## 常用快捷键

以下是一些常用的命令行快捷键：

| 快捷键 | 功能 |
|-------|------|
| Ctrl + A | 光标移动到命令行开头 |
| Ctrl + E | 光标移动到命令行结尾 |
| Ctrl + C | 终止当前命令 |
| Ctrl + Z | 暂停当前命令，放入后台 |
| Ctrl + D | 退出当前shell或EOF |
| Ctrl + L | 清屏 |
| Ctrl + R | 搜索命令历史 |
| Ctrl + U | 删除从光标到行首的内容 |
| Ctrl + K | 删除从光标到行尾的内容 |
| Ctrl + W | 删除从光标到单词开头的内容 |

## 标准输入、输出和错误

Linux命令使用三个标准文件描述符：

- **stdin (0)**: 标准输入
- **stdout (1)**: 标准输出
- **stderr (2)**: 标准错误输出

### 重定向

- `>`: 将标准输出重定向到文件
  ```bash
  ls -la > file.txt
  ```

- `>>`: 将标准输出追加到文件
  ```bash
  echo "hello" >> file.txt
  ```

- `<`: 将文件内容作为标准输入
  ```bash
  cat < file.txt
  ```

- `2>`: 将标准错误重定向到文件
  ```bash
  ls non_existent_file 2> error.txt
  ```

- `&>`: 将标准输出和错误都重定向到文件
  ```bash
  command &> output.txt
  ```

### 管道

管道操作符 `|` 用于将一个命令的输出作为另一个命令的输入。

```bash
ls -la | grep "txt"
```

在这个例子中，`ls -la` 的输出被传递给 `grep "txt"` 命令，只显示包含 "txt" 的行。

## 环境变量

环境变量是在shell环境中定义的变量，影响命令的执行。

### 查看环境变量

```bash
env       # 显示所有环境变量
echo $PATH  # 显示特定环境变量的值
```

### 设置环境变量

```bash
VAR_NAME=value  # 设置临时环境变量
export VAR_NAME=value  # 设置可被子进程继承的环境变量
```

## 命令组合

可以使用以下操作符组合多个命令：

- `;`: 顺序执行多个命令，不管前一个命令是否成功
  ```bash
  command1 ; command2
  ```

- `&&`: 逻辑与，只有前一个命令成功时才执行后一个命令
  ```bash
  command1 && command2
  ```

- `||`: 逻辑或，只有前一个命令失败时才执行后一个命令
  ```bash
  command1 || command2
  ```

## 总结

本章节介绍了Linux命令的基础知识，包括命令格式、选项、帮助系统、命令历史、命令补全、常用快捷键、重定向、管道、环境变量和命令组合等内容。掌握这些基础知识是使用Linux命令行的第一步，也是后续学习更高级命令和技巧的基础。

在后续章节中，我们将学习更多具体的Linux命令，包括文件操作命令、目录操作命令、文本处理命令和系统信息命令等。
