Linux 基础

一、Linux 简介

Linux是一种典型的多用户、多任务、支持多线程和多 CPU 的操作系统,不同的用户处于不同的地位,拥有不同的权限。Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

主要特点:

  • 开源免费:源代码开放,可自由修改和分发。
  • 多用户、多任务:支持多个用户同时使用,并行运行多个程序。
  • 高安全性:相比其他系统更少受到病毒攻击。
  • 稳定性强:服务器可长时间运行而不需要重启。
  • 高度可定制:可根据需求定制系统。

二、Linux 系统架构

2.1 Linux 体系结构

bash 复制代码
用户空间 (User Space)
├── 应用程序 (Applications)
├── 系统库 (Glibc, libstdc++等)
├── Shell (Bash, Zsh, Fish)
└── 桌面环境 (GNOME, KDE等)

内核空间 (Kernel Space)
├── 系统调用接口
├── 进程管理
├── 内存管理
├── 文件系统
├── 设备驱动
└── 网络协议栈

硬件层 (Hardware)
├── CPU
├── 内存
├── 存储设备
├── 网络设备
└── 其他外设

2.2 系统启动流程

bash 复制代码
1. BIOS/UEFI
   - 硬件自检
   - 查找可启动设备

2. 引导加载程序
   - GRUB2(最常见)
   - 加载内核和initramfs

3. 内核初始化
   - 初始化硬件
   - 挂载根文件系统

4. Systemd初始化
   - 第一个进程(PID 1)
   - 启动所有系统服务

5. 登录界面
   - 显示登录提示
   - 启动用户会话

三、Linux 文件系统

核心理念:一切皆文件

在 Linux 中,几乎所有资源都被抽象为文件:

  • 普通文件、目录
  • 硬件设备(磁盘、键盘、打印机)
  • 进程信息
  • 网络套接字
  • 内核参数

3.1 文件类型

Linux 使用文件类型标识符在 ls -l 命令的第一个字符显示:

bash 复制代码
# 查看文件类型
ls -l

# 输出示例:
drwxr-xr-x  2 user group  4096 Jan 15 dir/
-rw-r--r--  1 user group  1024 Jan 15 file.txt
lrwxrwxrwx  1 user group    10 Jan 15 link -> file.txt
crw-rw----  1 root tty   4, 64 Jan 15 ttyS0
brw-rw----  1 root disk  8,  0 Jan 15 sda
prw-r--r--  1 user group     0 Jan 15 pipe
srwxr-xr-x  1 user group     0 Jan 15 socket

第一个字符含义表:

字符 文件类型
- 普通文件
d 目录文件
l 符号链接
c 字符设备
b 块设备
p 命名管道
s 套接字文件

文件类型的创建:

bash 复制代码
# 创建各种类型的文件

# 1. 普通文件(已有命令)
touch file.txt
echo "content" > file.txt
dd if=/dev/zero of=file.bin bs=1M count=1

# 2. 目录
mkdir newdir

# 3. 符号链接
ln -s target link_name

# 4. 硬链接
ln original link_name

# 5. 设备文件(需要root权限)
# 字符设备
sudo mknod /dev/mychar c 100 0
# 参数:c=字符设备,100=主设备号,0=次设备号

# 块设备
sudo mknod /dev/myblock b 101 0

# 6. 命名管道
mkfifo myfifo
# 或
mknod myfifo p

# 7. 套接字(通常由程序创建)
# Python示例:
# import socket
# sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
# sock.bind("mysocket.sock")

3.2 文件权限

  1. 权限表示法
    在第一个字符所代表的文件类型后面,分别以三个为一组,且均为 rwx 的三个参数的组合。
  2. 权限类别
    • r (read):读取权限,数字来代表的值为:4
    • w (write):写入权限,数字来代表的值为:2
    • x (execute):执行权限,数字来代表的值为:1
    • 特殊权限:s, t
  3. 数字权限表示
权限 二进制 八进制
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7

3.3 文件扩展名

Linux 不强制使用扩展名,但约定俗成:

扩展名 说明 示例
.txt 文本文件 readme.txt
.sh Shell 脚本 backup.sh
.py Python 脚本 script.py
.conf 配置文件 nginx.conf
.log 日志文件 access.log
.gz, .bz2, .xz 压缩文件 archive.tar.gz
.so 共享库 libc.so.6
.lock 锁文件 /var/run/pid.lock

3.4 Linux 目录结构

