8.12 shell入门

重定向和管道符:
1.重定向 - tr
  程序=指令(命令)+数据(变量)

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

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

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

./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> 2>>
    扩展:不需要输出内容,只需要输出状态:
    ls /etc/ > /dev/null 2> /dev/null
    if [$? -eq 0];then
    循环体
    fi
    &> &>> == 2&>1
    ls /etc /&> /dev/null
2.管道 - tee

command1 | command2 | command3 |……

  前一个命令的执行结果交给后一个命令来执行
  [Linux思想:结合小功能实现大功能]
  free -m | grep "^M" | cut -d ' ' -f23

  tee 一路输入两路输出(输出一次,保存一次)
  tee /tmp/tee.out //如果没有文件,会创建,如果文件存在并有内容,会覆盖
  tail 查看文件尾部多少行(默认10行)
  -n tail -n 5 /etc/passwd
  -f 实时查看文件更新内容
  tail -f /var/log/message
  head查看文件头部多少行(默认10行)
  -n head -n 5 /etc/passwd
  取10行到20行:head -20 /etc/passwd |tail -10

3.文本处理工具 - wc,cut,sort,uniq

  wc(word count)
  功能说明:计算字数。
  语  法:wc [-clw][--help][--version][文件...]
  补充说明:利用wc指令我们可以计算文件的Byte数、字数、或是列数,
  若不指定文件名称、或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。
  参  数:
  -c或--bytes或--chars 只显示Bytes数。
  -l或--lines 只显示列数。
  -w或--words 只显示字数。
  --help 在线帮助。
  --version 显示版本信息。

  cut
  使用权限:所有使用者
  用法:cut -cnum1-num2 filename
  说明:用来做文件分割,显示每行从开头算起 num1 到 num2 的文字。
  局限性:   1、 -d指定分隔符不能同时指定多个
        2、不能做高级的格式化输出
  所以需要熟练掌握awk
  范例:
  shell>> cat example
  test2
  this is test1
  shell>> cut -c0-6 example ## print 开头算起前 6 个字元
  test2
  this i

  sort
  功能说明:将文本文件内容加以排序。
  语  法:
  sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
  补充说明:sort可针对文本文件的内容,以行为单位来排序。
  参  数:
  -b 忽略每行前面开始出的空格字符。
  -c 检查文件是否已经按照顺序排序。
  -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
  -f 排序时,将小写字母视为大写字母。
  -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
  -m 将几个排序好的文件进行合并。
  -M 将前面3个字母依照月份的缩写进行排序。
  -n 依照数值的大小排序。
  -o<输出文件> 将排序后的结果存入指定的文件。
  -r 以相反的顺序来排序。
  -t<分隔字符> 指定排序时所用的栏位分隔字符。
  +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
  --help 显示帮助。
  --version 显示版本信息。

  uniq
  功能说明:检查及删除文本文件中重复出现的行列。
  语  法:
  uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
  补充说明:uniq可检查文本文件中重复出现的行列。
  参  数:
  -c或--count 在每列旁边显示该行重复出现的次数。
  -d或--repeated 仅显示重复出现的行列。
  -f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。
  -s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。
  -u或--unique 仅显示出一次的行列。
  -w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。
  --help 显示帮助。
  --version 显示版本信息。
  [输入文件] 指定已排序好的文本文件。
  [输出文件] 指定输出的文件。

     

posted @ 2019-08-13 14:01  酒友az  阅读(97)  评论(0编辑  收藏  举报