我使用 Bash 的几种方式
在大多数开发者的工具箱中,Bash 是一款被低估的强大工具。以下是一些让它为你效劳的方法。
我的每台机器上都有一个简短易用的 Bash 配置文件,它可以帮助我完成工作。它操作简单,命令易记,不仅能帮我节省一些按键,还能让工作变得更有趣。今天,我将介绍其中几个配置文件,并谈谈我设置它们的原因,以及您可以根据自己的需要自定义它们的方法。
在我开始为您分解设置之前,如果您以前从未使用过 Bash 命令,我将向您提供一些有用的链接来帮助您入门:
虽然在命令行中编写 Bash 本身就很有用,但我发现在.bash_profile
文件中设置命令时功能最强大。这就是魔法的开始!
变量和基本别名
好了!现在你对 Bash 有了更多的了解,我将向你展示我最喜欢的 Bash 用法:变量和创建别名!
在 Bash 中,变量可以用来指向不同的文件夹,让我们编写的函数更加DRY。它们定义时没有使用$
at 赋值,但在使用时会使用 at 调用$
。
mainrepo='main-repo-name'
$ cd $mainrepo
// navigates to "main-repo-name"
别名与变量不同,但用法相似。它们可以包含命令、路径、变量和函数调用。它们还可以包含其他别名!
alias dev="npm run dev"
$ dev
// runs the "npm run dev" command
构建别名
我使用别名来构建一套工具,使我可以更轻松地浏览文件夹、打开应用程序和启动本地环境。
我将在这里概述一个例子来向您展示这是如何工作的。
alias cuppa="code $HOME/Projects/cuppa"
这将创建一个名为“cuppa”(我当前项目的名称)的别名,当我运行该命令时,它会在 VS Code 中为我打开项目文件夹。注意到那个$HOME
变量了吗?它在基于 Unix 的环境中是免费的,指向当前用户的主文件夹。
好的,这样就可以在文本编辑器中打开我的项目文件了,但是终端本身呢?我也有一个别名:
alias current="cd; cd Projects/cuppa"
这里设置了名为“current”的别名来做两件事(现在开始变得神奇了!)。首先,它会cd
进入主文件夹,以确保shell不会混淆在哪里查找文件夹。然后,它会导航到cd Projects/cuppa
当前处于活动状态的文件夹。
一旦我进入该文件夹,我就有了别名,可以帮助我更有效地运行我的 npm 脚本:
alias coverage="npm run coverage"
alias dev="npm run dev"
这里我使用别名coverage
来运行 Jest 测试并生成覆盖率报告。在这种情况下,我们启动了一些别名,因为coverage
package.json 中有一个脚本,它是 的快捷方式jest --coverage --colors
。
同样,npm run dev
是和的快捷方式concurrently \"npm run server\" \"npm run client\"
,其中,甚至server
和client
都是快捷方式!
这些命令都可以设置为 Bash 别名。为了举例说明如何节省命令和按键,下面是我在不使用别名的情况下,在命令行中输入的内容,以便启动并运行我的 Cuppa 应用:
$ code $HOME/Projects/cuppa
$ cd
$ cd Projects/cuppa
$ concurrently
$ nodemon server/server.js
$ webpack-dev-server --config ./webpack.config.js --mode development
使用我的别名设置,我输入的内容如下:
$ cuppa
$ current
$ start
下一级别名
希望你已经见识过 Bash 和别名的一些强大功能。但当我看到那个快捷方式的设置时,我开始琢磨能不能让它更简单一些。好吧,我们可以把别名串起来,组成一个新的别名!它看起来像这样:
alias goodmorning="cuppa; current; start;"
$ goodmorning
现在,当我输入命令时,goodmorning
我告诉shell在VS Code中打开我的项目,导航到项目文件夹,然后启动本地服务器!只需一个单词(你甚至可以用一个字母来设置别名!),我就可以启动并开始工作了。神奇!
注意;
每个命令之间的 。这很重要,这样 Shell 就不会尝试将整个别名作为单个命令运行。在这种情况下,分号代替了 Enter 键。
提示和更多示例
我对创建 Bash 配置文件有一些建议:
- 每次更改配置文件后,别忘了重新加载!如果您想知道为什么别名不起作用,可能是因为 shell 需要重新加载才能反映您的更改。正如您现在可能想到的,我创建了一个别名来帮助我解决这个问题!
alias reload=". ~/.bash_profile"
- 让你的别名保持简单易记。如果系统晦涩难懂,你又记不住,那么别名的实用性就会大打折扣。
- 不要仅仅局限于文件夹导航。您可以使用别名来设置、启动服务器以及执行其他强大的操作。
- 您可以根据需要随时更新别名。我
current
为最常打开的当前项目设置了一个别名,但当别名发生变化时,我会更新我的配置文件以反映新项目。变量是保存这些信息以便在不同别名之间使用的好方法。 - 最重要的是,弄清楚什么对你最有用。如果你的工作流程与我的不同,就没有必要照搬我的任何示例。
以下是 Bash 配置文件的一些示例:
在您进入的文件夹中启动一个简单的服务器cd
,只需传入一个端口
alias simple="python -m SimpleHTTPServer"
$ simple 8000
// This opens a local web server at port 8000
这缩短了 bash 命令行状态,并包括当前目录名称和 git 状态
alias short='export PS1="\\$\[\e[36m\]\W\[\e[m\]\[\e[35m\]\`parse_git_branch\`\[\e[m\] "'
请注意,这里有一个对函数的调用parse_git_branch
。虽然我在本文中没有详细讨论函数,但它们是让你的 Bash 配置文件更加有用的强大方法!
运行此命令即可打开你的 bash 文件进行编辑。将“code”更改为你选择的 IDE(code 会打开 VS Code)
alias open="code $HOME/.bash_profile"
这会将消息回显到终端以确认 bash 配置文件已加载。
echo '************************************************'
echo '************* Bash Profile Sourced *************'
虽然这不是一个别名(该echo
命令仅将其值写入命令行),但它对于确认已加载对配置文件所做的更改很有用。
显示/隐藏隐藏文件夹
alias showhidden="defaults write com.apple.finder AppleShowAllFiles YES"
alias hidehidden="defaults write com.apple.finder AppleShowAllFiles FALSE"
在 Mac 上,按住 option 键并单击 Finder 图标,然后重新启动 Finder 即可使其生效。
最后说明
希望您能看到这里无限的可能性。我个人认为 Bash 自动化是软件开发中最被低估的技能之一,我们可以用它来提高开发效率,从而专注于其他有趣的事情。
以上只是我个人使用 Bash 配置文件来提升日常效率的几个方法。如果您想了解更多,可以查看我的开源 Bash 配置文件evolvebash 。
现在就去使用那个神奇的终端吧!