設(shè)置Powershell終端

Intro

提到shell岁诉,似乎大家首先想到Linux,其實(shí)Windows的Powershell也是非常好的命令行界面空入。同時(shí)由于Powershell默認(rèn)狀態(tài)下已經(jīng)把很多常用的基礎(chǔ)bash命令(如cdls)都設(shè)置成了別名锭亏,因而對(duì)于一些常用操作基本上可以當(dāng)成bash來用。當(dāng)然還有一些缺失十绑,比如whichtouch等命令聚至,則需要通過自定義函數(shù)利用Powershell命令實(shí)現(xiàn)。另一方面本橙,Powershell的藍(lán)色背景白色字符實(shí)在是缺乏美感扳躬,也影響日常使用,因而需要選擇一個(gè)終端并進(jìn)行美化工作甚亭。因而本文首先介紹幾個(gè)自定義的常用函數(shù)的方法贷币,同時(shí)進(jìn)一步介紹使用oh-my-posh和Windows Terminal構(gòu)建美觀的Powershell終端。

常用bash命令實(shí)現(xiàn)

由于powershell自帶的別名有缺失或默認(rèn)功能與bash命令有所不同亏狰,因而需要自定義和重載一些函數(shù)役纹。這些函數(shù)需要在profile.ps1中定義,這樣每次打開powershell時(shí)即可自動(dòng)加載暇唾。以下介紹3個(gè)常用命令促脉。

ls

ls時(shí)Powershell自帶的別名啰挪,然而其輸出的結(jié)果默認(rèn)為完整信息形式且沒有用不同顏色表示文件夾或文件。

image

這里使用Get-ChildItemColor實(shí)現(xiàn)不同文件類型以不同顏色顯示嘲叔,同時(shí)增加不同別名來實(shí)現(xiàn)僅列出文件名和列出詳細(xì)文件信息功能亡呵。

該Cmdlet可以直接從Powershell Gellery中安裝


Install-Module -Name Get-ChildItemColor -Scope CurrentUser

profile.ps1中加入:

# Ensure that Get-ChildItemColor is loaded
Import-Module Get-ChildItemColor
# Set l and ls alias to use the new Get-ChildItemColor cmdlets
Set-Alias l Get-ChildItemColor -Option AllScope
Set-Alias ls Get-ChildItemColorFormatWide -Option AllScope

進(jìn)而實(shí)現(xiàn)使用ls列出文件名,使用l列出詳細(xì)列表硫戈。

image

touch

Powershell默認(rèn)沒有定義touch命令的別名锰什,這里使用以下函數(shù)使用New-Item實(shí)現(xiàn)touch


function touch($name)
{
    if ($name) {
        $file_path = Split-Path -Path $name
        $file_name = Split-Path -Path $name -Leaf
        if ($file_path -eq "") {
            $file_path = "."
        }
        if (-Not (Test-Path($file_path))) {
            New-Item -ItemType "directory" -Path $file_path
        }
        New-Item -Path $file_path -Name $file_name -ItemType "file"
    }
    else {
        Write-Host "Command to create new file."
    }
}

which

Powershell默認(rèn)也沒有定義which丁逝,這里用Get-Command實(shí)現(xiàn)which汁胆。

function which($name)
{
    Get-Command $name | Select-Object -ExpandProperty Definition
}

~

Powershell沒有使用~來代表用戶目錄,可以通過簡(jiǎn)單的Set-Alias來實(shí)現(xiàn)霜幼。

function cuserprofile { Set-Location ~ }
Set-Alias ~ cuserprofile -Option AllScope

終端美化

終端美化有兩個(gè)目標(biāo)嫩码,一是配色及字體,二是Prompt的主題罪既,且支持Git repo的狀態(tài)指示铸题。

Windows Terminal

默認(rèn)的Powershell終端支持有限的顏色,自定義能力極其有限琢感,因而這里選用2019年發(fā)布的Windows Terminal來作為終端模擬器丢间。

Windows Terminal可以從Microsoft Store安裝。

https://www.microsoft.com/en-us/p/windows-terminal-preview/9n0dx20hk701

Windows Terminal中的Powershell:


image

點(diǎn)擊Windows Terminal的Settings會(huì)直接打開profiles.json文件驹针。在其中可以進(jìn)行各種個(gè)性化設(shè)置烘挫。以下是修改后的效果以及其對(duì)應(yīng)的json配置文件。

image
// To view the default settings, hold "alt" while clicking on the "Settings" button.
// For documentation on these settings, see: https://aka.ms/terminal-documentation

