• 部分工具与基础


    A long lists

    1. Shell hello
    2. File pro Toos
    3. Toos and sed
    4. Rpm and yum

    shell hello

    • 格式
    • 变量
    • 运算
    • 条件
    • 登录方式与配置文件读取
    • 环境

    格式

    行首:#!/bin/shells

    注释:"#" 开头

    运行:bash script 、chmod +x script ; 路径 / script

    建议:添加脚本的作用,使用方法,参数、变量说明。

    变量

    Type :string number

    命名 :- 关键字、-数字字母下划线、驼峰命名

    种类 :

    • 局部变量:当前shell内有效
    • 环境变量:当前shell、子shell
    • 本地变量: funtion
    • 位置变量: 参数:123 10 所有,数组
    • 特殊变量:
      $?:cmd retrun 、也可在script中设置 exit[value] 来控制retrun
      $0:script name
      $$:当前进程pid
    • 只读变量:readonly 变量、declare 变量

    运算

    • 算数符

      + - * / % let
    • 随机函数

      $RANDOM 0-32767
    • 增强算数符

      += -= *= /= %=
    • 自增减

      ++ --
    • 逻辑运算

      true false 0 1
      & | ! ^ && ||

    条件

    test 判断
    [ 判断 ]
    [[ 判断 ]]

    • 测试变量是否创建

      [ -v 变量 ]

    • number

      [ number -gt/-ge/-eq/-ne/-lt/-le number ]

    • String

      [ string -z/-n/=/>/</!=/==/=~ string ]

    • file存在测试

      [ -a file] 返回真假表示存在与否

      -b 块文件存在与否

      -c 字符文件。。。

      -d 目录文件。。。

      -p 管道、-S套接字、-h符号链接

    • 权限测试

      [ -r/w/x file ] 文件的读写执行权限存在判断

      [ -u/g/k ] 特殊权限判断

    • 属性测试

      [ -s file] 非空存在判断

    • ...

    • 组合条件

      [ 条件1 -a/-o 条件2 ] 并且/或者

      [ ! 条件 ] 取反

      && || ! 的组合

    • Read

    read -p "string" -s -n 10 -d "S" -t 30 str

    读取一个输入到str中 设置提示:string 不显示输入内容 长度为10 S字符结束 30秒内输入时限

    • If

      if 条件 ;then 处理块 fi

      if 条件 ;then 处理块1 else 处理块2 fi

      if 条件1;then 处理块1 elif 条件2;then 处理块2 else 处理块3 fi

    • Case
      case 变量 in 1) 处理块;; 2) 处理块;; *) 处理块;; esac

    ### 登录方式与配置文件读取

    1.生效范围 - 全局:
    /etc/profile /etc/profile.d/*.sh
    /etc/bashrc - 用户:
    ~/.bash_profile ~/.bashrc

    2.登录形式 - 交互式
    1 终端输入账号密码登录
    “su - UserName” 切换的用户
    执行顺序:/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc - 非交互式 - Profile profile类:
    为交互式登录的shell提供配置 全局:/etc/profile, /etc/profile.d/*.sh 个人:~/.bash_profile 功用: (1) 用于定义环境变量 (2) 运行命令或脚本

    - Bashrc
    为非交互式和交互式登录的shell提供配置 全局:/etc/bashrc 个人:~/.bashrc 功用: (1) 定义命令别名和函数 (2) 定义本地变量 - 更改配置文件后生效方法:
    1重启shell进程
    2source 或 . 配置文件名
    例 生效全局bashrc: source /bin/bashrc 或 .空格~.bashrc - 退出后执行

    File por toos

    • locate
    • find
    • xargs
    • compress uncompress
    • gzip zunzip
    • bzip2 bunzip2
    • xz unxz
    • zip unzip
    • tar
    • cpio

    locate

    • 非实时查找,用之前需要先创建一下数据库:updatedb,来创建对应文件列表的数据库,速度快是优势,但是构建数据库过程会消耗很多资源
    • 语法&使用

      locate [option] keyword

      -i 不区分大小写

      -n 前n个

      -r 使用正则

    find

    • 实时查找,遍历指定路径
    • 语法&使用

      find [option] [路径] [动作]

      深度:max/min depth level

      1.文件名:find -name "filename" (支持grop,-i 区分大小写)

      2.节点查找:find -inum 节点号(inode)

      3.链接数相同:find -link name

      4.指定用户:-user

      5.指定组:-group

      6. uid gid 用户或组id查找

      7.取反组与用户 -nouser -nogroup

      8.文件类型查找-tpye

      -8-1 find tpye -d 目录

      -8-2 find tpye -f 路径
      -8-3 find tpye -l 符号链接
      -8-4 find tpye -b 块结构
      -8-5 find tpye -p 管道

      9. -empty 空目录或空文件

      10.组合条件:-a -o -not ! (与或非)
      and day
    • 动作

      -ls : 相当于执行结果后的 ls-l 效果

      -delete:删除找到的文件or目录

      -ok cmd {}; 对找到的文件执行cmd 命令需要执行用户确认

      -exec cmd{} ; 对找到的文件执行cmd

      {}:代指命令查找的文件名称自身

    Xargs

    • 简介:

      由于很多命令不支持管道|来传递参数,xargs用于产生某个命令的参数,xargs
      可以读入 stdin 的数据,并且以空格符或回车符将 stdin 的数据分隔成为参数
      许多命令不能接受过多参数,命令执行可能会失败,xargs可以解决
      注意:文件名或者是其他意义的名词内含有空格符的情况
      find和xargs的组合:find | xargs COMMAND
    • 示例

      ls | xargs rm 删除当前目录下的大量文件

      find /sbin/ -perm +700 | ls -l 这个命令是错误的

      find /bin/ -perm /7000 | xargs ls -Sl 查找有特殊权限的文件,并排序

      find /bin/ -perm -7000 | xargs ls -Sl 此命令和上面有何区别?
      find -type f -name “*.txt” -print0 | xargs -0 rm 以字符nul分隔

    部分常用解、压缩、归档工具

    • gzip/gunzip: .gz

      zip:

      zip [option] file

      压缩 zip t.txt > t.gz

      -d解压缩:zip -d t.gz >t.txt

    • bzip2/bunzip2/bzcat

      bzip2[option] file

      bzip2 -k原文件 -d解压 file
      bzcat file.bz2 bzcat 提前看

    • xz/unxz/xcat

      xz [option] file

      -k 原文件 -d 解压 xzcat 提前看

    • tar 打包工具

      语法:tar [option] 打包后的位置名 要打包的目标

      打包:tar -cvf file.tar filename

      解包:tar -x -f

      其他选项用法:

      tar -r -f /PATH/FILE.tar FILE 追加文件

    • *split:分割一个文件为多个文件

      分割大的 tar 文件为多份小文件
      split -b Size –d tar-file-name prefix-name
      split -b 1M –d mybackup.tgz mybackup-parts
      split -b 1M mybackup.tgz mybackup-parts
      合并:
      cat mybackup-parts* > mybackup.tar.gz

    • cpio

      -古老的打包文件或解包工具

      参考互联网,基本只有极少数内部以前打的包使用

    未完待续。。。2019-10-14

  • 相关阅读:
    2016/11/2
    2016/11/1
    bzoj 3809: Gty的二逼妹子序列
    bzoj 1207: [HNOI2004]打鼹鼠
    bzoj 1191: [HNOI2006]超级英雄Hero
    BZOJ 1854: [Scoi2010]游戏
    BZOJ 1296: [SCOI2009]粉刷匠
    BZOJ 1787: [Ahoi2008]Meet 紧急集合
    tarjan算法
    高级的暴力(一)——分块
  • 原文地址:https://www.cnblogs.com/Justin0717/p/11674181.html
Copyright © 2020-2023  润新知