可以使用重定向操作符将命令输入和输出数据流从默认位置重定向到不同的位置。输入或输出数据流的位置即为句柄。
下表将列出可用的句柄。
句柄 句柄的数字代号 描述
STDIN 0 键盘输入
STDOUT 1 输出到命令提示符窗口
STDERR 2 错误输出到命令提示符窗口
UNDEFINED 3-9 这些句柄由应用程序单独定义,并且是各个工具特定的。
数字 0 到 9 代表前 10 个句柄。
可以使用命令 Cmd.exe 运行程序并将该程序前 10
个句柄中的任何一个重定向。要指定想使用的句柄,可在重定向操作符前面键入该句柄的数字。如果未定义句柄,则默认的 < 重定向输入操作符是
0,而默认的 > 重定向输出操作符是 1。键入 > 或 <
操作符之后,必须指定要读取或写入数据的位置。可以指定文件名或另一个现有的句柄。
要指定重定向到现有句柄,请使用与 (&) 字符
,后面接要重定向的句柄号(例如 &句柄#)。例如,下面的命令可以将句柄 2(即 STDERR)重定向到句柄 1(即 STDOUT)
:
2>&1
下表列出了可用于将输入和输出数据流进行重定向的操作符。
重定向操作符 描述
> 将命令输出写入到文件或设备(例如打印机)中,而不是写在命令提示符窗口或句柄中。
< 从文件中而不是从键盘或句柄中读入命令输入。
>> 将命令输出添加到文件末尾而不删除文件中的信息。
>& 将一个句柄的输出写入到另一个句柄的输入中。
<& 从一个句柄读取输入并将其写入到另一个句柄输出中。
| 从一个命令中读取输出并将其写入另一个命令的输入中。也称作管道。
默认情况下,可以从键盘将命令输入(即 STDIN 句柄)发送到 Cmd.exe,然后由 Cmd.exe 将命令输出(即 STDOUT 句柄)发送到命令提示符窗口。
重定向输入 (<)
要将键盘输入重定向到文件或设备,请使用 < 操作符。例如,要从 File.txt 获取 sort 命令的输入,请键入:
sort<file.txt
File.txt 的内容将以字母顺序列表的方式显示在命令提示符窗口中。
< 操作符可以打开具有只读访问的指定文件名。所以,不能使用该操作符向文件中写入信息。例如,如果以 <&2 启动程序,则所有试图读取句柄 0 的操作都将失败,因为句柄 2 最初是以只写访问打开的。
注意
0 是 < 重定向输入操作符的默认句柄。
重定向输出 (>)
几乎所有的命令都将输出发送到命令提示符窗口。即使将输出发送到驱动器或打印机的命令也会在命令提示符窗口显示消息和提示。
要将输出从命令提示符窗口重定向到文件或设备,请使用 > 操作符。可以在许多命令中使用该操作符。例如,要将 dir 输出重定向到 Dirlist.txt,请键入:
dir>dirlist.txt
如果 Dirlist.txt 不存在,Cmd.exe 将创建该文件。如果 Dirlist.txt 存在,Cmd.exe 将使用 dir 命令的输出替换文件中的信息。
要运行 netsh routing dump 命令,然后将输出发送到 Route.cfg,请键入:
netsh routing dump>c:\route.cfg
> 操作符可以打开具有只写访问属性的指定文件。所以,不能使用该操作符读取文件。例如,如果使用重定向 >&0 启动程序,则所有试图写入句柄 1 的操作都将失败,因为句柄 0 最初是以只读访问打开的。
注意
1 是 > 重定向输出操作符的默认句柄。
复制句柄
重定向操作符 & 可以将输出或输入从一个指定句柄复制到另一个指定的句柄。例如,要将 dir 输出发送到 File.txt 并将错误输出发送到 File.txt,请键入:
dir>c:\file.txt 2>&1
复制句柄时,可以复制该句柄原状态的所有特性。例如,如果一个句柄具有只写访问的属性,则该句柄的所有副本都具有只写访问属性。不能将一个具有只读访问属性的句柄复制到另一个具有只写访问属性的句柄。
使用 & 操作符重定向输入和副本
要
将重定向输入操作符 (<) 与复制操作符 (&) 一起使用,指定的文件必须已经存在。如果输入文件存在,Cmd.exe
将以只读方式打开该文件,然后将文件中包含的字符作为输入发送到此命令(如同从键盘输入一样)。如果指定了句柄,Cmd.exe
将指定的句柄复制到系统现有的句柄中。
例如,要以句柄 0 输入读取(即 STDIN)的方式打开 File.txt,请键入:
<file.txt
要打开 File.txt,并在内容排序后将输出发送到命令提示符窗口(即 STDOUT),请键入:
sort<file.txt
要查找 File.txt,然后将句柄 1(即 STDOUT)和句柄 2(即 STDERR)重定向到 Search.txt,请键入:
findfile file.txt>search.txt 2<&1
要以句柄 0 输入读取(即 STDIN)的方式复制用户定义句柄 3,请键入:
<&3
使用 & 操作符重定向输出和复制
如果将输出重定向到文件且指定了现有的文件名,Cmd.exe 将以只写方式打开文件并覆盖该文件内容。如果指定了句柄,Cmd.exe 将文件复制到现有句柄中。
要将用户定义句柄 3 复制到句柄 1,请键入:
>&3
要将包括句柄 2(即 STDERR)的所有输出从 ipconfig 命令重定向到句柄 1(即 STDOUT),然后将输出重定向到 Output.log,请键入:
ipconfig.exe>>output.log 2>&1
使用 >> 重定向操作符追加输出
要从命令中将输出添加到文件末尾而不丢失文件中已存在的任何信息,请使用两个连续的大于号(即 >>)。例如,下面的命令可以将由 dir 命令生成的目录列表追加到 Dirlist.txt 文件:
dir>>dirlist.txt
要将 netstat 命令的输出追加到 Tcpinfo.txt 的末尾,请键入:
netstat>>tcpinfo.txt
使用管道操作符 (|)
管道操作符 (|) 可以提取一个命令的输出(默认情况下是 STDOUT),然后将其导入另一个命令的输入中(默认情况下是 STDIN)。例如,下面的命令将对目录分类:
dir | sort
在本例中,将同时启动两个命令,但随后 sort 命令会暂停,直到它接收到 dir 命令的输出为止。sort 命令使用 dir 命令的输出作为输入,然后将输出发送到句柄 1(即 STDOUT)。
合并带重定向操作符的命令
可以通过合并带有其他命令和文件名的筛选器命令创建自定义命令。例如,可以使用以下命令存储包含“LOG”字符串的文件名:
dir /b | find "LOG" > loglist.txt
dir 命令的输出通过 find 筛选器命令发送。包含字符串 "LOG" 的文件名作为文件名列表(例如,NetshConfig.log、Logdat.svd 和 Mylog.bat)存储在文件 Loglist.txt 中。
要在相同命令中使用多个筛选器,请使用管道 (|) 分隔筛选器。例如,下面的命令将搜索 C 盘上的每个目录以查找包含 "LOG" 字符串的文件名,并且在命令提示符窗口中每次显示一屏:
dir c:\ /s /b | find "LOG" | more
利
用管道 (|) 可以将 Cmd.exe 导向为通过 find 筛选器命令发送 dir 命令输出。find 命令只选择包含字符串 "LOG"
的文件名。more 命令可以显示由 find 命令选择的文件名(在命令提示符窗口中每次显示一屏)。有关筛选器命令的详细信息,请参阅使用筛选器。
分享到:
相关推荐
4. **I/O重定向**:支持标准输入、输出和错误的重定向,例如`用于输入重定向,`>`用于输出重定向,`>>`用于追加输出。 5. **管道(Pipeline)**:允许用户将多个命令通过管道连接,使得前一个命令的输出成为后一个...
- **输入输出重定向**:支持将命令的输入或输出重定向到文件或其他流。 - **作业控制**:提供作业控制功能,包括前后台切换、作业状态变更等。 #### 设计内容 ##### 概述 - 该项目的核心在于构建一个命令行接口...
- **管道与重定向**:允许用户使用管道连接多个命令,并支持输入输出重定向。 - **作业控制功能**:提供前后台作业切换、作业清单显示、作业挂起、中止及继续等功能。 2. **具体的实验要求** - **shell程序形式**...
5. **输入输出重定向**:`用于输入重定向,`>`和`>>`分别用于覆盖和追加输出重定向,`|`则用于管道,将一个命令的输出作为另一个命令的输入。 Shell命令格式通常包括命令本身、参数和选项。例如,`tar -zxvf a.gz a...
2. **printf函数**:在C语言中,`printf`函数是一个标准的输出函数,能够格式化并打印字符串到指定的目标,如控制台或UART。为了将`printf`重定向到UART,我们需要替换其默认的输出流,使其指向UART的发送函数。 3....
- **输入/输出重定向**:`>`用于输出重定向,`用于输入重定向,`>>`用于追加输出。 5. **使用Shell脚本的实际应用:** - **系统维护**:定期备份、清理日志、监控资源等。 - **软件部署**:自动化安装配置、构建...
#### 七、Shell输入/输出重定向 1. **输出重定向** - 使用`>`重定向标准输出到文件。 ```bash echo "Hello" > output.txt ``` 2. **输入重定向** - 使用`从文件读取输入。 ```bash cat ``` 3. **重定向深入...
- **输出重定向**: 使用`>`符号可以将命令的输出结果重定向到一个文件中,如果文件已存在,则会被覆盖。使用`>>`符号则会在文件末尾追加内容,而不是覆盖。 - **输入重定向**: 通过`符号可以从文件读取输入而非...
- 重定向:`>` 用于输出重定向,`用于输入重定向,`>>` 追加输出。 - 管道:`|` 用于连接两个命令,将前一个命令的输出作为后一个命令的输入。 - 输入/输出重定向组合:如 `command1 | command2 > output.txt`。 ...
输入输出重定向允许用户改变命令的默认输入源和输出目的地,如使用>`>`, `>>` 和 `操作符将输出写入文件或从文件读取输入。 1.8 文件权限和进程 Unix 文件系统使用rwx(读、写、执行)权限控制文件访问,而进程管理...
例如,“COPY X1.TXT+B1.TXT B:Z.TXT”这一命令将X1.TXT和B1.TXT的内容合并,并保存为B盘上的Z.TXT文件。 **10. 文件操作命令的等价性** - **知识点概述:** 不同命令实现相同功能的方法。 - **详细解释:** 在某些...
- 特点包括命令行补全、通配符支持、历史命令追踪、别名设置、输入/输出重定向以及管道功能等。 2. **C外壳 (csh):** - 提供Bourne外壳所不具备的用户交互特性,如命令补全、别名和历史命令替换等。 - 由Bill ...
输入/输出重定向** - **标准输入 (stdin)**:默认来自键盘,可通过`重定向文件到命令。 - **标准输出 (stdout)**:默认显示在终端,可用`>`或`>>`重定向到文件。 - **标准错误 (stderr)**:错误信息输出,可使用`2>...
在嵌入式系统中,STDIO是一组C语言标准库函数,用于处理输入和输出,如printf、scanf等,它们使得开发者能够方便地在串口、LCD或其他输出设备上打印调试信息。STM32F429实现STDIO通常涉及到以下几个关键知识点: 1....
5. **输入输出重定向**:将标准输入/输出重定向到文件或其他命令。 #### 实例分析 假设我们需要编写一个简单的Shell脚本来统计目录下所有文本文件的行数: ```bash #!/bin/bash # 定义计数器变量 total_lines=0 ...
4. **重定向和管道**:Unix Shell支持I/O重定向,允许将命令的输出重定向到文件或从文件读取输入。管道符(`|`)可以连接多个命令,将一个命令的输出作为另一个命令的输入。 5. **脚本编写**:编写Shell脚本可以...
输入/输出重定向 CShell允许用户重定向输入和输出,如`command 读取文件输入,`command > output.txt`将输出写入文件。 ### 8. 脚本编写 CShell脚本以`#!/bin/csh`作为解释器声明,并通过chmod +x script.csh使...
- **输入输出重定向**:允许用户更改程序的标准输入/输出流,例如将程序的输出重定向到文件而不是屏幕。 - **文件名缩写(通配符)**:使用特殊的字符来匹配文件名模式,例如`*`、`?`等。 - **shell变量**:用户可以...
客户端在启动引擎时,创建输入和输出两条管道,并在新进程中重定向引擎的I/O。引擎则通过标准输入输出(如C语言的scanf和printf)与客户端交流。每条指令以行的形式传递,以CR LF(0x0d,0x0a)作为结束符,引擎发送...
6. `和 `>`:重定向,`用于输入重定向,`>`用于输出重定向。 7. `>>`:追加重定向,将输出追加到文件末尾,而不是覆盖原有内容。 8. `*` 和 `?`:通配符,`*`匹配任意数量的字符,`?`匹配单个字符。 9. `[ ]`:字符...