发布于 2026-01-06 5 阅读
0

Bash Script Tool Kit DEV 的全球展示挑战赛,由 Mux 呈现:展示你的项目!

Bash脚本工具包

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

在我的博客文章《Bash脚本入门101》中,我介绍了如何从零开始编写一个简单的Bash脚本。这篇博客旨在提供一个Bash命令参考(或工具包),方便您在创建新的Bash脚本时使用,并帮助您开启Bash脚本世界无限的生产力可能。

Pushd 和 Popd

我在这篇关于别名的博客中详细介绍了 pushd 和 popd 这两个命令。别名是编写单行 Bash 脚本的绝佳方式,所以如果您还不熟悉 Bash 别名,我强烈建议您了解一下。pushd 和 popd 为 cd 命令提供了一种替代方案,它们可以保留历史记录,并允许您回溯执行。当然,它们并不一定完全取代 cd 命令。

假设你当前位于某个~/Downloads目录,pushd ~/Documents/projects/my-project然后你想返回到项目目录。如果你使用popd`--returns` 命令,它会带你回到下载目录,所以如果你想回到项目目录,你有两种选择:

  • pushd ~/Documents/projects这里必须使用绝对路径,因为我们没有办法直接向上移动一个目录。优点是能保留 pushd 的历史记录。缺点是需要多输入一些命令。
  • cd ..你从当前目录移动到了父目录。优点是输入方便。缺点是会破坏pushd历史记录链。> 注意:如果你经常使用项目目录,并为其设置了别名,那么当你在实际的项目文件夹中时,只需输入该项目目录的别名即可返回到当前目录,并保持 pushd 历史记录链的完整性,而无需输入完整的绝对路径

绝对路径与相对路径

如果你在项目目录中,并且cd my-project/正在pushd my-project输入相对路径,那么相对路径就是相对于你当前所在目录的路径。

绝对路径类似于:cd ~/Documents/projects/my-project/pushd ~/Documents/projects/my-project/。无论您在文件系统中的哪个位置,这都会带您到您的 my-projects 目录,这在 bash 脚本中使用时非常强大。

变量

许多编程语言都使用变量。在 Bash 中,变量通常用全大写字母命名,并在前面加上 $ 符号来告诉 Bash 这是一个变量。

声明变量:

声明变量的典型语法:

NAME="Jimmy McBride"
Enter fullscreen mode Exit fullscreen mode

现在,如果你将该内容保存到你的 .bashrc 文件中,然后重新加载终端并输入,echo "$NAME"它应该会返回“Jimmy McBride”。

Bash 变量:

Bash 自带一些现成的变量可供使用。以下是我最常用的一些变量:

  • $PATH:返回所有可用于放置 bash 脚本的 bin 文件夹路径。
  • $HOME:返回您的家庭路由。通常看起来像home/username
  • $USERNAME:返回您的用户名。
  • $PWD:返回当前工作目录
  • $1、$2 等:当你输入 bash 脚本名称时,脚本就会运行。你还可以输入额外的参数。例如,$1 会成为你在脚本名称后输入的第一个参数,依此类推。

例子:

文件名:新项目

#!/bin/bash

# Push to projects directory with an absolute path
pushd ~/Documents/projects

# Run create-react-app in projects directory
yarn create react-app "$1"

# Move inside the new project folder with a relative path
pushd "$1"

# Open project in VS Code
code .

# Start server
yarn start
Enter fullscreen mode Exit fullscreen mode

在这里我们可以输入命令new-project my-project,它会创建一个以我们第一个参数(在本例中为“my-project”)命名的全新 React 应用,然后进入该目录,在 VS Code 中打开该项目并启动服务器。

由于我们在脚本开头使用了绝对路径,因此无论我们身处文件系统的哪个位置,它都会将我们带到项目目录。然后,我们使用该命令并在相应的目录中运行 create-react-app。我们只需要在项目目录内使用相对路径,因为我们已经位于目标文件夹中。

复制或移动文件和目录

移动文件的语法:

mv <target> <destination>
# or
mv <target> <target> <destination>

# Examples

# Moves file1 into folder1
mv file1 folder1

# Moves file1 and file2 into folder1
mv file1 file2 folder1

# Moves folder1 and file1 into folder2
mv folder1 file2 folder1
Enter fullscreen mode Exit fullscreen mode

复制文件和文件夹的语法是:

cp <target> <destination>

# Copies file1 into folder1
cp file1 folder1

# If you want to copy an empty folder somewhere:
cp folder1 folder2

# If the folder is not empty, you want to copy it recursively:
cp -r folder1 folder2
Enter fullscreen mode Exit fullscreen mode

结论

这些只是 Bash 在编写脚本时提供的众多工具中的一小部分。我发现自己最常用的就是这些命令。随着我学习的深入和 Bash 脚本编写能力的提高,我会更新这篇博客,所以请务必将其添加到您的阅读列表中!您最喜欢使用的 Bash 命令有哪些?欢迎在下方评论区分享您的想法和意见!

文章来源:https://dev.to/jimmymcbride/bash-script-tool-kit-56i7