如何在 Linux 和 Mac 终端命令中添加别名

news/2024/10/18 8:35:11/

在本文中,我们将探讨一种简单的技巧,可以节省您在终端中输入重复命令的时间。

作为开发者,我们花费大量时间在终端上执行命令。无论是浏览目录、运行脚本、更改 Node.js 版本还是版本控制命令,手动输入每个命令都是一项耗时的任务。

对于那些难以记住命令或其关联标志的人来说,这可能变得更加乏味。

别担心!这个问题有一个简单而强大的解决方案。它被称为终端别名。

(本文视频讲解:java567.com)

alias 命令

alias 命令允许您为现有命令创建快捷方式,使它们更容易记住和更快执行。当您定义别名时,实际上是为现有命令创建了一个新标签。

alias 命令的语法

语法很简单:您可以像在大多数编程语言中为变量赋值一样将命令分配给标签。

alias 别名='长命令'

设置别名的语法

让我们解析这个命令以更好地理解它:

  • alias:启用定义别名的终端命令。
  • 别名:这是您要分配给命令的名称或标签。基本上,您将在终端中键入此名称,而不是完整的命令。
  • '长命令':这是您要添加别名的命令。请确保用单引号 (') 包装命令,因为几乎所有命令都包含空格或特殊字符。

预定义别名

终端中已经设置了一些预定义别名。很有可能您甚至不知道它们的存在。

这些别名在系统(/etc/bash.bashrc)或用户特定(~/.bashrc)的 shell 配置文件中定义。

您可以通过执行不带任何选项或标志的 alias 命令来找到所有预定义别名的列表。

alias

以字母顺序列出所有预定义和用户定义的别名。

如何创建跨会话持久的别名

默认情况下,别名仅在当前会话中持久。这意味着,如果您关闭终端,则别名将被删除,之后您将无法使用它。

为了解决这个问题,您必须在 shell 的配置文件中定义别名。Shell 是一个解释器,驻留在终端内部,并在您和操作系统之间建立接口。因此,访问正确的 shell 以及修改正确的配置文件非常重要。

以下是三个最常用的 shell 应用程序的配置文件:

  1. Bash~/.bashrc
  2. Zsh~/.zshrc
  3. 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,很简单:

  1. 如果您在 Linux 上,请按 ctrl+x,如果您在 Mac 上,请按 ^+x
  2. Y 确认更改
  3. 根据您的操作系统按 Enter 或 Return 保存文件。

看?一点都不难 😃

注意事项

在创建别名时,有两件重要的事情您必须记住。

别名受 shell 限制

别名是特定于您正在使用的 shell 的。在一个 shell 中创建的别名在另一个 shell 中不起作用。

如果要在不同的会话中使用别名,您必须创建一个新的别名。没有绕过此注意事项的方法。您可以手动将别名保存到您使用的所有 shell 的配置文件中。

别名默认为会话绑定

别名仅在当前会话中可用。如果打开新的终端窗口或注销,该别名将不可用。

因此,建议始终将别名保存到配置文件中,以便随时使用。

简述

  • alias 命令将 快捷方式 添加到命令或一系列命令中。alias shortcut='existing valid command
  • 将别名保存到 shell 的配置文件中,以便跨会话持久化。每个 shell 都有一个唯一的配置文件。echo "nrd='npm run dev'" >> ~/.bashrc
  • 通过用占位符替换动态值来创建动态别名。占位符必须用 ${} 包装起来。在终端中应执行 alias gp='git pull origin ${branch} 作为 gp main
  • 使用 && 将多个命令添加到别名中。
  • 使用 unalias 命令从当前会话中删除别名。

总结

我希望本文能帮助您优化时间并提高开发者的生产力。如果确实如此,请不要忘记与同事分享,以便他们也可以提高效率。

(本文视频讲解:java567.com)


http://www.ppmy.cn/news/1425387.html

相关文章

docker安装并跑通QQ机器人实践(3)-bs-nonebot搭建

NoneBot2 是一个现代、跨平台、可扩展的 Python 聊天机器人框架(下称 NoneBot),它基于 Python 的类型注解和异步优先特性(兼容同步),能够为你的需求实现提供便捷灵活的支持。同时,NoneBot 拥有大…

解析OceanBase v4.2函数索引进行查询优化

一、如何通过函数索引来进行查询优化 函数索引是一种优化查询的技术,其主要作用在于提升包含函数调用的查询语句的执行速度。当查询语句中包含函数调用时,数据库系统需要逐行执行函数计算,这无疑会增加查询的复杂性,导致查询速度…

day22 java多线程 构造方法 常用方法 守护线程

目录 多线程构造方法 常用方法 守护线程 多线程构造方法 public Thread() :分配一个新的线程对象。 public Thread(String name) :分配一个指定名字的新线程对象。 public Thread(Runnable target) :分配一个带有指定目标新的线程对象。 public Thread(Runnable target,S…

Mini-Gemini: Mining the Potential of Multi-modality Vision Language Models论文解读

文章目录 前言一、摘要二、引言三、文献1、大语言模型文献2、视觉语言模型文献3、LLM作为生成助手文献 四、模型方法与结果1、Dual Vision Encoders3、Patch Info Mining4、Text and Image Generation1、Text-image Instructions2、Generation-related Instructions 五、实验结…

【QT进阶】Qt Web混合编程之CMake VS2019编译并使用QCefView(图文并茂超详细版本)

往期回顾 【QT进阶】Qt Web混合编程之CEF、QCefView简单介绍-CSDN博客 【QT进阶】Qt Web混合编程之VS2019 CEF的编译与使用(图文并茂超详细介绍)-CSDN博客【QT进阶】Qt Web混合编程之QWebEngineView基本用法-CSDN博客【QT进阶】Qt Web混合编程之VS2019 C…

AI容器化部署开发尝试 (一)(Pycharm连接docker,并部署django测试)

注意:从 Docker 19.03 开始,Docker 引入了对 NVIDIA GPU 的原生支持,因此若AI要调用GPU算力的话docker版本也是有要求的,后面博客测试。 当然本篇博客还没设计到GPU的调用,主要Pycharm加Anaconda的方案用习惯了&#…

本文为解决:前端json传String格式时间参数,后端无法解析。

有的人说单独写一个localDateTime配置类,看了一下可以不用。 直接写WebMvcConfig里面就行 import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.ser.std.ToS…

VSCode断点调试(ROS)

0、安装ros插件 在扩展商店中安装ROS插件(Microsoft) 1、修改CMakeList.txt # set(CMAKE_BUILD_TYPE "Release") // 注释Release模式 set(CMAKE_BUILD_TYPE "Debug") // 设置为Debug模式 # set(CMAKE_CXX_FLAGS_RELEASE &…