Shell 是使用者和作業系統服務之間的介面。它提供了後台處理、輸入和輸出重定向、別名、連結和鏈命令等多種功能,使開發人員的工作變得輕鬆。我已經開始使用 zsh 有一段時間了,發現它比 bash 更有效。所以在這裡我整理了兩者之間的差異列表,這對我的理解有很大幫助。
因此,讓我們在一定基礎上比較這兩種 shell,找出差異。
它是對 shell 效能進行基準測試的有用方法之一。為了評估這一點,讓我們產生一些負載並檢查 shell 的反應速度。
以下命令:
In the above command replace **shell_name** with zsh and bash.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/u1i9tz83cqdn9eiy9te6.png)
* I have written a script that reads input from the user and prints in for loop multiple times. This will help to check the time taken to process the script.
對於seq 1 100
中的 i
做
for var in $*
do
echo "command line contains: $var"
done
完畢
Run the following command in both the shell to see the script execution time in each shell.
將上面命令中的 shell_name 替換為zsh/bash和一些長句子。
左右輸出分別用於 zsh 和 bash。
上面兩個片段的結果顯示 zsh 比 bash 更快。結果中的術語意義如下:
real是從通話開始到結束的時間。
user是指行程內使用者模式下所花費的 CPU 時間量。
sys是行程內核心所花費的 CPU 時間量。
Bash 在非登入互動式 shell 中讀取.bashrc文件,在登入 shell 中讀取.bash_profile 。
Zsh 在互動式 shell 中讀取.zshrc ,在登入 shell 中讀取.zprofile 。
*互動式 shell 是一個簡單的 shell,它驅動使用者輸入並傳回所需的輸出。
登入 shell 是當我們登入會話時在我們的使用者 ID 下執行的第一個進程。
在命令列上鍵入命令時執行的任何鍵盤操作(例如按 Ctrl+E 移至行尾)稱為鍵綁定。它使用完全不同的語法。
Bash 使用.inputrc 和bindbuiltIn將鍵綁定到readline命令。
Zsh 使用內建的bindkey將鍵綁定到zle 小工具。
Bash 設定來自PS1 的提示符,其中包含反斜線轉義符,例如\a ,而 zsh 包含百分比轉義符,例如%d 。 bash PROMT_COMMAND 的功能可透過precmd在 zsh 中使用。
Zsh 也提供了進行精美客製化的方法。
這兩個 shell 都提供命令完成和切換到高級模式等功能。在 bash 中,它是透過包含bash_completion來完成的,而 zsh 透過執行compinit來實現這一點。
有關 zsh完成系統的詳細資訊。
假設我們有一個變數$var
,兩個 shell 都會採用以下值
var 將其分割為空格字符,並且對於每個空格 -
分隔部分,如果它包含通配符並且匹配
現有文件以匹配列表替換模式。只是為了得到
我們需要$var
var
var 值
1 為 zsh 中的長度。
外部全域. In zsh same can be achieved by using
或setopt extended_glob
可以更簡單地鍵入本機語法。
zsh 有一些不錯的功能,例如 bash 不提供的Glob 限定詞和widcard 模式。網路上有很多 zsh 設定框架。它們可以成為開始使用一些強大功能的便捷方式。
原文出處:https://dev.to/jasmin/a-brief-difference-between-zsh-and-bash-5ebp