0%

格式

格式一:

1
test expression

格式二:

1
[ expression ]    //⚠️ 注意左方括号后及右方括号前有一个[空格]

说明

test是linux系统内置(builtin)的命令,用于评估表达式(expression)参数(parameter),
表达式expression的参数值(argument)包括:
文件测试参数,字符串测试参数,数字测试参数,参数组合运算符,退出状态码参数
多个测试语句之间可以使用逻辑运算符(!, &&, ||)连接, 优先级: ! > && > ||

文件测试参数

操作符 描述
-b file 如果file是文件并且是特殊块文件,则返回true
-c file 如果file是字符文件,则返回true
-d file 如果file存在且是目录,则返回true
-a/-e file 如果file存在,则返回true
-f file 如果file存在且是常规文件,则返回true
-g file 如果file的GroupId已设置,则返回true
-h/-L file 如果file是一个符号链接,则返回true
-k file 如果file文件存在且粘滞位已设置,则返回true
-p file 如果file是命名管道(FIFO),则返回true
-r file 如果file文件存在且可读,则返回true
-s file 如果file文件大小不为零,则返回true
-t file 如果file已打开并与终端关联,则返回true
-u file 如果file的UserId已设置,则返回true
-w file 如果file文件存在且可写,则返回true
-x file 如果file文件存在且可执行,则返回true
file1 -ot file2 如果file1比file2旧,则返回true
file1 -nt file2 如果file1比file2新,则返回true
file1 -ef file2 如果file1是file2的符号链接或硬链接,则返回true

字符串测试参数

操作符 描述
-n string 如果字符串长度非零,则返回true
-z string 如果字符长度为零,则返回true
string1 = string2 如果两个字符相同,则返回true
string1 != string2 如果两个字符不相同,则返回true
string 如果字符非空,则返回true

数值比较测试参数

操作符 描述
num1 -eq num2 如果连个数值相等,则返回true
num1 -ne num2 如果连个数值不等,则返回true
num1 -gt num2 如果num1大于num2,则返回true
num1 -ge num2 如果num1大于或等于num2,则返回true
num1 -lt num2 如果num1小于num2,则返回true
num1 -le num2 如果num1小于或等于num2,则返回true

组合运算符参数(用于单个或多个测试)

操作符 描述
!expression 一元否定运算符
expression1 -a expression2 二元与运算符
expression1 -o expression2 二元或运算符
\ (Expression\) 必须使用反斜杠转义分组括号

例1:

1
2
3
4
if test ! -s "$1"
then
echo $1 does not exist or is empty.
fi

例2:

1
2
3
4
if [ $# -lt 2 -o ! -e "$1" ]
then
exit
fi

退出码参数

操作符 描述
0 返回true
1 返回false
>1 发生错误

说明

Docker守护程序绑定到Unix套接字而不是TCP端口。默认情况下,Unix套接字由root拥有,而非用户只能通过sudo使用它。Docker守护程序始终以root用户身份运行。

如果不想在docker命令前加上sudo,可创建一个名为docker的Unix用户组并向其添加当前用户。当Docker守护程序启动时,它会创建一个可由该docker组成员访问的Unix套接字。

执行步骤

  • 添加docker用户组 (ubuntu16.04安装docker后,默认会创建该用户组)
    1
    $ sudo groupadd docker
  • 将当前用户加入到docker用户组中
    1
    $ sudo usermod -aG docker $USER
  • 重启服务
    1
    $ sudo service docker restart
  • 登录至新的docker组(也可以退出并重新登录)
    1
    $ newgrp - docker
  • 确认不需要添加sudo运行docker
    1
    $ docker run hello-world

说明

目前Python同时更新与维护Python2和Python3,选择Python2还是选择Python3,取决于当前要使用的库、框架支持哪个版本,所以经常会遇到切换版本的情况。

那么应该怎样有效的更改呢?很多小伙伴一定会想到修改环境变量,指定Python的默认路径,这样当然可以,然而不够优雅。那么怎样的方法才算优雅呢?当然是一条命令了👻。

这里通过brew安装pyenv,再用pyenv安装管理Python。

安装步骤

  • 安装homebrew:🚀
    1
    2
    3
    4
    $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    $ brew -v
    Homebrew 1.6.9
    Homebrew/homebrew-core (git revision 5707e; last commit 2018-07-09)

    注:Homebrew 是macOS下非常高效的命令行软件包管理器,mac必安装工具之一。

  • 安装pyenv:🛰
    1
    2
    3
    4
    $ brew update
    $ brew install pyenv
    $ pyenv -v
    pyenv 1.2.5
  • 安装管理多个Python:
    1
    2
    3
    4
    5
    6
    $ pyenv install 2.7.15
    $ pyenv install 3.7.0
    $ pyenv versions
    system
    2.7.15
    * 3.7.0 (set by /Users/john/.pyenv/version)

    注:星号指定当前的版本

  • 切换版本:
    1
    2
    3
    4
    5
    6
    7
    $ pyenv global 2.7.15
    $ pyenv versions
    system
    * 2.7.15 (set by /Users/john/.pyenv/version)
    3.7.0
    $ python --version
    Python 2.7.15
  • pyenv常用的命令说明:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    使用方式: pyenv <命令> [<参数>]

    命令:
    commands 查看所有命令
    local 设置或显示本地的Python版本
    global 设置或显示全局Python版本
    shell 设置或显示shell指定的Python版本
    install 安装指定Python版本
    uninstall 卸载指定Python版本)
    version 显示当前的Python版本及其本地路径
    versions 查看所有已经安装的版本
    which 显示安装路径

    注:使用local、global、shell,设置python版本时需要跟上参数(版本号),查看则不需要。