---
title: Linux基础命令
date: 2021-04-07 16:04:58
author: 文永达
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/00E0F0ED-9F1C-407A-9AA6-545649D919F4.jpeg
tags: [Linux, Shell, 命令行]
categories: [操作系统, Linux]
---

# Linux基础命令

## 简介

> 在 Linux 系统中，没有盘符的概念，只有一个盘，以 `/` 为根目录。
> Linux 没有图形化界面，通过指令操作。
> Linux 指令可以传递参数。
> 在 Linux 系统下，万事万物皆文件。

---

## Linux文件结构

Linux 系统主要目录结构如下：

| 目录 | 说明 |
|-----|------|
| `/bin` | 存放二进制可执行文件（重点） |
| `/sbin` | 存放二进制可执行文件，只有 root 用户才能访问 |
| `/etc` | 存放系统配置文件（重点） |
| `/usr` | 存放共享的系统资源 |
| `/home` | 普通用户的家目录（重点） |
| `/root` | root 用户的家目录 |
| `/dev` | 存放设备文件 |

---

## 快捷键

| 快捷键 | 功能 |
|-------|------|
| `Ctrl + u` | 删除命令行开始至光标处 |
| `Ctrl + k` | 删除光标至命令行结尾 |
| `Ctrl + a` | 光标移到最前 |
| `Ctrl + e` | 光标移到最后 |
| `Tab` | 自动补全 |
| `↑` / `↓` | 浏览历史指令 |

---

## 目录操作

### 查看IP地址

```shell
ip addr
ip a
```

### 清屏

```shell
clear
```

### 查看当前目录

```shell
pwd
```

### 跳转目录（cd）

**基本语法**：

```shell
cd [目录路径]
```

**常用示例**：

```shell
# 跳转指定目录（root目录下的www）
cd /root/www

# 返回跳转前的目录
cd -

# 跳转上一级目录
cd ../

# 跳转根目录
cd /

# 跳转root目录
cd ~

# 跳转至主目录（后面跟个空格即可）
cd
```

---

## 文件操作

### 列出目录内容（ls）

**基本语法**：

```shell
ls [选项] [目录]
```

**常用参数**：

| 参数 | 说明 |
|-----|------|
| `-l` | 以长格式显示文件详情 |
| `-a` | 显示所有文件（包括隐藏文件） |
| `-h` | 以人类可读的方式显示文件大小 |
| `-t` | 按修改时间排序 |
| `-R` | 递归显示子目录 |

**常用示例**：

```shell
# 列出当前目录下的所有文件及目录（不含隐藏的）
ls

# 以长格式显示当前目录中的文件和目录
ls -l

# 显示当前目录中的所有文件（包括隐藏文件）
ls -a

# 以人类可读的方式显示文件大小
ls -lh

# 按修改时间排序
ls -t

# 递归显示子目录
ls -R

# 显示指定文件的详细信息
ls -l /etc/passwd
```

### 创建目录（mkdir）

**基本语法**：

```shell
mkdir [选项] 目录名
```

**常用参数**：

| 参数 | 说明 |
|-----|------|
| `-p` | 创建多级目录 |

**常用示例**：

```shell
# 创建单级目录
mkdir test

# 创建多级目录
mkdir -p /root/test/subdir
```

### 复制文件（cp）

**基本语法**：

```shell
cp [选项] 源文件 目标路径
```

**常用参数**：

| 参数 | 说明 |
|-----|------|
| `-r` | 递归复制目录 |

**常用示例**：

```shell
# 复制文件到指定目录
cp aa.txt init/

# 复制目录及其内容到另一个目录
cp -r init spring/
```

### 移动/重命名文件（mv）

**基本语法**：

```shell
mv [选项] 源文件 目标路径
```

**常用参数**：

| 参数 | 说明 |
|-----|------|
| `-f` | 覆盖前不提示 |
| `-r` | 强行覆盖（慎用） |

**常用示例**：

```shell
# 重命名文件
mv aa.txt xiaoqiang.txt

# 移动文件到目录
mv bb.txt spring/

# 覆盖前不提示
mv -f spring aaaaa
```

### 删除文件（rm）

**基本语法**：

```shell
rm [选项] 文件/目录
```

**常用参数**：

| 参数 | 说明 |
|-----|------|
| `-f` | 强制删除，无确认提示 |
| `-r` | 递归删除目录 |

> ⚠️ **注意**：`rm -rf` 命令非常危险，请谨慎使用！

**常用示例**：

```shell
# 删除文件
rm xiaoqiang.txt

# 强制删除文件
rm -f spring.xml

# 递归删除目录
rm -r init

# 递归强制删除（慎用！）
rm -rf bbbbb

# 删除空目录
rmdir aa

# 删除当前目录所有文件（慎用！）
rm -rf *
```

---

## 文件详情说明

执行 `ls -l` 后，文件详情格式如下：

```
drwxr-xr-x 2 root root 6 Apr 11 2018 home
```

| 位置 | 含义 |
|-----|------|
| 第1位 | `d` 表示目录，`-` 表示文件 |
| 第2-4位 | 文件创建者的权限（r=读，w=写，x=执行） |
| 第5-7位 | 同组用户的权限 |
| 第8-10位 | 其他用户的权限 |
| 第11位 | 链接数 |
| 创建者 | 文件创建者 |
| 所属组 | 创建者所在的组 |
| 大小 | 文件占用空间（字节） |
| 日期 | 最后修改时间 |
| 名称 | 文件名或目录名 |

---

## 输出操作

### 打印输出（echo）

```shell
# 打印一句话
echo "Hello World"

# 向文件写入内容（会追加并换行）
echo "内容" >> file.txt
```

### 退出操作

```shell
# 退出几乎所有操作
Ctrl + c
```