Sed 命令完全指南
在前面的文章中,我展示了 <a href="https://linuxhandbook.com/sed-command-basics/">Sed 命令的基本用法</a>, Sed 是一个实用的流编辑器。今天,我们准备去了解关于 Sed 更多的知识,深入了解 Sed 的运行模式。这将是你全面了解 Sed 命令的一个机会,深入挖掘它的运行细节和精妙之处。因此,如果你已经做好了准备,那就打开终端吧,<a href="https://gist.github.com/s-leroux/5cb36435bac46c10cfced26e4bf5588c">下载测试文件</a> 然后坐在电脑前:开始我们的探索之旅吧!<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/14/191948l9y6vzqu18yz18v4.jpg">Media</a>关于 Sed 的一点点理论知识首先我们看一下 sed 的运行模式要准确理解 Sed 命令,你必须先了解工具的运行模式。当处理数据时,Sed 从输入源一次读入一行,并将它保存到所谓的模式空间pattern space中。所有 Sed 的变换都发生在模式空间。变换都是由命令行上或外部 Sed 脚本文件提供的单字母命令来描述的。大多数 Sed 命令都可以由一个地址或一个地址范围作为前导来限制它们的作用范围。默认情况下,Sed 在结束每个处理循环后输出模式空间中的内容,也就是说,输出发生在输入的下一个行覆盖模式空间之前。我们可以将这种运行模式总结如下:尝试将下一个行读入到模式空间中如果读取成功:按脚本中的顺序将所有命令应用到与那个地址匹配的当前输入行上如果 sed 没有以静默模式(-n)运行,那么将输出模式空间中的所有内容(可能会是修改过的)&…
在前面的文章中,我展示了 <a href="https://linuxhandbook.com/sed-command-basics/">Sed 命令的基本用法</a>, Sed 是一个实用的流编辑器。今天,我们准备去了解关于 Sed 更多的知识,深入了解 Sed 的运行模式。这将是你全面了解 Sed 命令的一个机会,深入挖掘它的运行细节和精妙之处。因此,如果你已经做好了准备,那就打开终端吧,<a href="https://gist.github.com/s-leroux/5cb36435bac46c10cfced26e4bf5588c">下载测试文件</a> 然后坐在电脑前:开始我们的探索之旅吧!<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/14/191948l9y6vzqu18yz18v4.jpg">Media</a>关于 Sed 的一点点理论知识首先我们看一下 sed 的运行模式要准确理解 Sed 命令,你必须先了解工具的运行模式。当处理数据时,Sed 从输入源一次读入一行,并将它保存到所谓的模式空间pattern space中。所有 Sed 的变换都发生在模式空间。变换都是由命令行上或外部 Sed 脚本文件提供的单字母命令来描述的。大多数 Sed 命令都可以由一个地址或一个地址范围作为前导来限制它们的作用范围。默认情况下,Sed 在结束每个处理循环后输出模式空间中的内容,也就是说,输出发生在输入的下一个行覆盖模式空间之前。我们可以将这种运行模式总结如下:尝试将下一个行读入到模式空间中如果读取成功:按脚本中的顺序将所有命令应用到与那个地址匹配的当前输入行上如果 sed 没有以静默模式(-n)运行,那么将输出模式空间中的所有内容(可能会是修改过的)&…
Caffeinated 6.828:使用的工具
在这个课程中你将使用两套工具:一个是 x86 模拟器 QEMU,它用来运行你的内核;另一个是编译器工具链,包括汇编器、链接器、C 编译器,以及调试器,它们用来编译和测试你的内核。Media
via https://linux.cn/article-10233-1.html
在这个课程中你将使用两套工具:一个是 x86 模拟器 QEMU,它用来运行你的内核;另一个是编译器工具链,包括汇编器、链接器、C 编译器,以及调试器,它们用来编译和测试你的内核。Media
via https://linux.cn/article-10233-1.html
Caffeinated 6.828:使用的工具
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/15/093141rznmgo1nmnszsc1i.jpg">Media</a>在这个课程中你将使用两套工具:一个是 x86 模拟器 QEMU,它用来运行你的内核;另一个是编译器工具链,包括汇编器、链接器、C 编译器,以及调试器,它们用来编译和测试你的内核。本文有你需要去下载和安装你自己的副本相关信息。本课程假定你熟悉所有出现的 Unix 命令的用法。我们强烈推荐你使用一个 Debathena 机器去做你的实验,比如 athena.dialup.mit.edu。如果你使用运行在 Linux 上的 MIT Athena 机器,那么本课程所需要的所有软件工具都在 6.828 的存储中:只需要输入 add -f 6.828 就可以访问它们。如果你不使用 Debathena 机器,我们建议你使用一台 Linux 虚拟机。如果是这样,你可以在你的 Linux 虚拟机上构建和安装工具。我们将在下面介绍如何在 Linux 和 MacOS 计算上来构建和安装工具。在 <a href="http://www.cygwin.com">Cygwin</a> 的帮助下,在 Windows 中运行这个开发环境也是可行的。安装 cygwin,并确保安装了 flex 和 bison 包(它们在开发 header 软件包分类下面)。对于 6.828 中使用的工具中的有用的命令,请参考<a href="labguide.html">实验工具指南</a>。编译器工具链“编译器工具链“ 是一套程序,包括一个 C 编译器、汇编器和链接器,使用它们来将代码转换成可运行的二进制文件。你需要一个能够生成在 32 位 Intel 架构(x86 架构)上运行的 ELF 二进制格式程序的编译器工具链。测试你的编译器工具链现代的 Linux 和 BSD UNIX 发行版…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/15/093141rznmgo1nmnszsc1i.jpg">Media</a>在这个课程中你将使用两套工具:一个是 x86 模拟器 QEMU,它用来运行你的内核;另一个是编译器工具链,包括汇编器、链接器、C 编译器,以及调试器,它们用来编译和测试你的内核。本文有你需要去下载和安装你自己的副本相关信息。本课程假定你熟悉所有出现的 Unix 命令的用法。我们强烈推荐你使用一个 Debathena 机器去做你的实验,比如 athena.dialup.mit.edu。如果你使用运行在 Linux 上的 MIT Athena 机器,那么本课程所需要的所有软件工具都在 6.828 的存储中:只需要输入 add -f 6.828 就可以访问它们。如果你不使用 Debathena 机器,我们建议你使用一台 Linux 虚拟机。如果是这样,你可以在你的 Linux 虚拟机上构建和安装工具。我们将在下面介绍如何在 Linux 和 MacOS 计算上来构建和安装工具。在 <a href="http://www.cygwin.com">Cygwin</a> 的帮助下,在 Windows 中运行这个开发环境也是可行的。安装 cygwin,并确保安装了 flex 和 bison 包(它们在开发 header 软件包分类下面)。对于 6.828 中使用的工具中的有用的命令,请参考<a href="labguide.html">实验工具指南</a>。编译器工具链“编译器工具链“ 是一套程序,包括一个 C 编译器、汇编器和链接器,使用它们来将代码转换成可运行的二进制文件。你需要一个能够生成在 32 位 Intel 架构(x86 架构)上运行的 ELF 二进制格式程序的编译器工具链。测试你的编译器工具链现代的 Linux 和 BSD UNIX 发行版…
使用 Python 的 toolz 库开始函数式编程
toolz 库允许你操作函数,使其更容易理解,更容易测试代码。Media
via https://linux.cn/article-10234-1.html
toolz 库允许你操作函数,使其更容易理解,更容易测试代码。Media
via https://linux.cn/article-10234-1.html
使用 Python 的 toolz 库开始函数式编程
toolz 库允许你操作函数,使其更容易理解,更容易测试代码。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/15/094212wlddczeiledlztjo.png">Media</a>在这个由两部分组成的系列文章的第二部分中,我们将继续探索如何将函数式编程方法中的好想法引入到 Python中,以实现两全其美。在上一篇文章中,我们介绍了<a href="https://linux.cn/article-10222-1.html">不可变数据结构</a>。 这些数据结构使得我们可以编写“纯”函数,或者说是没有副作用的函数,仅仅接受一些参数并返回结果,同时保持良好的性能。在这篇文章中,我们使用 toolz 库来构建。 这个库具有操作此类函数的函数,并且它们在纯函数中表现得特别好。 在函数式编程世界中,它们通常被称为“高阶函数”,因为它们将函数作为参数,将函数作为结果返回。让我们从这里开始:<pre class="prettyprint linenums">def add_one_word(words, word): return words.set(words.get(word, 0) + 1)</pre>这个函数假设它的第一个参数是一个不可变的类似字典的对象,它返回一个新的类似字典的在相关位置递增的对象:这就是一个简单的频率计数器。但是,只有将它应用于单词流并做<em>归纳</em>时才有用。 我们可以使用内置模块 functools 中的归纳器。<pre class="prettyprint linenums">functools.reduce(function, stream, initializer)</pre>我们想要一个函数,应用于流,并且能能返回频率计数。我们首先使用 toolz.curry 函数:<pre class="prettyprint linenums">add_all_words = curry(functools.reduce, add_one_word)</pre>使用此版本,我们需要提供初始化程序。但是,我们不能只将 pyrsistent.m …
toolz 库允许你操作函数,使其更容易理解,更容易测试代码。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/15/094212wlddczeiledlztjo.png">Media</a>在这个由两部分组成的系列文章的第二部分中,我们将继续探索如何将函数式编程方法中的好想法引入到 Python中,以实现两全其美。在上一篇文章中,我们介绍了<a href="https://linux.cn/article-10222-1.html">不可变数据结构</a>。 这些数据结构使得我们可以编写“纯”函数,或者说是没有副作用的函数,仅仅接受一些参数并返回结果,同时保持良好的性能。在这篇文章中,我们使用 toolz 库来构建。 这个库具有操作此类函数的函数,并且它们在纯函数中表现得特别好。 在函数式编程世界中,它们通常被称为“高阶函数”,因为它们将函数作为参数,将函数作为结果返回。让我们从这里开始:<pre class="prettyprint linenums">def add_one_word(words, word): return words.set(words.get(word, 0) + 1)</pre>这个函数假设它的第一个参数是一个不可变的类似字典的对象,它返回一个新的类似字典的在相关位置递增的对象:这就是一个简单的频率计数器。但是,只有将它应用于单词流并做<em>归纳</em>时才有用。 我们可以使用内置模块 functools 中的归纳器。<pre class="prettyprint linenums">functools.reduce(function, stream, initializer)</pre>我们想要一个函数,应用于流,并且能能返回频率计数。我们首先使用 toolz.curry 函数:<pre class="prettyprint linenums">add_all_words = curry(functools.reduce, add_one_word)</pre>使用此版本,我们需要提供初始化程序。但是,我们不能只将 pyrsistent.m …
17 种查看 Linux 物理内存的方法
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/15/190200pf1w100f20a1g2s1.jpg">Media</a>大多数系统管理员在遇到性能问题时会检查 CPU 和内存利用率。Linux 中有许多实用程序可以用于检查物理内存。这些命令有助于我们检查系统中存在的物理内存,还允许用户检查各种方面的内存利用率。我们大多数人只知道很少的命令,在本文中我们试图包含所有可能的命令。你可能会想,为什么我想知道所有这些命令,而不是知道一些特定的和例行的命令呢。不要觉得没用或对此有负面的看法,因为每个人都有不同的需求和看法,所以,对于那些在寻找其它目的的人,这对于他们非常有帮助。什么是 RAM计算机内存是能够临时或永久存储信息的物理设备。RAM 代表随机存取存储器,它是一种易失性存储器,用于存储操作系统,软件和硬件使用的信息。有两种类型的内存可供选择:主存辅助内存主存是计算机的主存储器。CPU 可以直接读取或写入此内存。它固定在电脑的主板上。<strong>RAM</strong>:随机存取存储器是临时存储。关闭计算机后,此信息将消失。<strong>ROM</strong>: 只读存储器是永久存储,即使系统关闭也能保存数据。方法-1:使用 free 命令free 显示系统中空闲和已用的物理内存和交换内存的总量,以及内核使用的缓冲区和缓存。它通过解析 /proc/meminfo 来收集信息。<strong>建议阅读:</strong> <a href="https://www.2daygeek.com/free-command-to-check-memory-usage-statistics…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/15/190200pf1w100f20a1g2s1.jpg">Media</a>大多数系统管理员在遇到性能问题时会检查 CPU 和内存利用率。Linux 中有许多实用程序可以用于检查物理内存。这些命令有助于我们检查系统中存在的物理内存,还允许用户检查各种方面的内存利用率。我们大多数人只知道很少的命令,在本文中我们试图包含所有可能的命令。你可能会想,为什么我想知道所有这些命令,而不是知道一些特定的和例行的命令呢。不要觉得没用或对此有负面的看法,因为每个人都有不同的需求和看法,所以,对于那些在寻找其它目的的人,这对于他们非常有帮助。什么是 RAM计算机内存是能够临时或永久存储信息的物理设备。RAM 代表随机存取存储器,它是一种易失性存储器,用于存储操作系统,软件和硬件使用的信息。有两种类型的内存可供选择:主存辅助内存主存是计算机的主存储器。CPU 可以直接读取或写入此内存。它固定在电脑的主板上。<strong>RAM</strong>:随机存取存储器是临时存储。关闭计算机后,此信息将消失。<strong>ROM</strong>: 只读存储器是永久存储,即使系统关闭也能保存数据。方法-1:使用 free 命令free 显示系统中空闲和已用的物理内存和交换内存的总量,以及内核使用的缓冲区和缓存。它通过解析 /proc/meminfo 来收集信息。<strong>建议阅读:</strong> <a href="https://www.2daygeek.com/free-command-to-check-memory-usage-statistics…
我爱开源的 7 个理由
成为开源社区的一员绝对是一个明智之举,原因有很多。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/15/232200u1kgbq116bizdcdy.png">Media</a>这就是我为什么包括晚上和周末在内花费非常多的时间待在 <a href="https://github.com/ColinEberhardt/">GitHub</a> 上,成为开源社区的一个活跃成员。我参加过各种规模的项目,从个人项目到几个人的协作项目,乃至有数百位贡献者的项目,每一个项目都让我有新的受益。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/15/232202tqfpic1lzhfgq0ri.gif">Media</a>也就是说,这里有七个原因让我为开源做出贡献:<strong>它让我的技能与时俱进。</strong> 在咨询公司的管理职位工作,有时我觉得自己与创建软件的实际过程越来越远。参与开源项目使我可以重新回到我最热爱的编程之中。也使我能够体验新技术,学习新技术和语言,并且使我不被酷酷的孩子们落下。<strong>它教我如何与人打交道。</strong> 与一群素未谋面的人合作开源项目在与人交往方面能够教会你很多。你很快会发现每个人有他们自己的压力,他们自己的义务,以及不同的时间表。学习如何与一群陌生人合作是一种很好的生活技能。<strong>它使我成为一个更好的沟通者。</strong> 开源项目的维护者的时间有限。你很快就知道,要成功地贡献,你必须能够清楚、简明地表达你所做的改变、添加或修复,最重要的是,你为什么要这么做。<strong>它使我成为一个更好的开发者。</strong> 没有什么能…
成为开源社区的一员绝对是一个明智之举,原因有很多。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/15/232200u1kgbq116bizdcdy.png">Media</a>这就是我为什么包括晚上和周末在内花费非常多的时间待在 <a href="https://github.com/ColinEberhardt/">GitHub</a> 上,成为开源社区的一个活跃成员。我参加过各种规模的项目,从个人项目到几个人的协作项目,乃至有数百位贡献者的项目,每一个项目都让我有新的受益。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/15/232202tqfpic1lzhfgq0ri.gif">Media</a>也就是说,这里有七个原因让我为开源做出贡献:<strong>它让我的技能与时俱进。</strong> 在咨询公司的管理职位工作,有时我觉得自己与创建软件的实际过程越来越远。参与开源项目使我可以重新回到我最热爱的编程之中。也使我能够体验新技术,学习新技术和语言,并且使我不被酷酷的孩子们落下。<strong>它教我如何与人打交道。</strong> 与一群素未谋面的人合作开源项目在与人交往方面能够教会你很多。你很快会发现每个人有他们自己的压力,他们自己的义务,以及不同的时间表。学习如何与一群陌生人合作是一种很好的生活技能。<strong>它使我成为一个更好的沟通者。</strong> 开源项目的维护者的时间有限。你很快就知道,要成功地贡献,你必须能够清楚、简明地表达你所做的改变、添加或修复,最重要的是,你为什么要这么做。<strong>它使我成为一个更好的开发者。</strong> 没有什么能…
Terminalizer:一个记录您终端活动并且生成 Gif 图像的工具
这个工具可以帮助我们记录用户的终端活动,以帮助我们从输出的文件中找到有用的信息。Media
via https://linux.cn/article-10237-1.html
这个工具可以帮助我们记录用户的终端活动,以帮助我们从输出的文件中找到有用的信息。Media
via https://linux.cn/article-10237-1.html
Terminalizer:一个记录您终端活动并且生成 Gif 图像的工具
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/15/233937pys5heheqq5ve2h5.jpg">Media</a>今天我们要讨论一个广为人知的主题,我们也围绕这个主题写过许多的文章,因此我不会针对这个如何记录终端会话流程给出太多具体的资料。我们可以使用脚本命令来记录 Linux 的终端会话,这也是大家公认的一种办法。不过今天我们将来介绍一个能起到相同作用的工具 — Terminalizer。这个工具可以帮助我们记录用户的终端活动,以帮助我们从输出的文件中找到有用的信息。什么是 Terminlizer用户可以用 Terminlizer 记录他们的终端活动并且生成一个 Gif 图像。它是一个允许高度定制的 CLI 工具。用户可以在网络播放器、在线播放器上用链接分享他们记录下的文件。<strong>推荐阅读:</strong><a href="https://www.2daygeek.com/script-command-record-save-your-terminal-session-activity-linux/">Script – 一个记录您终端对话的简单工具</a><a href="https://www.2daygeek.com/automatically-record-all-users-terminal-sessions-activity-linux-script-command/">在 Linux 上自动记录/捕捉所有用户的终端对话</a><a href="https://www.2daygeek.com/teleconsole-share-terminal-session-instantly-to-anyone-in-seconds/">Teleconsole – 一个能立即与任何人分享您终端对话的工具</a><a href="https://www.2daygeek.com/tmate-instantly-share-your-terminal-session-to-anyone-in-seconds/">tmate – 立即与任何人分享您的终端对话</a><a href="https://www.2daygeek.com/peek-create-animated-gif-screen-recorder-capture-arch-linux-mint-fedora-ubuntu/">Peek – 在 Linux 里制造一个 Gif 记录器</a><a href="https://www.2daygeek.com/kgif-create-animated-gif-file-active-window-screen-recorder-capture-arch-linux-mint-fedora-ubuntu-debian-opensuse-centos/">Kgif – 一个能生成 Gif 图片,以记录窗口活动的简单 Shell 脚本</a><a href="https://www.2daygeek.com/gifine-create-animated-gif-vedio-recorder-linux-mint-debian-ubuntu/">Gifine – 在 Ubuntu/Debian 里快速制造一个 Gif 视频</a>目前没…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/15/233937pys5heheqq5ve2h5.jpg">Media</a>今天我们要讨论一个广为人知的主题,我们也围绕这个主题写过许多的文章,因此我不会针对这个如何记录终端会话流程给出太多具体的资料。我们可以使用脚本命令来记录 Linux 的终端会话,这也是大家公认的一种办法。不过今天我们将来介绍一个能起到相同作用的工具 — Terminalizer。这个工具可以帮助我们记录用户的终端活动,以帮助我们从输出的文件中找到有用的信息。什么是 Terminlizer用户可以用 Terminlizer 记录他们的终端活动并且生成一个 Gif 图像。它是一个允许高度定制的 CLI 工具。用户可以在网络播放器、在线播放器上用链接分享他们记录下的文件。<strong>推荐阅读:</strong><a href="https://www.2daygeek.com/script-command-record-save-your-terminal-session-activity-linux/">Script – 一个记录您终端对话的简单工具</a><a href="https://www.2daygeek.com/automatically-record-all-users-terminal-sessions-activity-linux-script-command/">在 Linux 上自动记录/捕捉所有用户的终端对话</a><a href="https://www.2daygeek.com/teleconsole-share-terminal-session-instantly-to-anyone-in-seconds/">Teleconsole – 一个能立即与任何人分享您终端对话的工具</a><a href="https://www.2daygeek.com/tmate-instantly-share-your-terminal-session-to-anyone-in-seconds/">tmate – 立即与任何人分享您的终端对话</a><a href="https://www.2daygeek.com/peek-create-animated-gif-screen-recorder-capture-arch-linux-mint-fedora-ubuntu/">Peek – 在 Linux 里制造一个 Gif 记录器</a><a href="https://www.2daygeek.com/kgif-create-animated-gif-file-active-window-screen-recorder-capture-arch-linux-mint-fedora-ubuntu-debian-opensuse-centos/">Kgif – 一个能生成 Gif 图片,以记录窗口活动的简单 Shell 脚本</a><a href="https://www.2daygeek.com/gifine-create-animated-gif-vedio-recorder-linux-mint-debian-ubuntu/">Gifine – 在 Ubuntu/Debian 里快速制造一个 Gif 视频</a>目前没…
使用 Calcurse 在 Linux 命令行中组织任务
使用 Calcurse 了解你的日历和待办事项列表。Media
via https://linux.cn/article-10238-1.html
使用 Calcurse 了解你的日历和待办事项列表。Media
via https://linux.cn/article-10238-1.html
使用 Calcurse 在 Linux 命令行中组织任务
使用 Calcurse 了解你的日历和待办事项列表。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/16/221558u8pfoqt65tf5iolo.jpg">Media</a>你是否需要复杂、功能丰富的图形或 Web 程序才能保持井井有条?我不这么认为。合适的命令行工具可以完成工作并且做得很好。当然,说出命令行这个词可能会让一些 Linux 用户感到害怕。对他们来说,命令行是未知领域。使用 <a href="http://www.calcurse.org/">Calcurse</a> 可以轻松地在命令行中进行组织任务。Calcurse 在基于文本的界面里带来了图形化外观。你可以得到简单、结合易用性的命令行和导航。让我们仔细看看 Calcurse,它是在 BSD 许可证下开源的。获取软件如果你喜欢编译代码(我通常不喜欢),你可以从 <a href="http://www.calcurse.org/">Calcurse 网站</a>获取源码。否则,根据你的 Linux 发行版获取<a href="http://www.calcurse.org/downloads/#packages">二进制安装程序</a>。你甚至可以从 Linux 发行版的软件包管理器中获取 Calcurse。检查一下不会有错的。编译或安装 Calcurse 后(两者都不用太长时间),你就可以开始使用了。使用 Calcurse打开终端并输入 <code>calcurse</code>。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/16/221601lui77meiu769u8um.png">Media</a>Calcurse 的界面由三个面板组成:预约Appointments(屏幕左侧) * 日历Calendar(右上角) * 待办事项清单TODO(右下角)按键盘上的 <code>Tab</code> 键在面板之间移动。要在面板添加新项目,请按下 <code>a</code>。Calcurse 将指导你完成添加项目所需的操作。一个有趣的地方地是预约和日历面板配合工作。你选中日历面Ĉ…
使用 Calcurse 了解你的日历和待办事项列表。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/16/221558u8pfoqt65tf5iolo.jpg">Media</a>你是否需要复杂、功能丰富的图形或 Web 程序才能保持井井有条?我不这么认为。合适的命令行工具可以完成工作并且做得很好。当然,说出命令行这个词可能会让一些 Linux 用户感到害怕。对他们来说,命令行是未知领域。使用 <a href="http://www.calcurse.org/">Calcurse</a> 可以轻松地在命令行中进行组织任务。Calcurse 在基于文本的界面里带来了图形化外观。你可以得到简单、结合易用性的命令行和导航。让我们仔细看看 Calcurse,它是在 BSD 许可证下开源的。获取软件如果你喜欢编译代码(我通常不喜欢),你可以从 <a href="http://www.calcurse.org/">Calcurse 网站</a>获取源码。否则,根据你的 Linux 发行版获取<a href="http://www.calcurse.org/downloads/#packages">二进制安装程序</a>。你甚至可以从 Linux 发行版的软件包管理器中获取 Calcurse。检查一下不会有错的。编译或安装 Calcurse 后(两者都不用太长时间),你就可以开始使用了。使用 Calcurse打开终端并输入 <code>calcurse</code>。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/16/221601lui77meiu769u8um.png">Media</a>Calcurse 的界面由三个面板组成:预约Appointments(屏幕左侧) * 日历Calendar(右上角) * 待办事项清单TODO(右下角)按键盘上的 <code>Tab</code> 键在面板之间移动。要在面板添加新项目,请按下 <code>a</code>。Calcurse 将指导你完成添加项目所需的操作。一个有趣的地方地是预约和日历面板配合工作。你选中日历面Ĉ…
几个用于替代 du 命令的更好选择
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/16/230819b84x77o0i49m1rim.jpg">Media</a>大家对 du 命令应该都不陌生,它可以在类 Unix 系统中对文件和目录的空间使用情况进行计算和汇总。如果你也经常需要使用 du 命令,你会对以下内容感兴趣的。我发现了五个可以替代原有的 du 命令的更好的工具。当然,如果后续有更多更好的选择,我会继续列出来。如果你有其它推荐,也欢迎在评论中留言。ncduncdu 作为普通 du 的替代品,这在 Linux 社区中已经很流行了。ncdu 正是基于开发者们对 du 的性能不满意而被开发出来的。ncdu 是一个使用 C 语言和 ncurses 接口开发的简易快速的磁盘用量分析器,可以用来查看目录或文件在本地或远程系统上占用磁盘空间的情况。如果你有兴趣查看关于 ncdu 的详细介绍,可以浏览《<a href="https://www.ostechnix.com/check-disk-space-usage-linux-using-ncdu/">如何在 Linux 上使用 ncdu 查看磁盘占用量</a>》这一篇文章。tin-summertin-summer 是使用 Rust 语言编写的自由开源工具,它可以用于查找占用磁盘空间的文件,它也是 du 命令的另一个替代品。由于使用了多线程,因此 tin-summer 在计算大目录的大小时会比 du 命令快得多。tin-summer 与 du 命令之间的区别是前者读取文件的大小,而后者则读取磁盘使用情况。tin-summer 的开发者认为它可以替代 du,因为它具有以下优势:在大目录的操作速度上比 du 更快;在显示结果上默认采用易读格式;可以使用正则表达式排除文件û…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/16/230819b84x77o0i49m1rim.jpg">Media</a>大家对 du 命令应该都不陌生,它可以在类 Unix 系统中对文件和目录的空间使用情况进行计算和汇总。如果你也经常需要使用 du 命令,你会对以下内容感兴趣的。我发现了五个可以替代原有的 du 命令的更好的工具。当然,如果后续有更多更好的选择,我会继续列出来。如果你有其它推荐,也欢迎在评论中留言。ncduncdu 作为普通 du 的替代品,这在 Linux 社区中已经很流行了。ncdu 正是基于开发者们对 du 的性能不满意而被开发出来的。ncdu 是一个使用 C 语言和 ncurses 接口开发的简易快速的磁盘用量分析器,可以用来查看目录或文件在本地或远程系统上占用磁盘空间的情况。如果你有兴趣查看关于 ncdu 的详细介绍,可以浏览《<a href="https://www.ostechnix.com/check-disk-space-usage-linux-using-ncdu/">如何在 Linux 上使用 ncdu 查看磁盘占用量</a>》这一篇文章。tin-summertin-summer 是使用 Rust 语言编写的自由开源工具,它可以用于查找占用磁盘空间的文件,它也是 du 命令的另一个替代品。由于使用了多线程,因此 tin-summer 在计算大目录的大小时会比 du 命令快得多。tin-summer 与 du 命令之间的区别是前者读取文件的大小,而后者则读取磁盘使用情况。tin-summer 的开发者认为它可以替代 du,因为它具有以下优势:在大目录的操作速度上比 du 更快;在显示结果上默认采用易读格式;可以使用正则表达式排除文件û…
2018 年 5 款最好的 Linux 游戏
从独立打击到辉煌的 RPG(角色扮演),2018 年已经可以称得上是 Linux 游戏的丰收年,在这里,我们将列出迄今为止最喜欢的五款。Media
via https://linux.cn/article-10240-1.html
从独立打击到辉煌的 RPG(角色扮演),2018 年已经可以称得上是 Linux 游戏的丰收年,在这里,我们将列出迄今为止最喜欢的五款。Media
via https://linux.cn/article-10240-1.html
2018 年 5 款最好的 Linux 游戏
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/100626h2qmsdumimdmumu8.jpg">Media</a>Linux 可能不会很快成为游戏玩家选择的平台 —— Valve Steam Machines 的失败似乎是对这一点的深刻提醒 —— 但这并不意味着该平台没有稳定增长,并且拥有相当多的优秀游戏。从独立打击到辉煌的 RPG(角色扮演),2018 年已经可以称得上是 Linux 游戏的丰收年,在这里,我们将列出迄今为止最喜欢的五款。你是否在寻找优秀的 Linux 游戏却又不想挥霍金钱?来看看我们的最佳 <a href="https://www.maketecheasier.com/open-source-linux-games/">免费 Linux 游戏</a> 名单吧!1、永恒之柱 2:死亡之火Pillars of Eternity II: Deadfire<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/100626lzrxe32prn7h27ne.jpg">best-linux-games-2018-pillars-of-eternity-2-deadfire</a>其中一款最能代表近年来 cRPG 的复兴,它让传统的 Bethesda RPG 看起来更像是轻松的动作冒险游戏。在磅礴的《永恒之柱Pillars of Eternity》系列的最新作品中,当你和船员在充满冒险和危机的岛屿周围航行时,你会发现自己更像是一个海盗。在混合了海战元素的基础上,《死亡之火》延续了前作丰富的游戏剧情和出色的文笔,同时在美丽的画面和手绘背景的基础上更进一步。这是一款毫无疑问的令人印象深刻的硬核 RPG ,可能会让一些人对它产生抵触情绪,不过那些接受它的人会投入几个月的时间沉迷其中。2、杀戮尖塔Slay the Spire<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/100627j6nr8rcc6veveoe5.jpg">best-linux-games-2018-slay-the-spire</a>《杀戮尖塔》仍处于早期阶段,却已经成为年度最佳游戏之一,它是一款采用 deck-building 玩法的…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/100626h2qmsdumimdmumu8.jpg">Media</a>Linux 可能不会很快成为游戏玩家选择的平台 —— Valve Steam Machines 的失败似乎是对这一点的深刻提醒 —— 但这并不意味着该平台没有稳定增长,并且拥有相当多的优秀游戏。从独立打击到辉煌的 RPG(角色扮演),2018 年已经可以称得上是 Linux 游戏的丰收年,在这里,我们将列出迄今为止最喜欢的五款。你是否在寻找优秀的 Linux 游戏却又不想挥霍金钱?来看看我们的最佳 <a href="https://www.maketecheasier.com/open-source-linux-games/">免费 Linux 游戏</a> 名单吧!1、永恒之柱 2:死亡之火Pillars of Eternity II: Deadfire<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/100626lzrxe32prn7h27ne.jpg">best-linux-games-2018-pillars-of-eternity-2-deadfire</a>其中一款最能代表近年来 cRPG 的复兴,它让传统的 Bethesda RPG 看起来更像是轻松的动作冒险游戏。在磅礴的《永恒之柱Pillars of Eternity》系列的最新作品中,当你和船员在充满冒险和危机的岛屿周围航行时,你会发现自己更像是一个海盗。在混合了海战元素的基础上,《死亡之火》延续了前作丰富的游戏剧情和出色的文笔,同时在美丽的画面和手绘背景的基础上更进一步。这是一款毫无疑问的令人印象深刻的硬核 RPG ,可能会让一些人对它产生抵触情绪,不过那些接受它的人会投入几个月的时间沉迷其中。2、杀戮尖塔Slay the Spire<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/100627j6nr8rcc6veveoe5.jpg">best-linux-games-2018-slay-the-spire</a>《杀戮尖塔》仍处于早期阶段,却已经成为年度最佳游戏之一,它是一款采用 deck-building 玩法的…
关于安全,开发人员需要知道的
开发人员不需要成为安全专家, 但他们确实需要摆脱将安全视为一些不幸障碍的心态。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/110005jlpaaqr3obzerfpr.jpg">Media</a>DevOps 并不意味着每个人都需要成为开发和运维方面的专家。尤其在大型组织中,其中角色往往更加专业化。相反,DevOps 思想在某种程度上更多地是关注问题的分离。在某种程度上,运维团队可以为开发人员(无论是在本地云还是在公共云中)部署平台,并且不受影响,这对两个团队来说都是好消息。开发人员可以获得高效的开发环境和自助服务,运维人员可以专注于保持基础管道运行和维护平台。这是一种约定。开发者期望从运维人员那里得到一个稳定和实用的平台,运维人员希望开发者能够自己处理与开发应用相关的大部分任务。也就是说,DevOps 还涉及更好的沟通、合作和透明度。如果它不仅仅是一种介于开发和运维之间的新型壁垒,它的效果会更好。运维人员需要对开发者想要和需要的工具类型以及他们通过监视和日志记录来编写更好应用程序所需的可见性保持敏感。另一方面,开发人员需要了解如何才能更有效地使用底层基础设施,以及什么能够使运维在夜间(字面上)保持运行。同样的原则也适用于更广泛的 DevSecOps,这个术语明确地提醒我们,安全需要嵌入到整个 DevOps 管道中,…
开发人员不需要成为安全专家, 但他们确实需要摆脱将安全视为一些不幸障碍的心态。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/110005jlpaaqr3obzerfpr.jpg">Media</a>DevOps 并不意味着每个人都需要成为开发和运维方面的专家。尤其在大型组织中,其中角色往往更加专业化。相反,DevOps 思想在某种程度上更多地是关注问题的分离。在某种程度上,运维团队可以为开发人员(无论是在本地云还是在公共云中)部署平台,并且不受影响,这对两个团队来说都是好消息。开发人员可以获得高效的开发环境和自助服务,运维人员可以专注于保持基础管道运行和维护平台。这是一种约定。开发者期望从运维人员那里得到一个稳定和实用的平台,运维人员希望开发者能够自己处理与开发应用相关的大部分任务。也就是说,DevOps 还涉及更好的沟通、合作和透明度。如果它不仅仅是一种介于开发和运维之间的新型壁垒,它的效果会更好。运维人员需要对开发者想要和需要的工具类型以及他们通过监视和日志记录来编写更好应用程序所需的可见性保持敏感。另一方面,开发人员需要了解如何才能更有效地使用底层基础设施,以及什么能够使运维在夜间(字面上)保持运行。同样的原则也适用于更广泛的 DevSecOps,这个术语明确地提醒我们,安全需要嵌入到整个 DevOps 管道中,…
60 行 Python 代码爬取知乎神回复
简单的两个步骤就能实现,第一步爬取知乎回答,第二部筛选回答。是不是很 easy?Media
via https://linux.cn/article-10242-1.html
简单的两个步骤就能实现,第一步爬取知乎回答,第二部筛选回答。是不是很 easy?Media
via https://linux.cn/article-10242-1.html
60 行 Python 代码爬取知乎神回复
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/172129aygzd2272iyg2o72.jpg">Media</a>其实爬取知乎神回复很简单,这篇文章我们就来揭晓一下背后的原理。知乎神回复都有些什么特点呢?我们先来观察一下:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/165942qldld0010tgnqdzn.jpg">Media</a><a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/165950lfo5ggdkacjj3k51.jpg">Media</a>大家看出什么规律了么?短小精辟有没有?赞同很多有没有?所以爬取知乎神回复我们只要爬取那些赞同多又字数少的回答就可以。简单的两个步骤就能实现,第一步爬取知乎回答,第二部筛选回答。是不是很 easy?<strong>爬取知乎回答</strong>第一步我们爬取知乎上的回答。知乎上的回答太多了,一下子爬取所有的回答会很费时,我们可以选定几个话题,爬取这几个话题里的内容。下面的函数用于爬取某一个指定话题的内容<pre class="prettyprint linenums">def get_answers_by_page(topic_id, page_no): offset = page_no * 10 url = <topic_url> # topic_url是这个话题对应的url headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36", } r = requests.get(url, verify=False, headers=headers) content = r.content.decode("utf-8") data = json.loads(content) is_end = data["paging"]["is_end"] items = data["data"] client = pymongo.MongoClient() db = client["zhihu"] if len(items) > 0: db.answers.insert_many(items) db.saved_topics.insert({"topic_id": topic_id, "page_no": page_no}) return is_end</pre>get_answers_by_page 函数有两个参数,第一个参数是话题的 id,第二个参数表示爬的是第几页的内容。
爬下来的内容当中有几个需要注意的字段,下图中用黄框高亮出来了:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/170120yp4psi649ylp9s99.jpg">Media</a>
这几个字段的含义如下:question.title - 问题的标题content - 回答的内容voteup_count - 赞同的数量这些字段在下一步筛选&#…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/172129aygzd2272iyg2o72.jpg">Media</a>其实爬取知乎神回复很简单,这篇文章我们就来揭晓一下背后的原理。知乎神回复都有些什么特点呢?我们先来观察一下:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/165942qldld0010tgnqdzn.jpg">Media</a><a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/165950lfo5ggdkacjj3k51.jpg">Media</a>大家看出什么规律了么?短小精辟有没有?赞同很多有没有?所以爬取知乎神回复我们只要爬取那些赞同多又字数少的回答就可以。简单的两个步骤就能实现,第一步爬取知乎回答,第二部筛选回答。是不是很 easy?<strong>爬取知乎回答</strong>第一步我们爬取知乎上的回答。知乎上的回答太多了,一下子爬取所有的回答会很费时,我们可以选定几个话题,爬取这几个话题里的内容。下面的函数用于爬取某一个指定话题的内容<pre class="prettyprint linenums">def get_answers_by_page(topic_id, page_no): offset = page_no * 10 url = <topic_url> # topic_url是这个话题对应的url headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36", } r = requests.get(url, verify=False, headers=headers) content = r.content.decode("utf-8") data = json.loads(content) is_end = data["paging"]["is_end"] items = data["data"] client = pymongo.MongoClient() db = client["zhihu"] if len(items) > 0: db.answers.insert_many(items) db.saved_topics.insert({"topic_id": topic_id, "page_no": page_no}) return is_end</pre>get_answers_by_page 函数有两个参数,第一个参数是话题的 id,第二个参数表示爬的是第几页的内容。
爬下来的内容当中有几个需要注意的字段,下图中用黄框高亮出来了:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/17/170120yp4psi649ylp9s99.jpg">Media</a>
这几个字段的含义如下:question.title - 问题的标题content - 回答的内容voteup_count - 赞同的数量这些字段在下一步筛选&#…