全文共6894字,預計學習時長18分鐘
在十多年的開發生涯中,筆者熱衷於使用shell。命令永遠不變,筆者可以創建可靠、快捷的自定義快捷方式,但默認值欠佳。閱讀本文將帶你了解如何在系統上獲得很棒的shell +終端。
術語
shell用於執行命令。終端(terminal)是運行shell的包裝器。在終端上可以設置字體、字體大小、配色方案以及支持多個選項卡。終端仿真器的示例包括GNOME終端、KDE的Konsole,Terminator和XTerm。對於Linux系統,筆者建議保留默認值。Windows適用Windows Terminal;Mac適用iTerm2。
(Linux上的四個終端仿真器(Gnome Terminal、Konsole、XTerm、Terminator)。XTerm不直接支持標籤。其他的打開了2個選項卡。它們都運行Bash shell。| 圖源:MartinThoma)
系統的Shell包括ZSH、Bash、fish。Windows系統典型的shell是PowerShell。可以通過執行echo $ 0來查看正在運行的shell。Linux系統使用更多的是Bash shell。
(在Gnome終端中的三個Linux shell(ZSH、Bash、fish),ZSH shell經過了大量更改;Bash shell和fish shell顯示默認值。可見,fish shell具有其他兩個shell缺少的內聯自動提示功能。| 圖源:Martin Thoma。)
每個shell都有提示符(prompt)。提示符是光標之前寫入的內容。它表示可以輸入指令並提供有用的背景信息。在上面的示例中,提示符包含用戶名moose,當前計算機pc08 ,當前工作目錄 ~/GitHub/MartinThoma/flake8-simplify,活躍git分支feature/19以及進行了±修改的事實。
字體
無論選擇哪個,字體都很重要。你可能想要一個等寬字體,相信我一定要安裝powerline字體。powerline字體能使shell使用像圖像的字符。它可以使提示符效果更好。筆者比較喜歡UbuntuMono和DroidSans Mono:
也有Fira Code、Jetbrains Mono 這樣的「編程字體」。筆者不喜歡它們,因為很難識別所寫內容。
Windows終端
首先確保已安裝Windows終端。啟動終端並找到設置。它是這個指下的「小箭頭」:
可以選擇JSON文件隨自己喜好而更改。如下:
// This file was initially generated byWindows Terminal 1.2.2381.0// It should still be usable in newerversions, but newer versions might have additional// settings, help text, or changes thatyou will not see unless you clear this file// and let us generate a new one foryou.// To view thedefault settings, hold "alt" while clicking onthe "Settings" button.// For documentation on thesesettings, see: https://aka.ms/terminal-documentation { "$schema": "https://aka.ms/terminal-profiles-schema", "defaultProfile": "{2c4de342-38b7-51cf-b940-2309a097f518}", "initialCols": 120, "initialRows": 30, //Youcanaddmoreglobalapplicationsettingshere.//Tolearnmoreaboutglobalsettings,visithttps://aka.ms/terminal-global-settings//Ifenabled, selectionsareautomaticallycopiedtoyourclipboard."copyOnSelect": false, //Ifenabled,formatteddataisalsocopiedtoyourclipboard"copyFormatting": false, //Aprofilespecifiesacommandtoexecutepairedwithinformationabouthowitshouldlookandfeel.//Eachoneofthemwillappearinthe'NewTab'dropdown,// andcanbeinvokedfromthecommandlinewith`wt.exe-pxxx`//Tolearnmoreaboutprofiles,visithttps://aka.ms/terminal-profile-settings"profiles": { "defaults": { //Putsettingsherethatyouwanttoapplytoallprofiles. }, "list": [ { //Makechangesheretothepowershell.exeprofile."guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", "name": "WindowsPowerShell", "commandline": "powershell.exe", "hidden": false, "fontFace": "DejaVuSans Mono for Powerline" }, { //Makechangesheretothecmd.exeprofile."guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}", "name": "CommandPrompt", "commandline": "cmd.exe", "hidden": false }, { "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}", "hidden": false, "name": "Ubuntu", "source": "Windows.Terminal.Wsl", "fontFace": "DejaVuSans Mono for Powerline", "colorScheme": "Solarized Dark", }, { "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}", "hidden": false, "name": "AzureCloud Shell", "source": "Windows.Terminal.Azure" } ] }, //Addcustomcolorschemestothisarray.//Tolearnmoreaboutcolorschemes,visithttps://aka.ms/terminal-color-schemes"schemes": [ { "background": "#073642", "black": "#073642", "blue": "#268BD2", "brightBlack": "#002B36", "brightBlue": "#839496", "brightCyan": "#93A1A1", "brightGreen": "#586E75", "brightPurple": "#6C71C4", "brightRed": "#CB4B16", "brightWhite": "#FDF6E3", "brightYellow": "#657B83", "cyan": "#2AA198", "foreground": "#FDF6E3", "green": "#859900", "name": "Solarized Dark", "purple": "#D33682", "red": "#D30102", "white": "#EEE8D5", "yellow": "#B58900" }, { "background": "#FDF6E3", "black": "#073642", "blue": "#268BD2", "brightBlack": "#002B36", "brightBlue": "#839496", "brightCyan": "#93A1A1", "brightGreen": "#586E75", "brightPurple": "#6C71C4", "brightRed": "#CB4B16", "brightWhite": "#FDF6E3", "brightYellow": "#657B83", "cyan": "#2AA198", "foreground": "#073642", "green": "#859900", "name": "Solarized Light", "purple": "#D33682", "red": "#D30102", "white": "#EEE8D5", "yellow": "#B58900" }, ], //Addcustomkeybindingstothisarray.//Tounbindakeycombinationfromyourdefaults.json,setthecommandto"unbound".//Tolearnmoreaboutkeybindings,visithttps://aka.ms/terminal-keybindings"keybindings": [ //CopyandpasteareboundtoCtrl+Shift+CandCtrl+Shift+Vinyourdefaults.json.//ThesetwolinesadditionallybindthemtoCtrl+CandCtrl+V.//Tolearnmoreaboutselection, visithttps://aka.ms/terminal-selection { "command": {"action": "copy", "singleLine": false }, "keys": "ctrl+c" }, { "command": "paste", "keys": "ctrl+v" }, //PressCtrl+Shift+Ftoopenthesearchbox { "command": "find", "keys": "ctrl+shift+f" }, //PressAlt+Shift+Dtoopenanewpane.//-"split":"auto"makesthispaneopeninthedirectionthatprovidesthemostsurfacearea.//-"splitMode":"duplicate"makesthenewpaneusethefocusedpane'sprofile.//Tolearnmoreaboutpanes, visithttps://aka.ms/terminal-panes { "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }, "keys": "alt+shift+d" }, {"command": "closeTab", "keys": "ctrl+w"}, {"command": "newTab", "keys": "ctrl+t"} ] }
下載並安裝所有4種「 DejaVu Sans Mono Powerline」字體。在已知的所有系統上,字體安裝都是一個流程:雙擊字體,然後跳出一個有「安裝」按鈕的窗口。
Linux和Windows終端:Aminal
Aminal是用Go語言編寫的終端仿真器。可用於Linux、Windows和Mac。它允許通過配置文件完成顏色、鍵盤快捷鍵等配置。首先需要在系統中安裝並配置Go語言。Ubuntu的示例如下:
$ sudo apt-get install golang libgl1-mesa-dev xorg-dev$export GOPATH="$HOME/go"$export GOBIN=$(go env GOPATH)/bin
接著就可以安裝並運行aminal了:
$ go get -u github.com/liamg/aminal$ aminal
Linux系統:Gnome終端
可以通過編輯文件來自定義Gnome終端。這裡筆者用12號字設置了Ubuntu Mono衍生的powerline常規字體。
命令是為了zsh而設置,因為這是筆者最喜歡的shell。
顏色設置為solarized dark(從左到右、從上到下)
· 背景: #2e3436 / #555753
· 深紅: #cc0000 / 淺紅: ef2929
· 深綠: #4e9a06 / 淺綠: #8ae234
· 深黃: #c4a000 / 淺黃: #fce94f
· 深藍: #3465a4 / 淺藍: #729fcf
· 深紫: #75507b / 淺紫: #ad7fa8
· 深藍綠: #06989a / 淺藍綠: #34e2e2
· 深灰: #d3d7cf /淺灰: #eeeeec
Linux系統:fish shell
安裝fish shell:
sudo apt-get install fish
更改終端仿真器的默認shell為fish。在Gnome終端叫做「自定義命令」
接著安裝「Oh My Fish」
curl -L https://get.oh-my.fish | fish
然後將主題設置為agnoster:
omfinstall agnosteromftheme agnoster
別名
要使終端表現出色,核心部分的命令就要簡短。因此為命令創建一個別名,即簡短版的原命令。最常見是將目錄更改為上一級。假如是在 /home/user/foo/bar中,則要轉到 /home/user/foo。大多數shell都必須輸入cd .. 。我喜歡將其縮寫為 ..。所以別名就是alias ..='cd ..' 。
語法可能不同,具體取決於shell。對於Bash、ZSH和fish:
aliasshort='long'
在bash中要插入到 ~/.bashrc,ZSH中則是 ~/.zshrc,fish中也不相同。一些別名如下:
# Shorten thingsalias ..='cd ..'alias ...='cd ../../'alias ll='ls -alF'alias la='ls -A'alias l='ls -CF'alias c='clear'# If your terminal supports colors, use them!alias ls='ls --color=auto'alias grep='grep --color=auto'alias fgrep='fgrep --color=auto'alias egrep='egrep --color=auto'alias diff='colordiff'# Works only if you have notify-sendalias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echoterminal || echo error)" "$(history|tail -n1|sed -e'\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
總結一下:
· 使用不錯的終端仿真器。建議Linux系統使用Gnome終端,Mac系統使用iTerm 2,Windows系統使用Windows終端。
· 安裝比較好的powerline字體,比如Ubuntu Mono Powerline。
· 在終端仿真器中按照喜好調整字體、字號以及顏色。
· 安裝一個好的shell。建議Linux系統使用fish shell,Windows系統使用PowerShell。
· 按需調整shell的提示符。筆者個人喜歡agnoster主題。
留言點讚關注
我們一起分享AI學習與發展的乾貨
如轉載,請後臺留言,遵守轉載規範