CentOS 7 之 Linux 命令别名

本文通过答题的形式,了解使用 Linux 命令别名,系统环境为 CentOS 7 版本。使用alias命令,查看系统中的命令别名,设置临时别名,设置命令永久别名,设置命令别名注意事项。

一、答题


题目:在 root 权限下操作。已知/data目录下有一个test.txt文件,如何执行命令把/data/test.txt文件,拷贝到/root/data目录下,并且该目录下也有个一同名文件test.txt。复制文件时,遇到同名文件,直接覆盖,不让系统提示询问,是否覆盖输入 yes/no ,有几种方法?

  • 方法 1,使用\cp命令。

    1. [root@centos7 ~]# cp /data/test.txt /root/data/
    2. cp: overwrite ‘/root/data/test.txt’? y
    3. [root@centos7 ~]# \cp /data/test.txt /root/data/
    4. [root@centos7 ~]#
  • 方法 2,使用cp命令的,绝对路径也叫全路径,复制文件。

    1. [root@centos7 ~]# /usr/bin/cp /data/test.txt /root/data
    2. [root@centos7 ~]#

如何获取命令绝对路径?使用which命令。

  1. [root@centos7 ~]# which cp
  2. alias cp='cp -i'
  3. /usr/bin/cp
  4. [root@centos7 ~]#

获取cp命令的绝对路径是/usr/bin/cp

知识点:cp命令的参数-i用于操作提示询问。为什么执行cpcp -i效果一样,同样会提示询问?因为cpcp -i的别名,它们之间是等效的。

命令别名的好处:

  • 防止运行危险命令。
  • 简化命令,提高效率。

二、如何设置一个命令别名


1. 查看系统中的别名

使用alias命令,查看系统中的命令别名。

查看全部别名:

  1. [root@centos7 ~]# alias
  2. alias cp='cp -i'
  3. alias egrep='egrep --color=auto'
  4. alias fgrep='fgrep --color=auto'
  5. alias grep='grep --color=auto'
  6. alias l.='ls -d .* --color=auto'
  7. alias ll='ls -l --color=auto'
  8. alias ls='ls --color=auto'
  9. alias mv='mv -i'
  10. alias rm='rm -i'
  11. alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
  12. [root@centos7 ~]#

查看部分别名:

  1. [root@centos7 ~]# alias cp mv rm
  2. alias cp='cp -i'
  3. alias mv='mv -i'
  4. alias rm='rm -i'
  5. [root@centos7 ~]#
2. 设置临时别名

设置别名注意事项:

  • 等号 = 两边不能有空额。
  • 等号 = 后面用一对单引号 '
  • 单引号 ' 中包裹的必须是能够执行的命令。

设置rm命令临时别名为echo Do not use rm.

  1. [root@centos7 ~]# alias rm='echo Do not use rm.'

使用rm命令:

  1. [root@centos7 ~]# rm /data/test.txt
  2. Do not use rm. /data/test.txt

查看刚刚设置的rm别名:

  1. [root@centos7 ~]# alias rm
  2. alias rm='echo Do not use rm.'

这种临时别名只是临时的,断开链接,或者重启系统后,就恢复了。查看rm命令别名:

  1. [root@centos7 ~]# alias rm
  2. alias rm='rm -i'

所以下面介绍,如何设置永久命令别名。

3. 设置命令永久别名

编辑/etc目录下的profile文件:

  1. [root@centos7 ~]# vim /etc/profile

profile文件最后一行,插入一行我们上面刚刚设置别名的命令:

  1. alias rm='echo Do not use rm.'

用到的vim快捷键:

  • 按下大写的 G 到文件最后一行。
  • 按下小写的 o 插入一个空行,写入命令。

最后,按Esc键,保存退出:wq

检查profile文件最后一行:

  1. [root@centos7 ~]# tail -1 /etc/profile
  2. alias rm='echo Do not use rm.'

成功修改profile文件。使用source命令,让设置生效。

  1. [root@centos7 ~]# source /etc/profile

检查设置是否生效,使用rm命令。

  1. [root@centos7 ~]# alias rm
  2. alias rm='echo Do not use rm.'
  3. [root@centos7 ~]# rm /data/test.txt
  4. Do not use rm. /data/test.txt

到此,成功设置永久别名。针对rmcpmv这三个命令别名设置,还有个坑!其它命令的别名设置没问题。请看下文。

三、设置命令别名注意事项


通过修改/etc/profile文件设置别名有个坑。只有设置rmcpmv这三个命令的别名时,才会引发这个坑。因为在/root/.bashrc文件中,对这三个命令有别名设置。所以要修改.bashrc文件继续完善上面的设置,填坑~

请注意,对于其它命令别名设置是没问题的,不用修改这个.bashrc文件。

使用vim命令,修改.bashrc文件。

  1. [root@centos7 ~]# vim /root/.bashrc

注释alias rm='rm -i'内容,如下。

  1. [root@centos7 ~]# vim /root/.bashrc
  2. # .bashrc
  3. # User specific aliases and functions
  4. # alias rm='rm -i'
  5. alias cp='cp -i'
  6. alias mv='mv -i'
  7. # Source global definitions
  8. if [ -f /etc/bashrc ]; then
  9. . /etc/bashrc
  10. fi

保存并退出。

到此,填坑完毕。

(完)