江苏建设工程材料网站,做植物提取物好的推广网站,查企业信息的软件,仙桃住房和城乡建设部网站防伪码#xff1a;桃花潭水深千尺#xff0c;不及汪伦送我情。文件描述符#xff08;fd#xff09;#xff1a;文件描述符是一个非负整数#xff0c;在打开现存文件或新建文件时#xff0c;内核会返回一个文件描述符#xff0c;读写文件也需要使用文件描述符来访问文件…防伪码桃花潭水深千尺不及汪伦送我情。文件描述符fd文件描述符是一个非负整数在打开现存文件或新建文件时内核会返回一个文件描述符读写文件也需要使用文件描述符来访问文件。内核为每个进程维护该进程打开的文件记录表。文件描述符只适于 Unix、Linux 操作系统。8. 1 标准输入、输出和错误文件描述符 描述 映射关系0 标准输入键盘 /dev/stdin - /proc/self/fd/01 标准输出屏幕 /dev/stdout - /proc/self/fd/12 标准错误屏幕 /dev/stderr - /proc/self/fd/28.2 重定向符号符号 描述 符号左边输出作为右边输入标准输出 符号左边输出追加右边输入 符号右边输出作为左边输入标准输入 符号右边输出追加左边输入 重定向绑定符号输入和输出可以被重定向符号解释到 shell。shell 命令是从左到右依次执行命令。下面 n 字母是文件描述符。8.3 重定向 输出1覆盖输出一般格式[n]word如果 n 没有指定默认是 1示例打印结果写到文件echo test a.txt当没有安装 bc 计算器时错误输出结果写到文件echo 1 1 |bc 2 error.log2追加重定向输出一般格式[n]word如果 n 没有指定默认是 1示例打印结果追加到文件echo test a.txt当没有安装 bc 计算器时错误输出结果追加文件echo 1 1 |bc 2 error.log8.4 4 重定向输入一般格式[n]word如果 n 没有指定默认是 0示例a.txt 内容作为 grep 输入grep test --color a.txt8.5 5 重定向标准输出和标准错误1覆盖重定向标准输出和标准错误两种格式重定向标准输出和标准错误word 和word 等价于word 21将标准输出和标准输入绑定到一起重定向 word 文件。示例当不确定执行对错时都覆盖到文件echo 1 1 |bc error.log当不确定执行对错时都覆盖到文件echo 1 1 |bc error.log 212追加标准输出和标准错误追加格式word 等价于word 21当不确定执行对错时都追加文件echo 1 1 |bc error.log将标准输出和标准标准输入追加重定向到 word[-]wordhere-documentdelimiter从当前 shell 读取输入源直到遇到一行只包含 delimiter 终止内容作为标准输入。将 eof 标准输入作为 cat 标准输出再写到 a.txt# cat eof123abceof123abc# cat a.txt eof 123 abc eof8.6 重定向到 空设备/dev/null 是一个空设备向它写入的数组都会丢弃但返回状态是成功的。与其对应的还有一个/dev/zero 设备提供无限的 0 数据流。在写 Shell 脚本时我们经常会用到/dev/null 设备将 stdout、stderr 输出给它也就是我们不想要这些输出的数据。通过重定向到/dev/null 忽略输出比如我们没有安装 bc 计算器正常会抛出没有发现命令# echo 1 1 |bc /dev/null 21这就让标准和错误输出到了空设备。忽略标准输出# echo test /dev/null忽略错误输出# echo 1 1 |bc 2/dev/nulld 8.7 read 命令read 命令从标准输入读取并把输入的内容复制给变量。命令格式 read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-pprompt] [-t timeout] [-u fd] [name ...]-e 在一个交互 shell 中使用 readline 获取行-r 不允许反斜杠转义任何字符-s 隐藏输入-a array 保存为数组元素以空格分隔-d delimiter 持续读取直到遇到 delimiter 第一个字符退出-i text 将 test 文本作为-n nchars 读取 nchars 个字符返回而不是等到换行符-N nchars 读取 nchars 个字符返回除非遇到文件结束符或超时其他分隔符都被忽略-p prompt 提示信息-t timeout 等待超时时间秒-u fd 指定文件描述符号码作为输入默认是 0name 变量名示例获取用户输入保存到变量# read -p Please input your name: VARPlease input your name: lizhenliang# echo $VARlizhenliang用户输入保存为数组# read -p Please input your name: -a ARRAYPlease input your name: a b c# echo ${ARRAY[*]}a b c遇到 e 字符返回# read -d e VAR123456e# echo $VAR123 456从文件作为 read 标准输入# cat a.txtadfasfd# read VAR a.txt# echo $VARadfasfdwhile 循环读取每一行作为 read 的标准输入# cat a.txt |while read LINE; do echo $LINE; done123abc分别变量赋值# read a b c1 2 3# echo $a1# echo $b2# echo $c3# echo 1 2 3 | while read a b c;do echo $a $b $c; done1 2 3谢谢观看真心的希望能帮到您