快捷搜索: 王者荣耀 脱发

windows下PowerShell别名使用

个人在windows下习惯用PowerShell替代CMD作为命令行工具。如何自定义命令来提高生产力呢?

linux中有alias工具,如

alias grep=grep --color
alias tailf=tail -f
alias duh=du -lah --max-depth=1

或者在profile中定义函数

function duf(){
          
   
    du -lah --max-depth==1
}

PowerShell中同样支持alias工具。使用参考这篇文章。个人推荐永久别名方式,简单来说分两步:

(1) PowerShell中执行,创建profile文件,创建完成会打出文件位置。当然可以先执行$profile命令查看profile文件位置并检查是否已存在

New-Item -Type file -Force $profile

(2) 在profile文件中定义Alias

以下是几个示例: (1) 打开程序sublime text

function openSublimeText{
          
   
	& D:	oolsSublime Textsublime_text.exe $args
}

Set-Alias subl openSublimeText

定义好后可以在PowerShell中使用

subl .README.md #使用sublime text打开当前目录下README.md文件
subl . #使用sublime text打开当前目录

(2) java带固定参数运行

function runJavaWithGCLog{
          
   
	java -verbose:gc -Xloggc:gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintReferenceGC $args
}

Set-Alias java-with-gclog runJavaWithGCLog

(3)实现tailf

function getContentLikeTailf{
          
   
	get-content $args -ReadCount 0 -Tail 5 -Wait
}

Set-Alias tailf getContentLikeTailf

使用tailf xxx.log监听xxx.log文件尾部内容

(4)实现tail

function getContentLikeTail{
          
   
    $count = $($args[0] -replace "-","")
	get-content $args[1] -ReadCount 0 -Tail $count
}

Set-Alias tail getContentLikeTail

使用tail -100 xxx.log 或 tail 100 xxx.log查看xxx.log文件尾部100行内容。

(5)切换Maven的settings.xml文件 约定使用Maven安装位置下conf目录下的settings.xml 当需要在不同环境下切换settings.xml配置时,提前给每个环境的settings.xml准备好,并以settings-${name}.xml这样得格式命名,如settings-com.xml、settings-home.xml等,当需要切换到com时,就把settings-com.xml复制为settings.xml。

function changeMavenSettingFile{
          
   
	$mvn_home = "$env:MAVEN_HOME"
	$mvn_conf = "$mvn_homeconf"
	if(Test-Path "$mvn_confsettings.xml.bak"){
          
   
	    Write-Output "remove file: $mvn_confsettings.xml.bak"
	    Remove-Item "$mvn_confsettings.xml.bak"
	}
	if(Test-Path "$mvn_confsettings.xml"){
          
   
	    Write-Output "move file: $mvn_confsettings.xml to $mvn_confsettings.xml.bak"
	    Move-Item "$mvn_confsettings.xml" "$mvn_confsettings.xml.bak"
	}
	Write-Output "copy file $mvn_confsettings-$args.xml to $mvn_confsettings.xml"
	Copy-Item "$mvn_confsettings-$args.xml" "$mvn_confsettings.xml"
}

Set-Alias mu changeMavenSettingFile

其中$env:MAVEN_HOME是获取环境变量MAVEN_HOME的值,是安装Maven后配置在环境变量中 Test-Path是检测文件或路径是否存在 按需使用,如mu com就切换到settings-com.xml配置

(6)切换Git用户名字 在多个项目下使用不同的Git用户名字提交时,不适合全局的配置如git config --global user.name xxx这样使用,可以到项目目录下使用git config user.name xxx、git config user.email xxx这样给项目单独配置

function changeGitUser{
          
   
	$arg_cnt = $($args.Count)
	if($arg_cnt -gt 0){
          
   
	    git config user.name $args[0]
	    Write-Output "config git user.name $($args[0])"
	}
	if($arg_cnt -gt 1){
          
   
	    git config user.email $args[1]
	    Write-Output "config git user.email $($args[1])"
	}
}

Set-Alias gcu changeGitUser

按需使用,如gcu xyz xyz 就设置当前项目的git用户的name=xyz、email=xyz

实现原理都比较简单,核心还是PowerShell自身的支持,可自行研究。

经验分享 程序员 微信小程序 职场和发展