Catalina 默認使用zsh了,你可習慣


zsh 成為默認 shell

淘汰掉我的舊MBP換新后,歡天喜地打開Terminal,感覺有點不對,提示符什么時候變成了 %

查詢了一些資料發現,原來在2019年WWDC期間,蘋果推出了macOS Catalina,並且將zsh設置為操作系統默認shell。因為之前我的筆記本都是從EI Captin一路升級上來的,所以沒體會到shell的變化,最近新換了筆記本后,才發現默認shell的變化。

蘋果在其官網上,也提供了如何更改默認 Shell 的操作步驟

bash

shell 俗稱殼,是用來與 kernel 內核做區分,作用是給計算機使用者提供操作界面,與計算機內核進行交互。它接收用戶命令,對命令做解析,然后調用系統中的應用。

shell 有很多種,這里介紹幾個常見的shell。

第一個 Unix Shell 是1979年底在V7 Unix(AT&T第7版)中引入的,以它的資助者 Stephen Bourne 命名。Bourne shell 是一個交互式命令解釋器和命令變成語言。

Bourne Again Shell (bash)是GNU計划的一部分,用來替代 Bourne shell。現在大多數Linux發行版都適用bash作為默認的shell。

zsh

zsh 號稱是「終極shell」,從這個稱號看出來它的功能應該很強大。zsh的歷史也很悠久,保羅·弗斯塔德(Paul Falstad)於1990年在普林斯頓大學求學時編寫了Zsh的初版。

zsh具有以下主要功能:

  • 開箱即用、可編程的命令行補全功能可以幫助用戶輸入各種參數以及選項。
  • 在用戶啟動的所有shell中共享命令歷史。這一點非常棒,曾經因為sh無法很好的解決多個窗口共享歷史命令的問題頭疼了一陣兒
  • 通過擴展的文件通配符,可以不利用外部命令達到find命令一般展開文件名。
  • 改進的變量與數組處理。
  • 在緩沖區中編輯多行命令。
  • 多種兼容模式,例如使用/bin/sh運行時可以偽裝成Bourne shell。
  • 可以定制呈現形式的提示符;包括在屏幕右端顯示信息,並在鍵入長命令時自動隱藏。
  • 可加載的模塊,提供其他各種支持:完整的TCP與Unix域套接字控制,FTP客戶端與擴充過的數學函數。
  • 完全可定制化。

zsh-自動完成

% autoload -U compinit && compinit
% cp -<TAB>
-H  -- follow symlinks on the command line in recursive mode
-L  -- follow all symlinks in recursive mode
-P  -- do not follow symlinks in recursive mode (default)
-R  -- copy directories recursively
-X  -- don't copy extended attributes or resource forks
-a  -- archive mode, same as -RpP
-f  -- force overwriting existing file
-i  -- confirm before overwriting existing file
-n  -- don't overwrite existing file
-p  -- preserve timestamps, mode, owner, flags, ACLs, and extended attributes
-v  -- show file names as they are copied
% kill <TAB>
 2630 ttys000    0:00.09 -zsh                                                                                                                                  
 2663 ttys000    0:00.00 -zsh   

由上面的例子可以看到,在打開自動完成功能后,使用Tab鍵可以自動提示cp命令的可選參數,也能夠自動提示出kill命令可以殺掉的用戶進程的pid。

zsh-自動切換文件夾

shiqiang@QKing ~ % ls
Desktop		Documents	Downloads	Library		Movies		Music		Parallels	Pictures	Projects	Public
shiqiang@QKing ~ % setopt auto_cd  
shiqiang@QKing ~ % Projects      
shiqiang@QKing Projects % pwd
/Users/shiqiang/Projects
shiqiang@QKing Projects % unsetopt auto_cd

打開這個選項后,就可以省略cd命令來實現自動切換文件夾。

Fish Shell

在我整理資料的過程中,不斷的看到一些文章資料介紹 fish shell 並且給它打上 90后 最現代 等一系列標簽來彰顯它的年輕與現代化,出於好奇我也整理試用了一下。

Fish 是 Friendly interactive shell 的簡稱,默認提供了很多shell需要配置才能有的功能,因此在易用性上有了很大的進步。它的一些功能特性總結如下:

  • 默認彩色顯示
  • 自動在光標后給出命令建議
  • 自動補全,fish shell會根據歷史命令或者命令的可能性自動列出所有可能的選項,還能在下方提供各個命令的解釋說明問題
  • fish的語法與bash差異較大,但是在可讀性上做了非常明顯的改善

參考資料

  1. 在 Mac 上將 zsh 用作默認 Shell
  2. zsh取代bash 成為macOS Catalina的默認shell
  3. Fish shell 入門教程
  4. 百度百科 shell
  5. Awesome Zsh
  6. Zsh Homepage


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM