0%

AwsomeProcess

本篇涉及一些常用操作及查询手册

Jupyter服务器布置

RT,由于服务器端是不提供图形界面的,因此在进行开发时候,一般采用的是本地开发调试,通过之后再进行服务器端的deploy,对于机器学习来说,由于本人使用的Mac电脑,硬件配置是在堪忧,而服务器端用的是4*1080Ti,如何实现在服务器端启动jupyter服务,并且在本地进行文件编写及测试呢?

  1. 登录远程服务器,一般的使用的是ssh的方式

    1
    ssh usrname@server_url

    提示输入密码登录即可

  2. 确保在服务器端安装了jupyter notebook 或者jupyterlab,可以先进入个人账户名下的虚拟环境并激活,接下来进行jupyter的设置

    1
    2
    3
    4
    5
    6
    sudo pip install pyzmq
    sudo pip install tornado
    sudo pip install jinja2
    sudo pip install jsonschema
    sudo pip install jupyter
    sudo pip install jupyterlab
  3. 生成配置文件

    1
    jupyter notebook --generate-config

    生成的配置文件保地址为

    1
    ~/.jupyter/jupyter_notebook_config.py
  4. 生成本地登录密码,在服务器端打开ipython

    1
    2
    3
    4
    5
    6
    In [1]: from IPython.lib import passwd
    In [2]: passwd()
    # 这里输入的密码为本地访问服务器jupyter是需要输入的密码
    Enter password:
    Verify password:
    Out[2]: 'sha1:0e422dfccef2:84cfbcbb3ef95872fb8e23be3999c123f862d856'
  5. 保存并复制生成的密码sha1:....,修改第三步生成的配置文件

    1
    vim ~/.jupyter/jupyter_notebook_config.py

    会看到该文件大部分为注释,随便选个位置复制粘贴如下内容并保存配置文件

    1
    2
    3
    4
    5
    c.NotebookApp.ip='*'
    c.NotebookApp.password = u'sha1:ce...刚才复制的那个密文'
    c.NotebookApp.open_browser = False
    c.NotebookApp.port =9999 #随便指定一个端口,为本地访问的端口
    c.IPKernelApp.pylab = 'inline'
  6. 服务器端启动jupyter

    下面这两个启动一个就可以,jupyter labjupyter notebook 的高级版本

    1
    2
    $ jupyter notebook  # 启动notebook
    $ jupyter lab # 启动jupyterlab
  7. 本地访问服务器端启动的jupyter

    • 在本地浏览器输入如下地址server_url:port,其中server_url为服务器的url地址,port为在第五步设置的端口

    • 此时会弹出输入密码窗口,输入第四步设置的密码即可实现登录

PyPI配置

配置源

python中一般使用pip或者conda进行package安装,在国内推荐使用镜像加速的功能,

  • linux && Mac

    修改 ~/.pip/pip.conf (没有就创建一个), 修改 index-url至tuna,内容如下:

1
2
3
4
5
[global]
# 清华镜像
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
# 阿里镜像
index-url = https://mirrors.aliyun.com/pypi/simple

设置一个镜像即可,推荐使用阿里镜像

  • Windows

    直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini,内容如下

1
2
3
4
5
[global]
# 清华镜像
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
# 阿里镜像
index-url = https://mirrors.aliyun.com/pypi/simple

requirement.txt相关

  • 使用 pip freeze

    1
    2
    # 生成 requirements.txt
    pip freeze
  • pipreqs

    相关连接https://github.com/bndr/pipreqs

    1
    2
    3
    4
    # 安装
    pip install pipreqs
    # 生成requirements.txt
    pipreqs /home/project/location
  • pigar

    相关链接https://github.com/damnever/pigar

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # Generate requirements.txt for current directory.
    $ pigar

    # Generate requirements for given directory in given file.
    $ pigar -p ../dev-requirements.txt -P ../

    # Specify a requirements file.
    $ pigar -c ./requirements.txt

    # Or, you can let pigar search for *requirements.txt in the current directory
    # level by itself. If not found, pigar will generate requirements.txt
    # for the current project, then check for the latest versions.
    $ pigar -c
  • 安装requirements

    1
    pip install -r requirements.txt

虚拟环境

CONDA

  • 下载anaconda

  • 在.zshrc中加入一行

    1
    PATH="$HOME/anaconda3/bin:$PATH"
  • source .zshrc 生效

  • 命令行启用conda

  • 创建环境,conda create -n env_name python=2.7

  • 首次启用会报错,使用source activate env_name的方法

  • 之后可以使用conda的方式激活,conda activate env_name

  • 如果要更换环境内的python版本,使用conda install python=xx

Conda配置源

使用conda默认package下载路径一般下载较慢,在conda中配置源,类似于pip配置方法,提升下载速度

文件~/.condarc

在文件中添加

1
2
3
4
5
6
7
8
auto_activate_base: false
channels:
- https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
- defaults
show_channel_urls: true

第一行表示是否默认启动base环境,默认为true,此处更改为false

第二行表示源的url,此处使用的中科大和清华源

第三行表示是否展示package来源于那个url中

Conda添加系统路径

使用conda管理环境,但是在系统中存在很多公共包,外网无法安装,这时候需要在conda的虚拟环境中添加环境路径

解决方法:

参考链接:https://python3-cookbook.readthedocs.io/zh_CN/latest/c10/p09_add_directories_to_sys_path.html

  • 首先查看默认python的环境,找到默认python中的环境

  • 在conda环境下添加路径文件

    • 在环境的’lib/python2.7/site-packages/‘路径下创建’add.pth’文件

    • 在’add.pth’内部填写python中的路径

      1
      2
      3
      4
      5
      6
      7
      8
      /usr/lib/python2.7/lib-tk
      /usr/lib/python2.7/lib-old
      /usr/lib/python2.7/lib-dynload
      /usr/local/lib/python2.7/dist-packages
      /data00/tiger/ss_lib/python_package/lib/python2.7/site-packages
      /usr/lib/python2.7/dist-packages
      /usr/lib/pymodules/python2.7
      /opt/tiger/ss_lib/python_package/lib/python2.7/site-packages
    • 之后再次查看conda环境下的路径,可以看到已经将’pth’文件内的路径加入到了环境路径内

virtualenv

want coding
linux install sudo apt-get install python-virtualenv
virtualenv如果继承全局Python的库 virtualenv —system-site-packages venv
默认不使用全局Python安装的库 virtualenv venv
激活虚拟环境 source venv/bin/activate
关闭虚拟环境 deactivate

常用命令

归纳常用命令如下

Description Command
install latest version pip install xxx
Install Specified version pip install xxx==version
show package list pip list
show specified package details pip show numpy
update all packages pip freeze —local \ \ grep -v ‘^-e’ \cut -d = -f 1 \xargs pip install -U
update specified package pip install -U numpy
Generate requirements.txt pip freeze
Install requirements.txt pip install -r requirements.txt

Linux常用命令

查找文件夹下的指定文件名文件

1
find ./ -name "*.png"

如上是查找文件名后缀为png的文件

查看文件夹的文件数量

  • 统计当前目录下文件的个数(不包括目录)
1
ls -l | grep "^-" | wc -l
  • 统计当前目录下文件的个数(包括子目录)
1
ls -lR| grep "^-" | wc -l
  • 查看某目录下文件夹(目录)的个数(包括子目录)
1
ls -lR | grep "^d" | wc -l

用户相关

使用root权限添加用户

  • root@host 登陆

  • 添加用户

  • 1
    useradd -d /data00/home/xxx -m -s /bin/bash xxx

    添加用户,并指定用户bash

  • 为用户设置登陆密码

    1
    passwd xxx
  • 如果在新建用户的时候没有指定shell,可以使用命令:

    1
    usermod -s /bin/bash  user0;其中user0是用户名,来为用户指定shell;

    2、可以使用命令将用户添加到sudo用户组:

    1
    usermod -aG sudo  user0;这儿的a参数代表追加 。或者命令 gpasswd  –a  user0  sudo;

删除


过滤删除

1
2
shopt -s extglob
rm -rf !(file1|file2|file3)

