alias别名,自定义一个命令

用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。alias的作用仅限于该次登入的操作。若要每次登入是即自动设好别名,可在"~/.bashrc"中设定指令的别名。这里是设置用户层次的,系统层次记录的更多"/etc/proflie.d"目录下,在这里定义可用作用在所有用户上,但一般不建议这样操作。

语法:

alias 定义别名='实际命令' 

若不加任何参数,则列出目前所有的别名设置。

在管理和维护Linux系统的过程中,将会使用到大量命令,有一些很长的命令或用法经常被用到,重复而频繁地输入某个很长命令或用法是不可取的。这时可以使用命令别名功能将这个过程简单化。这个时候就可以提现别名命令的好处了。

其实“ls”与“ll”其实都是别名的。怎么去看这个别名呢?使用“which”来查看如图1所示。

图片关键词

图1 使用which命令查看ls与ll实际命令与所在路径


有的命令是有“alias”的,有的是没有的,“alias”表示是由一个命令加选项的组合形成一个新的命令(也就是自定义一个命令),比如“ls”不想使用“alias”别名,那可以使用绝对路径,如图2所示。

图片关键词

图2 以绝对路径来使用命令



发现使用绝对路径“/usr/bin/ls”是不带颜色的,这是有人会问“/bin/ls”不也是可以吗?其实这两个都是一个文件来着,“/bin/ls”是一个软链接文件,在这先不说软链接文件了。

假如你运行的别名命令不知道它真正的命令是什么,可以运行“which”来查看如图3所示。

图片关键词

图3 使用which命令来查找别名的实际命令与所在路径


怎么查看系统中已经定义好的命令别名呢?要查看已经定义的命令别名,可以使用alias命令:alias命令将输出所有已经定义的命令别名  ,也就是开始说的不加任何选项参数如图4所示。

图片关键词

图4 查看所有定义保存下来的别名命令


可以看到“which”本身也是一个别名,它是查看一个文件所在路径的。有个概念名为“PATH”的系统环境变量,表示什么意思呢?可以使用“echo”命令来查看一下内容是什么,如图5所示。

图片关键词

图5 ehco 出环境变量的具体内容


它就是命令的一系列的路径,如果你的命令在这些目录下面,你可以直接运行这些命令就可以生效,那如果没有在这些目录下,你一直运行命令是没生效的,这就是“PATH”的作用。“which”查看一个命令所在路径,实际上是在“PATH”下面这些目录去查找的,当然有“alias”除外,肯定是要先查一查这个命令在“alias”里有没有做别名。像“ls”它就有做别名。


定义别名的语法:

  alias 【要定义的别名名称】 ‘别名实际作用

我们来自定义一个命令,比如,想定义一个“yaho”这个命令为“ls -lahti”,它本身是没有这个命令的,如图6所示。

图片关键词

图6 本身系统是没用这个yaho的命令


想要让这个命令生效该怎么做呢?那可以用“alias”别名命令来给它做一个别名,如图7所示。

图片关键词

图7 使用"alias"别名命令来定义"yaho"命令并使用这个命令


直接运行“yaho”它就生效,那用“which”看呢?它实际上是“ls -lahti”。如图8所示。

图片关键词

图8 使用"which"查看"yaho"命令的实际命令与所在路径



这个"ls -lahti"才是"yaho"的实际命令,而"yaho"只是使用了"alias"别名命令定义的一个别名命令。


取消自定义别名

    语法:unalias [别名名称]

比如要取消刚刚定义的"yaho"别名命令,则具体语法"unalias yaho" 即可取消该定义的别名命令,如图9所示。

图片关键词

图9 使用"unalias"取消别名命令来取消"yaho"别名命令后系统提示未找到该命令


保存别名设置:

当系统重新启动或用户重新登录时,使用alias命令定义的别名将会丢失。可以在系统别名配置目录下"/etc/proflie.d"添加别名配置,但这种方式定义的别名对所有的用户都生效,通常不建议使用这种方法。如果要定义全局别名,通常建议将别名命令添加到用户家目录下的.bashrc文件中。

例如定义全局别名:echo "alias yaho='ls -lahti'">> /root/.bashrc

    这条命令将"alias yaho='ls -lahti"添加到配置文件"/root/.bashrc"中。

    也可以使用编辑命令"vim"/"vi"命令来编辑".bashrc"文件追加上"alias yaho='ls -lahti'"。

    注意:在对".bashrc"这样的配置文件进行操作时,一定要谨慎,否则有可能会损坏用户配置文件。因此上面的命令中使用的是">>"而不是">",">>"表示将内容追加到文件结尾而">"则表示覆盖掉原本内容,如果使用这个符号则原本".bashrc"的文件内容全被清空只留下"alias yaho='ls -lahti"。如图10所示。

图片关键词

图10 在"/root/.bashrc"文件最后插入一行内容


echo "alias yaho='ls -lahti'">>/root/.bashrc的意思是在".bashrc"文件内容最后追加上内容"alias yaho='ls -lahti'"。但要使其生效,需要重新加载一次该配置文件,如图11所示。

图片关键词

图11 重新加载一次".bashrc"配置文件使其生效


因为别名已经保存在用户配置文件中,它是永久成效的,不管你再哪登录都被视为生效,需要切换一下用户再切换回来改变一下终端信息,即可测试到。重新登录一次即可正常生效。这个只针对“root”用户生效,如果某个用户想要定义自己的命令别名,可以将命令添加到用户家目录中的文件".bashrc"配置文件中。例如用户“yaho”要定义用户自己的别名如图11所示。

图片关键词

图11 不同用户定义保存的别名只能对定义的用户有效果

在这里我们可以试试普通用户"yaho"来使用"root"用户刚刚定义的"yaho"别名,它是不生效的,如图12所示。

图片关键词

图12 不同用户定义保存的别名只能对定义的用户有效果

现在我们切换回"root"用户来使用"yaho"用户刚刚定义的别名,如图13所示。

图片关键词

图13 不同用户定义保存的别名只能对定义的用户有效果


图片关键词

图16 在不同用户定义保存的别名命令只对此用户有效

在这注意提醒:echo的语法是: echo “内容”。而alias语法是alias  命名命令=‘实际命令’。所以一定要注意语法的双引号与单引号,用错了命令命名可是要付出代价的!