【linux命令讲解大全】191.Linux必知命令之alias和unalias

2024-03-02 14:38:53 浏览数 (1)

clear

清除当前屏幕终端上的任何信息

补充说明

clear命令用于清除当前屏幕终端上的任何信息。

语法
代码语言:javascript复制
clear
实例

直接输入clear命令即可清除当前终端上的任何信息。

alias

定义或显示别名。

概要

代码语言:javascript复制
alias [-p] [name[=value] ...]

主要用途

  • 简化较长的命令。
  • 定义一个或多个别名。
  • 修改一个或多个已定义别名的值。
  • 显示一个或多个已定义别名。
  • 显示全部已定义的别名。

选项

  • -p:显示全部已定义的别名。
  • name(可选):指定要(定义、修改、显示)的别名。
  • value(可选):别名的值。

返回值

alias返回true,除非您要显示的别名未定义。

例子

显示全部已定义的别名:

代码语言:javascript复制
alias
alias -p

显示已定义的别名(假设当前环境存在以下别名):

代码语言:javascript复制
alias ls
alias ls grep

定义或修改别名的值:

代码语言:javascript复制
alias ls='ls --color=auto'
alias ls='ls --color=never' grep='grep --color=never'

知识点

直接在shell里设定的命令别名,在终端关闭或者系统重新启动后都会失效,如何才能永久有效呢?

使用编辑器打开~/.bashrc,在文件中加入别名设置,如:alias rm='rm -i',保存后执行source ~/.bashrc,这样就可以永久保存命令的别名了。

因为修改的是当前用户目录下的~/.bashrc文件,所以这样的方式只对当前用户有用。如果要对所有用户都有效,修改/etc/bashrc文件就可以了。

请注意,以下内容可能与您实际使用的系统有出入:

在CentOS7下,这个文件是/etc/bash.bashrc

此外在CentOS7下,细看~/.bashrc文件,会发现有这样一段代码:

代码语言:javascript复制
if [ -f ~/.bash_aliases ]; then
  . ~/.bash_aliases
fi

这个代码的意思就是如果存在那么就加载.bash_aliases文件,所以也可以在用户根目录下新建该文件用于单独存放命令别名设置。

错误用法

要显示的别名未定义。

当您定义(修改)别名的值的时候,由于值的字符串有空格但您没有用单引号扩起,那么会导致严重的问题。

示例:

代码语言:javascript复制
# 为方便演示,删除全部别名
unalias -a
# 没有用单引号扩起
alias rm=rm -rf
# 执行命令后报错 bash: alias: -rf: not found
# 这时使用alias查看rm的别名时返回 alias rm='rm'
# 更具有迷惑性的例子
# 为方便演示,删除全部别名
unalias -a
# 仍然没有用单引号括起
alias ls=ls --color=never
# 执行命令后看起来没有报错

# 使用alias查看全部别名会发现运行结果如下:
# alias --color=never
# alias ls='ls'
# alias处理时将它们看成了两组

Q&A

Q:如果我要显示一到多个别名,但不知道其中是否有未定义的该怎么办?

A:正常执行就是了,alias不会因为有一个未定义的别名就结束对剩余参数的执行。

Q:如果我这么定义alias cd='ls' ls='cd',会有什么后果?

A:运行cd依然会切换目录,运行ls依然会列出文件夹的内容;不要这样定义。

注意

  • 执行脚本时请注意:
    • 使用source命令执行的bash脚本如果执行了aliasunalias命令,那么有可能会对终端环境的别名设置产生影响;终端环境的别名设置也可能改变运行结果。
    • 通过sh方式调用的bash脚本或直接运行当前用户有执行权限的脚本不受终端环境的别名影响。
  • 删除别名,请查看unalias命令。
  • 建议您不要对mvcprm等命令的别名设置危险的-f选项,比如alias rm='rm -f'

unalias

删除由alias设置的别名

概要

代码语言:javascript复制
unalias [-a] name [name ...]

主要用途

  • 删除一个或多个别名。
  • 删除全部已定义的别名。

选项

  • -a:删除全部已定义的别名。

参数

  • name:指定要删除的一个或多个已定义的别名。

返回值

unalias返回true,除非您要删除的别名未定义。

例子

删除全部已定义的别名:

代码语言:javascript复制
unalias -a

删除已定义的别名(假设当前环境存在以下别名):

代码语言:javascript复制
unalias vi
unalias ls grep

错误用法

  • 要删除的别名未定义。
  • 不使用-a选项时没有传递name参数。

注意

  • 执行脚本时请注意:
    • 使用source命令执行的bash脚本如果执行了aliasunalias命令,那么有可能会对终端环境的别名设置产生影响;终端环境的别名设置也可能改变运行结果。
    • 通过sh方式调用的bash脚本或直接运行当前用户有执行权限的脚本不受终端环境的别名影响。

0 人点赞