zoukankan      html  css  js  c++  java
  • 嵌入式成长轨迹6 【嵌入式环境及基础】【Linux shell强化】【Shell输入输出】

    一、命令
    1、echo
    可以显示文本行或变量,或者把字符串输入到文件
    echo [option] string
     -e 保持字符串中转义字符特殊含义(否则会直接输出)
     -n 回车不换行
     转义符(\c回车不换行 \f禁止 \t相当于tab \n换行)

    2、read
    可以从键盘或文件的某一行文本中读入信息,并将其赋给一个变量
    read var1 var2
     如果只指定了一个变量,那么read会把所有的输入赋给该变量,直至遇到第一个文件结束符或回车;如果给出了多个变量,则按顺序被分别赋值,以空格作为变量之间的分隔符

    3、cat
    用来显示文件内容,创建文件,还可以用它来显示控制字符
    cat [options] name1 name2
     -v 显示控制字符
     使用cat命令时要注意,它不会在分页符时停下来。除非使用管道与more、less连接,或者直接使用less

    4、管道
    之前已经提及
    df -k |awk '{print $1}' |grep -v "Filesystem"
    显示所有分区(显示分区资料|得到第一列|去除“Filesystem”)

    5、tee
    把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。
    tee -a files
      -a 指插入原有文件末尾(没有则会重写该文件)
      比较常用于管道之后

    who |tee who.out
    df -k|awk '{print $1}'|grep -v "Filesystem"|tee partation.txt

    6、exec
    重新启动一个shell用来替代当前shell
    exec command 其中的command通常是个shell脚本
    只有在对文件描述符进行操作时不会覆盖你当前的shell

    二、标准输入、输出和错误
    输入、输出、错误文件描述符分别是0,1,2(输入缺省是键盘,后两个缺省是屏幕)
    系统中实际上有12个文件描述符,可以任意使用文件描述3到9
    1、文件重定向
    之前说过> <
    >file.txt 创建一个空的file.txt
    command >> file 追加
    command 1 > file 标准输出重定向到文件(等同于不加1)
    command > file 2>&1 把标准输出和标准错误一起重定向到一个文件中(>>可以追加)
    command 2 > file 把标准错误重定向到一个文件中
    command 2 >> file 追加标准错误到文件
    command <file> file1 以file作为command标准输入,file1作为command标准输出
    command << delimiter 从标准输入中读入直至遇到delimiter分界符
    command <&m 把文件描述符m作为标准输入
    command >&m 把标准输出重定向到文件描述符m中
    command <&- 关闭标准输入

    2、举例
    cat >>team.txt <<;
    将读取标准输入到文本team.txt,直至遇到分号
    grep "haha" miss > /dev/null
    无视错误
    cat file.txt file1.txt 1>file.out 2>file.err
    输出正常的到file.out,错误到file.err

    3、合并标准输出和标准输入
    shell是从左到右分析相应的命令的
    grep "standard" standard.txt > grep.out 2>&1
    标准输出到grep.out,标准错误输出到标准输出

    三、文件描述符
    exec与文件描述符结合,此时不会覆盖当前的shell
    #!/bin/bash
    #file_desc

    #将3作为标准输入,name.txt输入到标准输入,相当于打开文件描述符3
    exec 3<&0 0<name.txt
    read line1
    read line2
    #将0作为标准输入,相当于关闭文件描述符3
    exec 0<&3
    echo $line1
    echo $line2

  • 相关阅读:
    leetcode 228. Summary Ranges ---------- java
    leetcode 227. Basic Calculator II ---------- java
    leetcode 225. Implement Stack using Queues 利用队列构建栈 ---------- java
    leetcode 224. Basic Calculator ---------- java
    leetcode 223. Rectangle Area 计算面积---------- java
    leetcode 222. Count Complete Tree Nodes 统计节点个数---------- java
    leetcode 链表题总结
    leetcode 221. Maximal Square 求一个数组中由1组成的最大的正方形面积 ---------- java
    React + Node 单页应用「三」API 设计 & 项目部署
    React + Node 单页应用「二」OAuth 2.0 授权认证 & GitHub 授权实践
  • 原文地址:https://www.cnblogs.com/zeedmood/p/2376157.html
Copyright © 2011-2022 走看看