————————————————

Shell数据呈现

输入与输出

  • 输入

    • 来自键盘输入
    • 来自文件输入
  • 输出

    • 输出到屏幕
    • 输出重定向到文件

标准描述文件符

  • 描述文件符

    • 用于系统标识文件对象,包括输入和输出进程在内,一个进程一次允许有9个描述文件符

    • 保留描述文件符

      • 0

        • 标准输入

          • 键盘输入
      • 1

        • 标准输出

          • 输出到屏幕
      • 2

        • 标准错误

          • 显示错误消息到屏幕
    • 重定向错误

      • 只重定向错误消息(即把错误保存输出到文件而非屏幕显示)

        command 2 >error

      • 重定向错误消息和数据(即把错误重定向和正确输出都重定向)

        • 重定向到不同文件

          command 1>right 2>error

        • 重定向到相同文件

          command &> file

          • 注意事项

            • &>代表命令所有的输出都发送到同一个位置
            • 一般错误数据会优先显示
    • 脚本中重定向输出

      • 临时重定向行输出

        • 重定向2文件描述符

          • 文件描述符导出到屏幕(默认)

            command > &2

          • 文件描述符导出到文件

            command 2 > file

      • 永久重定向脚本中的命令

        • 重定向某个文件描述符

          • 首先声明脚本执行期间1文件描述符将会重定向到文件,在具体的执行中,再把需要重定向的内容输出给1文件描述符

            exec 1 > file
            commad > &1

    • 脚本中重定向输入

      • 键盘重定向到其他位置

        • 首先声明脚本执行期间0文件描述符将会重定向到文件,在具体的执行中,文件输入将会取代键盘输入

          exec 0 < file
          while read line

    • 自定义文件描述符

      • 创建输出文件描述符(3-9)

        • 首先声明脚本执行期间3文件描述符将会重定向到文件,在具体的执行中,在把需要进行重定向的内容输出到3文件描述符

          exec 3 > file
          command > &3

      • 重定向输出文件描述符

        • 从A到B,从B到C,再从B到A

          • 通常用于临时重定向输出,然后恢复默认位置

            exec 3 > &1
            exec 1 > file
            exec 1 > &3

      • 重定向输入文件描述符

        • 从A到B,从C到A,再从B到A

          • 通常用于临时重定向输入,然后恢复默认位置

            exec 6 < &0
            exec 0 < file
            exec 0 < &6

      • 创建文件读写文件描述符

        • 仅使用一个文件描述符对文件进行读和写

          exec 3 <> file
          read line < &3
          command >&3

          • 注意事项

            • 使用此方法进行同时读写,系统会维护一个指针,用于记录上一次操作完成后光标所停留的位置,如果忽略这一点,在进行写操作时,系统默认会在光标停留的位置进行写操作,这样会覆盖掉光标所在行的内容
    • 关闭文件描述符

      • 用于完成文件重定向后,关闭该文件描述符

        exec 3 >&-

        • 注意事项

          • 一旦关闭文件描述符,将不能进行读写
          • 关闭文件描述符后,打开输出文件和重新启用文件描述符进行写操作时,会覆盖原来的输出文件
    • 列出打开的文件描述符

      • lsof命令

        • root用户

          lsof

          • 列出进程

            • 当前进程

              lsof -p $$

            • 其他进程

              lsof -p pid

          • 查看打开的默认文件描述符

            lsof -d 0,1,2

          • 当前进程打开的默认文件描述符(-a 把 -p和-d取交集)

            lsof -a -p $$ -d 0,1,2

        • 普通用户

          /usr/sbin/lsof

    • 阻止命令输出

      • /dev/null回收站

        • 不显示标准输出

          command > /dev/null

        • 不显示标准错误

          command 2> /dev/null

        • 不显示标准输出和标准错误

          command > /dev/null 2>&1

        • 清空文件内容

          cat /dev/null > file

创建临时文件

  • 进入到/tmp目录创建

    • 系统在启动时会自动清空
  • 使用mktemp命令创建

    • 创建随机组合名字的临时文件

      mktemp temp.XXXXXX

    • 创建显示完整路径的临时文件

      mktemp -t temp.XXXXXX

    • 创建随机组合名字的临时目录

      mktemp dir.XXXXXX

双向输出

  • tee命令

    • 输出屏幕的同时输出到file中

      command | tee file

    • 输出到屏幕的同时追加到file中

      command | tee -a file

posted @   Tjane'Blogs  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示