Bash 零基础教程

Bash 简介

Bash Shell 是与 Linux 和 macOS 系统交互的主要接口,它提供了一个强大的命令行环境,用于执行程序、管理文件和自动化任务。

本章将涵盖 Bash Shell 的基本方面,为更高级的脚本编写技术打下坚实的基础。

1. 什么是 Bash Shell?

Bash(Bourne Again Shell 的缩写)是一个命令行解释器(或简称为 shell)。它充当用户和操作系统之间的接口,允许你通过在终端中输入命令来直接执行它们。Bash 不仅仅是一个简单的命令解释器,它同时也是一门编程语言,使你能够编写脚本来自动化各种复杂的任务。

1.1 Bash 的核心特性

  • 命令执行: 执行用户输入的各种系统命令。
  • 脚本编写: 允许你编写包含一系列命令逻辑的自动化脚本。
  • 定制化: 可以通过配置文件进行高度个性化的环境定制。
  • 编程结构: 原生支持变量、控制流(循环、条件判断)和函数。
  • 可扩展性: 可以无缝集成并扩展使用各种外部程序和实用工具。

1.2 为什么要学习 Bash?

  • 无处不在: Bash 是绝大多数 Linux 发行版和 macOS 系统的默认 shell 环境。
  • 自动化: 能够自动化重复性任务,大幅节省时间并减少人为错误。
  • 系统管理: 它是管理和配置服务器、操作系统不可或缺的核心技能。
  • 开发辅助: 在项目的构建过程、自动化测试和 CI/CD 部署中极其有用。
  • 数据科学: 可用于快速的数据处理、文本分析和编写数据管道脚本。

2. 与 Bash Shell 交互

与 Bash Shell 交互的最主要方式是通过终端 (Terminal)。当你打开一个终端窗口时,你通常会看到一个提示符(Prompt),它通常以一个 $ 字符结尾。这个提示符直观地表明 shell 已经准备好接收你输入的命令了。

2.1 基础命令

让我们看一些你可以用来与 Bash Shell 交互的基础命令。诸如 lscdpwdmkdirrm 等核心文件操作命令的更详细解释,将在后续章节中专门介绍。

  • echo: 在终端上打印或显示指定的文本。
echo "你好,世界!"
  • date: 显示当前的系统日期和时间。
date
  • uname: 显示操作系统的系统信息。
uname -a
  • history: 显示你之前在终端中执行过的历史命令列表。
history

3. 命令语法

Bash 命令通常遵循一个非常标准且特定的语法结构:

command [options] [arguments]
  • command (命令): 你想要执行的程序或命令的名称。
  • options (选项): 用于修改命令默认行为的标志(通常以一个或两个连字符 --- 开头)。
  • arguments (参数): 命令执行操作所需的目标数据、对象或文件路径。

语法示例:

ls -l /home/user

在这个具体的命令中:

  • ls命令(list,用于列出目录内容)。
  • -l选项(表示 long listing format,以长格式列出详细信息)。
  • /home/user参数(指定了要列出内容的具体目录路径)。

3.1 获取帮助

Bash 使用 man(manual 的缩写)命令为系统中的程序提供了内置的帮助文档机制。

man ls

执行上述命令将显示 ls 命令的手册页,其中包含了有关其所有用法、支持的选项和参数的详细信息。你可以使用键盘上的方向键在手册页中上下导航阅读,阅读完毕后按 q 键退出帮助界面。

4. Bash 配置文件

Bash 在启动时会读取几个预设的配置文件来定制其行为和环境。这些文件会在开启新的 shell 会话时被自动执行。

4.1 核心配置文件

  • /etc/profile: 系统级配置文件,针对所有用户执行。
  • ~/.bash_profile: 用户级配置文件,仅在启动“登录 shell (login shells)”时执行一次。
  • ~/.bashrc: 用户级配置文件,在每次启动“交互式、非登录 shell”(例如打开一个新的终端标签页)时执行。
  • ~/.bash_logout: 用户级配置文件,当“登录 shell”退出或注销时执行。
提示: 路径中的 ~ 符号代表当前用户的家目录(Home directory)。

5. 定制你的 Shell

你可以通过修改上述提到的配置文件来定制你的个人 shell 体验。开发人员最常见的定制操作包括:

1. Aliases (别名)
为冗长或频繁使用的命令创建简短的快捷方式。

alias la='ls -la'

这行配置创建了一个名为 la 的快捷别名,在终端输入 la 就完全等同于执行 ls -la

2. Environment Variables (环境变量)
设置全局环境变量,这些变量会影响其他程序或脚本的运行行为。

export EDITOR=vim

这将系统默认的终端文本编辑器强制设置为 vim

3. Prompt Customization (提示符定制)
你可以更改命令行提示符的外观和显示的颜色/信息(通常通过修改 PS1 变量)。

生效配置更改:
为了应用你对这些配置文件(如 ~/.bashrc)所做的最新修改,你可以选择关闭并重新打开一个新的终端窗口,或者直接使用 source 命令在当前窗口重新加载该文件:

source ~/.bashrc