部分工具与基础

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

posted @ 2019-10-14 21:11  猫九x  阅读(131)  评论(0编辑  收藏  举报