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自身的支持,可自行研究。
