鱼C论坛

 找回密码
 立即注册
查看: 19|回复: 1

[技术交流] linux15-管理及IO重定向

[复制链接]
发表于 昨天 19:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
计算机五大部件:
        运算器,控制器,CPU,存储器,RAM,输入/输出设备

程序,指令和数据:
        指令和数据放在存储器

控制器:读取指令,读取需要进行的运算;
运算器:
存储器:

产生
地址总线:内存寻址
数据总线:传输数据
控制总线:控制指令

寄存器:CPU内部的一个暂时存储空间,比如现在要执行加法运算,已经传过来一个加数和加法,但是还没有传过来被加数,因此无法执行计算,此时需要把传过来的加数和加法就放在这里;被加数从RAM读取过来,RAM是非记忆存储器,掉电数据消失

输入设备/输出设备:I/O设备:硬盘,键盘/鼠标都属于

INOPUT设备:键盘,鼠标,硬盘
OUTPUT设备:硬盘,显示器,

系统设定
        默认输入设备:标准输入STDIN ,0

        默认输出设备:标准输出STDOUT ,1 正常执行结果

        标准错误输出:STDERR,2

passwd --stdin
标准输入设备:键盘
标准输出和错误输出:显示器

I/O重定向:
        标准输入输出重定向:
       
Linux:
        输出重定向:>
        输入重定向:<
        eg: ls /var > /tmp/var.out 将执行的输出重定向到/tmp/var.out中去,
        cat /etc/fstab > /tmp/var.out 同理,文件会覆盖上一个var.out 文件;(称为覆盖输出)如果想要保留此文件,则可以使用两个>>叫做追加输出
        追加输出:>>,如果使用了一个>则会造成致命错误

set:
        -C:如果文件内部已经有文件,禁止使用覆盖重定向
        +C:文件内部已经有文件,启用覆盖重定向;

        如果在不使用set -C改变并且想覆盖重定向,使用>|可以解决;
       
        如果写ls /varr > /tmp/var2.out 如果写错了,不会输出var2.out因为标准输出和错误输出是两回事;
        如果想保存错误输出: 则使用2>,2>>一个是覆盖重定向错误输出,一个是追加输出重定向输出;
        如果 ls /var 2> /tmp/var2.out :则会输出到显示器,

        ls /varr > /tmp/var3.out 2>/tmp/err.out :保存正确输出和错误输出分保存
       
        &>:重定向标准输出和错误输出为同一个文件;ls /var.6 &> /tmp/res.out
        &>>:重定向追加标准输出和错误输出为同一个文件

        <:输入重定向:
        eg tr ‘a-z' 'A-Z' file此时会报错,但是如果将输入重定向到文件,则文件相当于模拟键盘输入,
        此时tr 'a-z' 'A-Z' < file 则会将文件内的小写字母变成大写字母;;
       
        <<:Here Document:
                此处生成一个文档: eg: cat << END 输入,以END结束,前面所有的内容作为文档输出
               
        cat  >> /tmp/myfile.txt << EOF  也可以这样写:cat <<EOF >> /tmp/myfile.md :将输入的文件定向到/myfile.txt  用脚本生成一个文件;
       
       

管道:命令也可以使用管道:
       
        命令1 | 命令2 |命令3 ... :将前一个命令的输出当作后一个命令的输入叫做管道;
        eg: echo "hello world" | tr 'a-z' 'A-Z'  得到的输出为:HELLO WORLD
        eg:“cut -d: -f1 /etc/passwd |sort -n | tr 'a-z' 'A-Z'将文件以冒号第一项以大小分类排序的结果全部大写
        eg:ls /var | tr 'a-z' 'A-Z'
        所以管道的意思是组合小命令;

tee:
        从标准输入读取并且写在标准输出和文件中;
         echo 'l' |tee /tmp/hello.out  ,结果是tee输出出来的,不是echo输出出来的;

只显示一个文件的行数,不显示多余信息:
        wc -l /etc/passwd |cut -d ' ' -f1
       
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 昨天 19:09 | 显示全部楼层
Linux I/O重定向及系统管理概述

  • 计算机五大部件
      
    • 运算器
    • 控制器
    • CPU
    • 存储器(RAM)
    • 输入/输出设备

  • 程序、指令和数据
      
    • 指令和数据存放于存储器中
        
    • 控制器职责:读取指令和运算所需数据
        
    • 运算器职责:执行运算
        
    • 存储器的作用:临时存储数据和指令

  • 总线及寄存器
      
    • 地址总线:用于内存寻址
        
    • 数据总线:用于数据传输
        
    • 控制总线:用于传输控制指令
        
    • 寄存器:CPU内部的临时存储空间

  • I/O设备
      
    • 输入设备:键盘、鼠标、硬盘
        
    • 输出设备:硬盘、显示器

  • 系统设定及I/O重定向
      
    • 默认标准输入设备(STDIN):键盘
        
    • 默认标准输出设备(STDOUT):显示器
        
    • 标准错误输出(STDERR):显示器

        
    • Linux中的I/O重定向
         
      • 输出重定向:使用 >
           
      • 输入重定向:使用 <
           
      • 示例:将输出重定向至文件 ls /var > /tmp/var.out
           
      • 追加输出:使用 >>
           
      • 覆盖保护使用 set -C 和解除保护使用 set +C
           
      • 强制覆盖:使用 >|
           
      • 重定向错误输出:使用 2> 和追加 2>>
           
      • 同时重定向标准输出和错误输出:使用 &> 和追加使用 &>>


例如:
ls /var > /tmp/var.out           # 将目录内容输出重定向到文件
ls /var 2> /tmp/err.out          # 将错误输出重定向到错误文件
ls /var &> /tmp/res.out          # 所有输出重定向到同一个文件

这些命令提供了强大的方式来管理输入和输出流,在处理文件时尤其有用。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-3-10 03:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表