🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

Bash 是什么?Linux 新手也能看懂的 Shell 基础与魅力

在制作网站的过程中,我们总会遇到需要操作服务器等情况,这时就得接触“小黑窗”,也就是终端(CUI)。相信很多设计师和前端工程师都会觉得“这东西看起来好难……”“能躲就躲……”。但是,只要稍微了解一点在这个小黑窗中使用的交互式程序——Bash,您的工作效率就会得到极大的提升,Web 制作的世界也会随之变得更加广阔。

本文将用亲切易懂的语言,为 Linux 和服务器操作的新手解说 Bash 的真面目及其基本用法,力求让您一看便懂。文中准备了大量可以即抄即用的示例,涵盖了操作服务器时不可避免的文件操作,以及将枯燥的重复性工作自动化的初步技巧,让您亲身体验“成功运行”的乐趣。让我们把对小黑窗的恐惧,转变为获得新武器的兴奋感吧!


首先,Shell 是什么?Bash 又是什么?

在谈论 Bash 之前,我们先来了解一下它的“上级”——“Shell”。

Shell:连接操作系统与你的“翻译官”

计算机的心脏部分是一个叫做内核 (Kernel) 的程序,它负责管理硬件等操作系统最基本的功能。我们可以把它比作一位国王。我们无法直接向国王(内核)下达命令。

这时,Shell 就登场了。Shell 就像一位“翻译官”或“秘书官”,它能将我们的语言(命令)翻译成国王能听懂的语言。当我们在键盘上输入命令时,Shell 会接收、解释,并传达给内核,让内核执行命令。我们看到的那个“小黑窗”,就是 Shell 正在运行的地方。

Bash:最流行的“翻译官”

就像翻译官有各种各样的人一样,Shell 也有很多种类(如 zsh, fish, csh 等)。其中,目前在 Linux 和 macOS 上使用最广泛、最标准的,就是 Bash (Bourne-Again SHell)。如果没有特殊理由,您在服务器上接触到的 Shell,基本上可以认定就是 Bash。因此,我们可以认为学习 Bash 的用法就等于学习 Linux 的基本命令操作,这样理解完全没问题。


先来体验一下吧!基本的 Bash 命令

百闻不如一见。我们马上来尝试几个基本命令吧。如果您用的是 macOS,请打开“终端.app”;如果是 Windows,请打开 WSL 或 Git Bash 等终端环境,然后复制粘贴以下命令并按回车键。

pwd - 查看当前所在位置

pwd (Print Working Directory) 是一个能告诉您“我现在在哪个文件夹(目录)里?”的命令。要是迷路了,先敲它准没错。

$ pwd
/Users/yourname/Documents

ls - 列出当前目录下的文件和文件夹

ls (List) 用于显示当前目录下的文件和文件夹列表。

$ ls
ProjectA   ProjectB   memo.txt

加上 -l 选项,可以查看更详细的信息,比如文件权限、更新日期等。

$ ls -l
total 8
drwxr-xr-x  3 yourname  staff   96  7  5 10:00 ProjectA
drwxr-xr-x  5 yourname  staff  160  7  5 10:01 ProjectB
-rw-r--r--  1 yourname  staff  512  7  5 10:02 memo.txt

cd - 移动到其他文件夹

cd (Change Directory) 是用于移动到其他目录的命令。感觉就像在 RPG 游戏里从一个城镇移动到另一个城镇一样。

$ cd ProjectA

指定 ..(两个点)可以返回上一级目录。

$ cd ..

文件和文件夹的创建与删除

命令操作的基础就是创建、移动和删除文件或文件夹。这些用 Bash 也能瞬间完成。

mkdir - 创建新文件夹

mkdir (Make Directory) 用于创建一个新的空文件夹。

$ mkdir new-website

touch - 创建新的空文件

使用 touch 命令可以创建一个内容为空的文件。这在创建 HTML 或 CSS 文件模板时非常方便。

$ touch index.html

echo 和 > - 向文件写入文本

echo 是一个将指定字符串输出到屏幕的命令。而通过与 >(重定向)符号结合使用,可以将其输出目标从屏幕更改为文件,从而实现内容的写入。

$ echo "<h1>Hello, Bash!</h1>" > index.html

注意: > 会覆盖文件原有内容。如果想在文件末尾追加内容,请使用 >>


cat - 显示文件内容

使用 cat 命令可以在终端上显示文件内容。我们来确认一下刚才写入的内容吧。

$ cat index.html
<h1>Hello, Bash!</h1>

rm - 删除文件或文件夹

rm (Remove) 是一个删除文件或文件夹的命令。这个命令非常强大,它会不经过回收站直接永久删除,且无法恢复。使用时,请务必通过 pwdls 确认,确保您要删除的是正确的文件。

$ rm index.html

如果要连同文件夹及其内部所有内容一起删除,需要加上 -r (Recursive) 选项。

$ rm -r old-website

Bash 的精髓!连接命令的管道

Bash 的强大功能之一是管道 |。这是一个将某个命令的执行结果作为下一个命令的输入来“连接”起来的功能。可以想象成工厂的传送带,将处理过程一个接一个地传递下去。

例如,如果您想“详细列出文件列表(ls -l),然后从中只显示包含 "index" 字符的行(grep index)”,可以像下面这样连接起来。

$ ls -l | grep "index"
-rw-r--r--  1 yourname  staff    23  7  5 10:30 index.html
-rw-r--r--  1 yourname  staff  1024  7  5 10:31 index.php

像这样通过组合简单的命令,一行就能实现复杂的处理,这正是 Bash 的魅力所在。


用于自动化的 Bash 脚本入门

每次都敲入相似的命令组合是不是很麻烦?这时,我们可以将一系列命令保存在一个文件中,然后一键执行。这就是Bash 脚本

例如,假设每次开始一个新的网站项目时,您总是会创建相同结构的文件夹(css, js, images)和 `index.html`。我们来创建一个名为 `create_project.sh` 的脚本来自动化这个过程吧。

#!/bin/bash
# 用执行时指定的名字创建项目文件夹
PROJECT_NAME=$1
mkdir $PROJECT_NAME
cd $PROJECT_NAME

# 创建各种子文件夹
mkdir css js images

# 创建空的 HTML 和 CSS 文件
touch index.html css/style.css

echo "Project '$PROJECT_NAME' created successfully!"

用以上内容创建一个名为 `create_project.sh` 的文件,然后使用 `chmod +x` 命令赋予它执行权限。


$ chmod +x create_project.sh

之后,只需像 `./create_project.sh 项目名` 这样执行,重复性的工作就能瞬间完成。

$ ./create_project.sh my-new-dream-site
Project 'my-new-dream-site' created successfully!

总结

辛苦了!这次我们学习了小黑窗的真面目——Shell,以及它的代表——Bash 的基本概念和用法。起初可能觉得难以接近,但只要实际尝试一下本文介绍的几个命令,相信您就能体会到它的便利和强大之处。

对于 Web 创作者来说,Bash 可以成为与设计工具、代码编辑器一样强大的武器。请务必在今后的工作中,一点点地记住并活用这些命令。

对于那些觉得“可是我的 Windows 电脑上没有 Bash……”的朋友们也请放心。在下一篇文章中,我们将用图文并茂的方式,通俗易懂地解说如何在 Windows 上通过“WSL (Windows Subsystem for Linux)”轻松使用 Bash 的方法!

【Windows 也能用】通过 WSL 安装 Bash 的步骤(附图)