Oh-My-Zsh的配置與使用

来源:https://www.cnblogs.com/monsterdev/archive/2019/07/10/11166720.html
-Advertisement-
Play Games

什麼是Shell? 相對於內核來說,Shell是Linux/Unix的一個外殼,它負責外界與Linux內核的交互,接收用戶或其他應用程式的命令,然後把這些命令轉化成內核能理解的語言,傳給內核,內核是真正幹活的,幹完之後再把結果返回用戶或應用程式。 簡單的說,shell就是那“黑乎乎”的命令行。 Sh ...


什麼是Shell?

相對於內核來說,Shell是Linux/Unix的一個外殼,它負責外界與Linux內核的交互,接收用戶或其他應用程式的命令,然後把這些命令轉化成內核能理解的語言,傳給內核,內核是真正幹活的,幹完之後再把結果返回用戶或應用程式。
簡單的說,shell就是那“黑乎乎”的命令行。

Shell的分類

Linux/Unix提供了很多種Shell,不同的shell具備不同的功能,shell還決定了腳本中函數的語法,Linux中預設的shell是/bin/bash;

想知道你的系統有幾種shell,可以通過以下命令查看:

cat /etc/shells

顯示如下:

/bin/bash  
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

bash這個是目前大多數Linux系統預設使用的shell,全名是BourneAgain Shell,一共有40個命令。包含的功能幾乎可以涵蓋shell所具有的功能,所以一般的shell腳本都會指定它為執行路徑。

在 Linux 里執行這個命令和 Mac 略有不同,你會發現 Mac 多了一個 zsh,也就是說 OS X 系統預裝了個 zsh,它是什麼呢?

zsh介紹

zsh 是一款功能強大的 shell 軟體,它可以相容 bash,並且提供了很多高效的改進。它是Linux里最龐大的一種shell,它有84個內部命令,也提供了更為強大的功能:

  • 更好的自動補全
  • 更好的文件名展開
  • 豐富的插件
  • 強大的定製性

但是由於配置過於複雜,一般情況下,我們不會使用該shell,直到「oh my zsh」的出現。

zsh安裝

如果你用 Mac,就可以直接看下一節,Mac預設已經安裝;
如果你用 Redhat Linux,執行:sudo yum install zsh;
如果你用 Ubuntu Linux,執行:sudo apt-get install zsh;

oh my zsh

