摘要:使用 alias 指令,为终端常用命令设计简称,提升终端操作效率。
一、alias 别名简介
在 Linux 系统当中,alias 命令用于设置指令的别名。
用户可利用 alias,自定指令的别名。
语法:alias[别名]=[指令名称]
若仅输入 alias,则可列出目前所有的别名设置。alias 的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在.profile 或.cshrc 中设定指令的别名。
二、macOS 系统 bash 或 zsh 设置别名
一些常用的命令一遍遍的敲比较浪费时间,可以通过别名的方式简化操作。
对于 bash 终端
1、编辑~/.bash_profile
, 比如添加 PS:=
两边没有空格:
1 | alias co='git checkout' |
PS: 如果没有.bash_profile
文件,那就直接创建一个.bash_profile
,然后进行编辑。
1 | touch .bash_profile |
2、按照正常的逻辑直接执行(或者重启一下终端)。
1 | source ~/.bash_profile |
对于 zsh 终端
如果使用的是zsh
, 相应配置了oh-my-zsh
。那么以上的管理配置会发现无效,因为配置了 zsh 之后,打开新的终端不会按照bash
的方式走 .bash_profile,source ~/.bash_aliases
没有执行,因此发现就没有起作用。而是走了. zshrc 文件。
简单的操作, 可以直接修改~/.zshrc,把原来的 alias 复制进去,通常 alias 添加到文件的最后,再source
一下。
1 | nano ~/.zshrc |
三、Windows 系统 Powershell 设置别名
原理概述
如果搜索关键词 windows powershell set user alias,通常谷歌会给出微软官方文档,但是这个文档只是告诉我们如何在脚本里面设置临时的别名,如果要设置永久别名,该怎么办?实际上,“别名”这种东西,也就是 alias,几乎所有的脚本语言,都没有所谓的“永久别名”(Permanent alias),我们使用 Linux bash 、Cmder 之类的脚本工具,打开终端时,系统会默认执行一个脚本文件( bash 是用户目录下的 .bashrc,Cmder 是 config/user_aliases.cmd ),而这样的脚本文件里,就包含了别名的定义。这也是为什么,我们在 Linux 类系统中,修改 .bashrc 后,必须要重新登出登录、或者 source .bashrc 的原因了。
所以,我们只要修改 Windows Powershell 启动时执行的文件就行了。很多论坛里面说,默认执行的脚本是 $Home\Documents\profile.ps1 ,也就是 C:\Users\你的用户名\Documents\profile.ps1 ,但是这并不正确,最好的方式是,先启动 PowerShell ,再执行 echo $profile,这样得到的文件路径,才是 PowerShell 的默认执行文件路径。
查看现有别名
- 查看此 Session 中已经设定的所有别名:
Get-Alias
或gal
1 | PS C:\> Get-Alias |
- 查看某别名的原命令,如
ls
的原命令:> Get-Alias ls
- 查看某原命令的别名,如
Get-ChildItem
的别名:> Get-Alias -Definition Get-ChildItem
创建永久的别名
在 PowerShell 中直接使用Set-Alias
或New-Alias
命令创建的别名在关闭此 Session 后即会失效,防止此现象的方法是将此命令写入Windows PowerShell profile
文件。
查看此文件在计算机中的位置:
1 | PS C:\> $profile |
一般该文件在没有创建前是不存在的,使用以下命令为当前用户创建 profile 命令并返回文件地址:
1 | PS C:\> New-Item -Type file -Force $profile |
一般创建的位置在~\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
别名格式:function 别名 { 需要替代的命令 }
打开文件,创建别名upmywiki
和 upkibana
:
1 | function upmywiki {d:;cd D:\mywiki\mywiki;tiddlywiki --server 23456} |
重启 PowerShell 试试效果:
1 | PS C:\> upmywiki |
如果 Powershell 报错
提示权限类问题,尝试以下步骤:
- 以管理员身份打开 Powershell 执行命令
Set-ExecutionPolicy RemoteSigned
- 重新启动 PowerShell ,应该已经可以了