Linux 采用层次化目录结构,所有文件和目录都从根目录 / 开始。这种结构遵循 FHS(Filesystem Hierarchy Standard) 标准,确保不同发行版的一致性。

bash 复制代码
/                       # 根目录
├── bin/               # 基本命令(所有用户)
├── boot/              # 引导文件
├── dev/               # 设备文件
├── etc/               # 系统配置文件
├── home/              # 用户家目录
│   ├── username/      # 个人用户目录
│   └── ...
├── lib/, lib64/       # 系统库文件
├── media/, mnt/       # 挂载点
├── opt/               # 可选应用程序
├── proc/              # 进程和内核信息(虚拟文件系统)
├── root/              # root用户家目录
├── run/               # 运行时数据
├── sbin/              # 系统管理命令
├── srv/               # 服务数据
├── sys/               # 系统设备信息(虚拟文件系统)
├── tmp/               # 临时文件
├── usr/               # 用户程序和数据
│   ├── bin/, sbin/
│   ├── lib/, lib64/
│   ├── local/         # 本地安装软件
│   └── share/         # 架构无关数据
└── var/               # 可变数据
    ├── log/           # 系统日志
    ├── cache/         # 缓存
    ├── lib/           # 状态信息
    ├── spool/         # 队列数据
    └── tmp/           # 临时文件

3.5 核心目录详解

  • / - 根目录

    • 整个文件系统的起点
    • 包含所有其他目录
    • 通常单独分区
  • /bin - 基本用户命令二进制文件

    • 存放单用户模式下必需的命令
    • 所有用户都可使用
    • 示例:ls, cp, cat, bash
  • /sbin - 系统管理命令二进制文件

    • 存放系统管理员使用的命令
    • 通常需要 root 权限
    • 示例:fdisk, ifconfig, reboot
  • /boot - 启动文件

    • 包含内核文件和引导加载程序
    • vmlinuz - Linux 内核
    • initramfs - 初始内存文件系统
    • grub/ - GRUB 引导程序配置
  • /dev - 设备文件

    • 将硬件设备表示为文件
    • 特殊文件类型:
      • 块设备:硬盘 /dev/sda
      • 字符设备:终端 /dev/tty
      • 虚拟设备:随机数 /dev/random
  • /etc - 配置文件

    • 存放系统和应用程序的配置文件

    • 普通文本文件,可手动编辑

    • 重要子目录:

      bash 复制代码
      /etc/
      ├── passwd      # 用户账户信息
      ├── group       # 用户组信息
      ├── fstab       # 文件系统挂载表
      ├── network/    # 网络配置
      ├── ssh/        # SSH 配置
      └── apt/        # APT 包管理器配置
  • /home - 用户主目录

    • 每个普通用户有自己的子目录
    • 用户对该目录有完全控制权
    • 示例:/home/alice, /home/bob
  • /root - 管理员主目录

    • root 用户的专属目录
    • 普通用户无权访问
  • /lib/lib64 - 共享库文件

    • 存放系统运行所需的共享库(.so 文件)
    • /lib64 用于 64 位系统
    • 类似 Windows 的 DLL 文件
  • /usr - 用户程序资源

    • 级层次结构,包含大多数用户程序

    • 重要子目录:

      bash 复制代码
      /usr/
      ├── bin/      # 用户命令(非必需)
      ├── sbin/     # 管理员命令(非必需)
      ├── lib/      # 程序库
      ├── share/    # 架构无关数据(文档、图标)
      ├── local/    # 本地安装的软件
      └── src/      # 内核源代码
  • /var - 可变数据

    • 存放经常变化的数据

    • 重要子目录:

      bash 复制代码
      /var/
      ├── log/      # 系统日志
      │   ├── syslog
      │   └── auth.log
      ├── cache/    # 应用程序缓存
      ├── spool/    # 待处理数据(打印队列、邮件)
      ├── tmp/      # 临时文件(重启保留)
      └── www/      # Web 内容(某些系统)
  • /tmp - 临时文件

    • 存放临时文件
    • 所有用户可读写
    • 系统重启时自动清空
  • /opt - 可选应用程序

    • 存放第三方大型软件
    • 每个软件在单独子目录
    • 示例:/opt/google/chrome/
  • /mnt/media - 挂载点

    • /mnt - 手动挂载的文件系统
    • /media - 自动挂载的可移动设备
  • /proc - 进程信息虚拟文件系统

    • 内核和进程信息的虚拟接口

    • 文件内容动态生成

    • 重要文件:

      bash 复制代码
      /proc/
      ├── cpuinfo    # CPU 信息
      ├── meminfo    # 内存信息
      ├── <PID>/     # 每个进程的目录
      └── mounts     # 已挂载文件系统
  • /sys - 系统设备虚拟文件系统

    • 提供内核对象信息
    • 用于配置硬件设备
    • 动态反映系统状态
  • /run - 运行时数据

    • 存放系统启动后的运行时信息
    • 替代旧的 /var/run
    • 包含进程 ID 文件、锁文件等

