分類

展開全部 | 收合全部

分類

展開全部 | 收合全部

【Windows】也許是 windows 上最貼近 linux 的 terminal,安裝 fluent terminal,在 windows 上使用 zsh (oh-my-zsh)

前言

如果也是長期在 linux 上進行開發的工程師,
相信都對 bash, zsh 等等不陌生,
但每次回到 windows 想進行類似的操作,卻又因為語法不同而非常困擾,
這次要推薦的也許是 windows 上最貼近 linux 的 terminal,
在 windows 上安裝 fluent terminal (可使用 bash, zsh)。

  • 我處理完後的樣子如下 (在 windows 電腦上)

使用到目前為止簡評一下:除了 $HOME 跟想像中不太一樣之外,
其他跟 windows 都是互通的,覺得很不錯。
(windows 的指令與 linux 環境差很多,一直很不習慣)

安裝 fluent terminal

step 1. (前置作業) 在 windows 安裝 WSL (Windows Subsystem for Linux)

第一次安裝的話,打開 powershell (記得管理員權限)

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

這邊細節就不贅述了,在我的另外一篇文章有講到更多細節。

請參考:【Docker】在 windows 上使用安裝並使用 Docker (全圖文說明) windows 安裝 WSL (Windows Subsystem for Linux)

step 2. (前置作業) 準備一個 linux 環境

這邊我們可以去 Microsoft Store 找一個自己喜歡的 linux 環境,
如果不知道怎麼選就選最經典的 Ubuntu 吧!

step 3. 安裝 Chocolatey,這是一種 Windows 套件的安裝包管理器 (類似 apt)

【Docker】在 windows 上使用安裝並使用 Docker (全圖文說明) windows 安裝 WSL (Windows Subsystem for Linux)

這裡我使用 powershell 的方式安裝 (記得務必使用系統管理員)

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

或者也可以使用 CMD 的方式安裝 (記得務必使用系統管理員)

