1. 程式人生 > >LINUX(UBUNTU)下的酷炫終端

LINUX(UBUNTU)下的酷炫終端

bject led evel packaging powerline flags log eas ive

網上看了一篇老外的文章,是在MAC下利用iTerm2+zsh+Powerlevel9k+Nerd Fonts 搞出來的酷炫終端,
圖片是這樣的:
技術分享圖片
是不是第一眼覺得高、大、上,第二眼覺得看上去有點暈。
如果你保持這種第一眼的認知,而苦於沒有沒有MAC,我告訴你,其實LINUX也能做出類似的效果

實驗利用UBUNTU+XSHELL終端實現(理論上其它發行版也可以)

1、安裝zsh

linux發行版大部分默認SHELL都是bash,而不是zsh,所以第一步安裝zsh

z00w00@ubuntu-14:~$ sudo apt-get install zsh
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹       
正在讀取狀態信息... 完成       
將會安裝下列額外的軟件包:
  zsh-common
建議安裝的軟件包:
  zsh-doc
下列【新】軟件包將被安裝:
  zsh zsh-common
升級了 0 個軟件包,新安裝了 2 個軟件包,要卸載 0 個軟件包,有 218 個軟件包未被升級。
需要下載 2,721 kB 的軟件包。
解壓縮後會消耗掉 11.4 MB 的額外空間。
您希望繼續執行嗎? [Y/n] y
獲取:1 http://cn.archive.ubuntu.com/ubuntu/ trusty-updates/main zsh-common all 5.0.2-3ubuntu6.3 [2,115 kB]
獲取:2 http://cn.archive.ubuntu.com/ubuntu/ trusty-updates/main zsh amd64 5.0.2-3ubuntu6.3 [606 kB]
下載 2,721 kB,耗時 4秒 (621 kB/s)
正在選中未選擇的軟件包 zsh-common。
(正在讀取數據庫 ... 系統當前共安裝有 56150 個文件和目錄。)
正準備解包 .../zsh-common_5.0.2-3ubuntu6.3_all.deb  ...
正在解包 zsh-common (5.0.2-3ubuntu6.3) ...
正在選中未選擇的軟件包 zsh。
正準備解包 .../zsh_5.0.2-3ubuntu6.3_amd64.deb  ...
正在解包 zsh (5.0.2-3ubuntu6.3) ...
正在處理用於 man-db (2.6.7.1-1) 的觸發器 ...
正在設置 zsh-common (5.0.2-3ubuntu6.3) ...
正在設置 zsh (5.0.2-3ubuntu6.3) ...
update-alternatives: using /bin/zsh5 to provide /bin/zsh (zsh) in 自動模式
update-alternatives: using /bin/zsh5 to provide /bin/rzsh (rzsh) in 自動模式
update-alternatives: 警告: 跳過創建 /usr/share/man/man1/rzsh.1.gz 因為所關聯文件 /usr/share/man/man1/zsh.1.gz (位於鏈接組 rzsh)不存在

現在我們把默認用戶的SHELL改掉

z00w00@ubuntu-14:~$ chsh -s /bin/zsh
密碼:

z00w00@ubuntu-14:~$ cat /etc/passwd |grep z00w00
z00w00:x:1000:1000:z00w00,,,:/home/z00w00:/bin/zsh

2、安裝git

z00w00@ubuntu-14:~$ sudo apt-get install git
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹       
正在讀取狀態信息... 完成       
將會安裝下列額外的軟件包:
  git-man liberror-perl
建議安裝的軟件包:
  git-daemon-run git-daemon-sysvinit git-doc git-el git-email git-gui gitk
  gitweb git-arch git-bzr git-cvs git-mediawiki git-svn
下列【新】軟件包將被安裝:
  git git-man liberror-perl