3.6 常见文件系统类型

ext4:稳定可靠的传统选择

核心优势:

  • 极致稳定性:经过15年+生产环境验证
  • 完全兼容:无缝挂载ext2/ext3分区
  • 低资源消耗:内存占用最小,适合资源受限环境
  • 成熟工具链:e2fsprogs工具套件完整可靠

适用场景:

  • 根文件系统:所有Linux发行版的默认选择
  • 嵌入式系统:低资源消耗,高可靠性
  • 传统服务器:不需要高级功能的稳定环境
  • U盘/移动硬盘:跨版本兼容性好

XFS:大文件性能之王

核心优势:

  • 极致大文件性能:8EB最大文件,专为媒体文件优化
  • 高并发I/O:分配组(AG)机制实现真正的并行操作
  • 在线扩展:支持热扩展(仅扩大)
  • 条带化感知:自动优化RAID性能

适用场景:

  • 视频处理服务器:4K/8K视频编辑
  • 数据库服务器:PostgreSQL, MySQL大数据量
  • 科学计算:大型数据集处理
  • NAS存储:大文件归档

Btrfs:现代功能的集大成者

核心优势:

  • 写时复制(CoW):所有操作都创建副本
  • 内置RAID管理:软件RAID 0/1/5/6/10
  • 子卷和快照:秒级创建,空间高效
  • 透明压缩:zstd压缩率优秀

适用场景:

  • 开发测试环境:频繁快照和回滚
  • 桌面系统:/home分区,便于用户数据保护
  • 虚拟化存储:为虚拟机提供快照功能
  • 版本控制服务器:Git仓库存储

ZFS:企业级的数据完整性卫士

核心优势:

  • 端到端校验和:防止静默数据损坏
  • 存储池管理:统一管理多块磁盘
  • 重复数据删除:节省存储空间
  • 高级缓存:ARC + L2ARC + ZIL三级缓存

适用场景:

  • 企业级存储:金融、医疗等关键数据
  • 备份服务器:确保备份数据完整性
  • 虚拟化平台:Proxmox VE, TrueNAS
  • 科研数据:不可再生的实验数据

F2FS:为闪存而生

核心优势:

  • 闪存寿命优化:减少写放大效应
  • 随机写入优化:日志结构减少碎片
  • TRIM优化:更有效的垃圾回收
  • 低延迟:针对SSD/NVMe优化

适用场景:

  • 智能手机/平板:Android data分区
  • 笔记本电脑:SSD系统盘
  • 嵌入式设备:eMMC/UFS存储
  • 高速缓存盘:NVMe加速盘

3.7 文件链接

链接是 Linux 文件系统中创建文件引用的机制,允许一个文件有多个访问路径。Linux 支持两种类型的链接:

  1. 硬链接(Hard Link)
  2. 软链接/符号链接(Soft/Symbolic Link)

3.7.1 硬链接(Hard Link)

  1. 定义与特性

    • 硬链接是指向原始文件 inode 的直接指针
    • 与原始文件共享相同的 inode 编号和数据块
    • 硬链接与原始文件完全平等,没有主次之分
    • 删除任何一个硬链接,只要还有其他链接存在,文件数据就不会被删除
  2. 工作原理图示

    bash 复制代码
    +----------------+
    |   目录项1      |      +----------+
    | 文件名: file1 |----->|          |
    | inode: 1234   |      |  inode   |
    +----------------+      | 编号: 1234 |      +----------------+
                            | 链接数: 2  |----->|    数据块      |
    +----------------+      | 元数据    |      | 文件内容        |
    |   目录项2      |----->|          |      +----------------+
    | 文件名: link1  |      +----------+
    | inode: 1234   |
    +----------------+
  3. 创建硬链接

    bash 复制代码
    # 基本语法
    ln 源文件 链接名
    
    # 示例
    $ echo "Hello World" > original.txt
    $ ln original.txt hardlink.txt
    
    # 验证
    $ ls -li
    total 8
    123456 -rw-r--r-- 2 user group 12 Jan 1 10:00 hardlink.txt
    123456 -rw-r--r-- 2 user group 12 Jan 1 10:00 original.txt
    # ↑ 相同的inode编号和链接数
    
    $ ls -l original.txt
    -rw-r--r-- 2 user group 12 Jan 1 10:00 original.txt
    # ↑ 数字"2"表示链接数
  4. 硬链接的限制

    • 不能跨文件系统(不同分区)
    • 不能链接到目录(避免循环引用)
    • 不能链接到不存在的文件
    • 所有硬链接必须在同一物理设备上

