首页 > 其他分享 >alias——定义或显示别名

alias——定义或显示别名

时间:2024-11-11 15:21:32浏览次数:1  
标签:定义 别名 alias ls rm bash

转自于:https://github.com/jaywcjlove/linux-command,后不赘述

alias

定义或显示别名。

概要

alias [-p] [name[=value] ...]

主要用途

  • 简化较长的命令。
  • 定义、修改或者显示一个或多个别名。

选项

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

返回值

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

例子

# 显示全部已定义的别名
alias
alias -p

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

# 定义或修改别名的值
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文件,会发现有这样一段代码:

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

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

错误用法

  • 要显示的别名未定义。
  • 当您定义(修改)别名的值的时候,由于值的字符串有空格但您没有用单引号扩起,那么会导致严重的问题:
# 为方便演示,删除全部别名
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依然会列出文件夹的内容;不要这样定义。

注意

  1. 执行脚本时请注意:
    • 使用 source 命令执行的bash脚本如果执行了 aliasunalias 命令,那么有可能会对终端环境的别名设置产生影响;终端环境的别名设置也可能改变运行结果;
    • 通过 sh 方式调用的 bash 脚本或直接运行当前用户有执行权限的脚本不受终端环境的别名影响。
  2. 删除别名,请查看unalias命令。
  3. 建议您不要对 mv cp rm 等命令的别名设置危险的 -f 选项,比如 alias rm='rm -f'
  4. 需要注意别名是否和其他命令有冲突的情况。
  5. 该命令是 bash 内建命令,相关的帮助信息请查看 help 命令。

其他参考链接

标签:定义,别名,alias,ls,rm,bash
From: https://www.cnblogs.com/qianyinqingfeng/p/18539769

相关文章

  • 客户关系管理(CRM)是什么?CRM定义最全解读!
    有企业就有业务,有业务就有客户,所以客户关系管理(CRM)系统是企业管理中不可或缺的一部分,它帮助企业有效管理与客户之间的关系,提升客户满意度和忠诚度。本文将重点探讨CRM的概念和不同的定义,希望能够帮助大家全面了解CRM的各个方面,心急的小伙伴可以先看目录:CRM系统是什么?CRM系统的......
  • SpringBoot集成SpringSecurity并实现自定义认证
    目录一、SpringSecurity简介二、集成SpringSecurity1、引入依赖2、编写核心配置类3、数据库建表4、自定义session失效策略5、自定义认证6、重写loadUserByUsername方法7、登录页面和接口三、总结一、SpringSecurity简介SpringSecurity是一个能够为基于Spring的企......
  • gcc 1.c和g++ 1.c编译阶段有什么区别?如何知道g++编译默认会定义_GNU_SOURCE?
    gcc1.c和g++1.c编译阶段有什么区别?借用 gcc1.c和g++1.c有什么区别? 的示例代码,以汇编代码为比较目标,再经过汇编,最后生成ELF文件,三个过程结果均无差异,这个阶段充分证明了c和c++是多么相似。编译到汇编gcc-S1.c-o1.sg++-S1.c-o11.s .file "1.c"......
  • 「Java开发指南」如何自定义Spring代码生成?(二)
    搭建用户经常发现自己对生成的代码进行相同的修改,这些修改与个人风格/偏好、项目特定需求或公司标准有关,本教程演示自定义代码生成模板,您将学习如何:创建自定义项目修改现有模板来包含自定义注释使用JET和Skyway标记库中的标记配置项目来使用自定义在上文中,我们为大家介绍了......
  • 软件定义网络(SDN)在企业网络中的应用
    ......
  • 鸿蒙自定义组件生命周期
    在开始之前,我们先明确自定义组件和页面的关系:自定义组件:@Component装饰的UI单元,可以组合多个系统组件实现UI的复用,可以调用组件的生命周期。页面:即应用的UI页面。可以由一个或者多个自定义组件组成,@Entry装饰的自定义组件为页面的入口组件,即页面的根节点,一个页面有且仅能有一个......
  • C++中函数定义和函数声明的区别
    这个编译错误提示:Parameter'index'isconst-qualifiedinthefunctiondeclaration;const-qualificationofparametersonlyhasaneffectinfunctiondefinitions意思是,在函数声明(声明函数的原型)中,const 修饰符对参数 index 没有实际效果。const 仅在 函数定义 ......
  • 自定义类型那点事儿
    自定义类型:结构体,位段,枚举,联合目录自定义类型:结构体,位段,枚举,联合结构体1.结构体的声明2.结构体的特殊声明3.结构体的自引用4.结构体变量的定义和初始化5.结构体内存对齐6.修改默认对齐数7.结构体传参位段1.什么是位段?2.位段的内存分配3.位段的跨平台问题枚举......
  • 在Qt中创建和使用自定义控件类时,可能会遇到以下一些常见问题
    在Qt中创建和使用自定义控件类时,可能会遇到以下一些常见问题:一、布局相关问题大小调整不正确:问题描述:自定义控件在不同的布局环境下,可能无法按照预期调整大小。例如,当将自定义控件添加到一个水平布局或垂直布局中时,它可能不会随着布局的拉伸或收缩而正确地改变自身大小。原......
  • 自定义圆形进度条控件
    以下将以创建一个简单的为例,详细说明在Qt中创建自定义控件的步骤:一、创建项目首先,打开QtCreator并创建一个新的QtWidgetsApplication项目。按照向导完成项目的基本设置,比如项目名称、存储路径等。二、创建自定义控件类继承基础控件类:在项目中创建一个新的C++类,命名为Ci......