升級了 0 個軟件包,新安裝了 3 個軟件包,要卸載 0 個軟件包,有 218 個軟件包未被升級。
需要下載 3,394 kB 的軟件包。
解壓縮後會消耗掉 22.0 MB 的額外空間。
您希望繼續執行嗎? [Y/n] y
獲取:1 http://cn.archive.ubuntu.com/ubuntu/ trusty/main liberror-perl all 0.17-1.1 [21.1 kB]
獲取:2 http://cn.archive.ubuntu.com/ubuntu/ trusty-updates/main git-man all 1:1.9.1-1ubuntu0.8 [701 kB]
獲取:3 http://cn.archive.ubuntu.com/ubuntu/ trusty-updates/main git amd64 1:1.9.1-1ubuntu0.8 [2,672 kB]
下載 3,394 kB,耗時 6秒 (522 kB/s)                                             
正在選中未選擇的軟件包 liberror-perl。
(正在讀取數據庫 ... 系統當前共安裝有 57218 個文件和目錄。)
正準備解包 .../liberror-perl_0.17-1.1_all.deb  ...
正在解包 liberror-perl (0.17-1.1) ...
正在選中未選擇的軟件包 git-man。
正準備解包 .../git-man_1%3a1.9.1-1ubuntu0.8_all.deb  ...
正在解包 git-man (1:1.9.1-1ubuntu0.8) ...
正在選中未選擇的軟件包 git。
正準備解包 .../git_1%3a1.9.1-1ubuntu0.8_amd64.deb  ...
正在解包 git (1:1.9.1-1ubuntu0.8) ...
正在處理用於 man-db (2.6.7.1-1) 的觸發器 ...
正在設置 liberror-perl (0.17-1.1) ...
正在設置 git-man (1:1.9.1-1ubuntu0.8) ...
正在設置 git (1:1.9.1-1ubuntu0.8) ...

3、 安裝oh-my-zsh

它是基於 zsh 命令行的一個擴展工具集,驅動的命令行工具,提供了主題配置