3.7.2 软链接/符号链接(Symbolic Link)

  1. 定义与特性

    • 软链接是包含路径名的特殊文件
    • 类似于 Windows 的快捷方式
    • 有自己独立的 inode 和数据块(存储目标路径)
    • 删除原始文件后,软链接会变成"断链"
  2. 工作原理图示

    bash 复制代码
    +----------------+      +----------+
    |   软链接文件   |----->|          |
    | 文件名: link2  |      |  inode   |
    | inode: 5678   |      | 编号: 5678 |      +----------------+
    +----------------+      | 链接数: 1  |----->|    数据块      |
                            | 元数据    |      | "original.txt" |
    +----------------+      +----------+      +----------------+
    |   原始文件     |      +----------+
    | 文件名: file2  |----->|          |
    | inode: 1234   |      |  inode   |      +----------------+
    +----------------+      | 编号: 1234 |----->|    数据块      |
                            | 链接数: 1  |      | 文件内容        |
                            +----------+      +----------------+
  3. 创建软链接

    bash 复制代码
    # 基本语法(使用 -s 选项)
    ln -s 源文件 链接名
    
    # 示例
    $ ln -s original.txt symlink.txt
    
    # 验证
    $ ls -li
    total 8
    123456 -rw-r--r-- 1 user group 12 Jan 1 10:00 original.txt
    567890 lrwxrwxrwx 1 user group 12 Jan 1 10:00 symlink.txt -> original.txt
    # ↑ 不同的inode,'l'表示链接类型
  4. 软链接的优势

    • 可以跨文件系统
    • 可以链接到目录
    • 可以链接到不存在的文件(断链)
    • 可以创建相对路径或绝对路径链接

3.7.3 硬链接 vs 软链接对比

特性 硬链接 软链接
本质 指向 inode 的指针 包含路径的文本文件
inode 与源文件相同 独立的 inode
跨文件系统 ❌ 不支持 ✅ 支持
链接目录 ❌ 不允许 ✅ 允许
删除源文件 文件仍存在(链接数减1) 链接失效(断链)
文件大小 与源文件相同 路径名的字节数
创建命令 ln source link ln -s source link
相对/绝对路径 自动使用绝对路径 可使用相对或绝对
更新追踪 自动更新 保持创建时的路径

四、Linux 中的特殊符号

4.1 通配符

  1. *: 匹配任意多个字符

    bash 复制代码
    # 匹配所有文件
    ls *
    ls *.txt          # 所有.txt文件
    ls file*.txt      # file开头,.txt结尾
    ls *log*          # 文件名包含log
  2. ?:匹配单个字符

    bash 复制代码
    ls file?.txt      # file1.txt, fileA.txt
    ls ???.txt        # 三个字符的txt文件
    ls test-?.log     # test-1.log, test-a.log
  3. []:字符集合匹配

    bash 复制代码
    # 基本用法
    ls file[123].txt    # file1.txt, file2.txt, file3.txt
    ls [abc]*.txt       # a.txt, b.txt, cat.txt等
    
    # 范围匹配
    ls file[0-9].txt    # file0.txt到file9.txt
    ls [a-z]*.txt       # 小写字母开头
    ls [A-Z]*.txt       # 大写字母开头
    ls [0-9a-f]*.txt    # 十六进制字符开头
    
    # 排除匹配 [!]
    ls [!0-9]*.txt      # 非数字开头
    ls file[!a-c].txt   # 不是a,b,c
  4. {}:花括号扩展

    bash 复制代码
    # 生成序列
    echo file{1..5}.txt      # file1.txt file2.txt ... file5.txt
    echo {a..e}.txt          # a.txt b.txt c.txt d.txt e.txt
    echo file{01..10}.txt    # file01.txt file02.txt ... file10.txt
    
    # 组合扩展
    echo {red,blue,green}-{light,dark}
    # 输出:red-light red-dark blue-light blue-dark green-light green-dark
    
    # 创建多个文件
    touch file_{a,b,c}.txt   # 创建file_a.txt, file_b.txt, file_c.txt
    mkdir -p dir{1..3}/{src,build}
    
    # 嵌套扩展
    echo {a,b{1,2},c}.txt    # a.txt b1.txt b2.txt c.txt

