赞
踩
ps1
文件类似 linux 的 ~/.profile
文件,在 shell 初始化时会预先执行。在 Powershell 中, ps1
文件的路径保存在 $Profile
变量中,输入 echo $Profile
命令能看到它的绝对路径:
编辑这个文件,就能使Powershell按照我们的要求初始化
当然了,最起初的时候是没有这个文件的,需要我们按照对应目录手动去创建
可以使用命令(安装了sublime Text 并添加了环境变量Powershell 有一个特殊的函数: prompt
函数,这个函数规定了提示符的内容和外观。默认的 prompt
函数规定了提示符的默认外观,也就是这样:)
> subl $profile
Powershell 有一个特殊的函数: prompt
函数,这个函数规定了提示符的内容和外观。默认的外观就是我们所见的,这里就不赘述了!
通过 prompt
函数的返回值我们就能自定义提示符。返回值可以是固定的字符串,也可以是 powershell 提供的函数,例如
- $(Get-Date) # 获取当前时间
- $(Get-Location) # 获取当前目录
大部分函数返回值是 Object 类型,并不是字符串格式,用双引号可以强制转换为字符串类型,具体怎么操作,详情百度!
当然了可能会碰到 ...\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1这个文件无法加载,如下图示:
以管理员身份运行Windows Powershell
输入:
- get-ExecutionPolicy # 查看系统执行策略状态
- # 返回 Restricted
- set-executionpolicy remotesigned # 修改执行策略状态
-
- get-ExecutionPolicy # 查看系统执行策略状态
- # 返回 remotesigned
你会发现问题解决!
让你的power shell 显示git 分支
有一套现成的开源方案: posh-git ,可以在命令行上显示分支名和当前目录树的改动情况。但是这个库就像航空母舰,功能虽强大,但是 load 需要稍多时间。如果只需要显示分支名,可以稍微用几行代码即可实现
判断当前目录是否 git 控制的方法可以用 git rev-parse
命令,如果返回值为 0,即表示当前目录由 git 控制;非零的返回值表示当前目录没有被 git 控制,并且会向标准输出打印一行错误信息。
为了不显示这行错误信息,我们需要把 git rev-parse
命令的输出重定向到 null 中去,在 Powershell 中,有一个函数 Out-Null
,可以实现这个功能。所以完整一行的写法为:
git rev-parse | Out-Null
如果当前目录是 git 控制的,就可以使用 git branch
命令获取分支名。这里需要加一个判断。
Powershell 中有一个特殊变量 $?
,如果他前面的命令执行成功了,这个变量值就是true,反之就是false,所以可以在上面语句的后方判断这个变量的值。
获取分支名的命令是 git branch
,不带参数时,显示本地分支列表,再加上 --show-current
,可以只显示当前分支名,这正是我们需要的。
git branch ---show-current ---no-color
--no-color
显示不带颜色的字样。
最终结果
- function prompt
- {
- $random = new-object random
- $color=[System.ConsoleColor]$random.next(1,16)
- Write-Host ("[" + $(get-Date) + "] ") -nonewline -foregroundcolor green
- Write-Host $(get-location) -nonewline -foregroundcolor $color
- git rev-parse | Out-Null
-
- if($?){
- Write-Host (" (" + $(git branch --show-current) + ")") -NoNewLine -ForegroundColor Magenta
- }
- Write-Host (">") -nonewline -foregroundcolor $color
- return " " # 不加这句会多一个 PS >
- }
代码所放位置:
最终结果显示如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。