{
    "$schema": "https://aka.ms/terminal-profiles-schema",

    "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",

    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles
        },
        "list":
        [
            {
                // Make changes here to the powershell.exe profile
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "hidden": false,
                "colorScheme": "Cobalt2",
                "fontFace": "Cascadia Code PL",
                "background": "#000000",
                "useAcrylic": true,
                "acrylicOpacity": 0.8,
                "fontSize": 10,
                "backgroundImageStretchMode": "none",
                "backgroundImageOpacity": 0.1,
                "backgroundImageAlignment": "bottomRight"

            },
            {
                // Make changes here to the cmd.exe profile
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "name": "cmd",
                "commandline": "cmd.exe",
                "hidden": false
            },
            {
                "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
                "hidden": false,
                "name": "Azure Cloud Shell",
                "source": "Windows.Terminal.Azure"
            }
        ]
    },

    // Add custom color schemes to this array
    "schemes": [
        {
            "name": "Cobalt2",
            "black": "#000000",
            "red": "#ff0000",
            "green": "#38de21",
            "yellow": "#ffe50a",
            "blue": "#1460d2",
            "purple": "#ff005d",
            "cyan": "#00bbbb",
            "white": "#bbbbbb",
            "brightBlack": "#555555",
            "brightRed": "#f40e17",
            "brightGreen": "#3bd01d",
            "brightYellow": "#edc809",
            "brightBlue": "#5555ff",
            "brightPurple": "#ff55ff",
            "brightCyan": "#6ae3fa",
            "brightWhite": "#ffffff",
            "background": "#132738",
            "foreground": "#ffffff"
        }
    ],

    // Add any keybinding overrides to this array.
    // To unbind a default keybinding, set the command to "unbound"
    "keybindings": []
}

其中柬甥,這里選用的配色主題是Cobalt2饮六,它是iTerm Color Schemes中的一個(gè)主題,更多適用于Windows Terminal的配色可以從這里下載:
https://github.com/mbadolato/iTerm2-Color-Schemes/tree/master/windowsterminal苛蒲。
只需要作為字典加入"schemes"這里列表里就行了卤橄。

這里字體使用了配合Windows Terminal發(fā)布的Cascadia字體。https://github.com/microsoft/cascadia-code/releases/download/v1911.21/CascadiaPL.ttf

oh-my-posh

oh-my-posh (https://github.com/JanDeDobbeleer/oh-my-posh) 收到oh-my-zsh的啟發(fā)撤防,實(shí)現(xiàn)了漂亮的prompt主題虽风。

安裝:

Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser

其中,posh-git用于顯示git的狀態(tài)寄月。

安裝之后辜膝,在powershell的profiles.ps1中加入:

Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Paradox

oh-my-posh支持幾個(gè)主題(可以在github上找到具體介紹),這里使用個(gè)人認(rèn)為效果最好的Paradox主題。

安裝后的效果如下圖:

image

總結(jié)

本文通過編輯Powershell的profiles.ps1使用powershell函數(shù)實(shí)現(xiàn)了幾個(gè)常用的bash命令ls漾肮、whichtouch厂抖,同時(shí)介紹了利用oh-my-posh結(jié)合Windows Terminal的顏色字體個(gè)性化實(shí)現(xiàn)prompt主題自定義的方法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末克懊,一起剝皮案震驚了整個(gè)濱河市忱辅,隨后出現(xiàn)的幾起案子七蜘,更是在濱河造成了極大的恐慌,老刑警劉巖墙懂,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件橡卤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡损搬,警方通過查閱死者的電腦和手機(jī)碧库,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巧勤,“玉大人嵌灰,你說我怎么就攤上這事÷ぃ” “怎么了沽瞭?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)剩瓶。 經(jīng)常有香客問我驹溃,道長(zhǎng),這世上最難降的妖魔是什么儒搭? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任吠架,我火速辦了婚禮,結(jié)果婚禮上搂鲫,老公的妹妹穿的比我還像新娘。我一直安慰自己磺平,他們只是感情好魂仍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拣挪,像睡著了一般擦酌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上菠劝,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天赊舶,我揣著相機(jī)與錄音,去河邊找鬼赶诊。 笑死笼平,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的舔痪。 我是一名探鬼主播寓调,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼锄码!你這毒婦竟也來了夺英?” 一聲冷哼從身側(cè)響起晌涕,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎痛悯,沒想到半個(gè)月后余黎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡载萌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年驯耻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炒考。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡可缚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斋枢,到底是詐尸還是另有隱情帘靡,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布瓤帚,位于F島的核電站描姚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏戈次。R本人自食惡果不足惜轩勘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望怯邪。 院中可真熱鬧绊寻,春花似錦、人聲如沸悬秉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)和泌。三九已至村缸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間武氓,已是汗流浹背梯皿。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留县恕,地道東北人东羹。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像弱睦,于是被迫代替她去往敵國(guó)和親百姓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351