在本文中,我们将探讨一种简单的技巧,可以节省您在终端中输入重复命令的时间。
作为开发者,我们花费大量时间在终端上执行命令。无论是浏览目录、运行脚本、更改 Node.js 版本还是版本控制命令,手动输入每个命令都是一项耗时的任务。
对于那些难以记住命令或其关联标志的人来说,这可能变得更加乏味。
别担心!这个问题有一个简单而强大的解决方案。它被称为终端别名。
(本文视频讲解:java567.com)
alias
命令
alias
命令允许您为现有命令创建快捷方式,使它们更容易记住和更快执行。当您定义别名时,实际上是为现有命令创建了一个新标签。
alias
命令的语法
语法很简单:您可以像在大多数编程语言中为变量赋值一样将命令分配给标签。
alias 别名='长命令'
设置别名的语法
让我们解析这个命令以更好地理解它:
alias
:启用定义别名的终端命令。别名
:这是您要分配给命令的名称或标签。基本上,您将在终端中键入此名称,而不是完整的命令。'长命令'
:这是您要添加别名的命令。请确保用单引号 ('
) 包装命令,因为几乎所有命令都包含空格或特殊字符。
预定义别名
终端中已经设置了一些预定义别名。很有可能您甚至不知道它们的存在。
这些别名在系统(/etc/bash.bashrc
)或用户特定(~/.bashrc
)的 shell 配置文件中定义。
您可以通过执行不带任何选项或标志的 alias
命令来找到所有预定义别名的列表。
alias
以字母顺序列出所有预定义和用户定义的别名。
如何创建跨会话持久的别名
默认情况下,别名仅在当前会话中持久。这意味着,如果您关闭终端,则别名将被删除,之后您将无法使用它。
为了解决这个问题,您必须在 shell 的配置文件中定义别名。Shell 是一个解释器,驻留在终端内部,并在您和操作系统之间建立接口。因此,访问正确的 shell 以及修改正确的配置文件非常重要。
以下是三个最常用的 shell 应用程序的配置文件:
- Bash:
~/.bashrc
- Zsh:
~/.zshrc
- Fish:
~/.config/fish/config.fish
让我们尝试在 Bash 中添加一个新别名。
echo "alias nrd='npm run dev'" >> ~/.bashrc
让我们解析这个命令:
echo
:一个终端命令,允许您在终端命令中写入内容。"alias ..."
:这是我们在前面讨论的内容。它是一个别名命令,为npm run dev
命令添加了nrd
别名。>>
:告诉终端将左侧的内容(别名命令)追加到右侧的文件中。在我们的情况下,我们将其存储在 bash 配置文件中。~/.bashrc
:这是从 echo 命令添加内容的文件。
不要忘记将 ~/.bashrc
替换为您的 shell 配置文件。
如何创建动态别名
通常情况下,您需要使用重复的命令,但根据您的需求稍作修改。最好的例子是 Git 命令。在这种情况下,您可以为命令添加一个替代项,该替代项在终端执行时将被动态选项/参数替换。
alias gpll='git pull --rebase origin ${branch}'
在执行命令时,您需要将 ${branch}
替换为您想要从中拉取更改的分支。这是从 main
分支拉取更改的方式:
gpll main
您还可以为别名添加多个替代项。只需确保以正确的实际值顺序编写别名即可:
alias gpll='git pull --rebase ${remote} ${branch}
在执行命令时,您需要将 ${remote}
和 ${branch}
替换为适当的值,如下所示:
gpll origin main
如何为多个命令创建别名
有时您需要按顺序使用多个命令。您也可以为此创建别名。使用 &&
将每个命令分隔开,这会在左侧命令执行后执行右侧命令。
gpsh='git pull --rebase && git push'
如何删除别名
如果您想要从当前会话中删除别名,可以使用 unalias
命令。此命令只接受一个参数 —— 别名名称。
unalias my-alias-name
但是,如果您想要删除保存在配置文件中的别名,则需要从文件本身中删除它。您可以使用 Nano 等简单的文本编辑器来执行此操作。
nano ~/.bashrc
向下滚动到底部找到所有别名并删除您不再需要的别名。
完成后,您可以保存后退出编辑器。这是我可以介绍关于无法退出基于终端的文本编辑器的一个段子的地方。但是使用 Nano,很简单:
- 如果您在 Linux 上,请按
ctrl
+x
,如果您在 Mac 上,请按^
+x
。 - 按
Y
确认更改 - 根据您的操作系统按 Enter 或 Return 保存文件。
看?一点都不难
标签:shell,配置文件,alias,别名,命令,Mac,终端,Linux From: https://www.cnblogs.com/web-666/p/18146563