创建接受参数的Bash别名
1.概述
在使用 Bash 脚本或 Linux 命令时,我们经常会一次又一次地编写相同的命令。很多时候,这些命令很长,需要重复执行——例如,每天登录远程机器,将本地文件复制到远程机器,或者在目录中查找隐藏文件或链接。
我们可以使用alias 命令将冗长单调的 shell 命令替换为另一个更短的名称。在本教程中,我们将解释创建别名的步骤,并学习如何在 Bash shell 中将参数传递给它。
2. 创建 Bash别名
** alias命令有助于创建一个替代名称,我们可以用它来替代复杂的 Linux 命令和脚本**。创建别名的语法很简单:
alias <alias_name>="<command to run>"
例如,我们可以创建一个别名 ’ l ’ 列出当前文件夹中的所有文件和目录:
alias l="ls -alrt"
3. 创建带参数的别名
有时我们需要创建一个接受参数的别名。由于在 Bash 中创建的alias命令不直接接受参数,因此我们必须创建一个 Bash函数 。Bash函数的语法是:
<function_name> {
<commands>
}
或者
function <function_name> {
<commands>
}
在定义函数时,我们使用*$1、$2等作为变量来标识传递给函数的参数。$0是用于函数名的保留变量。这是一个名为mkcd*的函数的示例:
~soft $ mkcd() { mkdir -p -- "$1" && cd -P -- "$1"; }
~soft $ pwd
/var/home/user/soft
~soft $ mkcd newdir
~newdir $ pwd
/var/home/user/soft/newdir
注意:别名命令只是在 Bash shell 中将一个文本替换为另一个文本。考虑上面定义的别名’ l ‘的例子。让我们使用 ’ l ’ 列出文件系统中某个路径中可用的文件:
[~user ]$ l Pictures/
total 308
drwx------. 1 user user 504 May 25 20:33 ..
drwxrwxr-x. 1 user user 42 Jun 4 13:02 old
drwxr-xr-x. 1 user user 312 Jun 4 13:02 new
-rw-r--r--. 1 user user 154716 Jun 4 13:03 a.png
drwxr-xr-x. 1 user user 168 Jun 8 09:43 .
-rw-r--r--. 1 user user 156060 Jun 8 09:43 b.png
请注意,在上面的示例中,“ l”替代了“ ls -alrt ”。由于我们在别名之后立即传递文件路径,因此在这种情况下我们不需要使用函数。
4. 删除别名
我们可以使用unalias 命令从 Bash 会话中删除定义的别名。unalias命令的语法非常简单:
unalias <alias_name>
例如,让我们从当前 Bash 会话中删除“ l ”别名:
unalias l
同样,我们将使用unset 命令从当前 Bash 会话中删除定义的 Bash函数。unset命令的语法也很普通:
unset <function_name>
例如,我们可以通过键入以下命令从当前 Bash 会话中删除mkcd函数:
unset mkcd
5. 创建永久别名
从命令行创建时,别名仅在当前 Bash 会话中有效。为了使别名在我们所有的 Bash 会话中永久可用,我们需要在~/.bash_profile
or~/.bashrc
文件中声明它。
我们将在*~/.bashrc文件中添加别名*:
# Aliases
# alias alias_name="<command to run>"
# Long format list
alias l="ls -alrt"
注意:别名应简短易记。建议我们向它们添加评论以供将来参考。