Linux:设置别名命令alias

相关阅读

Linuxicon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12234591.html?spm=1001.2014.3001.5482


        在Linux中alias命令用于为一串字符(常代表命令)设置一个别名,该别名在Bash读取并解析一行命令时会被展开。

        下面是该命令的语法。

用法
alias [-p] ([name[=value]])*
选项:
-p 指定该选项会打印出当前进程的所有别名

        许多Linux发行版会有默认别名设置,它们是通过Bash配置文件完成的。直接使用alias而不添加name参数会导致和使用-p选项一样的结果,即打印出当前进程的所有别名。

[***@EDA ~]$ alias
alias dc='dc_shell'
alias dv='design_vision'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias fm='formality'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias lmd=' lmdown -c /opt/Synopsys/SCL_2018/scl/2018.06/admin/license/license.dat'
alias lmg=' lmgrd -c /opt/Synopsys/SCL_2018/scl/2018.06/admin/license/license.dat -l /opt/Synopsys-2018/SCL_2018/scl/2018.06/admin/logs/debug.log '
alias ls='ls --color=auto'
alias pt='primetime'
alias starrc='StarXtract'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

        一条命令的第一个word(通常是命令名)在Bash读取一行命令后会被检测是否为别名,如是,则会进行别名替换,由于该替换是在Bash读取一行命令后立刻执行的,所以同一行命令中前面的alias设置的别名无法立刻在该行后直接使用。

[***@EDA ~]$ alias aa='echo 1';aa
bash: aa: command not found...
[***@EDA ~]$ alias
alias aa='echo 1'
alias dc='dc_shell'
alias dv='design_vision'
*****
[***@EDA ~]$ aa
1

        这与变量替换不同,变量替换是在命令执行前进行的,晚于别名替换。

[***@EDA ~]$ a=1;echo $a
1

        如果alias设置的别名值后有空格,则在解析时,在该条命令的第一个别名被替换后,后一个word也会被检测是否为别名。

[***@EDA ~]$ alias bb='echo 2 '  #value中留有空格 
[***@EDA ~]$ alias cc='3'        #value中留有空格
[***@EDA ~]$ alias
alias aa='echo 1'
alias bb='echo 2 '               #注意末尾有空格
alias cc='3'
alias dc='dc_shell'
alias dv='design_vision'
*****
[***@EDA ~]$ bb cc               #bb和cc都会被检测是否是别名,被替换成echo 2 3
2 3

        别名无法像环境变量那样被子进程继承,因此一般会在配置文件中设置别名。 

[***@EDA ~]$ alias ddd='echo This is alias in Bash' #在当前进程创建一个别名
[***@EDA ~]$ ddd
This is alias in Bash
[***@EDA ~]$ bash               #在当前进程运行另一个bash子进程
[***@EDA ~]$ ddd                #无法使用别名替换
bash: ddd: command not found...
Similar command is: 'dd'
[***@EDA ~]$ exit               #回到一开始的bash进程
[***@EDA ~]$ ddd                #可以使用别名
This is alias in Bash

        别名不会递归替换,一旦别名替换后,其替换后的内容就不会被检测是否是别名。

[***@EDA ~]$ alias echo='echo 1'  #别名替换值中又有别名
[***@EDA ~]$ echo                 #不会递归替换
1

        在非交互式的Bash脚本中,别名替换默认被关闭了,除非在脚本中使用shopt命令开启expand_aliases选项。

scripts文件
#!/bin/bash#未启用别名展开
#shopt -s expand_aliases
alias tt='echo 111' # 定义别名
tt # 使用别名[***@EDA ~]$ ./scripts
./script: line 8: tt: command not foundscripts文件
#!/bin/bash#启用别名展开
shopt -s expand_aliases
alias tt='echo 111' # 定义别名
tt # 使用别名[***@EDA ~]$ ./scripts
111

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/538208.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序问题定位——sourcemap文件

使用sourceMap在微信小程序中进行线上问题定位,主要可以通过以下步骤实现: 下载微信开发者工具首先,确保已经安装了微信开发者工具,这是进行小程序开发和调试的基础。登录微信公众平台并下载sourceMap文件:登录微信小…

tablulator 表格插件使用 vue3 + ts

项目中使用的是layui框架,layui整体使用起来还是挺好用的,界面风格简约,上手也简单,但是layui自带的表格性能真的不咋行,基本上显示超过500条,就很出现浏览器卡顿,全选的时候,浏览器…

校园生活信息平台:Java+Vue+MySQL全栈实践

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

Spring Cloud Alibab 入门搭建,包含Nacos中心,注册服务发现服务,Feign请求,GateWay网关,sentinel限流

一、安装Nacos注册中心 1.1查看Nacos官网,安装Nacos服务,下载源码或者安装包 1.2启动服务,默认端口为8848, 二、创建服务注册&发现 2.1使用脚手架,创建注册服务和发现服务项目,我用的版本是2.6.13&…

VUE2 Day06路由模块封装,声明式导航,vue路由重定向,keep-alive,基于VueCli自定义创建项目,代码规范

绝对路径:指代src目录,可以用于快速引入组件 路由模块的封装抽离的好处是什么? 拆分模块,利于维护 以后如何快速引入组件? 基于 指代 src 目录,从 src 目录出发找组件 /search/:words 表示&#xff0…

双线性插值

先来看看线性插值的情况 如上图,在已知p2 (x2,y2)和p1 (x1,y1)的情况下要求解在区间[x1,x2]上任意点x对应的y值,有如下公式: 因式分解,解开y有: 可以看出是计算点p与p3的距离权重,是计算点p与p2的距离权重&…

【产品经理方法论——BRD文档模板】

一、BRD(Business Requirement Document)商业需求文档 BRD文档是面对公司高层,目的是获得公司资金、资源的支持开展项目。一般的BRD文档展示方式是PPT。 下面的思维导图是BRD文档的六大模块。 方案背景方案预测产品规划盈利模式收益与成本风险与对策 1. 方案背景 …

2024-03-14 Android app runOnUiThread 函数,它的作用是让一个Runnable对象在主线程(UI线程)上运行。

一、看到别人app有这么一个runOnUiThread 函数用法。 二、在Android中,runOnUiThread 是一个非常重要的方法,它的作用是让一个Runnable对象在主线程(UI线程)上运行。在Android中,主线程是负责更新UI的线程,…

try catch 应该在 for 循环里面还是外面

前言 其实就是看业务。我需要出现异常就终止循环的,就放外头;不需要终止循环,就搞里头但是要注意一点就是,别在for循环里面去查库调用第三方啥的,这些操作,如果必要,需要慎重考虑了 参考文章 …

马斯克宣称开源GROK,普通人如何抓住机会

一、马斯克宣称开源grok 3月11日晚,特斯拉的创始人埃隆马斯克在社交平台宣布,其AI初创企业xAI即将在本周公开聊天机器人Grok的源代码。这一举措意味着公众将能够无偿获取到大模型技术背后的核心代码,从而进一步推动AI技术的普及与发展。对此…

threejs简单创建一个几何体(一)

1.下包引入 //下包 npm install three yarn add three//引入 import * as THREE from three2.创建场景,摄像机 // 1.创建场景const scene new THREE.Scene()// 2.创建摄像机//第一个参数是视角,一般在60-90之间,第二个参数是场景的尺寸,一般取显示器的宽高,第三个参数是开始位…

SQLiteC/C++接口详细介绍之sqlite3类(六)

快速前往文章列表:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(五) 下一篇:SQLiteC/C接口详细介绍之sqlite3类(七) 19. sqlite3_changes与sqlite3_changes64 是SQLite中用…