z00w00@ubuntu-14:~$ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Cloning Oh My Zsh...
正克隆到 ‘/home/z00w00/.oh-my-zsh‘...
remote: Counting objects: 898, done.
remote: Compressing objects: 100% (754/754), done.
remote: Total 898 (delta 25), reused 731 (delta 17), pack-reused 0
接收對象中: 100% (898/898), 595.72 KiB | 107.00 KiB/s, done.
處理 delta 中: 100% (25/25), done.
檢查連接... 完成。
Looking for an existing zsh config...
Using the Oh My Zsh template file and adding it to ~/.zshrc
Time to change your default shell to zsh!
密碼: 
         __                                     __   
  ____  / /_     ____ ___  __  __   ____  _____/ /_  
 / __ \/ __ \   / __ `__ \/ / / /  /_  / / ___/ __ \ 
/ /_/ / / / /  / / / / / / /_/ /    / /_(__  ) / / / 
\____/_/ /_/  /_/ /_/ /_/\__, /    /___/____/_/ /_/  
                        /____/                       ....is now installed!

。。。省略部分

4、安裝Nerd Fonts字體並配置

註意這個明顯表示提示符發生變化

?  ~ mkdir -p Library/Fonts
?  ~ cd ~/Library/Fonts
?  Fonts pwd
/home/z00w00/Library/Fonts
?  Fonts curl -fLo "Droid Sans Mono for Powerline Nerd Font Complete.otf" https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/DroidSansMono/complete/Droid%20Sans%20Mono%20Nerd%20Font%20Complete.ot
f
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   213  100   213    0     0    124      0  0:00:01  0:00:01 --:--:--   124
100 2157k  100 2157k    0     0   142k      0  0:00:15  0:00:15 --:--:--  275k

? sudo apt-get install ttf-mscorefonts-installer
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹       
正在讀取狀態信息... 完成       
將會安裝下列額外的軟件包:
  cabextract fonts-liberation libfontenc1 libxfont1 x11-common
  xfonts-encodings xfonts-utils
下列【新】軟件包將被安裝:
  cabextract fonts-liberation libfontenc1 libxfont1 ttf-mscorefonts-installer
  x11-common xfonts-encodings xfonts-utils
升級了 0 個軟件包,新安裝了 8 個軟件包,要卸載 0 個軟件包,有 218 個軟件包未被升級。
需要下載 2,208 kB 的軟件包。
解壓縮後會消耗掉 4,358 kB 的額外空間。
您希望繼續執行嗎? [Y/n] y
。。。省略

?  Fonts  mkfontscale
?  Fonts mkfontdir
?  Fonts sudo apt-get install fontconfig
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹       
正在讀取狀態信息... 完成       
將會安裝下列額外的軟件包:
  fontconfig-config fonts-dejavu-core libfontconfig1
下列【新】軟件包將被安裝:
  fontconfig fontconfig-config fonts-dejavu-core libfontconfig1
升級了 0 個軟件包,新安裝了 4 個軟件包,要卸載 0 個軟件包,有 218 個軟件包未被升級。
需要下載 1,371 kB 的軟件包。
解壓縮後會消耗掉 4,406 kB 的額外空間。
您希望繼續執行嗎? [Y/n] y
。。。 省略
?  ~ git clone https://github.com/bhilburn/powerlevel9k.git ~/powerlevel9k
正克隆到 ‘/home/z00w00/powerlevel9k‘...
remote: Counting objects: 6938, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 6938 (delta 0), reused 2 (delta 0), pack-reused 6933
接收對象中: 100% (6938/6938), 1.94 MiB | 8.00 KiB/s, done.
處理 delta 中: 100% (4440/4440), done.
檢查連接... 完成。
?  Fonts fc-cache -fv ./
/home/z00w00/Library/Fonts: caching, new cache contents: 1 fonts, 0 dirs
/home/z00w00/Library/Fonts: caching, new cache contents: 1 fonts, 0 dirs
/var/cache/fontconfig: not cleaning unwritable cache directory
/home/z00w00/.cache/fontconfig: cleaning cache directory
/home/z00w00/.fontconfig: not cleaning non-existent cache directory
fc-cache: succeeded

5、安裝Powerlevel9k主題

以上我們做的zsh和oh-my-zsh都是給這個ZSH主題做基礎

?  ~ git clone https://github.com/bhilburn/powerlevel9k.git ~/powerlevel9k
正克隆到 ‘/home/z00w00/powerlevel9k‘...
remote: Counting objects: 6938, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 6938 (delta 0), reused 2 (delta 0), pack-reused 6933
接收對象中: 100% (6938/6938), 1.94 MiB | 8.00 KiB/s, done.
處理 delta 中: 100% (4440/4440), done.
檢查連接... 完成。

簡單編輯.zshrc

vim ~.zshrc
#添加和修改11-16行
 ZSH_THEME="~/powerlevel9k"
 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir vcs newline status)
 POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=()
 POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
 POWERLEVEL9K_MODE=‘nerdfont-complete‘
 source ~/powerlevel9k/powerlevel9k.zsh-theme

註意要正常顯示要將XSHELL終端字體改為
技術分享圖片

方法:上傳字體文件到你的XHSELL安裝服務器,然後安裝字體

實現的初步效果如下:
技術分享圖片

之所以能顯示帶有圖標的,是我們使用中文名叫“書呆子字體”的,比傳統裝逼字體powerline 以及其擴展多了上千個icon,具體情況請自行搜索

使用這種字體後,再加上一款基於ruby的Colorls工具,MAC下的效果如下:

技術分享圖片

這種效果我們繼續在ubuntu上模擬

6、 安裝ruby

由於ubuntu的默認ruby版本比較舊,colorls的作者建議至少在2.1,經過我測試在低版本1.9上安裝確實有問題,所以安裝2以上版本方法如下:

 ?  sudo apt-add-repository ppa:brightbox/ruby-ng
 Next generation Ubuntu packages for Ruby 2.5, 2.4, 2.3, 2.2, 2.1, 2.0 1.9.3 and 1.8.

See https://www.brightbox.com/docs/ruby/ubuntu/ for more details.

Discussion list here:

https://groups.google.com/forum/#!forum/brightbox-ruby-ubuntu-packaging

https://www.brightbox.com

 更多信息: https://launchpad.net/~brightbox/+archive/ubuntu/ruby-ng
按回車繼續或者 Ctrl+c 取消添加

gpg: 鑰匙環‘/tmp/tmpm8x7ox_r/secring.gpg’已建立
gpg: 鑰匙環‘/tmp/tmpm8x7ox_r/pubring.gpg’已建立
gpg: 下載密鑰‘C3173AA6’,從 hkp 服務器 keyserver.ubuntu.com
gpg: /tmp/tmpm8x7ox_r/trustdb.gpg:建立了信任度數據庫
gpg: 密鑰 C3173AA6:公鑰“Launchpad PPA for Brightbox”已導入
gpg: 合計被處理的數量:1
gpg:               已導入:1  (RSA: 1)
OK

 ? ~ 
 ? 100  sudo apt-get update         
命中 http://security.ubuntu.com trusty-security InRelease                      
   。。。。

 ? ~ 
 ?  sudo apt-get install ruby2.2
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹       
正在讀取狀態信息... 完成       
下列軟件包是自動安裝的並且現在不需要了:
  libtcl8.5 libtk8.5 libxft2 libxrender1 libxss1 ruby1.9.1-examples
Use ‘apt-get autoremove‘ to remove them.
將會安裝下列額外的軟件包:
  libjs-jquery libruby2.2 rubygems-integration
建議安裝的軟件包:
  javascript-common bundler
下列【新】軟件包將被安裝:
  libjs-jquery libruby2.2 ruby2.2 rubygems-integration
升級了 0 個軟件包,新安裝了 4 個軟件包,要卸載 0 個軟件包,有 216 個軟件包未被升級。
需要下載 3,559 kB 的軟件包。
解壓縮後會消耗掉 15.8 MB 的額外空間。
您希望繼續執行嗎? [Y/n] y
。。。

同時要安裝ruby2.2.-dev

 ? 100  sudo apt-get install ruby2.2-dev
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹       
正在讀取狀態信息... 完成       
下列軟件包是自動安裝的並且現在不需要了:
  libtcl8.5 libtk8.5 libxft2 libxrender1 libxss1 ruby1.9.1-examples
Use ‘apt-get autoremove‘ to remove them.
將會安裝下列額外的軟件包:
  libgmp-dev libgmpxx4ldbl
建議安裝的軟件包:
  libgmp10-doc libmpfr-dev
下列【新】軟件包將被安裝:
  libgmp-dev libgmpxx4ldbl ruby2.2-dev
升級了 0 個軟件包,新安裝了 3 個軟件包,要卸載 0 個軟件包,有 216 個軟件包未被升級。
需要下載 1,303 kB 的軟件包。
解壓縮後會消耗掉 6,417 kB 的額外空間。
您希望繼續執行嗎? [Y/n] y

安裝colorls的時候,發現調用make工具,建議也提前安裝一下

 ? 1  sudo apt-get install build-essential libtool
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹       
正在讀取狀態信息... 完成       
將會安裝下列額外的軟件包:
  autotools-dev dpkg-dev fakeroot g++ g++-4.8 libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libdpkg-perl libfakeroot
  libfile-fcntllock-perl libltdl-dev libltdl7 libstdc++-4.8-dev make
建議安裝的軟件包:
  debian-keyring g++-multilib g++-4.8-multilib gcc-4.8-doc libstdc++6-4.8-dbg
  libtool-doc libstdc++-4.8-doc autoconf automaken gfortran fortran95-compiler
  gcj-jdk make-doc
下列【新】軟件包將被安裝:
  autotools-dev build-essential dpkg-dev fakeroot g++ g++-4.8
  libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl
  libdpkg-perl libfakeroot libfile-fcntllock-perl libltdl-dev libltdl7
  libstdc++-4.8-dev libtool make
升級了 0 個軟件包,新安裝了 17 個軟件包,要卸載 0 個軟件包,有 215 個軟件包未被升級。
需要下載 20.7 MB 的軟件包。
解壓縮後會消耗掉 47.5 MB 的額外空間。
您希望繼續執行嗎? [Y/n] y

7、安裝corlorls

? ? ? sudo gem install colorls        
Building native extensions.  This could take a while...
Successfully installed clocale-0.0.4
Fetching: colorls-1.1.1.gem (100%)

  *******************************************************************
    Changes introduced in colorls

    Sort by dirs  : -sd flag has been renamed to --sd
    Sort by files : -sf flag has been renamed to --sf
    Git status    : -gs flag has been renamed to --gs

    Clubbed flags : `colorls -ald` works
    Help menu     : `colorls -h` provides all possible flag options

    Tab completion enabled for flags

    -t flag : Previously short for --tree, has been re-allocated to sort results by time
    -r flag : Previously short for --report, has been re-allocated to reverse sort results

    Man pages have been added. Checkout `man colorls`.

  *******************************************************************
Successfully installed colorls-1.1.1
Parsing documentation for clocale-0.0.4
Installing ri documentation for clocale-0.0.4
Parsing documentation for colorls-1.1.1
Installing ri documentation for colorls-1.1.1
Done installing documentation for clocale, colorls after 0 seconds
2 gems installed

以上狀態表示安裝成功

測試效果如下:
技術分享圖片

8、談談powerlevel9k主題

雖然我們為裝逼酷炫更換了SHELL,可能有些人覺得不值得。但是如果你研究一下這個基於ZSH的主題,其實還是覺得值得的。

經過調整後,我的最後的效果如下:
技術分享圖片

文件圖標顯示不是很完美,疑似等寬的問題,我沒有再繼續研究調整字體或修改配置等。

最後

我不建議你在生產服務器搞這些東西,但是如果你有一些測試的LINUX系統,我覺得玩一下還是不錯的選擇。

LINUX(UBUNTU)下的酷炫終端