zoukankan      html  css  js  c++  java
  • 在WSL中安装zsh终端

    cmder中设置:

    新增task,名称为wsl::bash,右下方的方框内填写:

    "%ConEmuBaseDirShort%wsl;%PATH%" & %ConEmuBaseDirShort%conemu-cyg-64.exe --wsl --distro-guid={f24dabf4-473d-4aa4-92fd-364654228b77} -cur_console:pm:/mnt
    

    这里面的f24dabf4-473d-4aa4-92fd-364654228b77指的是Ubuntu的唯一标识符,如果重装了子系统,那么这个标识符实惠变得。可以在在注册表(regedit)中查找 计算机HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionLxsswin+R搜索regedit

    安装zsh

    查看系统中的shell

    cat /etc/shells
    or 
    echo $SHELL
    

    搜索看看仓库里和zsh相关的包有哪些

    sudo apt-cache search zsh
    

    看到了包的说明后,我们看看zsh包详细说明

    sudo apt-cache show zsh
    

    安装zsh

    sudo apt-get install zsh -y
    

    验证下安装是否成功

    $ zsh --version
    zsh 5.4.2 (x86_64-ubuntu-linux-gnu)
    

    设置默认shell

    chsh -s /usr/bin/zsh  
    or 
    chsh -s $(which zsh)
    

    chsh -s 其实修改的就是/etc/passwd 文件中和我们所登录的用户名相对应的那一行

    $ cat /etc/passwd|grep ^qhong
    qhong:x:1000:1000:,,,:/home/qhong:/bin/zsh
    

    如果在wsl系统中并不生效,那么我们可以在.bashrc末尾加上shell代码,当你打开bash时候切换到zsh。

    bash -c zsh
    

    or

    if test -t 1; then
        exec zsh
    fi
    

    安装oh-my-zsh

    wget https://files-cdn.cnblogs.com/files/hongdada/install.sh -O - | sh
    

    进入~/.oh-my-zsh目录后,看看该目录的结构

    qhong@hongda:/$ ls ~/.oh-my-zsh
    CODE_OF_CONDUCT.md  LICENSE.txt  cache   lib  oh-my-zsh.sh  templates  tools
    CONTRIBUTING.md     README.md    custom  log  plugins       themes
    

    lib 提供了核心功能的脚本库
    tools 提供安装、升级等功能的快捷工具
    plugins 自带插件的存在放位置
    templates 自带模板的存在放位置
    themes 自带主题文件的存在放位置
    custom 个性化配置目录,自安装的插件和主题可放这里

    启用插件

    Oh My Zsh 默认自带了一些默认主题,存放在~/.oh-my-zsh/plugins目录中。我们可以查看这些插件

    qhong@hongda:/$ ls ~/.oh-my-zsh/plugins
    adb                cpanm            git-flow-avh              lighthouse             pyenv          systemadmin
    ansible            dash             git-hubflow               lol                    pylint         systemd
    ant                debian           git-prompt                macports               python         taskwarrior
    apache2-macports   dircycle         git-remote-branch         magic-enter            rails          terminalapp
    arcanist           dirhistory       gitfast                   man                    rake           terminitor
    archlinux          dirpersist       github                    marked2                rake-fast      terraform
    asdf               django           gitignore                 mercurial              rand-quote     textastic
    autoenv            dnf              glassfish                 meteor                 rbenv          textmate
    autojump           dnote            globalias                 minikube               rbfu           thefuck
    autopep8           docker           gnu-utils                 mix                    react-native   themes
    aws                docker-compose   go                        mix-fast               rebar          thor
    battery            docker-machine   golang                    mosh                   redis-cli      tig
    bbedit             doctl            gpg-agent                 mvn                    repo           timer
    bgnotify           dotenv           gradle                    mysql-macports         ripgrep        tmux
    boot2docker        droplr           grails                    n98-magerun            ros            tmux-cssh
    bower              drush            grunt                     nanoc                  rsync          tmuxinator
    branch             eecms            gulp                      ng                     ruby           torrent
    brew               emacs            hanami                    nmap                   rust           transfer
    bundler            ember-cli        helm                      node                   rvm            tugboat
    bwana              emoji            heroku                    nomad                  safe-paste     ubuntu
    cabal              emoji-clock      history                   npm                    salt           ufw
    cake               emotty           history-substring-search  npx                    sbt            urltools
    cakephp3           encode64         homestead                 nvm                    scala          vagrant
    capistrano         extract          httpie                    nyan                   scd            vagrant-prompt
    cargo              fabric           iterm2                    oc                     screen         vault
    cask               fancy-ctrl-z     jake-node                 osx                    scw            vi-mode
    catimg             fasd             jenv                      otp                    sdk            vim-interaction
    celery             fastfile         jhbuild                   pass                   sfdx           virtualenv
    chruby             fbterm           jira                      paver                  sfffe          virtualenvwrapper
    chucknorris        fd               jruby                     pep8                   shrink-path    vscode
    cloudapp           fedora           jsontools                 per-directory-history  singlechar     vundle
    cloudfoundry       firewalld        jump                      percol                 spring         wakeonlan
    codeclimate        forklift         kate                      perl                   sprunge        wd
    coffee             fossil           keychain                  perms                  ssh-agent      web-search
    colemak            frontend-search  kitchen                   phing                  stack          wp-cli
    colored-man-pages  fzf              knife                     pip                    sublime        xcode
    colorize           gas              knife_ssh                 pipenv                 sudo           yarn
    command-not-found  gatsby           kops                      pj                     supervisor     yii
    common-aliases     gb               kube-ps1                  please                 suse           yii2
    compleat           geeknote         kubectl                   pod                    svcat          yum
    composer           gem              laravel                   postgres               svn            z
    copybuffer         git              laravel4                  pow                    svn-fast-info  zeus
    copydir            git-auto-fetch   laravel5                  powder                 swiftpm        zsh-navigation-tools
    copyfile           git-extras       last-working-dir          powify                 symfony        zsh_reload
    cp                 git-flow         lein                      profiles               symfony2
    

    Oh My Zsh默认是只启用git插件

    plugins=(git)
    

    如需启用更多插件,可加入需启用插件的名称。如下

    plugins=(git wd web-search history history-substring-search)
    

    安装类似fish shell的插件

    自动补全插件

    $ git clone https://github.com/zsh-users/zsh-completions ~/.oh-my-zsh/custom/plugins/zsh-completions
    

    自动提示插件

    $ git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
    

    因为箭头不太方便,在.zshrc中自定义补全快捷键为逗号,但是又一次遇到了需要输入逗号的情况,所以,并不太推荐如下修改:

    # 补全快捷键重设
    # bindkey ',' autosuggest-accept
    

    语法高亮插件

    $ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
    

    编辑.zshrc启用插件

    ZSH_THEME="ys"
    ............................
    plugins=(git zsh-completions zsh-autosuggestions zsh-syntax-highlighting)
    

    安装incr补全插件

    wget http://mimosa-pudica.net/src/incr-0.2.zsh
    mkdir ~/.oh-my-zsh/plugins/incr
    mv incr-0.2.zsh ~/.oh-my-zsh/plugins/incr
    echo 'source ~/.oh-my-zsh/plugins/incr/incr*.zsh' >> ~/.zshrc
    source ~/.zshrc
    

    zsh扩展

    ~/.zshrc中找到plugins关键字,就可以自定义启用的插件了,系统默认加载git

    git插件

    命令内容可以参考cat ~/.oh-my-zsh/plugins/git/git.plugin.zsh

    常用的:

    gapa    git add --patch
    gc!    git commit -v --amend
    gcl    git clone --recursive
    gclean    git reset --hard && git clean -dfx
    gcm    git checkout master
    gcmsg    git commit -m
    gco    git checkout
    gd    git diff
    gdca    git diff --cached
    gp    git push
    grbc    git rebase --continue
    gst    git status
    gup    git pull --rebase
    

    完整列表:https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git

    配置私钥

    # ssh key path
    export SSH_KEY_PATH="~/.ssh/rsa_id"
    

    也可以不配置环境变量就可以

    extract

    解压文件用的,所有的压缩文件,都可以直接x filename,不用记忆参数

    当然,如果你想要用tar命令,可以使用tar -tab键,zsh会列出参数的含义。

    autojump

    sudo apt-get install autojump
    
    • j -stat:可以查看历史路径库

    git-open

    git-open插件可以在你git项目下打开远程仓库浏览项目。

    git clone https://github.com/paulirish/git-open.git $ZSH_CUSTOM/plugins/git-open
    
     git clone https://github.com/zsh-users/zsh-history-substring-search ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-history-substring-search
    

    异常

    $ source ~/.zshrc
    [oh-my-zsh] Insecure completion-dependent directories detected:
    drwxrwxrwx 1 qhong qhong 512 Jun 28 13:18 /home/qhong/.oh-my-zsh/custom/plugins/zsh-autosuggestions
    
    [oh-my-zsh] For safety, we will not load completions from these directories until
    [oh-my-zsh] you fix their permissions and ownership and restart zsh.
    [oh-my-zsh] See the above list for directories with group or other writability.
    
    [oh-my-zsh] To fix your permissions you can do so by disabling
    [oh-my-zsh] the write permission of "group" and "others" and making sure that the
    [oh-my-zsh] owner of these directories is either root or your current user.
    [oh-my-zsh] The following command may help:
    [oh-my-zsh]     compaudit | xargs chmod g-w,o-w
    
    [oh-my-zsh] If the above didn't help or you want to skip the verification of
    [oh-my-zsh] insecure directories you can set the variable ZSH_DISABLE_COMPFIX to
    [oh-my-zsh] "true" before oh-my-zsh is sourced in your zshrc file.
    

    要赋予执行权限

    chmod 755 home/qhong/.oh-my-zsh/custom/plugins 
    chmod 755 home/qhong/.oh-my-zsh/custom/plugins/zsh-autosuggestions
    

    一些小技巧

    给history命令增加时间

    .zshrc中加入以下行

    $ vim ~/.zshrc
    
    # 历史命令日期显示格式
    HIST_STAMPS="yyyy-mm-dd"
    
    source ~/.zshrc
    

    如果没用oh my zsh的话可用如下alias

    $ alias history='fc -il 1'
    

    更新oh-my-zsh

    设置自动更新oh-my-zsh

    默认情况下,当oh-my-zsh有更新时,都会给你提示。如果希望让oh-my-zsh自动更新,在~/.zshrc 中添加下面这句

    DISABLE_UPDATE_PROMPT=true
    or
    # 自动更新的时间间隔,单位是天,这里设置 30 天更新一次
    export UPDATE_ZSH_DAYS=1
    

    取消自动升级

    DISABLE_AUTO_UPDATE=true
    

    要手动更新,可以执行

    $ upgrade_oh_my_zsh
    

    卸载oh my zsh

    uninstall_oh_my_zsh
    

    使用技巧

    • 连按两次Tab会列出所有的补全列表并直接开始选择,补全项可以使用 ctrl+n/p/f/b上下左右切换
    • 智能跳转,安装了 autojump 之后,zsh 会自动记录你访问过的目录,通过 j 目录名 可以直接进行目录跳转,而且目录名支持模糊匹配和自动补全,例如你访问过 hadoop-1.0.0 目录,输入j hado 即可正确跳转。j --stat 可以看你的历史路径库。
    • 命令选项补全。在zsh中只需要键入 tar - 就会列出所有的选项和帮助说明
    • 在当前目录下输入 .. 或 ... ,或直接输入当前目录名都可以跳转,你甚至不再需要输入 cd 命令了。在你知道路径的情况下,比如 /usr/local/bin 你可以输入 cd /u/l/b 然后按进行补全快速输入
    • 目录浏览和跳转:输入 d,即可列出你在这个会话里访问的目录列表,输入列表前的序号,即可直接跳转。
    • 命令参数补全。键入 kill <tab> 就会列出所有的进程名和对应的进程号
    • 更智能的历史命令。在用或者方向上键查找历史命令时,zsh支持限制查找。比如,输入ls,然后再按方向上键,则只会查找用过的ls命令。而此时使用则会仍然按之前的方式查找,忽略 ls
    • 多个终端会话共享历史记录
    • 通配符搜索:ls -l **/*.sh,可以递归显示当前目录下的 shell 文件,文件少时可以代替 find。使用 **/ 来递归搜索
    • 扩展环境变量,输入环境变量然后按 就可以转换成表达的值
    • 在 .zshrc 中添加 setopt HIST_IGNORE_DUPS 可以消除重复记录,也可以利用sort -t ";" -k 2 -u ~/.zsh_history | sort -o ~/.zsh_history手动清除

    安装jdk

    1、更新软件包列表:

    sudo apt-get update

    2、安装openjdk-8-jdk:

    sudo apt-get install openjdk-8-jdk

    3、查看java版本,看看是否安装成功:

    java -version

    查看安装路径

    $ sudo update-alternatives --config java
    There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
    Nothing to configure.
    

    设置环境变量

    #set jdk environment
    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
    export JRE_HOME=${JAVA_HOME}/jre  
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
    export PATH=${JAVA_HOME}/bin:$PATH  
    

    安装maven

    下载

    移动安装包到指定位置

    $ sudo mv apache-maven-3.6.1-bin.tar.gz /usr/local/
    

    解压

    $ sudo tar -zxvf apache-maven-3.6.1-bin.tar.gz
     
    $ sudo rm -rf apache-maven-3.6.1-bin.tar.gz
    

    设置环境变量

    export M2_HOME=/usr/local/apache-maven-3.6.1
    export PATH=${M2_HOME}/bin:$PATH
    

    查看

    $ mvn -v
    Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00)
    Maven home: /usr/local/apache-maven-3.6.1
    Java version: 1.8.0_212, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-8-openjdk-amd64/jre
    Default locale: en_US, platform encoding: UTF-8
    OS name: "linux", version: "4.4.0-18362-microsoft", arch: "amd64", family: "unix"
    

    安装tomcat

    下载

    移动安装包

    $ sudo mv apache-tomcat-8.5.42.tar.gz /usr/local/
    

    解压

    $ sudo tar -zxvf apache-tomcat-8.5.42.tar.gz
    $ sudo rm -rf apache-tomcat-8.5.42.tar.gz
    

    设置环境变量

    export TOMCAT_HOME=/usr/local/apache-tomcat-8.5.42
    export PATH=${TOMCAT_HOME}/bin:$PATH
    

    zsh别名

    export LC_ALL=en_US.UTF-8  
    export LANG=en_US.UTF-8
    
    alias cls='clear'
    alias ll='ls -l'
    alias la='ls -a'
    alias vi='vim'
    alias javac="javac -J-Dfile.encoding=utf8"
    alias grep="grep --color=auto"
    alias -s html=mate   # 在命令行直接输入后缀为 html 的文件名,会在 TextMate 中打开
    alias -s rb=mate     # 在命令行直接输入 ruby 文件,会在 TextMate 中打开
    alias -s py=vi       # 在命令行直接输入 python 文件,会用 vim 中打开,以下类似
    alias -s js=vi
    alias -s c=vi
    alias -s java=vi
    alias -s txt=vi
    alias -s gz='tar -xzvf'
    alias -s tgz='tar -xzvf'
    alias -s zip='unzip'
    alias -s bz2='tar -xjvf'
    #set jdk environment
    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
    export JRE_HOME=${JAVA_HOME}/jre  
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
    export PATH=${JAVA_HOME}/bin:$PATH 
    
    export M2_HOME=/usr/local/apache-maven-3.6.1
    export PATH=${M2_HOME}/bin:$PATH
    
    alias mccm=mvn clean compile -Dmaven.test.skip=true 
    alias mcpm=mvn clean package -Dmaven.test.skip=true 
    alias mcim=mvn clean install -Dmaven.test.skip=true 
    alias mccs=mvn clean compile -DskipTests 
    alias mcps=mvn clean package -DskipTests 
    alias mcis=mvn clean install -DskipTests 
    
    alias mdt=mvn dependency:tree 
    alias mdtv=mvn dependency:tree -Dverbose 
    alias mdti=mvn dependency:tree -Dincludes=
    alias mdte=mvn dependency:tree -Dexcludes=
    alias mdtvi=mvn dependency:tree -Dverbose -Dincludes=$*
    alias mdtve=mvn dependency:tree -Dverbose -Dexcludes=
    
    alias mdp=mvn dependency:purge-local-repository 
    alias mdpi=mvn dependency:purge-local-repository -Dincludes=
    alias mdpe=mvn dependency:purge-local-repository -Dexcludes=
    alias mdpa=mvn dependency:purge-local-repository -DactTransitively=false 
    alias mdpai=mvn dependency:purge-local-repository -DactTransitively=false -Dincludes=
    alias mdpae=mvn dependency:purge-local-repository -DactTransitively=false -Dexcludes=
    alias mdpr=mvn dependency:purge-local-repository -DreResolve=false 
    alias mdpri=mvn dependency:purge-local-repository -DreResolve=false -Dincludes=
    alias mdpre=mvn dependency:purge-local-repository -DreResolve=false -Dexcludes=
    alias mdpar=mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false 
    alias mdparf=mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false --fail-at-end 
    alias mdpari=mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false -Dincludes=
    alias mdpare=mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false -Dexcludes=
    
    alias mdparm=mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false -DmanualIncludes=
    

    参考:

    Windows Subsystem for Linux 环境配置 (最新 1709 版)

    WSL+cmder+oh-my-zsh美化win10命令工具(terminal)

    zsh+on-my-zsh配置教程指南(程序员必备)【已备份】

    robbyrussell / oh-my-zsh

  • 相关阅读:
    性能百万/s:腾讯轻量级全局流控方案详解
    Swagger2
    shiro 入门
    01、单例模式
    02、工厂方法
    04、模板模式
    13、Adapter 适配器
    14、迭代器
    Java 面向切面 AOP
    spring boot 中使用 Redis 与 Log
  • 原文地址:https://www.cnblogs.com/hongdada/p/11087557.html
Copyright © 2011-2022 走看看