Shell_03_文件描述符

本文深入探讨了Shell中文件描述符的基本概念,包括标准输入、标准输出和标准错误输出的默认设置及其重定向方法。此外,还介绍了如何通过文件描述符进行自定义操作,如关闭特定的描述符。

Shell_03_文件描述符

在 shell 中执行命令时,每个进程都会和三个打开的文件相联系,并使用文件描述符来引用这些文件。

由于文件描述符不容易记忆, shell 同时也给出了相应的文件名

系统中默认的描述符文件
默认是键盘,也可以是文件输入文件---标准输入
默认是屏幕,也可以是文件或其他命令的输出输出文件---标准输出
默认是屏幕,也可以是文件错误输出文件---标准错误输出
3- $(limit -n)是可以自定义的描述符 可以 &3 来表示一个文件的描述符

例如:

2>&1 表示把 2 标准错误输出 重新输出到文件描述符 1 (即标准正确输出)中

command<&n 把文件描述符 n 作为标准输入

command >&n   把标准输出重定向到文件描述符中

exec n<&-    关闭文件描述符 n

文件描述符Shell编程中的核心概念,用于操作文件、设备或其他输入输出资源[^1]。在Unix和类Unix系统(如Linux)中,每个进程启动时都会默认打开3文件描述符- **标准输入(stdin)**:文件描述符为0,用于接收用户的输入,通常关联到键盘。例如,`cat` 命令在没有指定文件名时,会从标准输入读取内容。 ```bash cat ``` 当执行该命令后,用户可以在终端输入内容,按 `Ctrl + D` 结束输入。 - **标准输出(stdout)**:文件描述符为1,用于将程序的正常输出显示在终端上。例如,`ls` 命令的输出会显示在终端。 ```bash ls ``` - **标准错误(stderr)**:文件描述符为2,用于输出程序运行过程中产生的错误信息。例如,当尝试访问一个不存在的文件时,会输出错误信息。 ```bash cat non_existent_file ``` 在Shell中,可以使用重定向操作符来改变文件描述符的默认行为: - `>` 操作符用于截断模式的文件写入,会将标准输出重定向到指定文件,若文件存在则会清空原有内容;例如: ```bash ls > file_list.txt ``` 此命令会将 `ls` 命令的输出写入到 `file_list.txt` 文件中,如果该文件原本有内容,会被清空。 - `>>` 操作符用于追加模式的文件写入,将标准输出追加到指定文件的末尾,不会清空原有内容;例如: ```bash ls >> file_list.txt ``` 此命令会将 `ls` 命令的输出追加到 `file_list.txt` 文件的末尾。 - `2>` 用于将标准错误输出重定向到指定文件;例如: ```bash cat non_existent_file 2> error.log ``` 此命令会将 `cat` 命令尝试访问不存在文件时产生的错误信息写入到 `error.log` 文件中。 - `2>&1` 用于将标准错误输出重定向到标准输出所指向的位置;例如: ```bash ls non_existent_dir > output.txt 2>&1 ``` 此命令会将 `ls` 命令的标准输出和标准错误输出都重定向到 `output.txt` 文件中。 此外,还可以使用 `exec` 命令关联输入和输出文件描述符,以自定义文件描述符的使用。例如: ```bash exec 3< input.txt read line <&3 echo $line exec 3>&- # 关闭文件描述符3 ``` 上述代码中,将文件 `input.txt` 关联到文件描述符3,然后从文件描述符3读取一行内容并输出,最后关闭文件描述符3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值