Shell使用总结(二)

  1. 环回文件

    环回文件系统是指那些在文件中而非物理设备中创建的文件系统.

    1. 在大小为1G的文件上创建ext4文件系统
      1. 用dd命令创建1G大小的文件dd if=/dev/zero of=loopbackfile.img bs=1G count=1:
      2. 用mkfs命令将loopbackfile.img文件格式化为ext4文件系统mkfs.ext4 loopbackfile.img:
      3. 用file命令来检查文件系统file loopbackfile.img:
      4. 用mount -o loop 命令来挂载环回文件mount -o loop loopbackfile.img /mnt/loopback:
      5. 用umount目录来卸载挂载umount /mnt/loopback:
  2. 文件差异 diff

    1. 非一体化生成差异文件diff file1 file2:
    2. 一体化生成差异文件, 一体化输出可读性好diff -u file1 file2:
    3. 生成补丁文件,diff -u file1 file2 > file.patch:
    4. 修补文件patchpatch -p1 file1 < file.patch:
    5. 撤销修补文件patchpatch -p1 file1 < file.patch:
    6. 对目录生成差异文件diff -Naur dir1 dir2 > dir.patch,其中选项含义如下:
      • N: 将所有缺失的文件视为空文件
      • a: 将所有文件视为文本文件
      • u: 生成一体化输出
      • r: 遍历目录下的所有文件
  3. 打印文件头部head

    • 打印文件前num行:head -n num file
    • 打印文件除了最后M行:head -n -M file
  4. 打印文件尾部tail

    • 打印文件最后num行:tail -n num file
    • 打印文件除前M行:tail -n +(M+1) file
    • 监视文件:tail -f file
    • 监视文件,直到某进程结束:tail -f file --pid PID
  5. pushd和popd进行快速定位

    1. pushd压入路径pushd path
    2. dirs显示当前栈上路径dirs
    3. pushd切换栈上路径,从0开始pushd +0
    4. 删除栈上路径popd,删除最后添加的路径popd,删除栈上列表索引popd +num
    5. 如果只有2个路径来回切换可以使用cdcd -
  6. 统计文件的行数,单词数和字符树

    1. 统计行数:
      wc -l file
      cat file | wc -l
    2. 统计单词数:
      wc -w file
      cat file | wc -l
    3. 统计字符数:
      wc-c file
      cat file | wc -c
    4. wc file:分别打印文件的行数,单词数和字符数
    5. -L选项打印最长一行的长度
  7. 打印目录树

    1. 打印目录树tree path:
    2. -P选项匹配符合文件tree path -P "*.java":
    3. -I选项除符合匹配之外的文件tree path -I "*.java":
    4. -h打印文件和目录大小tree path -h:
    5. -H以HTML形式输出目录树tree path -H http:127.0.0.1 -o localhost.html:

九.文本

  1. 正则表达式

    正则表达式描述示例
    ^行起始标记^java 匹配以java起始的行
    ||java 匹配以java结尾的行
    .匹配任意字符java. 匹配java1和java2.但是不能匹配java12和java23,它只能匹配单个字符
    []匹配包含在[字符]之中的任意一个字符jav[a,e] 匹配java和jave
    [^]匹配除[^字符]之外的任意一个字符jav[^a,e] 匹配javc,但不能匹配java和jave
    [-]匹配[]中指定范围内的任意一个字符jav[1-5] 匹配jav1,但不能匹配jav6
    ?匹配之前的项1次或0次jav?a 匹配java和jaa 但不能匹配javva
    +匹配之前项1次或多次java+ 匹配javaa, 但不能匹配java
    *匹配之前项0次或多次java* 匹配jav, java, javaa
    ()创建一个用于匹配的子串j(av)?a 匹配ja或java
    {n}匹配之前的项n次[0-9]{3} 匹配任意一个3位数,[0-9]{3}可以扩展为[0-9][0-9][0-9]
    {n,}匹配之前的项至少n次[0-9]{2,} 匹配任意一个2位数或更多位数
    {n,m}指定之前的项所必须匹配的最小次数和最大次数[0-9]{2,5} 匹配从2位数到5位数之间的任意一个数
    交替,匹配
    |转义符可以将上面介绍的特殊字符进行转义a.b 匹配a.b而不是a1b, 忽略字符特殊含义
  2. grep 在文件中搜索文本

    1. 搜索包含特定模式的文本行:
      grep pattern file
    2. 在多个文件中搜索:
      grep pattern file1 file2 ...
    3. -color 选项可以在输出行中着重标记出匹配到的单词:
      grep pattern file --color=auto
    4. 使用正则表达式匹配:
      grep -E "[a-z]+" falie
      egrep "[a-z]+" file
    5. 只输出文件中匹配到的文本部分,使用选项-o:
      grep -o "a" file
    6. 要打印除包含pattern行之外的所有行,使用选项-v:
      grep -v "a" file
    7. 统计包含匹配的字符串的行数,使用选项-c:
      grep -c "a" file
    8. 打印包含匹配串的行号,使用选项-n:
      grep -n "a" file
    9. 递归搜索文件,使用选项-R:
      grep "a" . -R -n
    10. 忽略大小写,使用选项-i:
      grep -i "a" file
    11. 匹配多个模式:
      grep -e "pattern1" -e "pattern2" file
    12. 搜索中指定文件,使用选项–include:
      grep "a" . -r --include *.{c,cpp,h}
    13. 搜索中排除指定文件,使用选项–exclude:
      grep "a" . -r -exculde "README"
    14. 搜索中排除指定目录,使用选项-exclude-dir:
      grep "a" . -r -exculde-dir "log"
    15. 搜索中痞子蔡指定文件列表,使用选项-exclude-from:
      grep "a" . -r -exclude-from "file1 file2"
  3. 按列切分文件cut

    1. 提取特定的字段或列:
      cut -f field_list file
    2. 按列号提取:
      cut -f 1,2 file将提取第1和第2行内容
    3. 补集运算,使用选项–complement:
      cut -f 1 --complement file将提取出第一行外的所有行
    4. 要指定字段的分界符,使用选项-d:
      cut -f 1 -d";" file
  4. 文本替换sed

    1. 替换给定文本中的字符串:
      sed 's/pattern/replace_string/' file
    2. 默认情况下,sed只会打印替换后的文本.如果需要替换后需要同时保存更改,使用选项-i:
      sed -i 's/pattern/replace_string/' file
    3. 全部替换参数g:
      sed 's/pattern/replace_string/g' file
    4. 移除空白行:
      sed '/^$/d' file
  5. 高级文本处理awk

    awk脚本的基本结构:awk 'BEGIN{print "start"} pattern {commands} END{print "end"}' file

    1. 首先执行BEGIN{commands}语句块
    2. 从文件或stdin中读取一行,然后执行pattern{commands},重复这个过程直到文件全部读取完毕
    3. 当读直输入流末尾时,执行END{commands}语句块
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值