linux系统 cat命令 输出重定向 清空?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux系统 cat命令 输出重定向 清空?相关的知识,希望对你有一定的参考价值。

cat a.txt > a.txt
为什么将一个文件用cat命令输出重定向到自身,会有清空该文件内容的效果?

cat命令会检测这种 输入文件 和 输出文件 是同一个文件的错误

这个命令可以分为两步

    cat打开输入文件a.txt,发现输出文件也是a.txt. 于是就什么都不做, 打开a.txt 文件,然后关闭a.txt文件,也就是cat不输出a.txt文件内容到屏幕(STDOUT_FILENO)。

    cat a.txt > a.txt 就相当于 > a.txt,我们也可以直接使用 > a.txt 达到清空文件的效果。


cat a.txt > a.txt   相当于 > a.txt    。#直接清空文件 

更具体的,看源码去吧。开源的,have a good time!

参考技术A Cata.txt>b.txt可以把a复制到b 详情可以参考《linux命令》

Linux管道符重定向与环境变量

——《Linux就该这么学》笔记

输入输出重定向
输入重定向
  指把文件导入到命令中
输出重定向
  指把原本要输出到屏幕的数据信息写入到指定文件中

输出重定向
  分为标准输出重定向和错误输出重定向
  每种有清空写入与追加写入两种模式

标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可以从其他文件或命令中输入
标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕
错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕

输入重定向符号及作用
  命令 < 文件: 将文件作为命令的标准输入
  命令 << 分界符: 从标准输入中读入,直到遇见分界符才停止
  命令 < 文件1 > 文件2: 将文件1作为命令的标准输入并将标准输出到文件2

输出重定向符号及作用
  命令 > 文件: 将标准输出重定向到一个文件中(清空原有文件的数据)
  命令 2> 文件: 将错误输出重定向到一个文件中(清空原有文件的数据)
  命令 >> 文件: 将标准输出重定向到一个文件中(追加到原有内容的后面)
  命令 2>> 文件: 将错误输出重定向到一个文件中(追加到原有内容的后面)
  命令 >> 文件 2>&1 或者 命令 &>> 文件: 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

管道命令符
  格式: 命令1|命令2|......|命令n
  作用: 把左边命令的结果作为右边命令的输入
  eg: ls -l /etc/ | more

命令行通配符
  通配符就是通用的匹配信息的符号
  星号(*): 代表匹配零个或者多个字符
  问号(?): 代表匹配单个字符

常用的转义字符
  反斜杠(\): 使反斜杠后面的一个变量变为单纯的字符产
  单引号(‘‘): 转义其中所有的变量为单纯的字符串
  双引号(""): 保留其中的变量属性,不进行转义处理
  反引号(``): 把其中的命令执行后返回结果

重要的环境变量
  变量是计算机系统用于保存可变值的数据类型
Linux中10个环境变量
  HOME: 用户的主目录(即家目录)
  SHELL: 用户在使用的shell解释器名称
  HISTSIZE: 输出的历史命令记录条数
  HISTFILESIZE: 保存的历史命令记录条数
  MAIL: 邮件保存路径
  LANG: 系统语言、语系名称
  RANDOM: 生成一个随即数字
  PS1:Bash解释器的提示符
  PATH: 定义解释器搜索用户执行命令的路径
  EDITOR: 用户默认的文本编辑器

变量是由固定的变量名与用户或系统设置的变量值两部分组成的
  可以使用export命令将自己定义的变量提升为全局变量

env命令: 该命令可以查看Linux系统中所有的环境变量

命令在Linux中的执行步骤
  第一步:判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果时则直接执行
  第二步: Linux系统检查用户输入的命令是否为"别名命令"
  第三步: Bash解释器判断用户输入的是内部命令还是外部命令
  第四步: 系统在多个路径中查找用户输入的命令文件

  定义命令别名命令格式: alias 别名=命令
  删除命令别名命令格式: unalias 别名
  判断命令属于内部命令还是外部命令: type 命令名称
  第四步中定义路径的变量叫作PATH,每个路径值之间用冒号间隔

以上是关于linux系统 cat命令 输出重定向 清空?的主要内容,如果未能解决你的问题,请参考以下文章

linux学习输入输出重定向和管道功能cat命令more命令

Linux中的重定向

[Linux 005]——IO重定向

Linux新手必须掌握的命令

管道符重定向与环境变量

linux基础学习-10.1-特殊符号-分类讲解