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

新年新终端:以 Unix 方式为目录设置别名 DEV 全球展示挑战赛,由 Mux 呈现:展示你的项目!

新年新终端:用 Unix 方式为目录设置别名

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

本文介绍了如何在 Unix 系统中为目录创建别名,最初发表在我的博客上。此外,您可能也会对Windows 系统中的目录创建别名方法感兴趣。

介绍

我承认,我特别喜欢创建一些快捷方式和脚本来加快终端的工作效率。输入几个字符就能启动好几个命令,这种感觉真的让人兴奋不已。最近我读了 Chiamaka Ikeanyi 的《避免 Shell 地狱:别名拯救世界》,深受启发,想和大家分享一些我每天都在使用的别名技巧。

我们团队负责管理六个项目。每个项目都有自己的代码仓库。此外,我们还有团队开发的开发工具的代码仓库。再加上我们日常使用的其他目录,cd很快就成了我们最常用的命令。

我最喜欢的终端技巧,无论是家用电脑还是工作电脑,都是为cd最常用的目录创建简短易记的别名。如果我想写一篇新文章,只需输入 `git post`blog就能进入我的 Gatsby 代码库。如果需要调整模拟服务器的响应,只需输入 `git post`mock就能开始查看我的 Express.js 代码。我几乎不用再为冗长复杂的相对路径而烦恼。终端操作起来更流畅、更直观,而且——最重要的是——更有趣

创建别名

选择一个你经常使用的目录,并设置一个易于记忆的别名,以便快速跳转到该目录。就我而言,我希望~/blog每次使用blog别名时都能直接跳转到我的目录。

我们来试一试!在终端中运行以下命令:

~$ alias blog="cd ~/blog"
~$ cd some/other/directory/
~/some/other/directory$ blog
~/blog$
Enter fullscreen mode Exit fullscreen mode

无论我们当前处于哪个工作目录,blog现在执行该命令都会直接跳转到指定位置~/blog。任务完成!我们可以关闭终端,结束今天的工作了。

下次,我们只需打开终端……

~$ blog
-bash: blog: command not found
~$
Enter fullscreen mode Exit fullscreen mode

... 哦。

别名仅在终端会话期间有效。每次打开终端都手动重新设置别名有点麻烦,所以我们来想办法让别名持久化。

持久化 Bash 别名

当你启动一个新的交互式 shell 时,终端会运行一个名为 `.htm` 的文件.bashrc,该文件位于你的根目录中。~/.bashrc用你喜欢的编辑器打开它。我用的是 VS Code,但你也可以用 vi、emacs、nano、Atom 或任何其他你喜欢的编辑器:

~$ code ~/.bashrc
~$
Enter fullscreen mode Exit fullscreen mode

(如果.bashrc不存在,那就创建它!)

我们可以把新别名填进去并保存:

alias blog="cd ~/blog"
Enter fullscreen mode Exit fullscreen mode

回到终端后,我们指示终端重新运行.bashrc并接收新的别名:

~$ source ~/.bashrc
~$ blog
~/blog$
Enter fullscreen mode Exit fullscreen mode

在以后的终端会话中,你甚至不需要运行任何命令source,因为终端会自动为你处理这些。你可以尽情地运行blog程序了。

等等!我有一台Mac!

macOS 默认的终端程序莫名其妙地将每个~/.bashrc终端会话都视为登录会话。这意味着macOS 终端程序不会在每个会话中运行,而是会运行~/.bash_profile……(此处原文疑似拼写错误,无法翻译)

可以通过将别名添加到配置文件中来解决这个问题.bash_profile。但是,如果你认为你以后可能会使用不同的终端,那么更可靠的方法是在每次登录时都设置你的.bash_profile源代码:.bashrc

if [ -r ~/.bashrc ]; then
    source ~/.bashrc
fi
Enter fullscreen mode Exit fullscreen mode

有关更多信息,请阅读这篇方便的 OS X 脚本编写.bash_profile指南.bashrc

动态添加 Bash 别名

我们可以使用 Bash 脚本更轻松地为目录创建别名。我喜欢为几乎所有我可能经常访问的目录或工作区都设置别名。.bashrc但是,每次创建目录时都手动修改和重新加载别名会打断我的工作流程。因此,我编写了一个简单的脚本,每次使用命令时都会自动为当前工作目录创建一个持久别名ad

复制以下内容到您的~/.bashrc

function ad() {
    if [[ "$#" -ne 1 ]]
    then
        echo "USAGE: ad <alias>"
        return 0
    elif [[ -n "$(alias $1 2>/dev/null)" ]]
    then
        echo "Alias already exists!"
        return 0
    fi

    echo -e "alias $1=\"cd $(pwd)\"" >> ~/.bashrc
    source ~/.bashrc
    echo "Alias was added successfully."
}
Enter fullscreen mode Exit fullscreen mode

有趣的是第 12 行和第 13 行——其余的只是逻辑性检查。

让我们来ad试用一下新命令!如果您使用的是旧的终端会话,请使用 `.` 命令更新终端别名source ~/.bashrc。然后尝试使用ad

~$ cd ./codebase/Advent_Of_Code_2019
~/codebase/Advent_Of_Code_2019$ ad advent
Alias was added successfully.
~/codebase/Advent_Of_Code_2019$ cd ~
~$ advent
~/codebase/Advent_Of_Code_2019$
Enter fullscreen mode Exit fullscreen mode

ad它已经完全融入到我的日常开发工作中,以至于我经常在创建一个新目录时立即为其创建一个别名。

结论

调整终端设置让我的编程体验更加愉悦,相信你也会有同样的感受。通过将cd命令别名指向最常用的目录,你可以减少处理冗长的绝对路径或相对路径的麻烦。使用终端会变得更快、更直观、更个性化。这难道不令人心动吗?

文章来源:https://dev.to/bendmyers/new-year-new-terminal-alias-your-directories-the-unix-way-4dal