美文网首页
Mac自定义配置zsh shell终端

Mac自定义配置zsh shell终端

作者: BinaryBang | 来源:发表于2020-08-04 18:01 被阅读0次

    Version

    Preface

    今天在捣鼓git的时候,不小心发现了终端其实也是可以自定义配置的.
    感觉挺有趣的.
    下面分享下自己已经捣鼓成功的两个效果:
    1,皮卡丘欢迎界面
    2,自定义提示符


    Content

    1 确认Shell的版本为zsh

    Shell是指Linux/Unix系统下的脚本语言,是用户和系统内核之间的桥梁.
    Shell有很不同的版本,比如dush, bash, ksh, csh, tcsh.
    cat /etc/shells可以查看自己电脑上存在的Shell版本.


    此次自定义配置,仅适用于zsh.所以,我们需要确认我们使用的版本是否是zsh.
    echo $SHELL,可以查看自己用的是否是zsh.

    本文暂时假定各位都已经在使用zsh了.

    2 配置启动欢迎图片

    2.1 欢迎信息配置文件

    /etc/motd文件,是专门用来存放终端启动时的欢迎信息的,感觉还是非常人性化了.
    所以,我们只要在这个文件中复制粘贴自己喜欢的内容就可以啦.
    需要注意的是,这个文件是只读的,所以,我们需要用sudo命令打开,才可以修改:
    'sudo vi /etc/motd'
    输入密码后,就可以进行修改了.

    首先输入好我们想要显示的内容:
    vi编辑器内容:



    然后进入命令模式:wq,保存退出,重新打开一个终端,就能看到欢迎信息啦!

    终端内容


    如果我们想更换信息,vi中清空所有内容的方式为:
    在命令模式下,输入:.,$d 然后回车.

    2.2 欢迎图

    等等,这样的欢迎信息,难道要我们一个一个自己敲么???

    帅气温柔的小编,当然早就帮亲们提供了一些好的素材,总有一款是亲喜欢的哈!!

    ╭⌒╮ \ │ /
    ╭⌒╮ ─ ● ─
    ╭ ⌒╮╭⌒╮. / │ \ .╭⌒╮
    .╭⌒╮. ╭ ⌒╮. ╭ ⌒╮.
    ╭ ⌒╮ ╭⌒╮ ╭⌒╮
    *╱◥██◣.,'''**',
    ︱田︱田田| ╱◥██◣
    ╬╬╬╬╬╬ ︱田︱田田| ╬╬╬╬╬╬
    
        へ     /|
      /\7    ∠_/
      / │   / /
     │ Z _,< /   /`ヽ
     │     ヽ   /  〉
      Y     `  /  /
     イ● 、 ●  ⊂⊃〈  /
     ()  v    | \〈
      >ー 、_  ィ  │ //
      / へ   / ノ<| \\
      ヽ_ノ  (_/  │//
      7       |/
      >―r ̄ ̄`ー―_-
    
     く__,.ヘヽ.    / ,ー、 〉
         \ ', !-─‐-i / /´
          /`ー'    L//`ヽ、
         /  /,  /|  ,  ,    ',
       イ  / /-‐/ i L_ ハ ヽ!  i
        レ ヘ 7イ`ト  レ'ァ-ト、!ハ|  |
         !,/7 '0'   ´0iソ|   |   
         |.从"  ω   ,,,, / |./   |
         レ'| i>.、,,__ _,.イ /  .i  |
          レ'| | / k_7_/レ'ヽ, ハ. |
           | |/i 〈|/  i ,.ヘ | i |
          .|/ / i:   ヘ!  \ |
            kヽ>、ハ   _,.ヘ、   /、!
           !'〈//`T´', \ `'7'ーr'
           レ'ヽL__| JJ ンレ|ノ
             ト-,/ |___./
             'ー'  !_,.:  
    
    /**
     * ┌─────────────────────────────────────────────────────────────┐
     * │┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐│
     * ││Esc│!1 │@2 │#3 │$4 │%5 │^6 │&7 │*8 │(9 │)0 │_- │+= │|\ │`~ ││
     * │├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤│
     * ││ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{[ │}] │ BS  ││
     * │├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤│
     * ││ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter  ││
     * │├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤│
     * ││ Shift  │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│Shift │Fn ││
     * │└─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴┬─────┴───┘│
     * │      │Fn │ Alt │         Space         │ Alt │Win│   HHKB   │
     * │      └───┴─────┴───────────────────────┴─────┴───┘          │
     * └─────────────────────────────────────────────────────────────┘
    
     *                Happy Hacking       auto coding
     */
    
     /**
     **************************************************************
     *                                                            *
     *   .=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-.       *
     *    |                     ______                     |      *
     *    |                  .-"      "-.                  |      *
     *    |                 /            \                 |      *
     *    |     _          |              |          _     |      *
     *    |    ( \         |,  .-.  .-.  ,|         / )    |      *
     *    |     > "=._     | )(__/  \__)( |     _.=" <     |      *
     *    |    (_/"=._"=._ |/     /\     \| _.="_.="\_)    |      *
     *    |           "=._"(_     ^^     _)"_.="           |      *
     *    |               "=\__|IIIIII|__/="               |      *
     *    |              _.="| \IIIIII/ |"=._              |      *
     *    |    _     _.="_.="\          /"=._"=._     _    |      *
     *    |   ( \_.="_.="     `--------`     "=._"=._/ )    |      *
     *    |    > _.="                            "=._ <    |      *
     *    |   (_/                                    \_)   |      *
     *    |                                                |      *
     *    '-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-='      *
     *                                                            *
     *           LASCIATE OGNI SPERANZA, VOI CH'ENTRATE           *
     **************************************************************
     */
    
    /**
     *_______________#########_______________________ 
     *______________############_____________________ 
     *______________#############____________________ 
     *_____________##__###########___________________ 
     *____________###__######_#####__________________ 
     *____________###_#######___####_________________ 
     *___________###__##########_####________________ 
     *__________####__###########_####_______________ 
     *________#####___###########__#####_____________ 
     *_______######___###_########___#####___________ 
     *_______#####___###___########___######_________ 
     *______######___###__###########___######_______ 
     *_____######___####_##############__######______ 
     *____#######__#####################_#######_____ 
     *____#######__##############################____ 
     *___#######__######_#################_#######___ 
     *___#######__######_######_#########___######___ 
     *___#######____##__######___######_____######___ 
     *___#######________######____#####_____#####____ 
     *____######________#####_____#####_____####_____ 
     *_____#####________####______#####_____###______ 
     *______#####______;###________###______#________ 
     *________##_______####________####______________ 
     */
    

    然后,这个网址可以将图片转化为字符画,大家可以玩玩:
    https://www.fontke.com/tool/image2ascii/

    还有大咖专门为这个文件成立了一个Github项目,大家有兴趣,可以将自己喜欢的图片放上去哈:
    https://github.com/abcfy2/motd

    其实,小编是想搞个Saber酱的,但是没有找到好的素材.
    以后找到了,一定分享出来.

    3 自定义提示符

    3.1 默认的提示符样式

    接下来,就是自定义提示符了.
    其实格式符的提示信息是由变量PS1,或者PROMPT变量指定的,这两个变量的内容是一样的.
    默认情况下,是这样的格式:


    他的内容为:
    %n@%m %1~ %#
    其中:
    %n是自己的用户名
    @,原样输出@
    %m,自己的机器名字
    %1~,可能是当前路径,这个没有具体研究.
    %#,这个也没具体研究.
    所以,没有修改之前,我的命令提示符就是上面那个样子.

    3.2 定位配置文件

    本质上,只要我们修改了PROMPT(PS1等价,后面不再说明)变量的值,就能修改样式了.
    使用zsh的终端,本次打开新的窗口,都会首先运行一个配置文件,载入相关的变量.
    这个文件就是我们修改这个变量的最佳对象.
    这个文件就是:~/.zshrc

    注意,可能会有一些大佬想到了~/.bash_profile文件,这个文件是bash版本的终端会载入的配置文件. zsh版本并不会载入.

    3.3 修改配置文件

    下面就是修改配置文件了,我们用vi打开该文件:
    vi ~/.zshrc

    然后在打开的窗口中输入以下内容:

    # Config Zsh
    # Enable custom color 开启自定义颜色
    autoload -U colors && colors
    # Config PROMPT Variable 配置PROMPT变量
    export PROMPT="%{%F{magenta}%}Master,give me your command :%{$reset_color%} "
    

    其中
    autoload -U colors && colors
    是开启自定义颜色

    然后关键的是配置PROMPT变量:
    export PROMPT="%{%F{magenta}%}Master,give me your command :%{$reset_color%} "
    1,export,是用来声明环境变量,这个声明具体有什么作用,以后再进一步研究,没搞清楚之前,就按照前人的做法来.
    2,%{%F{magenta}%},是说明接下来的文字,用magenta(洋红)来显示.
    可以设置的颜色值如下:


    3,Master,give me your command :,这个是原样输出
    4,%{$reset_color%},表示接下来的文字,恢复用默认颜色显示.

    修改好保存之后,要立即生效,别忘了输入以下命令:
    source ~/.zshrc
    下面是一些转义变量的列表:

    好了,本文就研究到这里.

    Summary

    关于oh my zsh

    oh my zsh是一个封装好的配置zsh的插件.我在查资料的过程中,很多文章动不动就说下载oh my zsh,说实话,感觉不是很好.
    这就有点像你在浏览网页,看见一个有兴趣的视频,然后点了一下,但是不能直接打开,提示你必须下载某app才能观看.
    这种稍微扩展一下,就要用某某框架,某某插件,感觉还是太容易让人心累了.

    Preference

    Index:0000
    Title: Mac终端命令行提示符格式更改方法
    Url: https://www.dazhuanlan.com/2019/09/25/5d8b35db9a8ee/
    Desc: 这篇文章介绍的方法应该是针对bash版本的shell的.对于zsh不适用.也希望各位大佬能说明清楚自己的环境,很多东西一样的问题,环境不一样,是不能用相同的方式解决的.

    Index:0001
    Title: 图片转字符画
    Url: https://www.fontke.com/tool/image2ascii/
    Desc: 将图片转换为字符画,用来制作欢迎界面.

    Index:0010
    Title: Mac自定义终端(Terminal)欢迎图案
    https://www.jianshu.com/p/fddda86486df
    Desc: 谢谢分享

    Index:0011
    Title: Zsh (简体中文)
    Url: https://wiki.archlinux.org/index.php/Zsh_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29#.E5.BD.A9.E8.89.B2
    Desc:资料比较详细

    Index:0100
    Title: zsh 自定义命令提示符(PS1/ prompt)
    Url: https://blog.csdn.net/u014218108/article/details/51195582
    Desc: 谢谢分享

    相关文章

      网友评论

          本文标题:Mac自定义配置zsh shell终端

          本文链接:https://www.haomeiwen.com/subject/mpjmrktx.html