```bash
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

step 4. 使用 Chocolatey 安裝 fluent terminal

choco install fluent-terminal

fluent terminal 的一些初始設定

從上面的步驟中,我們已經安裝好 fluent terminal,
打開來後,我們需要先進行一些初始設定。

設定 terminal 為 WSL terminal

打開 fluent terminal,可以從左上角的選單中找到設定,
我們需要去修改「終端設定」裡面的選項,修改為 WSL,
並在「預設設定」那邊打勾。

基本上,到此就已經有了一個能在 windows 執行 linux bash 的系統了。

(optional) 安裝 zsh, oh-my-zsh

安裝 zsh, oh-my-zsh

既然都已經是 linux 環境了,應該不用我們多教XD

#!/bin/bash
echo "[1/5] update system"
sudo apt-get update -y
sudo apt-get upgrade -y

echo "[2/5] install zsh"
sh -c "(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
sudo apt-get install zsh -y

echo "[3/5] Show all current shells"
cat /etc/shells
echo $SHELL

echo "[4/5] install oh-my-zsh"
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

echo "[5/5] change default shell to zsh shell"
chsh -s /bin/zsh

到此,zsh, oh-my-zsh 應該都已經裝好了。

註:zsh 為 shell script
oh-my-zsh 為主題,如果你只想要 zsh shell 的可不用裝主題 XD

(optional) 安裝 powerlevel10k & 對應字體

安裝 powerlevel10k

#!/bin/bash
# ----- powerlevel10k theme ------ #
echo "install powerlevel10k"
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>! ~/.zshrc

echo "[restart] restart zsh"
source ~/.zshrc

安裝 powerlevel10k 對應字體

因為 windows 原生應該是沒有 powerlevel10k 的一些特殊字元,
需要我們特別去安裝一下。

其他網站提供的下載的方式很多不能用了,另外如果將整包字體打包下載檔案也非常的巨大,因此參考其中一篇文章提供的方法,直接下載我們要的字體包。

我是安裝裡面的以下字體:

  • Sauce Code Pro ExtraLight Nerd Font Complete.ttf
  • Sauce Code Pro ExtraLight Nerd Font Complete Mono.ttf

設定 fluent terminal 字體

一樣去剛剛的設定裡面,找到終端,裡面第一個選擇我們剛剛安裝的字體,
我選擇的是「Sauce Code Pro ExtraLight Nerd Font Complete Mono.ttf」,

另外下面的字體大小、字體粗度(Font Widght)、字間距、半透明度,
就自己照自己喜歡改吧。

(optional) 修改 powerlevel10k 等各種設定檔 (需修改 ~/.zshrc, ~/.p10k.zsh 文件)

這邊基本上就是修改主題與介面,
懂得就自己修改成自己喜歡的樣子吧。

不懂的話… 建議是不要亂改啦,(建議做一點功課再來慢慢改)
萬一不小心改到 terminal 不能用了,也是滿麻煩的XD

echo "[optional] set ~/.zshrc (zsh settings)"
vim ~/.zshrc

echo "[optional] set ~/.p10k.zsh (powerlevel10k settings)"
cp ~/.p10k.zsh ~/.p10k.zsh.bak # backup
#p10k configure # GUI version
vim ~/.p10k.zsh

echo "[restart] restart zsh"
source ~/.zshrc
  • 我修改完 ~/.p10k.zsh 後的長這樣

(optional) install zsh plugins

zsh 好用的插件,我推薦以下兩個,自動完成與自動標示指令。

因為插件的關係,下面的”$”符號會被吃掉,
如果使用指令無法順利安裝,請參考官網的安裝指南:

#!/bin/bash
# ----- install zsh plugins ------ #

echo "[optional] install Syntax Highlighting Plugin"
# doc: https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/INSTALL.md
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

echo "[optional] install ZSH-AutoSuggestion Plugin"
# doc: https://github.com/zsh-users/zsh-autosuggestions/blob/master/INSTALL.md
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

設定 plugins (需修改 ~/.zshrc 文件)

在 ~/.zshrc 裡面新增 plugins=() 裡面的東東,
一樣建議不知道自己在幹嘛就不要亂改XD

echo "[optional] set ~/.zshrc to use plugins"
vim ~/.zshrc
plugins=(
git
zsh-syntax-highlighting
zsh-autosuggestions
)

echo "[restart] restart zsh"
source ~/.zshrc

(optional) 安裝 anaconda

這是我需要的,所以留在這邊

方法一:透過 wget 取得安裝腳本

bash Anaconda-latest-Linux-x86_64.sh
wget -P /tmp https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh
sha256sum /tmp/Anaconda3-2021.05-Linux-x86_64.sh
bash /tmp/Anaconda3-2021.05-Linux-x86_64.sh

方法二:透過 curl 取得安裝腳本

# 安裝 anaconda
cd /tmp
sudo apt install curl -y
curl -O https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh
sha256sum Anaconda3-2021.05-Linux-x86_64.sh
bash Anaconda3-2021.05-Linux-x86_64.sh

安裝 anaconda 過程中的注意事項 (注意 conda init !!!!!)

記得以上兩種安裝方式中,有個 conda init 的選項,
如果想要 terminal 預設啟動就是 conda 環境,強烈建議要選 yes !!!
(他預設給 no,但我覺得大家的習慣來說應該更希望 yes)

啊如果不小心就一直按 Enter,應該也會不小心把 conda init 的選項按成 no,
沒關係我們就自己去改,去修改 vim ~/.bashrc (或看你的 shell 也許是 ~/.zshrc)

找個地方補一下以下這段:
(記得使用者要改啊! 如果你使用者名稱不是 ubuntu,記得改成你的名稱)

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/ubuntu/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/ubuntu/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/ubuntu/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/ubuntu/anaconda3/bin:$PATH"
        # export PATH="/home/ubuntu/anaconda3/envs/mlenv/bin:$PATH"
        # set python3 as default
        # export PATH="/home/ubuntu/anaconda/envs/python3/bin:$PATH"
    fi
fi
unset __conda_setup
# conda config --set auto_activate_base false
# conda activate myenv
# <<< conda initialize <<<

(optional) 隨便建立一個測試的環境

只是測試用,可不做。
(記得要重新啟動 terminal 修改才會生效)

conda list
conda create --name myenv python=3
conda activate myenv

小結:使用到目前為止的簡評

使用到目前為止簡評一下:除了 $HOME 跟想像中不太一樣之外,
其他跟 windows 都是互通的,覺得很不錯。
(windows 的指令與 linux 環境差很多,一直很不習慣)

Reference

⭐Linux 指令 相關文章整理 (此表最後手動整理時間:2022/10/5) ⭐:
⭐Linux 終端機 (terminal) 操作、shell 篇⭐:
1.(terminal指令 常用總整理)【Linux】linux/ubuntu/mac 基礎終端機 (terminal) 指令 & 基礎知識總整理,初學者/新手 必須知道的基礎指令 & 基礎知識大全(持續更新)
2.(terminal快速鍵 常用總整理)【Linux】linux/ubuntu/mac 基礎終端機 (terminal) 快速鍵/小技巧,初學者/新手 必須知道的一些實用功能!(持續更新)
3.【Linux】好用的終端機管理工具 – tmux (類似 screen 的進階版)
4.【Linux】終端機小技巧 – default start screen treminal,無縫接軌任何電腦,繼續使用同一個 terminal 殘留下來的訊息
5.【Linux】z,zim 套件中最快搜尋指定資料夾的套件,以後不用 cd 之後再慢慢 tab 尋找路徑了!
6.【Linux】zim (+zsh) – 也許是目前最快也最實用的 linux terminal 與套件,直接把終端機開發效率飆升到最高
7.【Linux】終端機小技巧 – sudo 補上快速完成 (終端機指令小祕技)
8.【Windows】也許是 windows 上最貼近 linux 的 terminal,安裝 fluent terminal,在 windows 上使用 zsh (oh-my-zsh)
9.【Linux】透過 screen 讓 terminal 內的工作內容可以無縫接軌到任何電腦 (儲存當下 terminal 內容),並可以繼續操作
⭐Linux 基礎指令篇⭐:
1.【嗡嗡精選】ubuntu 個人自用小抄 (last update: 2022/6/24)
2.【Linux】(作業系統基礎知識) 簡單理解「相對路徑」與「絕對路徑」,程式設計 初學者/新手 必須知道的路徑知識總整理
3.【Linux】linux ubuntu 中利用 mkdir 建立資料夾 相關參數總整理 (必定建立資料夾、修改資料夾權限 777)
4.【Linux】linux ubuntu 使用 terminal (終端機) 關機 shutdown、重新開機 reboot 的方法
5.【Linux】小知識 source 與 bash 執行 script 的差別
6.【Linux】在 ubuntu terminal 中 執行關機、重新開機指令 (shutdown, reboot)
7.【Linux】在 terminal 中 設定 ssh alias (bashrc, zshrc 中使用 alias)
8.【Linux】Ubuntu 上安裝軟體的方式筆記 apt, apt-get, dpkg 總整理
9.【Linux】在 Linux 中查看 cpu, gpu 資訊
⭐Linux 搜尋相關⭐:
1.【Linux 搜尋相關 #1】在 terminal 的各種搜尋大全, ack, grep, find 個人經常使用情境整理
2.【Linux 搜尋相關 #2】linux ubuntu 使用 grep, awk, xargs 尋找需要的資料,快速濾出/篩選 結果欄位 所需要的資訊 (內附圖文說明) filter column
3.【Linux 搜尋相關 #3】linux, ubuntu 使用 ps, grep, pgrep 找到 執行中程式的相關資訊 與 pid (ps aux, ps -ef)
4.【Linux 搜尋相關 #4】linux ubuntu 中利用 grep 蒐集 log 或任何文件內的訊息 (grep -A -B -C 的範圍搜尋)
⭐Linux 網路相關篇⭐:
1.【Linux】利用 ifconfig 查詢 ip 並用 scp 傳送資料 – linux, ubuntu 基礎終端機指令學習 sample code (內含範例程式碼)
2.【Linux】使用 sshfs 連線 將遠方磁碟當作像是在自己電腦的硬碟 mount disk on other computer
3.【Linux】使用 curl 將網路上的檔案 透過終端機 terminal 的方式下載 download
4.【ssh】透過建立 ssh authorized_keys 讓 VScode 繞過輸入 ssh 密碼 or 達成 ssh 免密碼登入 (last update: 2022/9/12)
5.【Linux】透過 ssh config 設定 port forwarding,透過 local 網頁指定 Port 看到遠方主機對應的 Port 資訊 (內含 ssh config 設定整理)
6.【Linux】修改 ssh config 取主機暱稱 | 透過 ssh authorized_keys 公私鑰,達成 ssh 免密碼登入
7.【Linux】在 terminal 中尋找 username, hostname 作為 ssh 連線的方式 (以連線到 raspberrypi 為例)
8.【Linux】透過 ssh 使本地 port 連接遠端 port 的內容 (ssh use local port to connect remote port)
9.【Windows】在 windows VScode 透過 ssh 連線至遠端 Linux Docker container (2022/3/13 新增方法)
10.【Windows】將 anydesk 作為 VPN 跳板 (建立 tcp tunnel),使用 ssh 進行遠端連線開發 (Windows anydesk ssh command line)
11.【Mac】在 Mac 開啟 ssh 的方法,從外部主機 ssh 連線至 Mac,ssh Mac localhost
12.【Mac】將 anydesk 作為 VPN 跳板 (建立 tcp tunnel),使用 ssh 進行遠端連線開發 (Mac anydesk ssh command line)
13.【Linux】將 anydesk 作為 VPN 跳板 (建立 tcp tunnel),使用 ssh 進行遠端連線開發 (anydesk ssh command line)
14.【MobaXterm】在 Windows 中使用 MobaXterm VPN 連線至遠端系統 (linux, ubuntu) 遠端 ssh 顯示畫面
15.【Linux】ubuntu/mac 安裝 sshpass,讓 ssh 可以免密碼直接登入,使用的效率更高
16.【Linux】在 Linux 中 設定 X11 forward ssh 使遠端畫面能顯示在本地端
17.【OpenVPN】mac 使用 OpenVPN 建立 VPN 遠端連線的方法 (全圖文說明)
⭐Linux 檔案處理相關⭐:
1.【Linux】linux, ubuntu 壓縮檔案常用指令 tar gzip zip 7z 壓縮檔案切割、壓縮檔案加密 與 解壓縮套件安裝方法 (內附圖文說明)
2.【Linux】Linux 查詢資料夾內的檔案數目 ls -1 | wc -l
3.【Linux】linux ubuntu 中利用 tail -f 可以查看 log 並不斷更新
4.【Linux】在終端機 terminal 使用 ln -s 建立如 windows, mac, ubuntu 檔案系統上的捷徑 – 軟連結 (Symbolic Link)
5.【Linux】linux, ubuntu 使用 split 指令檔案切割、檔案合併
6.【Linux】Linux 運用 sed 進行檔案內容的取代 instead 用法
7.【Linux】mac/ubuntu 如何利用 terminal 打開 GUI 資料夾總整理
8.【Linux】透過 Rclone 掛載 google drive,達成本地檔案總管 / terminal 訪問 的效果 (rclone mount google drive)
9.【Linux】使用 Rclone 完成 google drive mount,使用終端機操作 google drive,將 google drive 作為本地硬碟使用 (ubuntu, mac, windows)
⭐Linux 特殊應用篇⭐:
1.【Linux】Linux 增加 swap 的虛擬記憶體空間
2.【Linux】在 Ubuntu (Linux 系統) 上透過 / etc/fstab 安裝新的硬碟、新增硬碟容量 (SSD, HDD) (內附圖文說明)
3.【Linux】linux / ubuntu 複製硬碟的方法 copy all disk
4.【Linux】(內附圖文說明) ubuntu 停止自動更新的方法 disable auto update
5.【Linux】linux/ubuntu 下執行 anaconda-navigator 的方法
6.【Linux】linux ubuntu 使用 flock 建立程式執行時的順序控制, 固定系統執行的 process 數量 (確保程式執行順序)
⭐Bash 自動化程式撰寫⭐:
1.【Bash】echo,bash 的 hello world 基本教學,開始自動化程式的第一堂課 / 撰寫腳本,利用 echo 顯示變數
1.【Bash】(內含範例程式碼) Linux terminal 取得 (資料夾內) 所有的檔案名稱 (bash get all file, bash glob, parse file)
1.【Bash】什麼是 #!/bin/bash, #!/bin/sh,為什麼要加在 script 前面 (問題解決:sh, bash 的不同)
⭐Linux 文字編輯器相關⭐:
1.(vim指令 常用總整理)【Linux】linux/ubuntu/mac vim 的 新手/初學者 的基礎使用指令 與 個人常用功能總整理 (持續更新)
2.【Linux】linux/ubuntu/mac nano 的 新手/初學者 的基礎使用指令 與 個人常用功能總整理 (持續更新)
⭐Docker 相關⭐:
1.【Git】- 03 | 第一次將 git 的內容推上 (push 上) 雲端 (此處雲端以 github 示範)
2.【Docker】建立一個有桌面 GUI 的 container, 透過 xrdp 建立桌面
3.【Docker】利用 VScode 透過 ssh tunnel 直接連線到遠端 Docker 的 container 中進行開發
4.【Docker】在 windows 上使用安裝並使用 Docker (全圖文說明) windows 安裝 WSL (Windows Subsystem for Linux)
⭐Git 相關⭐:
1.【Git】- 03 | 第一次將 git 的內容推上 (push 上) 雲端 (此處雲端以 github 示範)
2.【Git】git 小技巧 – git checkout 快速切換為上一次使用的 branch / git branch 自動完成 (git checkout branch without typing full name)
3.【Git】2 – (git local) 透過 git 修改過去的錯誤 commit (時空倒流),git 錯誤處理 (建議先學的 git 基本實用功能)
⭐ffmpeg 相關⭐:
1.【ffmpeg】利用 ffmpeg 來直接修改影片的對比度、亮度、飽和度 (contrast, brightness, saturation)
⭐一些我自己用的腳本⭐:
1.【Linux】自動化腳本 / linux ubuntu 上純使用 terminal 安裝 anaconda (install anaconda without GUI)
2.【嗡嗡精選】自動化腳本 / 個人自用 alias, 加快我們使用 terminal 開發的效率
3.【Linux】在 fish terminal 初始化 anaconda
4.【Docker】自動化腳本 / 自動初始化 container , auto run container setting script
5.【Linux】自動化腳本 / 安裝 fish, oh-my-fish (問題解決:omf theme not working)
6.【嗡嗡精選】自動化腳本 / 安裝 zsh, oh-my-zsh, powerlevel10k
7.【Linux】自動化腳本 / 自動建立資料夾路徑 auto make folder script
8.【Docker】自動化腳本 / 自動 commit container 為 tar 腳本, auto commit container to tar script
⭐【喜歡我的文章嗎? 歡迎幫我按讚~ 讓基金會請創作者喝一杯咖啡!
如果喜歡我的文章,請幫我在下方【按五下Like】 (Google, Facebook 免註冊),會由 「LikeCoin」 贊助作者鼓勵繼續創作,讀者們「只需幫忙按讚,完全不用出錢」哦!

likecoin-steps
Howard Weng
Howard Weng

我是 Howard Weng,很多人叫我嗡嗡。這個網站放了我的各種筆記。希望這些筆記也能順便幫助到有需要的人們!如果文章有幫助到你的話,歡迎幫我點讚哦!
另外,因為定位是「個人的隨手筆記」,有些文章內容「⚠️可能我理解有誤⚠️」或「?只寫到一半?」,如果有發現這樣的情況,歡迎在該文章的最下面留言提醒我!我會儘快修正或補上!感謝大家的建議與幫忙,讓網站能變得更好?

文章: 889

★留個言吧!內容有誤或想要補充也歡迎與我討論!