• Bash Shell基础笔记


    常见shell种类

    1 Bourne Shell(/usr/bin/sh或/bin/sh)
    2 Bourne Again Shell(/bin/bash)
    3 C Shell(/usr/bin/csh)
    4 K Shell(/usr/bin/ksh)
    5 Shell for Root(/sbin/sh)

     切换root管理员

    注释

    #!解析器路径
    #单行注释
    <<BLOCK
    多行注释
    BLOCK
    
    : '
    多行注释
    '
    name变量命名后面可以为"和‘
    echo "¥变量" 一定要双引号
    echo打印输出

    文件系统

     

    第一列:
    常规文件(-)
    目录(d)
    链接(l)
    特殊档案(c)
    套接(s)
    命名管道(p)
    块设备(b)
    第二列代表存储块的数量
    第三列代表文件的所有者或具有管理权限的超级用户
    第四列代表所有者/超级用户组
    第五列代表文件大小
    第六列表示创建或最后修改文件的日期和时间
    最后一列代表文件或目录的名称
    r 读
    w 写
    x 执行
    • 第一个插位(-)表示由test.sh命名的文件:文件(-)、目录(d),链接(l)
    • 前三个插位(rwx)代表所有者(owner)的权限:文件所有者的权限是读、写和执行
    • 中三个插位代表所属组(group)的权限,r-x代表有读和执行权限,没有写权限
    • 后三个插位代表其他者(others)的权限,同样是读和执行权限,没有写权限

    r=4,w=2,x=1  因此rwx=4+2+1=7

    - 1 表示连接的文件数

     root 表示用户

    -root表示用户所在的组

    25 表示文件大小(字节)

    表示最后修改日期

     test.sh表示文件名

    更改权限

    chmod [class][operator][permission] file_name 
    • class-ugoa表示,其中u表示用户,g表示组,o表示其他,以及a对所有类。
    • operator(+-)用于添加或删除权限。
    • permission由指示符rwx表示,以分别允许访问以读取,修改或运行脚本。

    路径

    • 单点(.)代表当前目录。
    • 双点(..)代表当前工作目录的父目录。
    • 波浪号(~)代表已登录用户的主目录。

    命令行参数或特殊变量

    • $0 - 指定要调用的脚本的名称。
    • $1-$9 - 存储前9个自变量的名称,或可用作自变量的位置。
    • $# - 指定传递给脚本的参数总数(计数)。
    • $* - 通过将所有命令行参数连接在一起来存储它们。
    • $@ - 将参数列表存储为数组。
    • $? - 指定当前脚本的进程ID。
    • $$ - 指定最后一个命令或最近执行过程的退出状态。
    • $! - 显示最后一个后台作业的ID。

     

    用户输入

     read方式,如果不用read变量默认REPLY

    -p 可以在同一行上输入,-sp例如输入密码输入不是明文

    read -p PROMPT <variable_name>
    read -sp PROMPT <variable_name>

    -a     数组

     

     日期时间

    date '+<format-option-codes><format-option-codes> <format-option-codes>'

    符号是`不是'

     

     运算

     

     条件判断

    参数直间有空格

     for语句

     

     

     

    {START..END..INCREMENT}

    字符串

     

    if [ -n str1 ]      当串的长度大于0时为真(串非空) 
    if [ -z str1 ]      当串的长度为0时为真(空串) 
    if [ str1 ]        当串str1为非空时为真

    截取

    ${variable:offset:length}

     打印日志

    >>追加,>覆盖

    开机启动脚本

     可执行脚本放在

    /etc/rc.d/init.d目录下

    添加到开机启动里

    chkconfig --add xx.h

     判断端口是否打开

    netstat -an | grep 80
    #!/bin/sh
    STRING=
    if [ -z "$STRING" ]; then 
        echo "STRING is empty" 
    fi
    if [ -n "$STRING" ]; then 
        echo "STRING is not empty" 
    fi

    参考https://www.yiibai.com/bash

  • 相关阅读:
    centos7 centos-home 磁盘空间转移至centos-root下
    CACTI优化-流量接口统计total输入和输出流量数据
    shell管理前台进程
    Rancher中ConfigMap使用实例
    Rancher调试微服务
    ssh配置免密登录异常处理
    漏洞复现:ActiveMQ任意文件写入漏洞(CVE-2016-3088)
    ubuntu更新源
    Vulnhub实战靶场:CH4INRULZ: 1.0.1
    CVE-2019-15107 Webmin远程命令执行漏洞复现
  • 原文地址:https://www.cnblogs.com/tk55/p/12964416.html
Copyright © 2020-2023  润新知