Linux中国
1.73K subscribers
777 photos
6.34K links
Linux 中国官方 Telegram 频道
Download Telegram
一套有用的 Unix 实用程序

还有更多有用的实用程序没有预装在类 Unix 操作系统中,它们汇集起来构成了 moreutilis 这个日益增长的集合。Media

via https://linux.cn/article-9962-1.html
用 Ansible 实现网络自动化

了解 Ansible 的功能,这是一个无代理的、可扩展的配置管理系统。Media

via https://linux.cn/article-9964-1.html
使用 Fstransform 转换文件系统

Fstransform 可以几乎以任意组合将 ext2、ext3、ext4、jfs、reiserfs 或 xfs 分区转换成另一类型。更重要的是,它可以直接执行,而无需格式化或复制数据。Media

via https://linux.cn/article-9966-1.html
为什么我仍然喜欢用 Alpine 在 Linux 终端中发送电子邮件

这个免费的邮件客户端使用直观、易于定制,并且可以在许多操作系统上使用。Media

via https://linux.cn/article-9967-1.html
一个转换花引号的 gawk 脚本

得到我的 awk 秘籍。Media我管理着一个个人网站,用手工编辑网站上的网页。由于网站上的页面并不多,这种方法对我很适合,可以让我对网站代码的细节一清二楚。最近我升级了网站的设计样式,我决定把所有的普通引号都转换成“花引号”,即在打印材料中使用的那种引号:用 “” 来代替 “"。手工修改所有的引号太耗时了,因此我决定将这个转换所有 HTML 文件中引号的过程自动化。不过通过程序或脚本来实现该功能需要费点劲。这个脚本需要知道何时将普通引号转换成花引号,并决定使用哪种引号(LCTT 译注:左引号还是右引号,单引号还是双引号)。有多种方法可以转换引号。Greg Pittman 写过一个 Python 脚本 来修正文本中的花引号。而我自己使用 GNU awk (gawk) 来实现。下载我的 awk 秘籍。免费下载。开始之前,我写了一个简单的 gawk 函数来评估单个字符。若该字符是一个引号,这该函数判断是输出普通引号还是花引号。函数查看前一个字符;若前一个字符是空格,则函数输出左花引号。否则函数输出右花引号。脚本对单引号的处理方式也一样。
function smartquote (char, prevchar) { # print smart quotes depending on the previous character # otherwise just print the character as-is if (prevchar ~ /\s/) { # prev char is a space if (char == "'") { printf("‘"); } else if (char == "\"") { printf("“"); } else { printf("%c", char); } } else { # prev char is not a space if (char == "'") { printf("’"); } else if (char == "\"") { printf("”"); } else { printf("%c", char); } }}
这个 gawk 脚本的主体部分通过该函数处理 HTML 输入文件的一个个字符。该脚本在 HTML 标签内部逐字原样输出所有内容(比如,<html lang="en">)。在 HTML 标签外,脚本使用 smartquote() 函数来输出文本。smartquote() 函数来评估是输出普通引号还是花引号。
function smartquote (char, prevchar) { ...}BEGIN {htmltag = 0}{ # for each line, scan one letter at a time: linelen = length($0); prev = "\n"; for (i = 1; i <= linelen; i++) { char = substr($0, i, 1); if (char == "<") { htmltag = 1; } if (htmltag == 1) { printf("%c", char); } else { smartquote(char, prev); prev = char; } if (char == ">") { htmltag = 0; } } # add trailing newline at end of each line printf ("\n");}
下面是一个例子:
gawk -f quotes.awk test.html > test2.html
其输入为:
<!DOCTYPE html><html lang="en"><head> <title>Test page</title> <link rel="stylesheet" type="text/css" href="/test.css" /> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width" /></head><body> <h1><a href="/"><img src="logo.png" alt="Website logo" /></a></h1> <p>"Hi there!"</p> <p>It's and its.</p></body></html>
其输出为:
<!DOCTYPE html><html lang="en"><head> <title>Test page</title> <link rel="stylesheet" type="text/css" href="/test.css" /> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width" /></head><body> <h1><a href="/"><img src="logo.png" alt="Website logo" /></a></h1> <p>&ldquo;Hi there!&rdquo;</p> <p>It&rsquo;s and its.</p></body></html>
via: https://opensource.com/article/18/8/gawk-script-convert-smart-quotes作者:Jim Hall 选题:lujun9972 译者:lujun9972 校对:wxy本文由 LCTT 原创编译,Linux中国 荣誉推出Media

via https://linux.cn/article-9969-1.html?utm_source=rss&utm_medium=rss
极客漫画:函数式编程的世界

作者巧妙地指出了函数式编程不可变的特点。当你需要改变一个对象的属性的时候……嗯,销毁了再创建一个就是了。Media

via https://linux.cn/article-9970-1.html
极客漫画:函数式编程的世界

Media作者巧妙地指出了函数式编程不可变(immultable)的特点。当你需要改变一个对象的属性的时候……嗯,销毁了再创建一个就是了。这里的老板想来份变量(改变全局变量的值),而所谓副作用(side effect),指的是在这种编程范式下,函数内部与外部互动可能会产生运算以外的其他结果,或导致程序出现不可预料的行为。或许,事件驱动的编程范式会好一点……?via: http://turnoff.us/geek/functional-world/作者:Daniel Stori 译者&点评:ItsLucas 校对&合成 :Bestony本文由 LCTT 原创编译,Linux中国 荣誉推出Media

via https://linux.cn/article-9970-1.html?utm_source=rss&utm_medium=rss
在开源“集市”工作时如何建立一个职业网络

在组织内建立联系遇到问题了吗?你或许是采用了错误的策略。Media

via https://linux.cn/article-9971-1.html
Linux DNS 查询剖析(第三部分)

在第三部分中,我将介绍 NetworkManager 和 dnsmasq,简要说明它们如何影响 DNS 查询。Media

via https://linux.cn/article-9972-1.html
全面教程:在 RxJS 中创建流

有些时候,混用响应式和非响应式代码似乎很有用。然后大家就开始热衷流的创造。不论是在编写异步代码或者是数据处理时,流都是一个不错的方案。Media

via https://linux.cn/article-9973-1.html
理解 Python 的 Dataclasses(一)

如果你正在阅读本文,那么你已经意识到了 Python 3.7 以及它所包含的新特性。就我个人而言,我对 Dataclasses 感到非常兴奋,因为我等了它一段时间了。Media

via https://linux.cn/article-9974-1.html
基于日出和日落时间自动切换到明/暗 Gtk 主题

如果你在寻找一种基于日出和日落时间自动更改 Gtk 主题的简单方法,请尝试一下 AutomaThemely。Media

via https://linux.cn/article-9976-1.html
Go 编译器介绍

cmd/compile 包含构成 Go 编译器主要的包。编译器在逻辑上可以被分为四个阶段,我们将简要介绍这几个阶段以及包含相应代码的包的列表。Media

via https://linux.cn/article-9977-1.html
用 NodeJS 进行 Twitter 情感分析

今天,我会试着让你感受下关于 Twitter 的简单 情感分析,判断这个 Twitter 是正能量、负能量还是中性的。这不会像专业人士所用的那么复杂,但至少,它会让你知道挖掘观念的想法。Media

via https://linux.cn/article-9978-1.html
Python 调试器入门

Python 标准库提供了一个名为 pdb 的调试器。此调试器提供了调试所需的大多数功能,如断点、单行步进、堆栈帧的检查等等。Media

via https://linux.cn/article-9979-1.html
MPV 播放器:Linux 下的极简视频播放器

MPV 是一个开源的,跨平台视频播放器,带有极简的 GUI 界面以及丰富的命令行控制。Media

via https://linux.cn/article-9980-1.html
查看一个归档或压缩文件的内容而无需解压它

得益于 Linux 社区,有很多命令行工具可以来达成上面的目标。Media

via https://linux.cn/article-9982-1.html
FreeDOS 的简单介绍

学习如何穿行于 C:\ 提示符下,就像上世纪 90 年代的 DOS 高手一样。Media

via https://linux.cn/article-9983-1.html
如何在 Linux 中不使用功能键在 TTY 之间切换

当任何一个功能键不起作用时,chvt 命令会很有用。Media

via https://linux.cn/article-9985-1.html
如何在 Ubuntu 系统中添加一个辅助 IP 地址

我们不应在服务器主 IP 地址上托管任何应用程序,这是不可取的。如果要在服务器上托管任何应用程序,我们应该为此添加辅助 IP。Media

via https://linux.cn/article-9986-1.html
API Star:一个 Python 3 的 API 框架

为了在 Python 中快速构建 API,我主要依赖于 Flask。最近我遇到了一个名为 “API Star” 的基于 Python 3 的新 API 框架。Media

via https://linux.cn/article-9987-1.html