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命令 输出重定向 清空?的主要内容,如果未能解决你的问题,请参考以下文章