file descriptor是个什么东西```~
举例说下~~~~~
谢谢~~~~~~~
iricyan 回复于:2003-11-19 23:42:13 |
0
1 2 |
红头发 回复于:2003-11-20 06:45:54 |
whut?
012? |
guchengman 回复于:2003-11-20 18:33:04 |
0是标准输出,
1是标准输入. 2是标准错误, 如: cat </etc/passwd 可以查看该文件, 其原理是利用输入重定向, 但其完整写法应该是: cat 0 </etc/passwd,0在这被省略掉了. ls -l>a.txt可以把ls命令保存到一个文件当中, 在这完整写法应该是 ls -l 1>a.txt 当你运行ls -l /errdir 时会有错误提示, 我们可以用标准错误重定向来把错误提示保存到一个文件中或丢弃. ls -l /errdir 2>/tmp/a.txt 把错误保存在/tmp/a.txt文件中. ls -l /errdir 2>/dev/null 把错误提示丢弃,也即不显示. |
mmmmn 回复于:2003-11-20 18:44:38 |
真是开玩笑,文件句柄能是这东西? |
红头发 回复于:2003-11-20 19:18:29 |
谢谢我消化下~~~~ |
guchengman 回复于:2003-11-20 21:48:38 |
[quote:8544bbfcb5="mmmmn"]真是开玩笑,文件句柄能是这东西?[/quote:8544bbfcb5]
其实我也是有疑问, 但是在书上只是写了 1 2 3 之类的东东, 加上前者所说, 我就因此回复, 还请大侠出来分析一下. |
iricyan 回复于:2003-11-20 22:38:59 |
![]() 写错了。 |
laoxia 回复于:2003-11-21 06:40:17 |
[quote:af318e44a5="guchengman"]0是标准输出,
1是标准输入. 2是标准错误, 如: cat </etc/passwd 可以查看该文件, 其原理是利用输入重定向, 但其完整写法应该是: cat 0 </etc/passwd,0在这被省略掉了. ls -l>a.txt可以把..........[/quote:af318e44a5]This is right. file descriptor 0, 1, 2 are not all of the descriptors. but they are the most commonly used ones. |
laoxia 回复于:2003-11-21 06:49:50 |
[b:8ee48ac867]Standard In, Standard Out, and Standard Error[/b:8ee48ac867]
When writing shell scripts, you can control input/output redirection. Input redirection is the ability to force a command to read any necessary input from a file instead of from the keyboard. Output redirection is the ability to send the output from a command into a file or pipe instead of to the screen. Each process created by a shell script begins with three [color=red:8ee48ac867]file descriptors[/color:8ee48ac867] associated with it, as shown in Figure 16-1. These [color=red:8ee48ac867]file descriptors[/color:8ee48ac867]—standard input, standard output, and standard error—determine where input to the process comes from, and where the output and error messages are sent. Standard input (STDIN) is always file descriptor 0. Standard input is the place where the shell looks for its input data. Usually data for standard input comes from the keyboard. You can specify standard input to come from another source using input/output redirection. Standard output (STDOUT) is always [color=red:8ee48ac867]file descriptor[/color:8ee48ac867] 1. Standard output (default) is the place where the results of the execution of the program are sent. Usually, the results of program execution are displayed on the terminal screen. You can redirect standard output to a file, or suppress it completely by redirecting it to /dev/null.Standard error (STDERR) is always [color=red:8ee48ac867]file descriptor [/color:8ee48ac867]2. Standard error is the place where error messages are sent as they are generated during command processing. Usually, error messages are displayed on the terminal screen. You can redirect standard error to a file, or suppress it completely by redirecting it to /dev/null. You can use the [color=red:8ee48ac867]file descriptor [/color:8ee48ac867]numbers 0 (standard input), 1 (standard output), and 2 (standard error) together with the redirection metacharacters to control input and output in the Bourne and Korn shells. Table 16-7 shows the common ways you can redirect file descriptors. [i:8ee48ac867]Table 16-7 Bourne and Korn Shell Redirection [/i:8ee48ac867] -------------------------------------------------------------------------------- Description Command [color=red:8ee48ac867]Take STDIN from file <file, or 0<file Redirect STDOUT to file > file, or 1>file Redirect STDERR to file 2> file Append STDOUT to end of file >> file Redirect STDERR to STDOUT 2>&1 Pipe standard output of cmd1 as standard input to cmd2 cmd1 | cmd2 Use file as both STDIN and STDOUT <> file Close STDIN <&- Close STDOUT >&- Close STDERR 2>&- [/color:8ee48ac867] -------------------------------------------------------------------------------- When redirecting STDIN and STDOUT in the Bourne and Korn shells, you can omit the file descriptors 0 and 1 from the redirection symbols. You must always use the file descriptor 2 with the redirection symbol. The 0 and 1 file descriptors are implied, and not used explicitly for the C shell, as shown in Table 16-8. The C shell representation for standard error (2) is an ampersand (&). STDERR can only be redirected when redirecting STDOUT. [i:8ee48ac867]Table 16-8 C Shell Redirection Metacharacters [/i:8ee48ac867] -------------------------------------------------------------------------------- [color=red:8ee48ac867]Description Command Redirect STDOUT to file > file Take input from file < file Append STDOUT to end of file >> file Redirect STDOUT and STDERR to file >& file Append STDOUT and STDERR to file >>& file [/color:8ee48ac867] |
laoxia 回复于:2003-11-21 07:54:37 |
除了0,1,2之外,你还可以人为的用exec 创建 file descriptor, 主要在写脚本时
使用 |
rainspruce 回复于:2003-11-21 08:52:10 |
佩服 !!!
But how to use exec? documents? |
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/