zoukankan      html  css  js  c++  java
  • Shell

    nginx终端就是shell

    内置命令查看方式:

    [root@bogon ~]# man builtin

    执行文件a.sh

    [root@bogon ~]# vim a.sh

    [root@bogon ~]# cat a.sh

    echo 12345

    pwd

    [root@bogon ~]# source a.sh

    12345

    /root

    Source是内置命令,没有文件,不会被删除

    命令所在的文件,如果删了这个文件,就用不了这个命令了

    [root@bogon ~]# which ls

    alias ls='ls --color=auto'

             /usr/bin/ls

     [root@bogon ~]# rpm -qf /usr/bin/ls

    coreutils-8.22-18.el7.x86_64

    [root@bogon ~]#

    定义一个函数,只要输入test,主机名就变为bogon

    [root@bogon ~]# function test() { hostnamectl set-hostname bbogon;hostname;  }

    [root@bogon ~]# test

    bogon

    [root@bogon ~]# hostnamectl set-hostname www

    [root@bogon ~]# hostname

    www

    [root@bogon ~]# test

    bogon

    [root@bogon ~]# hostname

    bogon

    [root@bogon ~]#

    之后会学习定义函数$name是参数 -p意思是打印

    [root@bogon ~]# function test() { read -p 'please input your hostname: ' name;hostnamectl set-hostname $name;hostname;  }

    [root@bogon ~]# test

    please input your hostname: bogon

    bogon

    [root@bogon ~]# hostname

    bogon

    [root@bogon ~]#

    PATH

    当输入ls时,计算机PATH寻找ls文件的路径,为了提高寻找的速度,于是把常用的命令放到缓存中,用命令hash可以看到:

    [root@bogon ~]# hash

    命中         命令

       6         /usr/bin/hostnamectl

       8         /usr/bin/hostname

       1         /usr/bin/host

       2         /usr/bin/chmod

       1         /usr/bin/cat

       1         /usr/bin/vim

       1         /usr/bin/rpm

       1         /usr/bin/man

    [root@bogon ~]#

    清除hash内的命令

    [root@bogon ~]# hash -r

    [root@bogon ~]# hash

    hash: 哈希表为空

    [root@bogon ~]#

    alias是命令的别名:

    [root@bogon ~]# alias cd

    -bash: alias: cd: 未找到

    [root@bogon ~]# alias ls

    alias ls='ls --color=auto'

    [root@bogon ~]#

    去掉别名unalias test

    [root@bogon ~]# unalias test

    -bash: unalias: test: 未找到

    [root@bogon ~]#

    Compound commands:是不是ifforwhere

    function:函数

    [root@bogon ~]# x=1

    [root@bogon ~]# echo $x

    1

    不调用函数,用unset,命令set能看到有什么函数

    [root@bogon ~]# unset x

    [root@bogon ~]# echo $x

    不调用test函数

    [root@bogon ~]# unset test

    [root@bogon ~]# test

    用set查看函数,发现没有test这个函数了

    [root@bogon ~]#

    Function的优先级比内置函数高,例如如下

    [root@bogon ~]# function cd() { echo 123;  }

    [root@bogon ~]# cd

    123

    [root@bogon ~]# unset cd

    [root@bogon ~]# cd

    [root@bogon ~]#

    Build in 是内置命令

    hash是保存到缓存中,一些内置命令如cd,只要开机就在内存中

    $PATH意思是到处找命令文件

    如果找不到就报错error

    元字符

    元字符=命令=键盘上的特殊符号

    ~是家目录

    [root@bogon ~]# cd ~

    [root@bogon ~]# pwd

    /root

    [root@bogon ~]#

    [root@bogon ~]# ls ~

    111.txt          bb                    yum.pid  文档

    22.txt           initial-setup-ks.cfg  公共     下载

    aa               Python-3.5.1          模板     音乐

    anaconda-ks.cfg  Python-3.5.1.tgz      视频     桌面

    a.sh             rr.txt                图片

    [root@bogon ~]#

    /意思是文件夹下的文件

    反引号`可以用在新建函数上,功能与$()一样,最好用$(),因为嵌套往往是错的。

    [root@bogon ~]# x=`ls ~` #这个最好不要用

    [root@bogon ~]# echo $x

    111.txt 22.txt aa anaconda-ks.cfg a.sh bb initial-setup-ks.cfg Python-3.5.1 Python-3.5.1.tgz rr.txt yum.pid 公共 模板 视频 图片 文档 下载 音乐 桌面

    [root@bogon ~]#

    [root@bogon ~]# y=$(ls)

    [root@bogon ~]# echo $y

    111.txt 22.txt aa anaconda-ks.cfg a.sh bb initial-setup-ks.cfg Python-3.5.1 Python-3.5.1.tgz rr.txt yum.pid 公共 模板 视频 图片 文档 下载 音乐 桌面

    [root@bogon ~]#

    !表示取反

    {}这样能建多个文件

    [root@bogon ~]# touch {a..g}.txt

    [root@bogon ~]# ls

    111.txt          bb     g.txt                 公共  音乐

    22.txt           b.txt  initial-setup-ks.cfg  模板  桌面

    aa               c.txt  Python-3.5.1          视频

    anaconda-ks.cfg  d.txt  Python-3.5.1.tgz      图片

    a.sh             e.txt  rr.txt                文档

    a.txt            f.txt  yum.pid               下载

    [root@bogon ~]#

    []取范围内的只取一个值

    [root@bogon ~]# ls [a-g].txt

    a.txt  b.txt  c.txt  d.txt  e.txt  f.txt  g.txt

    [root@bogon ~]#

    这样可以取两个值

    [root@bogon ~]# ls [a-z][a-z].txt

    rr.txt

    [root@bogon ~]#

    [root@bogon ~]# ls [a-z][0-9][a-z].txt

    aAbB这样排列的,所以a-z,除了Z外,其他都包含了。

    [root@bogon ~]# touch B.txt

    [root@bogon ~]# ls [a-z].txt

    a.txt  b.txt  B.txt  c.txt  d.txt  e.txt  f.txt  g.txt

    [root@bogon ~]#

    不取数字开头的:!取反

    [root@bogon ~]# ls [!0-9].txt

    a.txt  B.txt  d.txt  f.txt  Z.txt

    b.txt  c.txt  e.txt  g.txt

    [root@bogon ~]#

    !还有执行第几条命令的意思

    [root@bogon ~]# !1

    systemctl start nginx

    echo $?=0表示上面的程序执行成功,否则不成功

    [root@bogon ~]# echo 156

    156

    [root@bogon ~]# echo $?

    0

    [root@bogon ~]# 123

    bash: 123: 未找到命令...

    [root@bogon ~]# echo $?

    127

    [root@bogon ~]#

    #是注释

    $是参数

    [root@bogon ~]# echo $[2+9]

    11

    [root@bogon ~]#

    %取余数

    [root@bogon ~]# echo $[10%3]

    1

    &表示后台执行

    与运算,如果左边执行成功,才执行右边的语句,否则不执行

    [root@bogon ~]# pwd && echo 123

    /root

    123

    [root@bogon ~]# make && make install

    |管道符号

    ||逻辑库,或的关系,前面执行成功了,就不执行后面的,否则就执行后面的

    [root@bogon ~]# echo 123 ||echo 45

    123

    *乘号

    [root@bogon ~]# echo $[2*3]

    6

    ()子进程

    [root@bogon ~]# x=1

    [root@bogon ~]# echo $x

    1

    [root@bogon ~]# (x=2)

    [root@bogon ~]# echo $x

    1

    [root@bogon ~]# (x=2;echo $x)

    2

    [root@bogon ~]#

    _没什么意义,往往放在文件名中,例如a_1

    +加号,-减号

    ==等于

    [root@bogon ~]# [ $y > $x ]

    [root@bogon ~]# echo $?

    0

    [root@bogon ~]#

    [root@bogon ~]# echo ${money}0000

    100000

    {}阔住定变量

    [root@bogon ~]# touch [1..3].txt

    [root@bogon ~]#

    [root@bogon ~]# touch {4...9}.txt

    [root@bogon ~]# ls

    ;分割多个命令

    不管前面的命令是否执行成功,都执行后面的

    :这个命令的执行结果永远为真

    [root@bogon ~]# :

    [root@bogon ~]# echo $?

    0

    while :;do echo 123;sleep 0.5;done

    /路径分割符号,写多个都没问题

    [root@bogon ~]# cat /etc///passwd

    *所有字符,?只匹配一个任何字符

    [root@bogon ~]# ls ???.txt

    111.txt

    [root@bogon ~]#

    [root@bogon ~]# ls ?????

    a.txt  B.txt  d.txt  f.txt  Z.txt

    b.txt  c.txt  e.txt  g.txt

    [root@bogon ~]#

    >追加、覆盖

    ,没意义

  • 相关阅读:
    Appium Android 元素定位方法 原生+H5
    Eclipse下Python的MySQLdb的安装以及相关问题
    Python模块包中__init__.py文件的作用
    如何调用另一个python文件中的代码
    Python单元测试框架unittest使用方法讲解
    python利用unittest进行测试用例执行的几种方式
    python随机生成手机号码
    eclipse 安装python后pydev不出现
    Appium 如何模拟返回按键
    python分布式进程
  • 原文地址:https://www.cnblogs.com/jensenxie/p/7894794.html
Copyright © 2011-2022 走看看