日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

powershell awk_谈谈 PowerShell

發(fā)布時(shí)間:2023/12/9 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 powershell awk_谈谈 PowerShell 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

萬事萬物,有始有終。直從萌芽拔,高自毫末始。

所謂的 Shell,無非是應(yīng)用程序與操作系統(tǒng)內(nèi)核進(jìn)行交互的一個(gè)中間程序而已。我本人玩電腦也有很久一陣子了,最開始接觸到的就是Windows 7 操作系統(tǒng),當(dāng)時(shí) Windows 7 上市不久,我在那臺(tái) 20 英寸的液晶顯示器上看了很多 PC 的知識(shí)。但是我第一次接觸Shell,卻是在 Linux上。

Linux 上最常用的是 Bash,這是一個(gè)對(duì)于 Bourne Shell 的再造版,完全免費(fèi)、開源,而且很好用。而 Linux 上的 zsh 也不錯(cuò),而且很多提示功能非常貼心。就這么一個(gè)好用的 shell 程序,自然身受很多程序員的喜愛。玩電腦怎么能不搞點(diǎn)自動(dòng)化呢?

想想有哪些東西需要自動(dòng)化?我列舉幾個(gè):

  • 寫了一個(gè)程序,要用來編譯、測(cè)試、測(cè)試完再清理編譯的產(chǎn)物,這個(gè)時(shí)候需要一個(gè)自動(dòng)化的操作
  • 用 LaTeX 寫了一篇論文或者文章,希望能自動(dòng)進(jìn)行編譯,然后自動(dòng)清理產(chǎn)生的 aux、log 等中間產(chǎn)物,只留下編譯產(chǎn)生的 PDF 文件
  • 喜歡一個(gè)網(wǎng)頁或者博客,希望及時(shí)收到這個(gè)網(wǎng)頁的更新,這個(gè)時(shí)候你需要一個(gè)程序,自動(dòng)地每隔幾秒、幾分鐘、數(shù)小時(shí)發(fā)起一次 HTTP 請(qǐng)求,然后獲得頁面中相應(yīng)部分的更新情況(比如淘寶頁面,價(jià)格是否變化了?)
  • 自己的系統(tǒng)裝了很多軟件,希望能夠批量進(jìn)行更新情況檢查,一旦有部分軟件出了新版,就自動(dòng)聯(lián)網(wǎng)更新。
  • ...

上述的幾個(gè)情況比較特殊,但是確確實(shí)實(shí)貼近我們的生活。最初的 Windows 系統(tǒng),并不支持這種內(nèi)建的自動(dòng)化操作,你能想到的也就是 cmd 命令行。而這個(gè)命令行確實(shí)非常難用,讓一些追求軟件美感的人望而卻步(嗤之以鼻)。

1、何以 UNIX/Linux

UNIX 是從實(shí)驗(yàn)室里走出來的操作系統(tǒng),小巧、高效、簡(jiǎn)潔、開放。而 Linux 作為 UNIX 的凈室再現(xiàn),也相應(yīng)地具有了 UNIX 的各種優(yōu)點(diǎn),也兼容 UNIX 系統(tǒng)的很多程序。等到把 GCC 移植到 Linux 之后,Linux 的增長(zhǎng)曲線開始發(fā)力,因?yàn)橐坏┯辛四硞€(gè)平臺(tái)的編譯器,我們只需要把其他平臺(tái)的源代碼拿過來編譯一遍,就得到了適用于新平臺(tái)的軟件。當(dāng)然,前提是新平臺(tái)符合 POSIX 標(biāo)準(zhǔn)。