过滤删除文件,!表示不要删除括号内文件

快速删除大文件

如果目录中文件太多,使用常用的rm -rf进行删除,会耗费大量时间,推荐使用

1
2
3
4
5
# 先创建一个空目录
# 注意:最好是用和被清空目录的所有者(用户)去创建这个空目录,使用的命令会将空目录的权限带过去
mkdir ./empty
# 清除目标目录的文件,不要忘记目录后面的`/`
rsync --delete-before -av /tmp/empty/ /var/log/target/

选项说明

1
2
3
-delete-before 接收者在传输之前进行删除操作
-a 归档模式,表示以递归方式传输文件,并保持所有文件属性
-v 详细输出模式

rsync快的原因

1
2
rm删除内容时,将目录的每一个条目逐个删除(unlink),需要循环重复遍历很多次;
rsync删除内容时,建立好新的空目录,替换掉老目录,不需要进行大量的遍历操作。

添加环境

1
2
3
4
# 添加当前文件夹到环境中
export PYTHONPATH=$PYTHONPATH:`pwd`
# 如果要添加多个环境
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

如果需要添加到系统默认启动的环境中,可以在home目录下的.bashr.zshrc文件下添加上述内容

解压缩文件

进行文件的解压缩操作

want how to Description
Zip compress zip -r myfile.zip ./* 将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件.
zip -d myfile.zip smart.txt 删除压缩文件中smart.txt文件
zip -m myfile.zip ./rpm_info.txt 向压缩文件中myfile.zip中添加rpm_info.txt文件
unzip -o -d /home/sunny myfile.zip 把myfile.zip文件解压到 /home/sunny/
zip -e yourZipFileName.zip yourSourceFile 创建加密压缩文件-压缩单个文件
zip -e -r yourZipFileName.zip yourSourceFileDir 创建加密压缩文件-压缩文件夹
jar xvf xx.zip unzip无法解压的时候试试这个
tar -zcvf /home/x.tar.gz /x 将文件夹压缩到指定路径
tar tar -zxvf /x.tar.zip -C /home/x 将tar解压到指定目录
  • 如果压缩文件较大或者压缩文件中文件数量较多,使用cpu并发进行解压缩

    1. 安装pigz

      1
      sudo apt install pigz
    2. 打包文件

      1
      tar --use-compress-program=pigz -cvpf package.tgz ./package
    3. 解压文件

      1
      tar --use-compress-program=pigz -xvpf package.tgz -C ./package

查询ip地址

1
2
3
ip addr show
# 或者
hostname -I

使用ip addr show得到下述信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:04:08:67 brd ff:ff:ff:ff:ff:ff
inet 10.224.11.207/22 brd 10.224.11.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fe04:867/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:0e:68:0f:a7 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
valid_lft forever preferred_lft forever
shixiaofeng@n224-011-207:~$
shixiaofeng@n224-011-207:~$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:04:08:67 brd ff:ff:ff:ff:ff:ff
inet 10.224.11.207/22 brd 10.224.11.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fe04:867/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:0e:68:0f:a7 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
valid_lft forever preferred_lft forever

可以看到ip为10.224.11.207端口为22

使用hostname -I得到信息如下

1
10.224.11.207 172.17.0.1

查询系统信息

1
uname -a

查询得到系统的版本,内核信息

1
2
shixiaofeng@n224-011-207:~$ uname -a
Linux n224-011-207 4.9.0-0.bpo.5-amd64 #1 SMP Debian 4.9.65-3+deb9u2~bpo8+13 (2018-05-15) x86_64 GNU/Linux

GPU进程管理

  • 查看GPU当前使用信息nvidia-smi

    • 每个10s循环查看信息

      1
      watch -n 10 nvidia-smi
    • 安装pip install gpustat,实时监控

      1
      watch --color -n1 gpustat -cpu
  • 查看GPU显存占用情况

    1
    sudo fuser -v /dev/nvidia*
  • kill进程

    强制杀死进程

    1
    kill -9 PID

Hadoop 常用命令

Reference

https://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html

command

Description HowTo
从hdfs拉取文件到本地 hdfs dfs -get hdfs_file local _file
hadoop fs -get hdfs_file local_file
在hdfs上创建文件夹 hdfs dfs -mkdir hdfs_dir
hadoop fs -mkdir hdfs_dir
将本地文件上传Hadoop hdfs dfs -put local_file hdfs_file
上传之前最好将文件打包,文件不怕大,就怕文件碎 hadoop fs -put local_file hdfs_file

SSH配置

GitHub+GitLab

  • 场景

    对于 Git 来说,邮箱是识别用户的唯一手段,所以对于不同的服务商,由于邮箱不同,那么通过邮件名创建的 SSH Key自然是不同的,这时候在不同的服务商之间进行push命令的时候,Git 是不知道使用哪个 SSH Key ,自然导致 push 的失败。场景如下:

    • 在公司团队使用搭建的 Gitlab 服务,提交邮箱$xxx@company.com$
    • 个人 Github 服务,提交邮箱$ xxx@163.com$
    • 有两个Github账户,不同的账户想不通的服务器进行提交
  • 解决方案-gitconfig

    • 首先进行全局配置,在不加特殊说明时,默认使用全局用户名及用户邮箱
    • 该文件路径~/.gitconfig
    1
    2
    # 全局配置,Github仓库中默认使用此配置
    git config --global user.name 'github' && git config --global user.email 'xxx6@163.com'
    • Generate ssh key and upload to github/gitlab

      1
      2
      3
      4
      # 生成默认,Github使用
      ssh-keygen -t rsa -C " xxx@163.com"
      # 生成公钥、密钥的同时指定文件名,Gitlab使用
      ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitlab -C "xxx@company.com"

      执行命令之后,会在文件夹~/.ssh文件夹下生成id_rsa.pubid_rsa.gitlab.pub两对ssh key文件

      • id_rsa.gitlab.pub 为为要上传到gitlab的密钥文件
      • id_rsa.pub文件为要上传到github的密钥文件
    • 配置config文件

      ~/.ssh目录下,如果不存在config文件,则新建touch ~/.ssh/config 添加内容如下:

      1
      2
      3
      4
      # Host 进行过滤设置,如果仓库的前缀符合gitlab.yc345.tv,均采用~/.ssh/id_rsa.gitlab这个密钥进行验证连接
      Host gitlab.yc345.tv*
      IdentityFile ~/.ssh/id_rsa.gitlab
      User gitlab
    • 测试连接

      • 首先在github和gitlab账户下添加对应的pub密钥

      • 进行测试:github+gitlab

        1
        2
        3
        4
        5
        6
        7
        8
        9
        # 测试github连接
        ssh -T git@github.com
        # 得到输出信息如下
        # Hi xiaofengShi! You've successfully authenticated, but GitHub does not provide shell access.
        #####################
        # 测试gitlab连接
        ssh -T git@gitlab.yc345.tv
        # 得到输出信息如下
        # Welcome to GitLab, @shixiaofeng!
    • 使用方法

      • 对于日常个人使用github来说,不需要进行特殊设置,会自动使用全局设置

      • 对于在公司内部来说,由于在config中进行了设置,也不用进行特殊设置,会根据设置的config文件,对于gitlab.yc345.tv*形式的仓库使用对应设置的密钥连接

      • 在本地新建要上传到gitlab的项目,在创建之后要在仓库目录中进行local设置,方法如

        1
        2
        # 团队项目配置,每次新创建一个项目,需要执行下
        git config --local user.name 'gitlab' && git config --local user.email 'xiaofeng@company'

Github+Github

  • 场景:

    一台电脑多人使用,这时候需要进行多个ssh key的管理,方法与github+gitlab相同

  • 首先同样进行全局设置,如果没有特殊声明,就会使用全局设置

    1
    git config --global user.name 'github' && git config --global user.email 'sxf1052566766@163.com'
  • 生成ssh key

    使用不同的邮箱生成密钥文件名

  • 配置config文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # 该配置用于用户xiaofeng
    # Host 服务器别名,这个别名以后在clone、pull、push时替代具体的IP或域名
    Host xiaofeng
    # HostName 服务器ip地址或机器名
    HostName github.com
    # User连接服务器的用户名
    User git
    # IdentityFile 密匙文件的具体路径
    IdentityFile ~/.ssh/id_rsa


    # 该配置用于用户icey
    # Host
    Host icey
    # HostName 服务器ip地址或机器名
    HostName github.com
    # User连接服务器的用户名
    User git
    # IdentityFile 密匙文件的具体路径
    IdentityFile ~/.ssh/id_rsa_icey
  • 测试

    1
    2
    3
    4
    # 测试用户xiaofeng
    ssh -T git@xiaofeng
    # 测试用户icey
    ssh -T git@icey
  • 使用

    • clone

      假设仓库ssh为git@github.com:xiaofengShi/CV-detection.git

      在进行clone时要使用 git clone git@xiaofeng:xiaofengShi/CV-detection.git

      也就是将原来的guthub.com改成xiaofeng ,会使用xiaofeng这个账户进行仓库的clone

    • pull & push

      1
      2
      3
      git remote add origin git@xiaofeng:mti/xxx.git
      git pull origin master
      git push origin master

gitignore

在项目文件中使用.gitignore对文件是否进行上传过滤,比如一些大的数据文件或者临时文件显然是不希望上传到github上的,编写规则如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
## 使用文件扩展名进行过滤
*.pyc
*.tfrecord
*.DS_Store

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

ssh连接服务器

在日常工作中,一般使用ssh的方法对开发机进行配置,配置之后可以实现免密登录

相关链接:https://blog.csdn.net/knight_zhen/article/details/47001449

  • 本地生成密钥对,如果已经存在了,那么就用已经存在的密钥对就可以,保存的路径在~\.ssh

  • 系统中默认使用的密钥是id_rsa,如果不想用默认的密钥,跟上文中配置GitHub+gitlab的方式,在.ssh\config文件中加入

    1
    2
    3
    4
    5
    6
    7
    # 设置服务器地址
    Host crm.abc.com
    # 设置一个用户名
    User xxx
    PreferredAuthentications publickey
    # 如果满足设置的服务器地址,那么让ssh寻找下面的私钥进行配对
    IdentityFile ~/.ssh/id_rsa.abc
  • 上传密钥到服务器,并把公钥的内容添加到服务器端的.ssh/authorized_keys

    1
    2
    3
    scp ~/.ssh/id_rsa.pub user@host_id
    ssh user@host_id
    cat id_rsa.pub >> ~/.ssh/authorized_keys

    依次执行上述命令

  • 设置私钥和公钥访问权限

    • 本地私钥权限

      1
      2
      chmod 700 ~/.ssh
      chmod 600 ~/.ssh/id_rsa
    • 服务器端设置公钥权限

      1
      2
      chmod 700 ~/.ssh
      chmod 600 ~/.ssh/authorized_keys

LINUX+ZSH

​ 在Linux上安装zsh替换默认的bash

  1. 安装zsh

    1
    sudo apt-get install zsh
  2. 更改系统默认设置

    1
    2
    3
    sudo vim /etc/passwd
    # find you name and change the bash to zsh
    # convert from name:x:2017:2017::/data00/home/name:/bin/bash to name:x:2017:2017::/data00/home/name:/bin/zsh
  3. Install oh-my-zsh

    1
    git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
  4. 更改主题显示样式

    1. 默认的zsh主题是robbyrussell.zsh-theme,
      cd ~/.oh-my-zsh/themes
      这里先备份一个并重命名为my_robbyrussell.zsh-theme

    2. 修改文件my_robbyrussell.zsh-theme第二行为

      1
      PROMPT='${ret_status} %{$fg[cyan]%}%M:[$PWD]%{$reset_color%} $(git_prompt_info)'
  1. 修改~/.zshrc 文件中的theme为”my_robbyrussell”

  2. source ~/.zshrc

  1. 高亮zsh-syntax-highlighting

    1
    git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
  2. 自动补全 zsh-autosuggestion

    1
    git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
赏杯咖啡!