主机手册近来在看《精通unixshell脚本编程》时,看见exec$OUTFILE,一下看的我就蒙了。网上看了大半天linux 文件描述符,总算搞定linux 文件描述符,记录如下。对于Linux而言,所有对设备和文件的操作都使用文件描述符来进行的。文件描述符是一个非负的整数,它是一个索引值,并指向内核中每位进程打开文件的记录当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当须要读写文件时,也须要把文件描述符作为参数传递给相应的函数。一般,一个进程启动时,就会打开个文件:标准输入、标准输出和标准出错处理。这3个文件分别对应文件描述符为也就是宏替换STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO。查看和设置LINUX文件描述符数ulimitulimit-n1024实例一:通过exec分配文件描述符exec3hello.txt以读写方法绑定到文件描述符"3"echo"helloexec"写入"helloexec",假如之前有内容,这儿将会从文件开头进行覆盖echo"helloworld"写入"helloworld“,新的一行!exec假如是exec3hello.txt将输出重定向到文件hello.txt,自此之后,这个脚本中的输出都将被写入文件hello.txtecho"helloexec"echo"helloworld"实例三:恢复重定向exec100>&1将文件描述符100联接到标准输出因为以后还要输出到终端redhat linux 下载,所以我们不得不使用一个临时的描述符来保存它!exec1>hello.txt将输出重定向到文件hello.txt,自此之后,这个脚本中的输出都将被写入文件hello.txtecho"helloexec"echo"helloworld"exec1>&100100>&-将描述符100关了,一了百了,由于早已还原标准输出了,留着它实在没必要echo"oh,mygod!"从这句开始将显示在终端上实例四:输入重定向exec100$OUTFILE#zerooutfile,相当于清空该文件exec$OUTFILEwhilereadLINEdoecho"$LINE"$INFILEexecfile1echo"end"find和exec妙用(1)在当前目录下(包含子目录)linux认证,查找所有txt文件并找出富含字符串"bin"的行find-name"*.txt"-execgrep"bin"(2)在当前目录下(包含子目录),删掉所有txt文件find-name"*.txt"-execrm