Oh My Zsh(http://ohmyz.sh/)是一款社區驅動的命令行工具,正如它的主頁上說的,Oh My Zsh 是一種生活方式。它基於zsh命令行,提供了主題配置,插件機制,已經內置的便捷操作。給我們一種全新的方式使用命令行。

Oh My Zsh只是一個對zsh命令行環境的配置包裝框架,但它不提供命令行視窗,更不是一個獨立的APP。

安裝

官網推薦安裝方式:

Via curl:

$ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Via wget:

$ sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

切換系統shell:

$ chsh -s /bin/zsh

配置

zsh的配置文件存在當前用戶目錄中的.zshrc文件,如果你發現切換了shell之後,以前的配置的環境變數不生效了,可以打開 .zshrc文件,找到:

 # User configuration
 source ~/.bash_profile

指定配置的環境變數文件,之後運行:

source .zshrc

主題設置

在.zshrc文件中找到主題的配置項

# Set name of the theme to load. Optionally, if you set this to "random"
# it'll load a random theme each time that oh-my-zsh is loaded.
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
ZSH_THEME="ys"

這裡可以設置主題的名字,那麼這些主題的名字從哪裡找呢?
進入Oh My Zsh的配置目錄中:

ls /Users/用戶/.oh-my-zsh/themes

可以看到內置了許多主題,根據主題文件的名字替換就可以了;

3den.zsh-theme                essembeh.zsh-theme            junkfood.zsh-theme            rgm.zsh-theme
Soliah.zsh-theme              evan.zsh-theme                kafeitu.zsh-theme             risto.zsh-theme
adben.zsh-theme               example.zsh-theme             kardan.zsh-theme              rixius.zsh-theme
af-magic.zsh-theme            fino-time.zsh-theme           kennethreitz.zsh-theme        rkj-repos.zsh-theme
afowler.zsh-theme             fino.zsh-theme                kiwi.zsh-theme                rkj.zsh-theme
agnoster.zsh-theme            fishy.zsh-theme               kolo.zsh-theme                robbyrussell.zsh-theme
alanpeabody.zsh-theme         flazz.zsh-theme               kphoen.zsh-theme              sammy.zsh-theme
amuse.zsh-theme               fletcherm.zsh-theme           lambda.zsh-theme              simonoff.zsh-theme
apple.zsh-theme               fox.zsh-theme                 linuxonly.zsh-theme           simple.zsh-theme
arrow.zsh-theme               frisk.zsh-theme               lukerandall.zsh-theme         skaro.zsh-theme
....

或者我們將主題設置為隨機('random'),每次打開命令行視窗,都會隨機在預設主題中選擇一個,如果遇到你喜歡的主題,可以輸入命令查看其名字:

$ echo $ZSH_THEME

插件開啟

Oh My Zsh 預設自帶了一些預設主題,存放在~/.oh-my-zsh/plugins目錄中。我們可以查看這些插件

$ ls ~/.oh-my-zsh/plugins

adb               brew         coffee             dirpersist      fastfile         gitignore                 httpie     last-working-dir  nanoc                  pod         rebar       sprunge        terminitor  vault              zeus
ant               brew-cask    colemak            django          fbterm           git-prompt                iwhois     lein              nmap                   postgres    redis-cli   ssh-agent      terraform   vim-interaction    zsh-navigation-tools
apache2-macports  bundler      colored-man-pages  dnf             fedora           git-remote-branch         jake-node  lighthouse        node                   pow         repo        stack          textastic   vi-mode            zsh_reload
archlinux         bwana        colorize           docker          forklift         glassfish                 jhbuild    lol               npm                    powder      rsync       sublime        textmate    virtualenv
asdf              cabal        command-not-found  docker-compose  frontend-search  gnu-utils                 jira       macports          nvm                    powify      ruby        sudo           thefuck     virtualenvwrapper
autoenv           cake         common-aliases     emacs           gas              go                        jruby      man               nyan                   profiles    rvm         supervisor     themes      vundle
autojump          cakephp3     compleat           ember-cli       geeknote         golang                    jsontools  marked2           osx                    pyenv       safe-paste  suse           thor        wakeonlan
autopep8          capistrano   composer           emoji           gem              gpg-agent                 jump       mercurial         pass                   pylint      sbt         svn            tmux        wd
aws               cask         copydir            emoji-clock     git              gradle                    kate       meteor            paver                  python      scala       svn-fast-info  tmux-cssh   web-search
battery           catimg       copyfile           emotty          git-extras       grails                    kitchen    mix               pep8                   rails       scd         symfony        tmuxinator  wp-cli
bbedit            celery       cp                 encode64        gitfast          grunt                     knife      mix-fast          per-directory-history  rake        screen      symfony2       torrent     xcode
bgnotify          chruby       cpanm              extract         git-flow         gulp                      knife_ssh  mosh              perl                   rake-fast   scw         systemadmin    tugboat     yii
boot2docker       chucknorris  debian             fabric          git-flow-avh     heroku                    laravel    mvn               phing                  rand-quote  sfffe       systemd        ubuntu      yii2
bower             cloudapp     dircycle           fancy-ctrl-z    github           history                   laravel4   mysql-macports    pip                    rbenv       singlechar  taskwarrior    urltools    yum
branch            codeclimate  dirhistory         fasd            git-hubflow      history-substring-search  laravel5   n98-magerun       pj                     rbfu        spring      terminalapp    vagrant     z

我們打開.zshrc配置文件,定位到plugins

 plugins=(
   git )

可以看到預設只開啟了git插件,我們可以將要使用的插件的名字以空格相隔接在後面就可以了,比如:

 plugins=(
   git adb)

如果我們要下載第三方的插件,只需要把插件下載存放到~/.oh-my-zsh/plugins中,然後在上面加上插件的名字即可;

推薦插件

zsh-autosuggestions

它是Oh-myszh的一個插件,作用基本上是根據歷史輸入指令的記錄即時的提示,能夠很大的提高效率。

1.克隆到插件目錄:

git clone git://github.com/zsh-users/zsh-autosuggestions

2.修改配置文件.zshrc:

plugins=(git zsh-autosuggestions)

zsh-syntax-highlighting

這是一個命令高亮插件,輸入為綠色時表示可用命令,路徑帶有下劃線時表示可用路徑

1.克隆到插件目錄:

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git

2.修改配置文件.zshrc:

plugins=(git zsh-syntax-highlighting)

最後別忘了讓配置生效

source .zshrc

引用:
終極 Shell.
利用Oh-My-Zsh打造你的超級終端


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 目錄 1 目錄 2 前言... 3 2.1 編寫目的... 3 2.2 適用範圍... 4 3 命名規範... 4 3.1 命名約定... 4 3.1.1 PascalCasing. 4 3.1.2 camelCasing. 4 3.1.3 UPPER_CAPS. 4 3.1.4 私有變數的命名 ...
  • 一、背景 最近一直在看docker的教程,基礎知識看的差不多了。理論總要運用於實踐,所以下麵我們就來把最簡單的一個netcore網站托管到docker容器中。 環境:1、docker for windows 2、 .net core 2.2 二、創建一個簡單的netcore網站 2.1 使用 命令創 ...
  • C#對象初始化 之前在學習過程中只是知道該如何初始化對象,但是卻不明白為何要這麼做,不這麼做有什麼問題。 現在就針對我最近遇到的問題(定義了全局位元組數組沒有初始化,然後在多線程裡頭使用,然後就一直報null的錯誤,一開始也沒有想到是初始化的問題,就一直以為是通訊中斷,數組沒有賦值成功,調了一段時間, ...
  • 通過減少生成內容所需的工作,緩存可以顯著提高應用的性能和可伸縮性,緩存對不經常更改的數據效果最佳,緩存生成的數據副本的返回速度可以比從原始源返回更快。ASP.NET Core 支持多種不同的緩存,最簡單的緩存基於 IMemoryCache,它表示存儲在 Web 伺服器記憶體中的緩存。 在包含多個伺服器 ...
  • 至少需要兩台伺服器,一臺域控制器,一臺部署Office Online Server https://docs.microsoft.com/zh-cn/officeonlineserver/office-online-server 概述 使用office online功能,首先需要的是2台主機,其中一 ...
  • 這都7月份了,Windows10 都升級的有一個月了,然而我的 的系統一直找不到 的更新。 雖說 會有bug,但還是想體驗一把。周圍同事都更新了,心裡還是癢癢的。 於是每天都在點 ,但仍舊沒有出現 版本的驚喜,腫麽辦呀? /傷心 百度了很多方法,要麼重裝,要麼使用鏡像更新系統,還有什麼易升的工具,要 ...
  • 博客寫的很少,一方面是因為我覺得目前很多博客都是相互抄襲,或者有很多部分都是重覆的內容。而我自己再去寫同樣的內容的畫,有點浪費時間。 所以,如果我要寫,我希望是寫一些與眾不同,或者重覆率比較低的內容,但是做到這點,太難了。 目前來說,對於大部分人使用linux,要麼是使用雲伺服器,要麼是在windo ...
  • 前言: 近期漏洞修複頻繁,各種組件需要升級,經多次碰撞,發現 yum update 來升級組件是最有效最安全的方式(綠盟通過版本比對的掃描結果可以忽略)。 然而,各家的設備各家管,一到升級就發現一堆問題了。吶這就發生了這麼一個報錯: yum update yum -y #隨便寫一個,其實都一樣 Th ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...