Linux系统中输入输出的管理

一、系统中输入输出的管理

1. 理解系统的输入输出

  • 系统运行一个程序时,需要从某个位置读取输入信息,然后经过cpu处理最后将输出显示到字符设备上,进程通过文件描述的编号通道来获取输入并输出(字符设备所在的目录是 / dev / pts)
  • 输入设备: 就是键盘、鼠标和一些硬件设备在系统输入的字符
  • 输出设备: 就是系统接收到我们想要实现的命令后,经过进程的处理产生字符并且输出到屏幕上
    如图:
    在这里插入图片描述          在这里插入图片描述
  • date字符存储在内存
      在这里插入图片描述
  • 存储在字符显示设备文件

测试硬盘运行速度:
      dd if=/dev/zero of=/mnt/file bs=1M count=1000
测试内存运行速度:
      dd if=/dev/zero of=/dev/shm/file bs=1M count=1000

  • 字符显示设备(/dev/pts/文件)
  • 【root@××××× ×××~】#date > /dev/pts/1      |将显示的内容重定向显示到1字符显示设备

2. 管理输入输出的符号

2.1 shell输出种类
          正确输出1
          错误输出2

普通用户下:

符号用法
<单行输入
<<EOF多行输入<<EOF开始录入直到再次出现EOF结束
2.2 输出重定向
符号用法
>定向正确输出
2>定向错误输出
&>定向所有输出
> file清空文件
>>追加

* 注:重定向会覆盖原来文件内容,此实验必须在普通用户模式下进行
  例子:
      find /etc/ -name passwd > file.out
      find /etc/ -name passwd 2> file.err
      find /etc/ -name passwd &> file.all
  于是:
    建立文件的方式:
         touch file{1…100} 建立100个文件
         vim file2
         gedit file3
         >> file4
    添加内容 echo:
          [root@foundation8 ~]# echo hahahah
          hahahah
(1) find /etc/ -name passwd > file  定向正确输出到file
     在这里插入图片描述

  • su - 用户 可以高级用户切换到低级用户,但是要退出exit
    (2) find /etc/ -name passwd 2> file 定向错误输出到 file
        在这里插入图片描述
    (3) find /etc/ -name passwd &> file 定向所有输出到file
        在这里插入图片描述
2.3 输出追加
符号用法
>>追加正确输出到文件最后
2>>追加错误输出到文件最后
&>>追加所有输出到文件最后
  • 注意:原文件不会被覆盖

(1) ==find /etc/ -name passwd &>> file==追加所有输出到file
    在这里插入图片描述

3.管道的应用

管道: 把前一条命令的输出变成后一条命令的输入

  • 管道只允许正确输出通过
  • 通过管道的输出将会变成输入,而变成输入的这些输出是会被第二条命令处理的
  • 如果需要保存输出内容,那么需要复制一份输出,用到的命令是“tee”

(1)find /etc/ -name passwd | wc -l 结果为2,因为错误输出不能通过管道
     在这里插入图片描述
(2) find /etc -name passwd 2>&1 | wc -l 结果为19,因为编号为2的输出被“2>&1”转换为编号1

  • 注意:“2>&1” 将一个标准错误输出重定向到标准输出 注释:1代表标准输出 2代表错误输出
       在这里插入图片描述

(3) find /etc -name passwd 2>&1 | tee file | wc -l 保存一份输出到file再统计行数
    在这里插入图片描述

  • wc -l 行数
  • wc -w 单词数
  • wc -c 字节数
  • wc -m 字符数

4. 输入重定向

  • 此模式必须在root超级用户模式下才能成,且以EOF结束才可以

单行输入重定向:
        tr ‘a-z’ ‘A-Z’ < file 将文件里的小写字母转成大写

多行重定向(脚本):
        [root@xxxx xxx~]# cat westos.sh
        date ##日期
        cal ##月日历
        passwd << EOF
        hahah
        hahah
        EOF
        [root@xxxx xxx~]#
练习题::
        显示文件 /etc/passwd 的15到18行
        cat -n /etc/passwd awk ‘NR>=15&&NR<=18{print}’
        sed -n 15,18p /etc/passwd

   在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值