UNIX哲学及其实现

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)管道触发两个子进程执行"|"两边的程序,而重定向是在一个进程内执行

本文分享自微信公众号 - 性能与架构(yogoup)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-02-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏A周立SpringCloud

Docker系列教程14-Docker数据持久化

容器中数据持久化主要有两种方式: 数据卷(Data Volumes) 数据卷容器(Data Volumes Dontainers) 数据卷 数据卷是一个可供一个...

44860
来自专栏智能计算时代

Envoy架构概览(3):服务发现

服务发现 在配置中定义上游群集时,Envoy需要知道如何解析群集的成员。这被称为服务发现。 支持的服务发现类型 静态的 静态是最简单的服务发现类型。配置明确指定...

56150
来自专栏程序人生

浅谈unix之美

昨天写作写得膀子疼,看来花费同样的时间,写作比写代码累多了。今天是个伟大的节日,祝老婆,妈妈及家人节日快乐!祝所有女性读者节日快乐! 今天早上收获一封意外的惊喜...

36090
来自专栏Python爬虫与算法进阶

学习Git(二)基本操作

Git 基础操作 1. 创建版本库 什么是版本库呢?版本库又名仓库,英文名 repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被 G...

375120
来自专栏农夫安全

Nfs不安全的配置漏洞

0x00 前言 NFS 代表网络文件系统,是一种可以在 Unix 系统中找到的协议,允许网络上的用户以类似于本地存储的方式访问共享文件夹。现代 NFS 实现包...

59850
来自专栏逢魔安全实验室

渗透基础-SSH后门分析总结

? ? 对于UNIX系统来说,ssh服务端作为最广泛应用的远程管理服务并且有一定对外开放的必然性,必然引起黑客关注,所以ssh类的后门也是uni...

89240
来自专栏EAWorld

独家系列:让我们遇见未来——为何在云平台中使用REST作为架构设计风格

? 在我们设计新一代企业云平台的时候,需要集成大量的、依赖不同开源项目的、来自不同业务领域、不同开发团队、甚至外部合作伙伴的服务,那么如何对这些服务做统一抽象...

36250
来自专栏林欣哲

区块链开发之Go语言—文件系统

处理的文件名 path库 filepath库 查看文件的元信息 os.Stat os.Lstat 操作临时文件区域 os.TempDir os — 平台无关的操...

41680
来自专栏闵开慧

Hadoop FS Shell命令大全

    调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式。 所有的的FS shell命令使用URI路径作为参数。URI格...

39390

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励