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) 是一个删除文件或文件夹的命令。这个命令非常强大,它会不经过回收站直接永久删除,且无法恢复。使用时,请务必通过 pwd 和 ls 确认,确保您要删除的是正确的文件。
$ 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 的基本概念和用法。起初可能觉得难以接近,但只要实际尝试一下本文介绍的几个命令,相信您就能体会到它的便利和强大之处。
- 使用
pwd,ls,cd查看当前位置并自由移动。 - 使用
mkdir,touch,rm随心所欲地操作文件和文件夹。 - 使用管道
|连接命令,简单地实现复杂处理。 - 将重复性工作整理成Bash 脚本,进行智能自动化。
对于 Web 创作者来说,Bash 可以成为与设计工具、代码编辑器一样强大的武器。请务必在今后的工作中,一点点地记住并活用这些命令。
对于那些觉得“可是我的 Windows 电脑上没有 Bash……”的朋友们也请放心。在下一篇文章中,我们将用图文并茂的方式,通俗易懂地解说如何在 Windows 上通过“WSL (Windows Subsystem for Linux)”轻松使用 Bash 的方法!