在cmd中使用doskey来实现alias别名功能
作为一枚网络工程师,经常就是面对一堆黑框框,也是就是终端。不同操作系统、不同厂家的目录,功能相同但是键入的命令又大不相同,这些差异化容易让脑子混乱。比如华为、思科、H3C、锐捷的设备,命令都有不同,不过因为系统功能基本上固定的,也没有什么操作空间了,直接记忆即可。
我经常使用Windows的cmd然后ssh连接我的Linux服务器,面对同一个终端,命令敲迷糊了也不知道自己在cmd中还是在ssh后的shell中,cmd的命令也经常和shell搞混,经常在cmd下键入ifconfig在想想就觉得好笑哈哈哈。
![0](https://img2022.cnblogs.com/blog/2928139/202208/2928139-20220826123206488-1360397910.png)
要是Windows下有类似于Linux中alias命令用于定义别名就好,问了一下度娘,的确可行。
doskey命令可以编辑命令行并创建宏。
doskey的语法也和alias很相似。
doskey 别名=对应命令 $*
比如
doskey ifconfig=ipconfig $* doskey traceroute=tracert $* doskey tracepath=pathping $*
- 其中$*代表后面可以续接参数,比如ipconfig后要接-all之类的参数。
- 但是doskey只在本次命令行中生效。如果想要在cmd持续生效,可以先将所需的别名保存一份bat。以我目前使用的alias.bat为例,这里我主要对我目前使用容易歧义的命令来定义别名,ls、ll、cat、rm、mkdir、traceroute、tracepath、ifconfig等。
alias.bat
@echo off echo alittlemc doskey ls=dir /b $* doskey ll=dir /ONE $* doskey cat=type $* doskey rm=del $* doskey mv=move $* doskey cd=cd /d $* doskey pwd=cd doskey mkdir=md $* doskey lt=dir /OD $* doskey traceroute=tracert $* doskey tracepath=pathping $* doskey ifconfig=ipconfig $* doskey clear=cls doskey shell=PowerShell $* doskey history=doskey /history doskey alias=doskey /macros echo 别名完成载入,键入alias查看
win+r键入Registry打开注册表,打开位置计算机\HKEY_CURRENT_USER\Software\Microsoft\Command Processor,位置新建字符串AutoRun,数据就是之前编辑的bat文件的路径,之后在cmd运行之前都会运行此bat文件了。
![0](https://img2022.cnblogs.com/blog/2928139/202208/2928139-20220826123206566-1707234159.png)
完成配置后每一次进入cmd(在cmd中敲cmd也可以更新),别名就生效了,bat也可以自己定义需要的命令
- 键入history可以查看历史记录(仅限当前会话)
- 键入alias查看生效的别名。
![0](https://img2022.cnblogs.com/blog/2928139/202208/2928139-20220826123206518-685672264.png)
其他可能发生的问题->
如果终端有中文乱码,在记事本另存为你cmd对应编码就可以啦,比如我这里是UTF-8。
![0](https://img2022.cnblogs.com/blog/2928139/202208/2928139-20220826224732147-1526651606.png)
![0](https://img2022.cnblogs.com/blog/2928139/202208/2928139-20220826224732074-1756664317.png)