4.2 重定向符号

  1. 标准流编号

    • 0 - 标准输入 (stdin)
    • 1 - 标准输出 (stdout)
    • 2 - 标准错误 (stderr)
  2. 输出重定向

    bash 复制代码
    # 覆盖输出
    command > file.txt        # 标准输出到文件
    command 1> file.txt       # 同上,显式指定
    command 2> error.log      # 错误输出到文件
    
    # 追加输出
    command >> file.txt       # 追加到文件
    command 2>> error.log     # 错误追加
    
    # 同时重定向标准和错误
    command > output.log 2>&1          # 旧语法
    command &> output.log              # bash简化语法
    command > output.log 2> error.log  # 分开重定向
  3. 输入重定向

    bash 复制代码
    # 文件作为输入
    command < input.txt
    sort < data.txt
    
    # Here Document (<<)
    cat << EOF
    这是多行文本
    第二行
    第三行
    EOF
    
    # 带缩进的 Here Document
    cat <<- EOF
        缩进的文本
        会被去除缩进
        EOF
    
    # Here String (<<<)
    grep "pattern" <<< "some text with pattern"
    bc <<< "2+2"
  4. 特殊文件描述符

    bash 复制代码
    # /dev/null - 数据黑洞
    command > /dev/null 2>&1        # 丢弃所有输出
    command 2> /dev/null            # 只丢弃错误
    
    # /dev/zero - 零数据源
    dd if=/dev/zero of=file.bin bs=1M count=10
    
    # /dev/random - 随机数据
    head -c 32 /dev/random > key.bin

4.3 管道和进程控制符号

  1. | - 管道

    bash 复制代码
    # 基本管道
    ls -l | grep "txt"          # 过滤
    ps aux | sort -k4 -nr       # 按内存排序
    cat file.txt | wc -l        # 统计行数
    
    # 多级管道
    ps aux | grep httpd | awk '{print $2}' | xargs kill
    
    # tee命令同时输出到屏幕和文件
    ls -l | tee output.txt | wc -l
    ls -l | tee -a log.txt      # 追加模式
  2. |& - 管道包含标准错误

    bash 复制代码
    command |& grep error       # 包含stderr的管道
  3. & - 后台运行

    bash 复制代码
    # 后台运行
    sleep 10 &
    ./server.sh &
    
    # 查看后台作业
    jobs
    jobs -l
    
    # 前后台切换
    fg %1      # 将作业1调到前台
    bg %2      # 将作业2调到后台
  4. ; - 命令分隔符

    bash 复制代码
    # 顺序执行
    cd /tmp; ls; pwd
    make clean; make; make install
    
    # 注意:即使前面命令失败,后面的也会执行
    false; echo "still runs"  # 会输出
  5. && - 逻辑与

    bash 复制代码
    # 前一个成功才执行下一个
    cd /tmp && ls
    make && make test && make install
    [ -f file.txt ] && echo "文件存在"
  6. || - 逻辑或

    bash 复制代码
    # 前一个失败才执行下一个
    cd /nonexistent || echo "目录不存在"
    command1 || command2 || command3
  7. 组合使用

    bash 复制代码
    # 复杂逻辑
    make && echo "编译成功" || echo "编译失败"
    cd /tmp && ls || echo "切换目录失败"
    
    # 执行命令并检查状态
    command && echo "成功" || { echo "失败"; exit 1; }

