• 笔记2


    重定向和管道符:

    1.重定向
    程序 = 指令 + 数据
    命令 变量


    在程序中,数据如何输入?又如何输出?

    数据输入:键盘 -- 标准输入,并不是唯一输入方式
    --stdin
    echo "123456" | passwd --stdin "username"

    例如:功能添加用户 useradd.sh txt文本文档1000个用户
    ./useradd.sh a
    ./useradd.sh b
    ...

    ./useradd.sh < user.txt

    while line ; do
    循环体
    done < /etc/passwd

    数据输出:显示器 -- 标准输出,但并不是唯一输出方式
    ls /etc/ > a.txt

    fd文件标识符 0-9 -- 相当于给文件分类;
    0 1 2
    0 -- 标准输出
    1 -- 标准输入
    2 -- 错误输入输出(标准错误)

    常见重定向符号
    1.标准输出
    > 覆盖重定向,非常危险
    set -C //关闭覆盖重定向功能
    >| //强制重定向
    >> 追加重定向
    不覆盖
    2.标准输入
    < tr 替换文件内容
    tr set1 [set2] < file.txt
    << 将多行数据同时输入
    cat >>a.txt<<EOF
    >1
    >2
    >3
    >EOF
    3.错误输出
    2>
    扩展:不需要输出内容,只需要输出状态;
    ls /etc/ > /dev/null
    if [ $? -eq 0 ];then
    循环体
    if
    2>> &> &>> == 2&>1
    ls /etc/&> /dev/null


    2.管道 - tee

    command1 | command2 | command3 | ... ...
    前一个命令的执行结果交给后一个命令来执行
    【Linux思想:结合小功能实现大功能】
    free -m | grep "^Mem" | cut -d' ' -f19
    free -m | grep "^Mem" | awk '{print $3}'

    tee 一路输出,两路输出
    tee /tmp/tee.out
    如果没有文件,会创建,默认如果文件存在有内容,会覆盖;

    练习:
    将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中;
    head -5 /etc/passwd | tr [a-z] [A-Z] > /tmp/passwd.out

    将登录至当前系统上用户信息汇总的后3位信息转换为大写后保存至/tmp/who.out文件中;
    who | tail -3 | cut -d' ' -f1 | [[:lower:]] [[:upper:]] | tee /tmp/who.out

    tail 查看文件尾部多少行
    3.文本处理工具 - wc,cut,sort,uniq


    shell脚本语言介绍
    优点:调用os(操作系统)的命令行,来实现所以功能;
    缺点:没有库调用(区分Python)

    shell脚本包括:1.*命令* 2.变量(全局变量,局部变量,本地变量,传参)3.逻辑关系

    shell的第一句话!!!
    #!/bin/bash --定义脚本解释器(普遍认为#为注释行,这里特殊)shebang
    #!/usr/bin/python

    /etc/shells --查看当前系统支持的shell程序
    echo $SHELL --查当前会话的shell程序
    /etc/passwd --制定了用户默认支持的shell程序(/sbin/nologin)

    shell的执行:
    1.bash命令来执行脚本
    -n 查看shell脚本的逻辑错误(注意:单词写错查不出)
    -x 逐行显示执行的脚本程序
    2.授权 chmod u+x filename.sh
    使用全路径执行脚本,即可

    3.变量
    环境变量
    局部变量 declare 命令 --定义变量类型
    本地变量 local在函数中使用

    变量类型:
    数值型:
    1.整形 int
    2.浮点型 float
    3.布尔型 0(True) 1(False)
    字符型:
    1.普通字符及字符串
    2.数组

    编程语言的分类:
    强类型语言:数值必须被定义,才能进行处理或运算
    弱类型语言:编程语言可以自动识别变量类型
    【*多态*一个数据具有多个属性,而最后使用的属性取决于和它进行运算的数据】

    传参
    $? --上一条命令的执行状态 0 正确 1-255 错误
    $1 $2 ... ${10} --命令后面传入脚本的数据,以空格为分隔符
    $# --传统传参数量${$#}
    $* --表示所有传参,所有的传参以字符串形式进行输出
    $@ --表示所有传参,所有的传参以列表的形式进行输出
    【工作中要对所以的传参进行操作的时候,就要考虑$*和$@】

    定义变量格式:
    NAME=VALUE
    我们通过命令declare定义变量类型
    declare -i 整数 int() str()
    declare -a 数组
    变量命令:
    1.下划线的方式指定变量名称
    2.驼峰命令方式

    test文件测试,条件判断
    在脚本中,我们需要进行语句分支;说白了,就要做判断
    判断就是使用test命令来实现;
    使用格式:
    1.test [option] file
    2.[语句条件]
    常见的test选项:
    比较选项:
    -eq
    -ne
    -gt
    -ge
    -lt
    -le
    判断选项:
    -f
    -d
    -L
    -r -w -x
    关联选项:
    -o 代表或
    -a 代表与
    ! 代表非
    字符串判断:
    = 判断两边的字符串是否相等
    != 不等于
    -z 判断字符串是否存在
    -n 和 -z 相反,存在为假,不存在为真

    逻辑运算
    与 && 两边的命令都为真,结果才为真
    或 || 两边的命令一边为真就是真,同时为假才是假
    非 !=

    这个逻辑运算符,前后对接的都是单独存在的命令;
    [ $? -eq 0 ] && exit 0 || exit 1

    算术运算
    *let 1+1

  • 相关阅读:
    flex + bison multiple parsers
    Educational Codeforces Round 95 (Rated for Div. 2)
    python学习笔记 day20 序列化模块(二)
    python学习笔记 day20 常用模块(六)
    python 学习笔记 常用模块(五)
    python学习笔记 day19 常用模块(四)
    python学习笔记 day19 常用模块(三)
    python学习笔记 day19 常用模块(二)
    python学习笔记 day19 作业讲解-使用正则表达式实现计算器
    python学习笔记 day19 常用模块
  • 原文地址:https://www.cnblogs.com/zgzj/p/11348001.html
Copyright © 2020-2023  润新知