批处理重定向符>前有数字(数字与>之间没有空格)是为啥会提示ECHO处于关闭状态呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批处理重定向符>前有数字(数字与>之间没有空格)是为啥会提示ECHO处于关闭状态呢?相关的知识,希望对你有一定的参考价值。

>前有数字时,数字表示已经打开的文件或设备句柄,联合表示将本来输出到某个文件或设备的内容重定向,而非将缺省的标准输出重定向。
系统为每个批处理缺省打开三个设备,句柄描述如下:
0——stdin,标准输入设备,即键盘
1——stdout,标准输出设备,即屏幕
2——stderr,标准错误设备,即屏幕
综上,2>表示将原本输出到stderr的内容重定向,当并无内容输出到stderr时,echo 2>nul相当于echo>nul,而echo后面不加内容,就会提示echo的状态,如批处理首句为@echo off,则echo状态为关闭,这就是你见到这个提示的前因后果。
如果的确想往stderr输出内容,而不是采用系统缺省的向stdout输出内容,可以echo xxx>&2
参考技术A 你把命令贴出来看看
echo 2
echo 2>nul
上面两个命令显示结果不一样
第一个显示:2
第二个显示结果视当前echo状态而定,可能是“ECHO 处于打开状态”或“ECHO 处于关闭状态”

第五课(管道符输入输出重定向与环境变量)

一、输入输出重定向

1. 输入重定向是指把文件导入到命令中。命令符号为   “<”

    输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中 ,而输出重定向又分为清空写入 “>”,错误输出 “2>” 追加写入 ">>", 错误输出 “2>>”.

                      清空写入 “>”:将标准输出重定向到一个文件中(把原来文件里面内容清空,在写入的操作)。

                      错误输出 “2>”:将错误输出重定向到一个文件中(清空原有文件的数据)。

                      追加写入 ">>":将标准输出重定向到一个文件中(在原来文件里面内容后面添加内容,追加写入的操作)。

                      错误输出 “2>>”:将错误输出重定向到一个文件中(追加到原有内容的后面)。

                      &>:将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)。

技术图片

例:输入重定向,把文件输入到命令当中,这时候文件相当于命令操作符,不是对象了,   一般是命令   参数    对象  !

如图所示:

技术图片

例2:输出重定向:是把原有要输出屏幕上的文件内容,输出到另一个文件当中。又分为正常(清空源文件信息)“>”、追加写入(写入到原有文件数据后面)信息">>"与错误信息"2>"、错误追加写入(写入到错误原有文件数据后面)"2>>".

如图所示:

技术图片

 

 

二、管道命令符

1.任意门“ | ”,命令格式: 命令A  |  命令 B | 命令C 多种命令都可以连在一起使用,把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入。

例:查看hehe文件,cat hehe | wc -l 后面命令显示有多少行号,如图所示:

技术图片

 

例2:修改用户root登录密码passwd参数--stdin,使用管道符命令 “|” 与其他命令一起组合使用,如图所示:

技术图片

 

三、命令行通配符

1.通配符就是通用的匹配信息的符号。

如:    星号(*)代表匹配零个(空值)或多个字符(无穷多的信息),

           问号(?)代表匹配单个字符,

           中括号内加上数字[0-9]代表匹配0~9之间的单个数字的字符,而中括号内加上字母[abc]则是代表匹配a、b、c三个字符中的任意一个字符

技术图片

 

 

 

四、常用的转义字符

4种常用的字符:

                       反斜杠():使反斜杠后面的一个变量变为单纯的字符串。

                       单引号(‘‘):转义其中所有的变量为单纯的字符串。

                       双引号(""):保留其中的变量属性,不进行转义处理。

                       反引号(``):把其中的命令执行后返回结果。

如图所示:

技术图片

 

五、重要的环境变量

1.在Linux系统中,变量名称一般都是大写的,这是一种约定俗成的规范。

用alias命令查看全部已有的别名命令,自定义的命令名称来替换原本的命令名称“alias 别名=命令”,用别名命令就可以打开原有命令的效果。

也可以用unalias命令删除已设置的别名命令。

如图所示:

技术图片    技术图片

技术图片

技术图片

 

 

以上是关于批处理重定向符>前有数字(数字与>之间没有空格)是为啥会提示ECHO处于关闭状态呢?的主要内容,如果未能解决你的问题,请参考以下文章

管道符重定向与环境变量

输入输出重定向

第五课(管道符输入输出重定向与环境变量)

管道符重定向与环境变量

BAT 批处理脚本教程

重定向