更新时间:2019年07月29日 15时50分53秒 来源:黑马程序员论坛
每个打开的文件都会被分配一个文件描述符.stdin(键盘),stdout(屏幕), 和stderr(错误消息输出到屏幕上)的文件描述符分别是0, 1, 和 2. 对于正在打开的额外文件, 保留了描述符3到9. 文件描述符是文件系统为了跟踪这个打开的文件而分配给它的一个数字。 下面以实例说明 1,>的用法 [zhangy@localhost ~]$ echo "11111" > 1.txt [zhangy@localhost ~]$ cat 1.txt 11111 [zhangy@localhost ~]$ echo "11111" 1> 1.txt //这个用法和上面的用法是一样 [zhangy@localhost ~]$ cat 1.txt 11111 [zhangy@localhost ~]$ echo "22222" >1.txt [zhangy@localhost ~]$ cat 1.txt 22222 这种用法我想大家都非常的熟悉,因为这是我经常会用到的。echo "11111" > 1.txt 时,>前面是有一个1的,是默认的。>重定向到文件时,会将文件清空,在写入。 上面的这个例子,可以把1.txt文件中的内容清空,其实也很好理解,清空后,不输入内容当然为空了。 2,>>的用法 [zhangy@localhost ~]$ echo "2222" >> 2.txt [zhangy@localhost ~]$ cat 2.txt 2222 [zhangy@localhost ~]$ echo "2222" >> 2.txt [zhangy@localhost ~]$ cat 2.txt 2222 2222 从上面的这个例子我们可以看出,>>重定向到文件时,会将输出写到文件的结尾。这一点和>完全不同的。 3,0,1,2 到9,以及& [zhangy@localhost ~]$ cat 1.txt 333 111 222 444 [zhangy@localhost ~]$ grep "22" 0< 1.txt //把1.txt中的内容读取出来 222 [zhangy@localhost ~]$ ls tank 2>> 1.txt //将错误信息放到文件的结尾 [zhangy@localhost ~]$ cat 1.txt 333 111 222 444 ls: tank: 没有那个文件或目录 //这个就是 2>> 1.txt产生的内容 [zhangy@localhost ~]$ (ls tank ;pwd) &>1.txt //将错误信息,以及输出内容放到1.txt文件中,&(stderr,stdout) [zhangy@localhost ~]$ cat 1.txt ls: tank: 没有那个文件或目录 /home/zhangy i>&j重定向文件描述符i 到 j.指向i文件的所有输出都发送到j中去. i和j呢是0-9这间的数字 [zhangy@localhost ~]$ ls tank 2>&1|egrep \* 1> 2.txt //在这里我把错误信息重定向到了1,在这里1就会输出错误,根赋值差不多 [zhangy@localhost ~]$ cat 2.txt ls: tank: 没有那个文件或目录 4,<>的用法 <这个符号是读取,>这个符号是输出,放在一起就打开并且读取 [zhangy@localhost ~]$ echo 123546 > 2.txt [zhangy@localhost ~]$ exec 4<> 2.txt //打开2.txt并将内容读取到&4中 [zhangy@localhost ~]$ read -n 4 <&4 //从&4中读取4个字符 [zhangy@localhost ~]$ echo -n . >&4 //在向&4写入一个点 [zhangy@localhost ~]$ exec 4>&- //关闭输出文件描述符4 [zhangy@localhost ~]$ cat 2.txt 1235.6 能过上面的这个例子,就可以很清楚了解<>他的作用 5,n<&-关闭输入文件描述符n n>&关闭输出文件描述符n [zhangy@localhost ~]$ ls tank //会提示错误 ls: tank: 没有那个文件或目录 [zhangy@localhost ~]$ ls tank 2>&- //我把错误关闭后,什么也不输出了 6,|管理命令 这个命令也是我们常用的,是典型的,把一个命令的输出,当作另一个命令的输入 [zhangy@localhost ~]$ echo tank | wc -w 1 表示tank是一个输出,但它又是wc的输入,不然就不会有统计出现了。 |
推荐了解热门学科
java培训 | Python人工智能 | Web前端培训 | PHP培训 |
区块链培训 | 影视制作培训 | C++培训 | 产品经理培训 |
UI设计培训 | 新媒体培训 | 软件测试培训 | Linux运维 |
大数据培训 | 智能机器人软件开发 |
传智播客是一家致力于培养高素质软件开发人才的科技公司,“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。
传智播客从未停止思考
传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”
中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。
何为中高级程序员课程?
传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展。“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。
黑马程序员热门视频教程
Python入门教程完整版(懂中文就能学会) | 零起点打开Java世界的大门 |
C++| 匠心之作 从0到1入门学编程 | PHP|零基础入门开发者编程核心技术 |
Web前端入门教程_Web前端html+css+JavaScript | 软件测试入门到精通 |