那么為何 bash 在 UNIX 世界里這么受歡迎呢?我認(rèn)為有以下幾個(gè)原因。

  • 使用者生活在一個(gè)自由的環(huán)境里
  • 使用者的知識(shí)水平比較高,眾所周知,BSD 版本的 UNIX 是在伯克利大學(xué)流傳開來的,那里的師生什么水平、什么審美,相信大家有目共睹
  • UNIX 的偽終端非常好用,以 macOS 為例,你可以直接在 Terminal 里面,用鍵盤復(fù)制、粘貼,而其他諸如 Linux 自帶的終端也很好用
  • Bash 的開發(fā)很有趣,相關(guān)的程序很給力,比如 GNU 軟件,awk、perl、sed 等程序,非常適合命令行下操作字符串
  • 很有美感
  • 以上種種原因,使得 bash 腳本在 UNIX 世界里廣受歡迎,你只要稍加練習(xí),就會(huì)愛上這門語言。

    但是,PC 裝機(jī)份額最大的 Windows 用戶,在這一方面卻始終處于水深火熱之中。懷抱著丑陋的 cmd,用著蹩腳的復(fù)制、粘貼操作。更重要的是,很多 Windows 用戶并不知道竟然可以自己寫腳本來控制自己的電腦,解放自己的雙手!

    2、準(zhǔn)備好了嗎?PowerShell

    2.1 粗略介紹一下 PowerShell 與 bash 的區(qū)別與聯(lián)系

    現(xiàn)如今 Windows 10 平臺(tái)的 PowerShell 是 5.0 版本。支持 cmdlet。所謂的 cmdlet 就是相當(dāng)于微軟 .Net 平臺(tái)的一套小程序,命名為 Verb-Noun。舉個(gè)例子說明一下什么是 cmdlet,你在 UNIX 上輸入命令創(chuàng)建一個(gè)空的文件夾:

    #!/bin/bash mkdir Test_dir

    在 Windows Powershell 里面就有對(duì)應(yīng)的 cmdlet:

    # 創(chuàng)建一個(gè)名為 Test_dir 的文件夾 New-Item -ItemType Directory Test_dir

    UNIX 這里面的 mkdir 就是一個(gè)小程序,你確實(shí)可以在 UNIX 上找到一個(gè)名為 mkdir 的可執(zhí)行程序。但是 Windows 卻不這么認(rèn)為,Windows 認(rèn)為用戶可能誤刪某些小程序,導(dǎo)致你無法再正常使用 Windows 的 Powershell,于是微軟的工程師,直接把需要用到的“小程序”集成在一起,禁止你直接訪問、刪改。

    bash 是支持管道的,一個(gè)進(jìn)程的輸出,可以當(dāng)作另一個(gè)進(jìn)程的輸入。換句話說,Linux/UNIX 是一個(gè)文本控件,一切皆文本,文本字節(jié)流是這個(gè)空間里的對(duì)象。

    Get-PSDrive | ?{$_.Free -gt 1} | %{$Count = 0; Write-Host "";} { $_.Name + ": Used: " + "{0:N2}" -f ($_.Used/1gb) + " Free: " + "{0:N2}" -f ($_.free/1gb) + " Total: " + "{0:N2}" -f (($_.Used/1gb)+($_.Free/1gb)); $Count = $Count + $_.Free;}{Write-Host"";Write-Host "Total Free Space " ("{0:N2}" -f ($Count/1gb)) -backgroundcolor magenta}

    Get-PSDrive 是一個(gè)小程序,也就是 Power Shell 里的cmdlet。上述命令很復(fù)雜,你可以通過視頻進(jìn)行學(xué)習(xí)。上述的文件寫進(jìn) bat 腳本里,雙擊腳本運(yùn)行,會(huì)得到一個(gè)類似的輸出:

    C: Used: 138.99 Free: 98.85 Total: 237.84 D: Used: 262.06 Free: 110.55 Total: 372.61 E: Used: 0.16 Free: 465.60 Total: 465.76 F: Used: 1,141.78 Free: 1,652.62 Total: 2,794.39 G: Used: 0.23 Free: 2,794.16 Total: 2,794.39 H: Used: 7.27 Free: 3,718.73 Total: 3,726.01 I: Used: 0.21 Free: 1,862.78 Total: 1,862.98 J: Used: 0.18 Free: 931.34 Total: 931.51 K: Used: 0.18 Free: 931.33 Total: 931.51Total Free Space 12,565.97

    cmdlet 約等于 UNIX 里 /bin 下面的小程序,只是你在文件瀏覽器里找不到它而已。除此之外,Power Shell的使用,與 bash 差不多(我可不是說兩者的語法差不多!)。

    2.2 高傲的微軟向UNIX世界屈服了嗎?

    微軟絕不是因?yàn)椤八麄冇?#xff0c;所以我們也要有!”而創(chuàng)立的PowerShell。

    微軟主要是因?yàn)?Windows Server 的管理問題而開發(fā)了 Power Shell 這個(gè)東西。所以從這里你也應(yīng)該看出來了,微軟相當(dāng)于間接承認(rèn),沒有shell的一個(gè)操作系統(tǒng)很難用

    如果把 .Net 平臺(tái)提供的開發(fā) API 稱為生肉的話,那么 PowerShell 就是經(jīng)過烹調(diào)的熟肉。雖然生肉不好下嘴,但是你可以經(jīng)過自己的烹調(diào),獲得最大的自由度。熟肉雖然好吃,但是你只能換個(gè)花樣切一切再吃,沒有什么自由度,想換個(gè)口味?幾乎沒可能。

    三、PowerShell好用嗎

    很好用。

    之前我一直對(duì)微軟的 Windows 系統(tǒng)的開發(fā)能力很懷疑,我有個(gè) MacBook Pro 15,特意配了 32GB 內(nèi)存來搞開發(fā),用起來很爽。但是哪怕我的 PC 機(jī)配置很強(qiáng)大,我也很不想用它來開發(fā),我一般都是再 WSL 里運(yùn)行我在 Mac 上寫好的程序。但是最近和小伙伴們聊起來,大家對(duì) PowerShell 還是贊不絕口的。

    所以我承認(rèn),我對(duì)微軟有偏見了。

    如果你沒有對(duì)一個(gè)系統(tǒng)做深入了解,你就不能武斷地認(rèn)為這個(gè)系統(tǒng)很難用。一眼看上去就很美,大概率是很美;一眼看上去不好用,大概率是因?yàn)槟悴粔蛄私?#xff08;比如Vim)。

    最后談?wù)?PowerShell 哪些地方好用吧:

    3.1 良好的自動(dòng)補(bǔ)全功能

    不得不承認(rèn),PowerShell 的自動(dòng)補(bǔ)全非常好用,可以忽略大小寫進(jìn)行循環(huán)匹配,bash 的匹配,如果出現(xiàn)前綴對(duì)應(yīng)著多個(gè)可能的命令,就會(huì)列出來讓你選擇(除非用插件),但是 PowerShell 可以隨著你按 TAB 進(jìn)行自動(dòng)匹配下一個(gè)可能的選項(xiàng)。這點(diǎn)仁者見仁智者見智吧,Power Shell 如果提示太多一時(shí)找不到,還得刪掉已經(jīng)提示的,然后重新輸入,這點(diǎn)也很煩人。

    不過,總體來說很優(yōu)秀。

    3.2 對(duì)于管道支持良好

    這一點(diǎn)配合 Power Shell 的面向?qū)ο筇匦蕴貏e有用。喜歡的自己鉆研的時(shí)候注意一下。

    3.3 支持環(huán)境變量

    PS C:Usersnewton> $env:PATH C:Program FilesPowerShell7-preview;C:Program FilesPython38Scripts;C:Program FilesPython38;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:WindowsSystem32OpenSSH;C:Program FilesMicrosoft VS Codebin;C:Program FilesGitcmd;C:Program Filesdotnet;C:Program FilesMacType;C:Program FilesPolyspaceR2020aruntimewin64;C:Program FilesPolyspaceR2020abin;C:Program FilesPolyspaceR2020apolyspacebin;C:Program Files (x86)Wolfram ResearchWolframScript;C:Program FilesPowerShell7-previewpreview;C:texlive2020binwin32;C:UsersnewtonAppDataLocalMicrosoftWindowsApps;D:UsersnewtonDocumentsSoftwaressoftware_windowsdownloadm3u8DL;C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsLlvmbin;C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.25.28610binHostx64x64 PS C:Usersnewton>

    3.4 可以發(fā)揮 .Net 平臺(tái)的巨大優(yōu)勢(shì)

    結(jié)合 Office,C#,非常好用。

    結(jié)束語

    如果不是對(duì) Linux 有著絕對(duì)依賴,即你知道自己哪些需求絕對(duì)離不開 Linux,那么不妨試試 Powershell,這個(gè)真的很不錯(cuò)。微軟敢以 Power 之名,必然是有著相當(dāng)?shù)淖孕拧?/p>

    總結(jié)

    以上是生活随笔為你收集整理的powershell awk_谈谈 PowerShell的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。