unicode 字符集环境下的mfc 读写 ini 配置文件的_WSL:在Windows下优雅地玩Linux
本文作者:劉觀宇,360 奇舞團高級前端工程師、技術經理,W3C CSS工作組成員。
引子
一直以來,Windows的命令行的體驗都不是特別的友好。由于Windows以圖形界面交互為主,同時微軟在一段時間內對命令行程序發展并不積極,以及Windows系統底層與*nix系列的不一致。造成Windows下的命令行開發與圖形開發體驗相去甚遠:一方面工具鏈的不完整,一方面終端字體不甚美觀,甚至默認的終端色域相對于Mac都是精簡的。
隨著Web開發的逐漸流行,很多首發在*nix的編程語言,自然也就受到了Unix開發哲學的影響,提供了非常方便的命令行接口和調用命令,并且極端依賴命令行。在編程語言方面,很多語言的首選實施平臺都不是Windows。甚至有Ruby社區不建議新人在Windows下進行開發1,以避免陷入解決環境問題的深坑,而抬高使用門檻。
近年來,微軟更加真誠地擁抱開源,同時*nix下的優秀開源軟件如NodeJS等也被微軟所關注,并開始做出自己的貢獻,環境問題便越來越深刻的體現出來。同樣是基于圖形界面的Mac在開發上可以說是領先于Windows的。前端開發者會更加優選Mac作為首要的開發環境。而此時微軟拿出了重要的武器WSL,使得Windows下命令行開發環境有了長足的進步,尤其是你已經習慣在命令行下解決依賴關系和開發問題,同時又不得不顧及Windows環境時,WSL可能會成為你一個重要的選擇。
什么是WSL
WSL是一個縮寫,全稱是Windows Subsystem for Linux。意為一個在Windows下的Linux子系統,是一個在Windows 10上能夠運行原生的Linux可執行文件。
通過WSL,未經修改的Linux程序文件,可以直接運行在Windows上。在2016年發布的第一代WSL中,WSL提供了Linux程序中所需要的命令行環境、Windows與Linux文件系統的互操作、完整的命令行、以及完整的用戶態生命周期和部分的內核系統調用。
2019年剛剛宣布的WSL2中,試圖內置一個完整的Linux內核,與兼容層相比,速度得到了較大的提升。
但是,WSL并不能運行所有的Linux程序,諸如圖形化的用戶界面、尚未找到適配目標的Linux內核功能等等。不過這對于抹平系統差異這種既臟又苦的任務,已經是相當大的成就,少數的不兼容是合理的并且可以理解的。
安裝WSL
為了安裝WSL,你需要將你的Windows升級到Windows10 build 16215版本以后。
如果你還需要使用WSL2,那么需要將版本升級到Windows10 build 18917版本后。不過,目前(2019年7月)仍處在Insider Fast通道2,多數用戶還不能獲得到這個版本。
在現在的條件下,我們還需要再等待WSL2的完善和放出。這篇文章我們主要了解一下WSL1的操作方法。根據官方的消息,WSL1暫無棄坑的打算3。當然,WSL2會比WSL1有更快的速度,更加完善的兼容性方案。
上面這幅圖闡述了WSL2的系統架構。
查詢Windows版本可以使用快捷鍵"win+r",運行命令:winver。會彈出Windows版本信息。
這里的紅色矩形圈住的就是版本號。我們可以看到,筆者當前的計算機可以安裝WSL1,但還不能支持WSL2。
為了安裝Linux,我們首先來啟用Windows10的一些功能。
這一步有兩種操作方式:
1. UI界面操作法:
點擊:開始->設置->應用->最大化點擊右邊的“程序和功能”->點擊左側的“啟用或關閉Windows功能”->在彈出的窗體上找到“適用于Linux的Windows子系統”,選中->確定。
2. 命令法:
用管理員身份打開PowerShell,輸入:Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
上述操作完成后你將重啟電腦。現在去沖杯咖啡,欣賞幾次下圖的畫面。
當你再次進入系統,這一步就完成了。
安裝Linux
首先說明,各個Linux的發行版不能直接使用。為此,需要下載適用于的發行版。這里,有兩種方式可以安裝。
1.通過Windows Store:打開Windows Store,搜索WSL,得到相關的發行版,安裝即可。
2. 手動安裝:你可以選擇下面的地址下載相應的發行版
1.https://aka.ms/wsl-ubuntu-1804
2.https://aka.ms/wsl-ubuntu-1804-arm
3.https://aka.ms/wsl-ubuntu-1604
4.https://aka.ms/wsl-debian-gnulinux
5.https://aka.ms/wsl-kali-linux
6.https://aka.ms/wsl-opensuse-42
7.https://aka.ms/wsl-sles-12
8.https://github.com/WhitewaterFoundry/WSLFedoraRemix/releases/
這里比較推薦第一個ubuntu的安裝版。筆者曾經嘗試過wsl-debian-gnulinux,但由于此版本過于精簡,開發包缺失嚴重,依賴解決麻煩,上手較為復雜,故不推薦。
下載之后,我們可以看到,擴展名為appx的文件。將其修改為.zip擴展名,則可以利用系統的解壓縮工具解壓到合適的目錄。
我們在PowerShell中進入上述解壓目錄,此時,可以看到對應的exe文件。在命令行下運行,即可進入系統。在此過程中,我們可以根據命令行提示,新建用戶。默認地,WSL就會以這個用戶進入系統。
調整命令行
默認的命令行界面還是不能滿足我們的需求:
1. 對命令有基本的自動補全
2. 能支持較完整的unicode字符集
3. 有較為豐富的色彩支持,較為友好的界面
實際上,我們可以分以下幾步解決這個問題:
1. 更換為更友好的zsh,并設置為默認shell,以ubuntu為例:????
sudo apt-get install -y zsh
chsh -s /bin/zsh
2. 安裝oh-my-zsh等命令行工具
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
3. 換用更加友好的命令行render
這里比較推薦幾個工具如:cmder4或者Hyper5。這兩個都是Windows程序,對于命令行程序的顯示有著更為優雅的體驗。
對于像ubuntu、debian、fedora等需要在線包管理的發行版,讀者可以通過更換國內軟件源的方法來獲取較快的下載速度。
命令wsl.exe和wslconfig.exe
對于Linux系統的管理,微軟給出了兩個Windows下的命令:wsl.exe和wslconfig.exe。這些命令可以對WSL的實例進行管理。自1903版本后,兩個命令支持的功能高度一致。因此讀者僅需記憶wsl命令即可。
讀者可以通過wsl -h來查看所有支持的命令行參數。
下面是比較重要的命令:
# 進入默認的WSL系統
wsl
# 進入某個發行版
wsl -d?<DistributionName>
# 列出所有發行版
wsl -l
# 列出所有運行中的發行版
wsl -l --running
# 不進入WSL,而在windows下運行Linux命令
wsl?ls?-la
系統互操作
Linux訪問Windows
在安裝之后,Windows的所有分區已被掛載在/mnt/下面,同時可讀寫。不同Linux系統給的權限是不一樣的。fedora給的是755,ubuntu給的是777。
Windows訪問Linux
以ubuntu18.04為例,你可以在\wsl$\Ubuntu-18.04中看到LinuxLinux文件。由于Linux和Windows的權限系統邏輯不一致。直接在Windows下修改Linux系統的文件是不安全的,不被提倡的。不過,你可以通過這種方法,把Linux里面的文件拷貝出來。
啟用WSL2
對于有Insider Fast通道的同學,可以啟用WSL2。此時先要在上文所述的“啟用或關閉Windows功能”中啟用“虛擬機平臺”,或者在管理員的PowerShell下輸入Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform。然后再輸入命令wsl --set-version 2即可。安裝之后,可以把之前架構的發行版遷移到新的架構,也可以再恢復成原來的架構。相應地,wsl.exe也增加了諸多方法6。
沒有Insider Fast通道的同學,還需要再耐心等待。
這篇文章展示了WSL2的用戶體驗改進的方面,我們也期待早日使用上WSL2
文內鏈接
1.https://ruby-china.org/topics/1020
2.https://www.zhihu.com/question/47557590
3.https://docs.microsoft.com/en-us/windows/wsl/wsl2-faq
4.https://cmder.net/
5.https://hyper.is/
6.https://devblogs.microsoft.com/commandline/wsl-2-is-now-available-in-windows-insiders/
7.https://docs.microsoft.com/en-us/windows/wsl/wsl2-ux-changes
關于奇舞周刊
《奇舞周刊》是360公司專業前端團隊「奇舞團」運營的前端技術社區。關注公眾號后,直接發送鏈接到后臺即可給我們投稿。
總結
以上是生活随笔為你收集整理的unicode 字符集环境下的mfc 读写 ini 配置文件的_WSL:在Windows下优雅地玩Linux的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python实现2048游戏_pytho
- 下一篇: java获取gbk文件名 linux_J