Questions tagged «unix-philosophy»

12
延迟将数据写入磁盘的背后原理是什么?
在Linux中,命令的完成执行(例如cp或dd不代表已将数据写入设备)。例如,必须调用sync或调用驱动器上的“安全删除”或“弹出”功能。 这种方法背后的哲学是什么?为什么不立即写入数据?是否存在由于I / O错误而导致写入失败的危险?


2
外行对“一切都是文件”的解释-与Windows有何不同?
我知道“一切都是文件”意味着即使设备在Unix和类似Unix的系统中也具有其文件名和路径,并且这允许在各种资源上使用通用工具,而不论其性质如何。但是我无法与Windows进行对比,Windows是我使用过的唯一其他操作系统。我已经阅读了一些有关此概念的文章,但我认为对于非开发人员而言,有些不容易理解。外行的解释是人们所需要的! 例如,当我要将文件复制到读卡器附带的CF卡时,将使用类似 zcat name_of_file > /dev/sdb 我认为在Windows中,读卡器将作为驱动程序出现,我们会做类似的事情。那么,“一切都是文件”哲学在这里有何不同?

2
为什么排序-o有用?
UNIX哲学说:一件事做好。制作处理文本的程序,因为这是一个通用接口。 该sort命令(至少是GNU排序)可以-o选择输出到文件而不是stdout。例如,为什么sort foobar -o whatever在我可以的时候有用sort foobar > whatever?

1
为什么在非登录外壳上使用登录外壳?
我有一个基本的了解点文件中的* nix系统。但是我仍然对登录外壳程序和非登录外壳程序之间的区别感到困惑吗? 一堆不同的答案(包括重复的答案)已经解决了以下问题: 如何调用一个登录或非登录壳 如何检测一个登录或者非登录壳 什么启动文件将被消耗登录或者非登录壳 man bash有关更多详细信息,请参阅文档(例如) 答案没有说明(还有我仍然感到困惑的地方)是: 什么是用例一的登录或者非登录壳呢?(例如,我只配置zshrc了zsh和这足以让大多数个人开发的要求,我知道这不是这么简单什么vimrc来vim) 在非登录外壳上使用登录的原因是什么(除了使用不同的启动文件和生命周期之外)?

4
Unix Internet套接字文件吗?
我知道“一切都是文件”是Unix的主要概念之一,但是套接字使用内核提供的不同API(例如套接字,sendto,recv等),而不是普通的文件系统接口。 这个“一切都是文件”在这里如何应用?

2
是什么使操作系统“像Unix”?
我经常在许多网站上遇到“类unix”一词。 没有标准;只是它的行为方式。 但是,如果我要从头开始开发内核,那么什么会使它被视为“类unix”呢? 基本上,使诸如Unix之类的编写代码的东西是什么?


2
出现警告或错误时,我应该输出程序名称吗?
如果我正在编写脚本或程序,是否应该将其名称以及警告或错误消息输出到stderr?例如: ./script.sh: Warning! Variable "var" lowered down to 10. 要么: ./prog.py: Error! No such file: "file.cfg". 我了解通常这只是一个口味问题(尤其是您是否自己编写自己的东西),但是我想知道是否有任何常规做法?我相信大多数UNIX / Linux实用程序都会在发生某些情况时写下它们的名称,所以这似乎是一件好事,但是是否有任何准则或不为人知的规则如何做到这一点以及如何做到这一点呢? 例如,不建议将二进制文件安装/usr/bin/在/usr/local/bin/或下。关于输出到stderr是否有类似的规则?我应该在名字后面加上冒号吗?或只是“警告!” 和“错误!” 话?我什么也找不到,但也许有人可以指出我的位置。 这个问题是关于编程实践的,但是我认为在这里比在stackoverflow上更合适,因为它是关于UNIX / Linux的传统,而不是一般的编程。

2
为什么主要管理员UID 501?
我明白*初级管理员用户提供的用户ID 501和随后的用户获得的增量数(502,503,...)。但是为什么501呢?有什么特别之处50x,这种选择的历史/技术原因是什么? *当我对为何外部硬盘驱动器内的所有垃圾文件感到好奇时,我开始研究这个问题.Trashes/501。我的搜索得出的结论501是* nix系统(我在macOS上)中主要管理员的用户ID,但不是为什么。

1
Unix编程到底是什么意思?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Unix&Linux Stack Exchange 的主题。 5年前关闭。 我以为我了解Unix编程一词的含义,但是现在,在内核/ C编程上下文中阅读它之后,我觉得需要澄清该术语的含义。 我不清楚这是否意味着: Shell编程 Unix编程工具, Unix命令行工具的特定编程方式/模式(例如,与“ Unix shell编程”的管道方式一致),或者 其他的东西。

2
Unix哲学是否已被Web应用程序设计所抛弃?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 Unix哲学鼓励使用小型的,可重复使用的通用协作程序,这些程序与进程间通信的形式(例如管道,fifo,套接字)进行协作,而不是共享内存空间和链接。程序MH和uzbl通常作为应用程序的示例给出,这些应用程序在其设计中例证了Unix哲学。 如果是这种情况,那么在网络应用程序设计中完全放弃了Unix哲学是不是真的?现在,几乎所有处理请求的Web应用程序都构建为单个大型的长时间运行的进程,该进程不仅处理一种资源,而且还处理整个域中的所有资源,以处理整个请求/响应周期(除了对外部数据库程序的调用)。 这是否主要是因为通过管道传递给外部程序集合来构造对Web请求的动态响应会产生太多的过程启动时间开销?我想知道如果要使用Ruby或Python脚本会发生这种情况,但是如果您使用可编译的Haskell这样的语言,那么在构建Web应用程序时遵循Unix Philosophy的真正障碍会消失吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.