检查当前" /> 检查当前"> Day7-认识与学习BASH(3)_随笔_内存溢出

阅读 68

Day7-认识与学习BASH(3),第1张

  1. Day7-认识与学习BASH(3) Day7-认识与学习BASH 0x01 BASH基础 1. shell内建属性

    获取字符串的长度
  2. length=${#var} 可以获得var的长度
  3. 获取当前使用的shell
     
    $BASH
    if [ $UID -ne 0 ] then echo NOT ROOT USER. Please run as root else echo Root User fi
  4. 检查当前运行用户

    if test $UID -ne 0 then echo NOT ROOT USER. Please run as root else echo ROOT USER fi

    或者
  5. cat ~/.bashrc | grep PS1
  6. 修改bash的提示字符

    环境变量 : PS1 可以控制

    u 扩展为用户名 h 扩展为主机名 w 扩展为档期啊目录

    还有一些比较特殊的字符在里面可以使用
  7. prepend() { [ -d "" ] && eval ="':'$'" && export ;}
 
2. 函数添加环境变量 
echo ${array[*]}
echo ${array[@]}
3. 数组

#!/bin/bash echo -e "Please Enter password:" stty -echo read password stty echo echo echo password read.

分别以字符的形式打印数组元素

4.终端 *** 作
stty -echo 以密码形式获取输入 但不输出

#!/bin/bash echo Count; tput sc for count in `seq 0 40` do tput rc tput ed echo -n $count sleep 1 done

设计一个终端倒计时
set -x 执行时显示参数和命令
set +x 禁止调试
set -v 当命令进行读取时显示输入
set +v 禁止打印输入
5. 调试脚本
read 
-n 指定数量
-s 无回显
-p 提示信息
-t 时限
-d 特定的分隔符
6.获取输入 1. /etc/profile 2. /etc/bash.bashrc 3. profile 7. 配置文件

定制bash

登录shell: /etc/profie profile /bash_login

交互shell、ssh单条执行: bash.bashrc .bashrc

BASH_ENV: 设置之后才能在子shell中用别名

ssh登录 读取的配置文件
find xxx -print0 | xargs -0 
0x02 命令执行 1. 录制并回放终端会话

script -t 2> timing.log -a output.session

scriptreplay; 回访执行过程。 2.xargs 和find 结合使用 注意指定

  • 参数
    • 对文件md5
    • 3. md5sum
    对于目录进行md5
     
    
      md5sum file > a.md5 生成 md5sum -c a.md5 快速check
       
      
    openssl password -1 -salt salt_string password
     
    

    md5deep -r1 dir > a.md5

      -r指定迭代深度 此处为一层
    • 密码hash
    • sort data.txt | uniq -s 2 -w 2
     
    4. 排序 
    
      -nrk 依据第一列 按逆序排序 -k 2 按照第2列排序 -d 按照字典排序
    • sort
    • -c 统计数据出现次数 -n 显示唯一行 -d 显示重复 -s 跳过 -w 从当前开始多少
    • uniq
    • -b 指定各个文件大小 -d 使用数字后缀 -a 后缀长度 -l 指定行数

    5. 分割
    split 在不出网环境写数据就有大用了哦。

    {真数} 指定分割执行的次数 -s 命令静默 -n 文件名后缀数字格式 -f 后缀的前缀 -b 指定后缀格式

    csplit

    #!/bin/bash PIDARRAY=() for file in File1.iso File2.iso do md5sum $file & PIDARRAY+=("$!") done wait ${PIDARRAY[@]}

    6. 并行
    并行计算 yyds 都是开的子shell
    cd /var/log find . -exec sh -c 'echo -n {}| tr -d "[:alnum:]_.-" | tr "/" " "; basename {} ' ; 7.树状目录
    • **-**作为命令行参数 借此实现从stdin获得输入
       
      0x03 文件 *** 作 
      
    dd if=/dev/zero of=junk.data bs=1m count=1
     
    1. 创建任意大小文件 
    

    如果目录设置了该权限 只有创建者才能删除 /tmp

    if: 输入文件

    of: 输出文件

    bs: 指定单位大小

    count: 被复制的块数
    2. 删除相同文件
      #!/bin/bash # name: remove_duplicates.sh # use: remove the same ls -lS --time-style=long-iso | awk 'BEGIN{ getline; getline; name1=$8; size=$5 } { name2=$8; if(size==$5) { "md5sum "name1 | getline; csum=$1; "md5sum "name2 | getline; csum2=$1; if( csum==csum2 ) { print name1; print name2; } }; size=$5; name1=name2; }' | sort -u > duplicate_files cat duplicate_files | xargs -I {} md5sum {} | sort | uniq -w 32 | awk '{ print $2 }' | sort -u > unique_files echo Remving.... comm duplicate_files unique_files -3 | tee /dev/stderr | xargs rm echo Removed duplicates files successfully.
    1. 3. 文件权限

      目录的粘滞位
    2. chattr +i file chattr -i file
    3. 递归赋权

    4. -R
    5. 将文件设置为不可修改

      chattr 设置文件的扩展属性
       
      !/bin/bash # name: filestat.sh if [ $# -ne 1 ]; then echo "Usage: is < <(find $path -type f -print) #注意 这里不是<< 第一个< 是重定向 第二个是子进程输出转换 echo ============ FIle types and counts ============= for ftype in "${!statarray[@]}"; do echo $ftype: ${statarray["$ftype"]} done
      dd if=/dev/zero of=look.img bs=1G count=1 mkfs.ext4 look.img file look.img mkdir /mnt/loop mout -o loop look.img /mnt/loop`
    6. basepath"; exit fi path= declare -A statarray; while read line; do ftype=`file -b "$line" | cut -d, -f1` let statarray["$ftype"]++; done
    7. 查看文件状态
    8. losetup -o 32256 /dev/loop2 look.img
    9. 创建1g ext4文件并且挂载

      losetup /dev/loop1 loo.img fidsk /dev/loop1

      -o loop 指名挂载的是环回i文件 而非设备

      fdisk 标准分区工具 +

      losetup -o 32256 /dev/loop2 loopback.img

      如果需要创建分区 就必须手动擦 *** 作了

      mkdir /a mount -o loop linux.iso /a

      在loop.img中创建分区并挂载第一个分区
    10. dd if=/dev/cdrom of=iamge.iso #此时将所有文件都导入对应的,目录内 mkisofs -v "Label" -o image.iso dir/
    11. 挂载ISO文件

    这样我们访问该目录 就是访问的iso文件上的数据了。

    isohybrid image.iso dd if=image.iso of=/dev/sdb1

    4. iso文件
    创建iso文件

    cdrecourd -v dev=/dev/cdrom image.iso -speed 8

    -v : 指定卷标的。

    创建启动闪存和硬盘的混合型iso文件

    eject eject -t 合上。

    用命令行刻录iso

    diff -Naur dir1/ dir2/ -N 将缺失的文件视为空文件 -a 将所有文件视为文本文件 -u 生成一体化输出 -r 递归目录下所有文件

    d出托盘

    dmeg | tail -f

    5. 文件差异

    目录差异
    Ubutu Studio
    6. 监视文件变化

    isohybrid image.iso dd if=image.iso of=/dev/sdb1

     
    7. 音频文件 
    
    *
    cdrecourd -v dev=/dev/cdrom image.iso -speed 8

    标的。

    创建启动闪存和硬盘的混合型iso文件

    eject eject -t 合上。

    用命令行刻录iso

    diff -Naur dir1/ dir2/ -N 将缺失的文件视为空文件 -a 将所有文件视为文本文件 -u 生成一体化输出 -r 递归目录下所有文件

    d出托盘

    dmeg | tail -f

    5. 文件差异

    [外链图片转存中…(img-61M4cKxf-1640655330273)]

    目录差异

    Ubutu Studio

    6. 监视文件变化 7. 音频文件
    *

    欢迎分享,转载请注明来源:

    内存溢出

    原文地址:

    http://outofmemory.cn/zaji/5681969.html
    后缀
    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    Lakehouse 架构解析与云上实践
    上一篇
    2022-12-17
    7.发布者确认
    2022-12-17

    发表评论
    请登录后评论... 登录
    提交

      评论列表(0条)
    保存
    {label} {label} 检查当前', author : '玛雅网最新地址', cat_name : '随笔', time_y_m : '2022年12月', time_d : '17', site_motto : '内存溢出' }; {script} {script}