小编com*_*ium的帖子

Linus 在他的自传中谈到的“页面到磁盘”功能本质上是我们今天使用的交换概念吗?

在他的自传Just for Fun 中,Linus 提到了“页面到磁盘”功能,该功能对于使 Linux 成为当时 Minix 和其他 UNIX 克隆的有价值的竞争对手至关重要:

我记得,在 12 月,德国有一个人只有 2 兆字节的 RAM,他试图编译内核,但无法运行 GCC,因为当时 GCC 需要超过 1 兆字节的内存。他问我是否可以使用不需要那么多内存的较小编译器来编译 Linux。所以我决定即使我不需要特定的功能,我也会为他实现。它被称为页到磁盘,这意味着即使某人只有 2 毫克 RAM,他也可以使它看起来更多地使用磁盘作为内存。那是 1991 年圣诞节前后。

页面到磁盘是一件相当大的事情,因为这是 Minix 从未做过的事情。它包含在 0.12 版本中,该版本于 1992 年 1 月的第一周发布。立即,人们开始将 Linux 不仅与 Minix 进行比较,而且与 Coherent 进行比较,后者是由 Mark Williams 公司开发的小型 Unix 克隆。从一开始,添加页面到磁盘的行为就使 Linux 在竞争中脱颖而出。
那是Linux起飞的时候。突然间有人从 Minix 切换到 Linux。

他基本上是在谈论swapping这里吗?对 Linux 有一些历史观点的人可能会知道。

linux swap minix

28
推荐指数
3
解决办法
4380
查看次数

bash:如何一步使用多个字符串操作(参数扩展)?

我的string=substr1-substr2-substr3.substr4子字符串长度可变。substr3我想从中提取string并正在考虑使用${string##pattern}${string%pattern}字符串操作扩展来完成它。使用这种方法,很明显我需要在生成的扩展上运行${string##*-}并运行${string%.*},反之亦然。我的问题是:

  1. 这是最好的选择吗?
  2. 如果是,我如何一步运行两者?当我尝试做类似${string##*-${string%.*}}or 的事情时${string%.*${string##*-}},我只是取回完整的字符串。我意识到我总是可以通过将中间变量分配给第一步的结果来分两步进行提取,然后对其进行操作;但我想一步到位。我该怎么办?

蒂亚!

bash

9
推荐指数
1
解决办法
3688
查看次数

“sed -e”和用分号分隔多个命令之间的区别

我可能是在这里挑毛病,但是让这个一直困扰我的问题一劳永逸地回答真是太好了......

reprex 的文本文件:

Line one.
Line two.

Line three.
Line four.
Run Code Online (Sandbox Code Playgroud)

要始终向该文本文件添加额外的空行sed,每行需要两个命令。这可以通过以下任何一种语法来实现:

  1. sed -e '/^$/d' -e '$!G' <file>...但不是(sed -e '/^$/d' '$!G' <file>sed '/^$/d' '$!G' <file>
  2. sed -e '/^$/d; $!G' <file> 或者 sed -e '/^$/d ; $!G' <file>
  3. sed '/^$/d; $!G' <file> 或者 sed '/^$/d ; $!G' <file>

我的问题是:

  1. 上面列出的五种工作语法中的任何一种之间是否有任何真正的区别(通用性?,合规性?...)?
  2. 理查德·布鲁姆 (Richard Blum) 的最新命令行和 Shell 脚本圣经sed -e 's/brown/red/; s/dog/cat/' data1.txt在提出以下建议之前要使用类似的东西......

命令必须用分号 (;) 分隔,并且第一个命令的末尾和分号之间不应有任何空格。

...然后继续完全忽略他自己的建议,根本不使用该-e选项,还在命令末尾和分号之间添加空格(如上面#3 的第二个变体所示)。所以,分号周围的间距有什么真正的区别吗?

  1. 尽管我在联机帮助页或文档中找不到关于此的信息,但我的预感是该 …

sed options posix

4
推荐指数
2
解决办法
295
查看次数

在 for 循环之前临时更改 IFS

我知道SHELL允许在命令之前立即进行变量赋值,这样IFS=":" read a b c d <<< "$here_string"有效......

我想知道的是,当使用诸如循环之类的复合语句完成时,这样的赋值是否不起作用?我尝试了类似的方法,IFS=":" for i in $PATH; do echo $i; done但导致语法错误。我总是可以做类似的事情oldIFS="$IFS"; IFS=":"; for....; IFS="$oldIFS",但我想知道是否有任何方法可以使此类内联赋值适用于for循环等复合语句?

bash for assignment

2
推荐指数
1
解决办法
256
查看次数

标签 统计

bash ×2

assignment ×1

for ×1

linux ×1

minix ×1

options ×1

posix ×1

sed ×1

swap ×1