myfreax

如何创建Bash别名

您是否经常发现自己在命令行上键入一个长长的命令或在bash历史记录中搜索以前键入的命令

4 min read
By myfreax
如何创建Bash别名
如何创建Bash别名

您是否经常发现自己在命令行上键入一个长长的命令或在bash历史记录中搜索以前键入的命令?

如果您对这些问题的答案都是肯定的,那么您会发现bash别名会很方便。Bash别名允许您为长长的命令设置便于记忆的快捷命令。

Bash alias别名本质上是一个快捷方式,可以使您不必记住长长的命令,并在使用命令行时消除大量的输入。

例如,您可以为tar -xvfz命令的别名设置tgz的快捷方式。本教程介绍如何创建bash别名,让你在命令行上提高工作效率。

在bash,创建别名非常简单。这是alias alias_name="command_to_run"创建别名的语法。

alias alias_name="command_to_run"

alias关键词用于创建bash别名。接着是声明别名的名称,后跟等号和你要运行的命令。

命令需要用引号括起来,并且等号周围没有间距。每个别名都需要在新的一行上声明。

ls命令可能是Linux命令行中最常用的命令之一。我通常使用ls命令与-la 选项列出所有文件和目录,长列表格式的隐藏文件和目录。

现在我们为ls -al命令创建bash别名ll,它将成为ls -la命令的快捷方式。请在你的终端运行命令alias ll="ls -la"创建bash别名。

alias ll="ls -la"

现在,如果你在终端您输入ll,您将获得与输入ls -la相同的输出。

使用alias命令创建的ll别名只在当前shell会话可用。如果退出shell会话或从另一个终端打开新会话,则别名ll不可用。

要使别名持久化,您需要在~/.bash_profile~/.bashrc文件中声明它。如果你使用的是Zsh,则对应的配置文件是~/.zshrc

使用你喜欢的文本编辑器,在本教程中,我们将使用vim打开文件~/.bashrc

vim ~/.bashrc
# Aliases
# alias alias_name="command_to_run"

# Long format list
alias ll="ls -la"

# Print my public IP
alias myip='curl ipinfo.io/ip'
〜/.bashrc

您应该使用易于记忆的名称命名别名。我们建议你加注释以供将来参考。完成后,保存文件并退出vim

现在我们已经修改Bash的配置文件,我们需要将bash的配置文件加载到当前会话中的,使别名可用于当前shell会话。运行命令source ~/.bashrc

source ~/.bashrc

如您所见,创建简单的bash别名非常简单快捷。如果要使.bashrc更加模块化,可以将别名存储在独立的文件.bash_aliases

最后在在~/.bashrc文件使用source命令加载.bash_aliases文件。

# ~/.bashrc: executed by bash(1) for non-login shells.
....
source .bash_aliases
~/.bashrc

Bash别名 参数

有时您可能需要创建接受一个或多个参数的别名,这时候就需要使用bash函数。创建bash函数的语法非常简单。它们可以有两种不同的格式声明。

要将任意数量的参数传递给bash函数,只需在运行函数将参数放在函数名称后面,参数使用空格分隔。

在函数,可以使用$1$2$3的格式获取在运行函数时指定的参数,1....100对应参数函数名后的位置。$0变量保留给函数名。

function_name () {
  [commands]
}

function function_name {
  [commands]
}

现在创建一个简单的bash函数mkcd,它将根据参数创建目录,然后运行cd命令切换到该目录。

mkcd ()
{
  mkdir -p -- "$1" && cd -P -- "$1"
}
〜/.bashrc

与创建别名一样,将函数添加到~/.bashrc文件后同样需要运行source ~/.bashrc加载mkcd函数。

现在,运行mkcd函数,mkcd将会自动创建目录并切换到该目录。

source ~/.bashrc
mkcd new_directory

如果你想知道什么是--&&这里是一个简短的解释。

--确保您不会意外地向命令传递额外的参数。&&确保第二个命令仅在第一个命令成功时运行。

至此,您应该对如何创建bash别名和函数有一个很好的理解,这将使您在命令行的使用变得更轻松,更高效。如果您有任何问题或反馈,请随时发表评论。