前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UNIX哲学及其实现

UNIX哲学及其实现

作者头像
dys
发布2018-04-03 15:32:07
7100
发布2018-04-03 15:32:07
举报
文章被收录于专栏:性能与架构

KEEP IT SIMPLE , STUPID ! "保持简单和笨拙" -- 尽量用简单的方法解决问题,是Unix哲学的根本原则 这种哲学信奉的是:

工具应该只做一件事,并且把它做好 从UNIX系统中的命令就可以看到这个思想:每个命令只负责把自己的功能做好,不涉及其他 UNIX早就有了现在很流行的概念 -- 连接 当需要完成复杂需求时,可以把多个命令连接起来,实现强大的功能 单个命令是“”,连接机制是“线” 通过线,把点串联起来,使得UNIX既保证了简单,又变得极为强大 这个连接机制就是:数据流重定向和管道 其中涉及到3个概念

1

数据流 例如执行命令 $ ls 会看到文件列表信息,这些信息就是 ls 命令产生的数据流,显示到了屏幕上,屏幕是一个标准输出的显示设备 系统中共有3个标准输入输出 $ ls -la /dev/std* /dev/stderr -> /proc/self/fd/2 /dev/stdin -> /proc/self/fd/0 /dev/stdout -> /proc/self/fd/1 stderr 代表标准错误输出

代码为2,默认设备是屏幕 stdin 代表标准输入

代码为0,默认设备是键盘 stdout 代表标准输出

代码为1,默认设备是屏幕

2

重定向

例如使用find查找一个不存在的文件 $ find a 屏幕会显示错误信息 find: 'a': No such file or directory 如果想把错误信息的数据流不显示到屏幕,而是输出到某个文件中,这个操作就是‘重定向’ $ find a 2> err.txt 这个命令就把错误信息写入‘err.txt’文件中 其中 2 代表stderr,> 代表重定向,意思就是把标准错误数据流重定向到后面指定的文件中 >覆盖后面文件中的内容 >> 是向后面文件中追加内容

3

管道 例如一个常用的命令:查看某进程的信息 # ps -aux | grep httpd 这就是管道的用法,形式如下

command1正确输出,作为command2的输入,comand2的输出作为comand3的输入,comand3输出直接显示在屏幕 常用的管道命令如: more, grep, sort, awk, sed 等

重定向和管道的区别

(1)管道是对应命令的,而重定向是对应文件 (2)管道触发两个子进程执行"|"两边的程序,而重定向是在一个进程内执行

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-02-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档