4.4 变量和参数相关符号

  1. $ - 变量引用

    bash 复制代码
    echo $HOME
    echo $PATH
    echo "用户: $USER"
    
    # 花括号明确变量边界
    echo "${USER}name"      # 正确:username
    echo "$USERname"        # 错误:试图访问USERname变量
  2. 特殊变量

    bash 复制代码
    $0     # 脚本名
    $1-$9  # 位置参数
    $#     # 参数个数
    $@     # 所有参数(数组)
    $*     # 所有参数(字符串)
    $?     # 上一个命令退出码
    $$     # 当前进程PID
    $!     # 最后一个后台进程PID
    $_     # 上一个命令的最后一个参数
  3. ${} - 变量扩展

    bash 复制代码
    # 默认值
    echo ${VAR:-default}    # 如果VAR未设置或为空,使用default
    echo ${VAR:=default}    # 如果VAR未设置或为空,设为default
    echo ${VAR:+alternate}  # 如果VAR设置了,使用alternate
    echo ${VAR:?错误信息}   # 如果VAR未设置,显示错误并退出
    
    # 子字符串
    STR="Hello World"
    echo ${STR:6}          # World
    echo ${STR:6:3}        # Wor
    echo ${STR: -5}        # World(注意空格)
    
    # 字符串操作
    echo ${#STR}           # 字符串长度:11
    echo ${STR#Hello}      # 最短前缀匹配删除: World
    echo ${STR##* }        # 最长前缀匹配删除:World
    echo ${STR%World}      # 最短后缀匹配删除:Hello 
    echo ${STR%% *}        # 最长后缀匹配删除:Hello
    
    # 数组操作
    ARR=(a b c d)
    echo ${ARR[@]}         # 所有元素
    echo ${#ARR[@]}        # 数组长度
    echo ${!ARR[@]}        # 数组索引
  4. $( ) 和 ` - 命令替换

    bash 复制代码
    # 推荐使用$()
    echo "今天是 $(date)"
    files=$(ls *.txt)
    
    # 旧式反引号
    echo "今天是 `date`"
    
    # 嵌套命令替换
    echo "文件数: $(ls $(pwd) | wc -l)"

4.5 引号相关符号

  1. ' - 单引号(强引用)

    bash 复制代码
    # 所有字符都原样输出
    echo '$HOME'          # 输出:$HOME
    echo 'It\'s a test'   # 错误:需要转义单引号
  2. " - 双引号(弱引用)

    bash 复制代码
    # 变量和命令会被展开
    echo "$HOME"          # 输出:/home/user
    echo "当前用户: $USER"
    echo "时间是: $(date)"
    
    # 部分特殊字符仍有效
    echo "Line 1\nLine 2"  # \n不会转义
    echo -e "Line 1\nLine 2"  # 需要-e选项
  3. \ - 反斜杠(转义字符)

    bash 复制代码
    # 转义单个字符
    echo \$HOME           # 输出:$HOME
    echo "It\'s a test"   # 正确
    echo 价格:\$100
    
    # 续行符
    echo "这是一个很长的文本 \
    需要分成两行写"
    
    # 特殊转义序列
    echo -e "Tab:\t制表符"
    echo -e "换行:\n新行"
    echo -e "退格:\b"
    echo -e "回车:\r"

4.6 路径相关符号

  1. . - 当前目录

    bash 复制代码
    cd .               # 留在当前目录
    ./script.sh        # 执行当前目录脚本
    . ./config.sh      # source命令简写
  2. .. - 上级目录

    bash 复制代码
    cd ..              # 上一级
    cd ../..           # 上两级
    ls ../*.txt        # 上级目录的txt文件
  3. ~ - 家目录

    bash 复制代码
    cd ~               # 当前用户家目录
    cd ~/Documents     # 家目录下的Documents
    echo ~user1        # user1的家目录
  4. - - 上一次目录

    bash 复制代码
    cd /tmp
    cd /usr/local
    cd -               # 回到/tmp
相关推荐
zfj3212 小时前
sshd除了远程shell外还有哪些功能
linux·ssh·sftp·shell
废春啊2 小时前
前端工程化
运维·服务器·前端
我只会发热2 小时前
Ubuntu 20.04.6 根目录扩容(图文详解)
linux·运维·ubuntu
爱潜水的小L2 小时前
自学嵌入式day34,ipc进程间通信
linux·运维·服务器
保持低旋律节奏2 小时前
linux——进程状态
android·linux·php
zhuzewennamoamtf2 小时前
Linux I2C设备驱动
linux·运维·服务器
zhixingheyi_tian3 小时前
Linux 之 memory 碎片
linux
邂逅星河浪漫3 小时前
【域名解析+反向代理】配置与实现(步骤)-SwitchHosts-Nginx
linux·nginx·反向代理·域名解析·switchhosts
梅尔文.古3 小时前
RaspberryPi-如何启用看门狗
linux·运维·服务器