用 PGP 保护代码完整性(四):将主密钥移到离线存储中
如果开发者的 PGP 密钥被偷了,危害非常大。了解一下如何更安全。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/01/003541ehzdol364f315cf5.jpg">Media</a>在本系列教程中,我们为使用 PGP 提供了一个实用指南。你可以从下面的链接中查看前面的文章:<a href="https://linux.cn/article-9524-1.html">第一部分:基本概念和工具</a><a href="https://linux.cn/article-9529-1.html">第二部分:生成你的主密钥</a><a href="https://linux.cn/article-9607-1.html">第三部分:生成 PGP 子密钥</a>这是本系列教程的第四部分,我们继续本教程,我们将谈一谈如何及为什么要将主密钥从你的家目录移到离线存储中。现在开始我们的教程。清单准备一个加密的可移除的存储(必要)备份你的 GnuPG 目录(必要)从你的家目录中删除主密钥(推荐)从你的家目录中删除吊销证书(推荐)考虑事项为什么要从你的家目录中删除你的主 [C] 密钥 ?这样做的主要原因是防止你的主密钥失窃或意外泄露。对于心怀不轨的人来说,私钥对他们具有很大的诱惑力 —— 我们知道有几个恶意软件成功地实现了扫描用户的家目录并将发现的私钥内容上传。对于开发者来说,私钥失窃是非常危险的事情 —— 在自由软件的世界中,这无疑是身份证明失窃。从你的家目录中删除私钥将帮你防范这类事件的发生。备份你的 GnuPG 目录<strong>!!!绝对不要跳过这一步!!!</strong>备份你的 PGP 密钥将让你在需要的时候很容易地恢…
如果开发者的 PGP 密钥被偷了,危害非常大。了解一下如何更安全。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/01/003541ehzdol364f315cf5.jpg">Media</a>在本系列教程中,我们为使用 PGP 提供了一个实用指南。你可以从下面的链接中查看前面的文章:<a href="https://linux.cn/article-9524-1.html">第一部分:基本概念和工具</a><a href="https://linux.cn/article-9529-1.html">第二部分:生成你的主密钥</a><a href="https://linux.cn/article-9607-1.html">第三部分:生成 PGP 子密钥</a>这是本系列教程的第四部分,我们继续本教程,我们将谈一谈如何及为什么要将主密钥从你的家目录移到离线存储中。现在开始我们的教程。清单准备一个加密的可移除的存储(必要)备份你的 GnuPG 目录(必要)从你的家目录中删除主密钥(推荐)从你的家目录中删除吊销证书(推荐)考虑事项为什么要从你的家目录中删除你的主 [C] 密钥 ?这样做的主要原因是防止你的主密钥失窃或意外泄露。对于心怀不轨的人来说,私钥对他们具有很大的诱惑力 —— 我们知道有几个恶意软件成功地实现了扫描用户的家目录并将发现的私钥内容上传。对于开发者来说,私钥失窃是非常危险的事情 —— 在自由软件的世界中,这无疑是身份证明失窃。从你的家目录中删除私钥将帮你防范这类事件的发生。备份你的 GnuPG 目录<strong>!!!绝对不要跳过这一步!!!</strong>备份你的 PGP 密钥将让你在需要的时候很容易地恢…
极客漫画:呃,70 后
70 后的老程序员已经对层出不穷的编程语言感到了厌烦,虽然这已经距离上一个编程语言出现已经十年了。Media
via https://linux.cn/article-10403-1.html
70 后的老程序员已经对层出不穷的编程语言感到了厌烦,虽然这已经距离上一个编程语言出现已经十年了。Media
via https://linux.cn/article-10403-1.html
极客漫画:呃,70 后
Media70 后的老程序员已经对层出不穷的编程语言感到了厌烦,虽然这已经距离上一个编程语言出现已经十年了。虽然老程序员依旧很潮——扎着马尾,穿着花裤子——但是不能掩饰其秃顶和肥胖的腰身。IT 行业,是一个日新月异的行业,老程序员们如何跟上时代呢?十年,快吗?via: http://turnoff.us/geek/oh-the-70s/作者:Daniel Stori 译者 & 校对:wxy 校对 & 合成:wxy本文由 LCTT 原创编译,Linux中国 荣誉推出Media
via https://linux.cn/article-10403-1.html?utm_source=rss&utm_medium=rss
Media70 后的老程序员已经对层出不穷的编程语言感到了厌烦,虽然这已经距离上一个编程语言出现已经十年了。虽然老程序员依旧很潮——扎着马尾,穿着花裤子——但是不能掩饰其秃顶和肥胖的腰身。IT 行业,是一个日新月异的行业,老程序员们如何跟上时代呢?十年,快吗?via: http://turnoff.us/geek/oh-the-70s/作者:Daniel Stori 译者 & 校对:wxy 校对 & 合成:wxy本文由 LCTT 原创编译,Linux中国 荣誉推出Media
via https://linux.cn/article-10403-1.html?utm_source=rss&utm_medium=rss
一个 HTTP/2 的故事
我花了大约 25 个小时来完成。坐下来穿上舒适的拖鞋,听听这个 HTTP/2 的故事!Media
via https://linux.cn/article-10404-1.html
我花了大约 25 个小时来完成。坐下来穿上舒适的拖鞋,听听这个 HTTP/2 的故事!Media
via https://linux.cn/article-10404-1.html
一个 HTTP/2 的故事
大约一个月前,有人在我所在的 IRC 频道中提到了 <a href="https://en.wikipedia.org/wiki/HTTP/2">HTTP/2</a>。由于某种原因,我从未听说过它,而且新协议的一些功能(比如无需打开多个 TCP 连接就能复用请求)似乎很酷。说实话,我刚刚重写了管理我们备份程序的 Puppet 代码,启用 HTTP/2 似乎是一种转向另一个大型项目之前有效的拖延方式。这有多难?结果我花了大约 25 个小时来完成。坐下来穿上舒适的拖鞋,听听这个 HTTP/2 的故事!<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/01/170158dnzuuw8ids3dw8sb.jpg">Media</a>被诅咒的 HTTP/1.1当我第一次看到如何在 Apache 上启用 HTTP/2 时,这似乎是一项非常简单的任务。文档提到加载 http2 模块并通过如下配置文件确保新协议优先:<pre class="prettyprint linenums">Protocols h2 h2c http/1.1H2Push onH2PushPriority * afterH2PushPriority text/css beforeH2PushPriority image/jpeg after 32H2PushPriority image/png after 32H2PushPriority application/javascript interleaved</pre>这当然很容易。即使 Apache 中的所有内容都已正确设置,网站仍然使用的是 HTTP/1.1。不过,显然我做得没错,因为我的网站现在发送了一个新的 HTTP 头:Upgrade: h2, h2c。在浪费了大量时间调试 TLS 密钥(HTTP/2 <a href="https://http2.github.io/http2-spec/#TLSUsage">与 TLS 1.1 不兼容</a>)之后,我终于发现问题是没有使用正确的 Apache 多进程处理模块。事实证明,在使用 mpm_prefork(默认 MPM)时,Apache 不会使用 HTTP/2,因为 mod_http2 不支持它。尽管 Apache 还有两个其他的 MPM,但只有 mpm_prefork 支持 mod_php。突然之间,添加对 HTTP/2 的支持意味着我们将要把所有的 PHP 网站切换到 PHP-FPM。掉进兔子洞在很长一段时间里,一位好友一İ…
大约一个月前,有人在我所在的 IRC 频道中提到了 <a href="https://en.wikipedia.org/wiki/HTTP/2">HTTP/2</a>。由于某种原因,我从未听说过它,而且新协议的一些功能(比如无需打开多个 TCP 连接就能复用请求)似乎很酷。说实话,我刚刚重写了管理我们备份程序的 Puppet 代码,启用 HTTP/2 似乎是一种转向另一个大型项目之前有效的拖延方式。这有多难?结果我花了大约 25 个小时来完成。坐下来穿上舒适的拖鞋,听听这个 HTTP/2 的故事!<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/01/170158dnzuuw8ids3dw8sb.jpg">Media</a>被诅咒的 HTTP/1.1当我第一次看到如何在 Apache 上启用 HTTP/2 时,这似乎是一项非常简单的任务。文档提到加载 http2 模块并通过如下配置文件确保新协议优先:<pre class="prettyprint linenums">Protocols h2 h2c http/1.1H2Push onH2PushPriority * afterH2PushPriority text/css beforeH2PushPriority image/jpeg after 32H2PushPriority image/png after 32H2PushPriority application/javascript interleaved</pre>这当然很容易。即使 Apache 中的所有内容都已正确设置,网站仍然使用的是 HTTP/1.1。不过,显然我做得没错,因为我的网站现在发送了一个新的 HTTP 头:Upgrade: h2, h2c。在浪费了大量时间调试 TLS 密钥(HTTP/2 <a href="https://http2.github.io/http2-spec/#TLSUsage">与 TLS 1.1 不兼容</a>)之后,我终于发现问题是没有使用正确的 Apache 多进程处理模块。事实证明,在使用 mpm_prefork(默认 MPM)时,Apache 不会使用 HTTP/2,因为 mod_http2 不支持它。尽管 Apache 还有两个其他的 MPM,但只有 mpm_prefork 支持 mod_php。突然之间,添加对 HTTP/2 的支持意味着我们将要把所有的 PHP 网站切换到 PHP-FPM。掉进兔子洞在很长一段时间里,一位好友一İ…
如何构建一台网络引导服务器(三)
我们将向你展示如何设置一个更复杂的 iPXE 配置。它将允许终端用户以更容易的方式去选择引导哪个操作系统。它也可以配置为让系统管理员从一台中央服务器来统一管理引导菜单。Media
via https://linux.cn/article-10405-1.html
我们将向你展示如何设置一个更复杂的 iPXE 配置。它将允许终端用户以更容易的方式去选择引导哪个操作系统。它也可以配置为让系统管理员从一台中央服务器来统一管理引导菜单。Media
via https://linux.cn/article-10405-1.html
如何构建一台网络引导服务器(三)
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/01/172110uwb7tt3x0gapas33.jpg">Media</a>在 <a href="https://linux.cn/article-10379-1.html">如何构建一台网络引导服务器(一)</a> 中,我们提供了一个极简的 <a href="https://ipxe.org/">iPXE</a> 引导脚本来引导你的网络引导镜像。许多用户除了使用网络引导镜像外,可能在机器本地也有一个操作系统。但是使用常见的工作站的 BIOS 去切换引导加载器是很笨拙的。在本系列文件的第三部分,我们将向你展示如何设置一个更复杂的 iPXE 配置。它将允许终端用户以更容易的方式去选择引导哪个操作系统。它也可以配置为让系统管理员从一台中央服务器来统一管理引导菜单。一个交互式 iPXE 引导菜单下面这些命令重定义了网络引导镜像的 boot.cfg 来作为一个交互式的 iPXE 引导菜单,并使用了一个 5 秒倒计时的定时器:<pre class="prettyprint linenums">$ MY_FVER=29$ MY_KRNL=$(ls -c /fc$MY_FVER/lib/modules | head -n 1)$ MY_DNS1=192.0.2.91$ MY_DNS2=192.0.2.92$ MY_NAME=server-01.example.edu$ MY_EMAN=$(echo $MY_NAME | tr '.' "\n" | tac | tr "\n" '.' | cut -b -${#MY_NAME})$ MY_ADDR=$(host -t A $MY_NAME | awk '{print $4}')$ cat << END > $HOME/esp/linux/boot.cfg#!ipxeset timeout 5000:menumenu iPXE Boot Menuitem --key 1 lcl 1. Microsoft Windows 10item --key 2 f$MY_FVER 2. RedHat Fedora $MY_FVERchoose --timeout \${timeout} --default lcl selected || goto shellset timeout 0goto \${selected}:failedecho boot failed, dropping to shell...goto shell:shellecho type 'exit' to get the back to the menuset timeout 0shellgoto menu:lclexit:f$MY_FVERkernel --name kernel.efi \${prefix}/vmlinuz-$MY_KRNL initrd=initrd.img ro ip=dhcp rd.peerdns=0 nameserver=$MY_DNS1 nameserver=$MY_DNS2 root=/dev/disk/by-path/ip-$MY_ADDR:3260-iscsi-iqn.$MY_EMAN:fc$MY_FVER-lun-1 netroot=iscsiMediaMY_ADDR::::iqn.$MY_EMAN:fc$MY_FVER console=tty0 console=ttyS0,115200n8 audit=0 selinux=0 quietinitrd --name initrd.img \${prefix}/initramfs-$MY_KRNL.imgboot || goto failedEND</pre>上述菜单有五个节:menu 定义了显示在屏幕上的实际菜单内容。failed 提示用户发生了错误,并将用户带到 shell 以错误错误。shell 提供了交互式命令提示符。你可以&…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/01/172110uwb7tt3x0gapas33.jpg">Media</a>在 <a href="https://linux.cn/article-10379-1.html">如何构建一台网络引导服务器(一)</a> 中,我们提供了一个极简的 <a href="https://ipxe.org/">iPXE</a> 引导脚本来引导你的网络引导镜像。许多用户除了使用网络引导镜像外,可能在机器本地也有一个操作系统。但是使用常见的工作站的 BIOS 去切换引导加载器是很笨拙的。在本系列文件的第三部分,我们将向你展示如何设置一个更复杂的 iPXE 配置。它将允许终端用户以更容易的方式去选择引导哪个操作系统。它也可以配置为让系统管理员从一台中央服务器来统一管理引导菜单。一个交互式 iPXE 引导菜单下面这些命令重定义了网络引导镜像的 boot.cfg 来作为一个交互式的 iPXE 引导菜单,并使用了一个 5 秒倒计时的定时器:<pre class="prettyprint linenums">$ MY_FVER=29$ MY_KRNL=$(ls -c /fc$MY_FVER/lib/modules | head -n 1)$ MY_DNS1=192.0.2.91$ MY_DNS2=192.0.2.92$ MY_NAME=server-01.example.edu$ MY_EMAN=$(echo $MY_NAME | tr '.' "\n" | tac | tr "\n" '.' | cut -b -${#MY_NAME})$ MY_ADDR=$(host -t A $MY_NAME | awk '{print $4}')$ cat << END > $HOME/esp/linux/boot.cfg#!ipxeset timeout 5000:menumenu iPXE Boot Menuitem --key 1 lcl 1. Microsoft Windows 10item --key 2 f$MY_FVER 2. RedHat Fedora $MY_FVERchoose --timeout \${timeout} --default lcl selected || goto shellset timeout 0goto \${selected}:failedecho boot failed, dropping to shell...goto shell:shellecho type 'exit' to get the back to the menuset timeout 0shellgoto menu:lclexit:f$MY_FVERkernel --name kernel.efi \${prefix}/vmlinuz-$MY_KRNL initrd=initrd.img ro ip=dhcp rd.peerdns=0 nameserver=$MY_DNS1 nameserver=$MY_DNS2 root=/dev/disk/by-path/ip-$MY_ADDR:3260-iscsi-iqn.$MY_EMAN:fc$MY_FVER-lun-1 netroot=iscsiMediaMY_ADDR::::iqn.$MY_EMAN:fc$MY_FVER console=tty0 console=ttyS0,115200n8 audit=0 selinux=0 quietinitrd --name initrd.img \${prefix}/initramfs-$MY_KRNL.imgboot || goto failedEND</pre>上述菜单有五个节:menu 定义了显示在屏幕上的实际菜单内容。failed 提示用户发生了错误,并将用户带到 shell 以错误错误。shell 提供了交互式命令提示符。你可以&…
初级:如何在终端及图形界面中更新 Ubuntu
这篇教程将向你展示如何更新服务器版本或者桌面版本的 Ubuntu。它还解释了更新和升级之间的区别以及你应该了解的有关于 Ubuntu Linux 中的更新的一些其他内容。Media
via https://linux.cn/article-10406-1.html
这篇教程将向你展示如何更新服务器版本或者桌面版本的 Ubuntu。它还解释了更新和升级之间的区别以及你应该了解的有关于 Ubuntu Linux 中的更新的一些其他内容。Media
via https://linux.cn/article-10406-1.html
初级:如何在终端及图形界面中更新 Ubuntu
这篇教程将向你展示如何更新服务器版本或者桌面版本的 Ubuntu。它还解释了更新和升级之间的区别以及你应该了解的有关于 Ubuntu Linux 中的更新的一些其他内容。如果你是一个新手并已经体验 Ubuntu 数天或几周,你可能想知道如何更新你的 <a href="https://www.ubuntu.com/">Ubuntu</a> 系统以获取安全补丁,错误修复和应用升级。更新 Ubuntu 非常简单。我并不是瞎说。它简单得只要运行两个命令。让我来告诉你这两个命令的更多细节。请注意,本教程适用于 Ubuntu 18.04、16.04 或任何其他版本。命令行方式也适用于基于 Ubuntu 的发行版如 Linux Mint、Linux Lite、elementary OS 等。通过命令行更新 Ubuntu<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/01/212906rhz7lwatjcha74a4.png">如何更新 Ubuntu</a>在桌面上,打开终端。你可以在菜单里找到它或者使用 Ctrl+Alt+T <a href="https://itsfoss.com/ubuntu-shortcuts/">快捷键</a>。如果你是登录到一台 <a href="https://www.ubuntu.com/download/server">Ubuntu 服务器</a>,那你已经在访问一个终端了。在终端里,你只需要使用以下命令:<pre class="prettyprint linenums">sudo apt update && sudo apt upgrade -y</pre>它将询问你密码,而你可以使用你的账号密码。输入时,你将不会看到任何内容在屏幕上,所以请继续输入你的密码并按回车键。现在,我来解释下上面的命令。事实上,这不是一条命令。它由两条命令组成。符号 && 是合并两条命令的一个方法,第二条命令仅在前一条命令执行成功时执行。当命令 apt upgrade 要求你在安装更新前确认时,末…
这篇教程将向你展示如何更新服务器版本或者桌面版本的 Ubuntu。它还解释了更新和升级之间的区别以及你应该了解的有关于 Ubuntu Linux 中的更新的一些其他内容。如果你是一个新手并已经体验 Ubuntu 数天或几周,你可能想知道如何更新你的 <a href="https://www.ubuntu.com/">Ubuntu</a> 系统以获取安全补丁,错误修复和应用升级。更新 Ubuntu 非常简单。我并不是瞎说。它简单得只要运行两个命令。让我来告诉你这两个命令的更多细节。请注意,本教程适用于 Ubuntu 18.04、16.04 或任何其他版本。命令行方式也适用于基于 Ubuntu 的发行版如 Linux Mint、Linux Lite、elementary OS 等。通过命令行更新 Ubuntu<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/01/212906rhz7lwatjcha74a4.png">如何更新 Ubuntu</a>在桌面上,打开终端。你可以在菜单里找到它或者使用 Ctrl+Alt+T <a href="https://itsfoss.com/ubuntu-shortcuts/">快捷键</a>。如果你是登录到一台 <a href="https://www.ubuntu.com/download/server">Ubuntu 服务器</a>,那你已经在访问一个终端了。在终端里,你只需要使用以下命令:<pre class="prettyprint linenums">sudo apt update && sudo apt upgrade -y</pre>它将询问你密码,而你可以使用你的账号密码。输入时,你将不会看到任何内容在屏幕上,所以请继续输入你的密码并按回车键。现在,我来解释下上面的命令。事实上,这不是一条命令。它由两条命令组成。符号 && 是合并两条命令的一个方法,第二条命令仅在前一条命令执行成功时执行。当命令 apt upgrade 要求你在安装更新前确认时,末…
Linux 下最棒的 11 个图片查看器
如果不是因为系统自带的图片查看器没有你想要的功能,或者你想要更棒的体验,你大概不会想切换到其它图片查看器吧。Media
via https://linux.cn/article-10407-1.html
如果不是因为系统自带的图片查看器没有你想要的功能,或者你想要更棒的体验,你大概不会想切换到其它图片查看器吧。Media
via https://linux.cn/article-10407-1.html
Linux 下最棒的 11 个图片查看器
如果不是因为系统自带的图片查看器没有你想要的功能,或者你想要更棒的体验,你大概不会想切换到其它图片查看器吧。不过,如果你喜欢折腾,你可能就会想用不同的图片查看器了吧。我猜最终你会被新图片查看器的全新用户体验或特色功能所吸引的。在本篇文章中,无论是简单的还是复杂的、无论是为 Ubuntu 准备的还是其它 Linux 发行版准备的,我们都有提到。Linux 下最棒的图片查看器<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/02/140524oz705o0cqm57mg3l.png">Ubuntu 或其它 Linux 发行版适用的最棒的图片查看器</a><strong>注意:</strong> 在准备安装一个图片查看器时,请前往您系统中预先安装的软件商店中查找。如果您没有任何软件商店或无法在软件商店中找到它,请手动执行我们给出的命令。1. Nomacs<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/02/140526g0d66h9zqop5pdmo.jpg">Nomacs 图片查看器</a><strong>它有什么特点?</strong>轻快内建图像调整工具(可以调整色彩和大小)拍摄位置信息元数据调节器局域网同步全屏模式Nomacs 是一款自由软件。虽然没有什么出众的功能,但是它的兼容性还不错,可以支持许多常见格式。它的界面超级简单,但是提供了简单的图片编辑功能(可以调整色彩、亮度、大小和裁剪)。除此之外,它还支持全屏模式、直方图,以及可以切换显示元数据、编辑历史等信息的许多面板。<strong>我该如何安装它?</strong>简单起见ᦁ…
如果不是因为系统自带的图片查看器没有你想要的功能,或者你想要更棒的体验,你大概不会想切换到其它图片查看器吧。不过,如果你喜欢折腾,你可能就会想用不同的图片查看器了吧。我猜最终你会被新图片查看器的全新用户体验或特色功能所吸引的。在本篇文章中,无论是简单的还是复杂的、无论是为 Ubuntu 准备的还是其它 Linux 发行版准备的,我们都有提到。Linux 下最棒的图片查看器<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/02/140524oz705o0cqm57mg3l.png">Ubuntu 或其它 Linux 发行版适用的最棒的图片查看器</a><strong>注意:</strong> 在准备安装一个图片查看器时,请前往您系统中预先安装的软件商店中查找。如果您没有任何软件商店或无法在软件商店中找到它,请手动执行我们给出的命令。1. Nomacs<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/02/140526g0d66h9zqop5pdmo.jpg">Nomacs 图片查看器</a><strong>它有什么特点?</strong>轻快内建图像调整工具(可以调整色彩和大小)拍摄位置信息元数据调节器局域网同步全屏模式Nomacs 是一款自由软件。虽然没有什么出众的功能,但是它的兼容性还不错,可以支持许多常见格式。它的界面超级简单,但是提供了简单的图片编辑功能(可以调整色彩、亮度、大小和裁剪)。除此之外,它还支持全屏模式、直方图,以及可以切换显示元数据、编辑历史等信息的许多面板。<strong>我该如何安装它?</strong>简单起见ᦁ…
使用 Node.js 构建交互式命令行工具
使用 Node.js 构建一个根据询问创建文件的命令行工具。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/02/232550x51um1yim1msd19m.jpg">Media</a>当用于构建命令行界面(CLI)时,Node.js 十分有用。在这篇文章中,我将会教你如何使用 <a href="https://nodejs.org/en/">Node.js</a> 来构建一个问一些问题并基于回答创建一个文件的命令行工具。开始首先,创建一个新的 <a href="https://www.npmjs.com/">npm</a> 包(NPM 是 JavaScript 包管理器)。<pre class="prettyprint linenums">mkdir my-scriptcd my-scriptnpm init</pre>NPM 将会问一些问题。随后,我们需要安装一些包。<pre class="prettyprint linenums">npm install --save chalk figlet inquirer shelljs</pre>这是我们需要的包:Chalk:正确设定终端的字符样式Figlet:使用普通字符制作大字母的程序(LCTT 译注:使用标准字符,拼凑出图片)Inquirer:通用交互式命令行用户界面的集合ShellJS:Node.js 版本的可移植 Unix Shell 命令行工具创建一个 index.js 文件现在我们要使用下述内容创建一个 index.js 文件。<pre class="prettyprint linenums">#!/usr/bin/env nodeconst inquirer = require("inquirer");const chalk = require("chalk");const figlet = require("figlet");const shell = require("shelljs");</pre>规划命令行工具在我们写命令行工具所需的任何代码之前,做计划总是很棒的。这个命令行工具只做一件事:<strong>创建一个文件</strong>。它将会问两个问题:文件名是什么以及文件后缀名是什么?然后创建文件,并展示一个包含了所创建文件路径的成功信息。<pre class="prettyprint linenums">// index.jsconst run = async () => { // show script introduction // ask questions // create the file // show success message};run();</pre>第一个函数只是该脚本的介绍。让我们使用 chalk 和 figlet 来把它完成。<pre class="prettyprint linenums">const init = () => { console.log( chalk.green( figlet.textSync("Node JS CLI"…
使用 Node.js 构建一个根据询问创建文件的命令行工具。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/02/232550x51um1yim1msd19m.jpg">Media</a>当用于构建命令行界面(CLI)时,Node.js 十分有用。在这篇文章中,我将会教你如何使用 <a href="https://nodejs.org/en/">Node.js</a> 来构建一个问一些问题并基于回答创建一个文件的命令行工具。开始首先,创建一个新的 <a href="https://www.npmjs.com/">npm</a> 包(NPM 是 JavaScript 包管理器)。<pre class="prettyprint linenums">mkdir my-scriptcd my-scriptnpm init</pre>NPM 将会问一些问题。随后,我们需要安装一些包。<pre class="prettyprint linenums">npm install --save chalk figlet inquirer shelljs</pre>这是我们需要的包:Chalk:正确设定终端的字符样式Figlet:使用普通字符制作大字母的程序(LCTT 译注:使用标准字符,拼凑出图片)Inquirer:通用交互式命令行用户界面的集合ShellJS:Node.js 版本的可移植 Unix Shell 命令行工具创建一个 index.js 文件现在我们要使用下述内容创建一个 index.js 文件。<pre class="prettyprint linenums">#!/usr/bin/env nodeconst inquirer = require("inquirer");const chalk = require("chalk");const figlet = require("figlet");const shell = require("shelljs");</pre>规划命令行工具在我们写命令行工具所需的任何代码之前,做计划总是很棒的。这个命令行工具只做一件事:<strong>创建一个文件</strong>。它将会问两个问题:文件名是什么以及文件后缀名是什么?然后创建文件,并展示一个包含了所创建文件路径的成功信息。<pre class="prettyprint linenums">// index.jsconst run = async () => { // show script introduction // ask questions // create the file // show success message};run();</pre>第一个函数只是该脚本的介绍。让我们使用 chalk 和 figlet 来把它完成。<pre class="prettyprint linenums">const init = () => { console.log( chalk.green( figlet.textSync("Node JS CLI"…
如何在 Ubuntu 18.04 中启动到救援模式或紧急模式
在救援模式下,将挂载所有本地文件系统,仅启动一些重要服务。与救援模式相比,在紧急模式中不启动任何东西。Media
via https://linux.cn/article-10409-1.html
在救援模式下,将挂载所有本地文件系统,仅启动一些重要服务。与救援模式相比,在紧急模式中不启动任何东西。Media
via https://linux.cn/article-10409-1.html
如何在 Ubuntu 18.04 中启动到救援模式或紧急模式
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/02/233456h882cm5rw28ynwrm.png">Media</a>正如你可能已经知道的那样,<strong>运行级别</strong> 在许多最近的 Linux 发行版(如 RHEL 7 和 Ubuntu 16.04 LTS)中被 <strong>systemd 的目标</strong> 替换。有关它们的更多详细信息,请参阅<a href="https://www.ostechnix.com/check-runlevel-linux/">这个指南</a>。在这个简短的教程中,我们将看到如何启动<strong>救援模式</strong>以及<strong>紧急模式</strong>。本指南在 Ubuntu 18.04 LTS 中进行了测试,但是下面给出的步骤适用于大多数使用 systemd 作为默认服务管理器的 Linux 发行版。在进一步讨论之前,让我澄清什么是救援模式和紧急模式以及这两种模式的目的是什么。什么是救援模式?<strong>救援模式</strong>相当于使用 <strong>SysV</strong> 作为默认的服务管理器的 Linux 发行版中的 <strong>单用户模式</strong>。在救援模式下,将挂载所有本地文件系统,仅启动一些重要服务。但是,不会启动正常服务(例如网络服务)。救援模式在系统无法正常启动的情况下很有用。此外,我们可以在救援模式下执行一些重要的救援操作,例如<a href="https://www.ostechnix.com/how-to-reset-or-recover-root-user-password-in-linux/">重置 root 密码</a>。什么是紧急模式?与救援模式相比,在<strong>紧急模式</strong>中不启动任何东西。没有服务启动、没有挂载点、没有建立套接字,什么也没有。你所拥有的只是一个<strong>原始的 shell</strong>。紧急模式适用于调试目的。在 Ubuntu 18.04 LTS 中进入救援模式启动你的 Ubuntu 系统。出现 Grub 菜单时,$…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/02/233456h882cm5rw28ynwrm.png">Media</a>正如你可能已经知道的那样,<strong>运行级别</strong> 在许多最近的 Linux 发行版(如 RHEL 7 和 Ubuntu 16.04 LTS)中被 <strong>systemd 的目标</strong> 替换。有关它们的更多详细信息,请参阅<a href="https://www.ostechnix.com/check-runlevel-linux/">这个指南</a>。在这个简短的教程中,我们将看到如何启动<strong>救援模式</strong>以及<strong>紧急模式</strong>。本指南在 Ubuntu 18.04 LTS 中进行了测试,但是下面给出的步骤适用于大多数使用 systemd 作为默认服务管理器的 Linux 发行版。在进一步讨论之前,让我澄清什么是救援模式和紧急模式以及这两种模式的目的是什么。什么是救援模式?<strong>救援模式</strong>相当于使用 <strong>SysV</strong> 作为默认的服务管理器的 Linux 发行版中的 <strong>单用户模式</strong>。在救援模式下,将挂载所有本地文件系统,仅启动一些重要服务。但是,不会启动正常服务(例如网络服务)。救援模式在系统无法正常启动的情况下很有用。此外,我们可以在救援模式下执行一些重要的救援操作,例如<a href="https://www.ostechnix.com/how-to-reset-or-recover-root-user-password-in-linux/">重置 root 密码</a>。什么是紧急模式?与救援模式相比,在<strong>紧急模式</strong>中不启动任何东西。没有服务启动、没有挂载点、没有建立套接字,什么也没有。你所拥有的只是一个<strong>原始的 shell</strong>。紧急模式适用于调试目的。在 Ubuntu 18.04 LTS 中进入救援模式启动你的 Ubuntu 系统。出现 Grub 菜单时,$…
dbxfs:在 Linux 中本地挂载 Dropbox 文件夹
虽然在 Linux 中很容易安装 Dropbox 客户端,但这种方法与官方方法略有不同。它是一个命令行 dropbox 客户端,且无需磁盘空间即可访问。Media
via https://linux.cn/article-10410-1.html
虽然在 Linux 中很容易安装 Dropbox 客户端,但这种方法与官方方法略有不同。它是一个命令行 dropbox 客户端,且无需磁盘空间即可访问。Media
via https://linux.cn/article-10410-1.html
dbxfs:在 Linux 中本地挂载 Dropbox 文件夹
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/03/134500k83d0xphlm3pxd52.png">Media</a>不久前,我们总结了所有 <a href="https://www.ostechnix.com/how-to-mount-google-drive-locally-as-virtual-file-system-in-linux/">在本地挂载 Google Drive</a> 作为虚拟文件系统,并从 Linux 系统访问存储在 Google Drive 中的文件的方法。今天,我们将学习使用 dbxfs 将 Dropbox 文件夹挂载到本地文件系统中。dbxfs 用于在类 Unix 操作系统中本地挂载 Dropbox 文件夹作为虚拟文件系统。虽然在 Linux 中很容易<a href="https://www.ostechnix.com/install-dropbox-in-ubuntu-18-04-lts-desktop/">安装 Dropbox 客户端</a>,但这种方法与官方方法略有不同。它是一个命令行 dropbox 客户端,且无需磁盘空间即可访问。dbxfs 是自由开源的,并且是用 Python 3.5+ 编写的。安装 dbxfsdbxfs 官方支持 Linux 和 Mac OS。但是,它应该适用于任何提供 <strong>FUSE 兼容库</strong>或能够挂载 SMB 共享的 POSIX 系统。由于它是用 Python 3.5 编写的,因此可以使用 pip3 包管理器进行安装。如果尚未安装 pip,请参阅以下指南。<a href="https://www.ostechnix.com/manage-python-packages-using-pip/">如何使用 pip 管理 Python 包</a>并且也要安装 FUSE 库。在基于 Debian 的系统上,运行以下命令以安装 FUSE:<pre class="prettyprint linenums">$ sudo apt install libfuse2</pre>在 Fedora 上:<pre class="prettyprint linenums">$ sudo dnf install fuse</pre>安装完所有必需的依赖项后,运行以下命令以安装 dbxfs:<pre class="prettyprint linenums">$ pip3 install dbxfs</pre>在本地挂载 Dropbox 文件夹创建一个挂载点以将 Dropbox 文件夹挂载到本地文件系统中。<pre class="prettyprint linenums">$ mkdir ~/mydropbox</pre>然后,使用 dbxfs 在本地挂载 dropbox 文件夹,如下所示:<pre class="prettyprint linenums">$ dbxfs ~/mydropbox</pre>你将被要求生成一个访问令牌:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/03/134501xh7z43dcfnalflc3.png">Me…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/03/134500k83d0xphlm3pxd52.png">Media</a>不久前,我们总结了所有 <a href="https://www.ostechnix.com/how-to-mount-google-drive-locally-as-virtual-file-system-in-linux/">在本地挂载 Google Drive</a> 作为虚拟文件系统,并从 Linux 系统访问存储在 Google Drive 中的文件的方法。今天,我们将学习使用 dbxfs 将 Dropbox 文件夹挂载到本地文件系统中。dbxfs 用于在类 Unix 操作系统中本地挂载 Dropbox 文件夹作为虚拟文件系统。虽然在 Linux 中很容易<a href="https://www.ostechnix.com/install-dropbox-in-ubuntu-18-04-lts-desktop/">安装 Dropbox 客户端</a>,但这种方法与官方方法略有不同。它是一个命令行 dropbox 客户端,且无需磁盘空间即可访问。dbxfs 是自由开源的,并且是用 Python 3.5+ 编写的。安装 dbxfsdbxfs 官方支持 Linux 和 Mac OS。但是,它应该适用于任何提供 <strong>FUSE 兼容库</strong>或能够挂载 SMB 共享的 POSIX 系统。由于它是用 Python 3.5 编写的,因此可以使用 pip3 包管理器进行安装。如果尚未安装 pip,请参阅以下指南。<a href="https://www.ostechnix.com/manage-python-packages-using-pip/">如何使用 pip 管理 Python 包</a>并且也要安装 FUSE 库。在基于 Debian 的系统上,运行以下命令以安装 FUSE:<pre class="prettyprint linenums">$ sudo apt install libfuse2</pre>在 Fedora 上:<pre class="prettyprint linenums">$ sudo dnf install fuse</pre>安装完所有必需的依赖项后,运行以下命令以安装 dbxfs:<pre class="prettyprint linenums">$ pip3 install dbxfs</pre>在本地挂载 Dropbox 文件夹创建一个挂载点以将 Dropbox 文件夹挂载到本地文件系统中。<pre class="prettyprint linenums">$ mkdir ~/mydropbox</pre>然后,使用 dbxfs 在本地挂载 dropbox 文件夹,如下所示:<pre class="prettyprint linenums">$ dbxfs ~/mydropbox</pre>你将被要求生成一个访问令牌:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/03/134501xh7z43dcfnalflc3.png">Me…
下载 Linux 游戏的最佳网站
新接触 Linux 游戏并想知道从哪里来 下载 Linux 游戏?我们列出了最好的资源,在这里你既能 下载免费的 Linux 游戏 ,也能购买优质的 Linux 游戏。Media
via https://linux.cn/article-10411-1.html
新接触 Linux 游戏并想知道从哪里来 下载 Linux 游戏?我们列出了最好的资源,在这里你既能 下载免费的 Linux 游戏 ,也能购买优质的 Linux 游戏。Media
via https://linux.cn/article-10411-1.html
下载 Linux 游戏的最佳网站
新接触 Linux 游戏并想知道从哪里来 下载 Linux 游戏?我们列出了最好的资源,在这里你既能 下载免费的 Linux 游戏 ,也能购买优质的 Linux 游戏。Linux 和游戏?从前,很难想象这两者走到一起。然而随着时间流逝,很多事情都在变化。到如今,有成千上万在 Linux 上可以玩的游戏,而大公司和独立开发者们正在开发更多的游戏。<a href="https://linux.cn/article-7316-1.html">在 Linux 上玩游戏</a> 现在已经是现实。今天我们将去看看,你在哪里可以找到 Linux 平台游戏、搜索到你喜欢的游戏。在哪里来下载 Linux 游戏?<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/03/143700nn81vt4nnvt4tx8v.jpg">下载 Linux 游戏的网站</a>首先,看看你的 Linux 发行版的软件中心(如果有的话)。在这里你也能找到大量的游戏。但是,这不意味着你应该将自己的视野局限于软件中心上。让我们来为你列出一些可以下载 Linux 游戏网站。1. Steam如果你是老练的玩家,你应该听过 Steam。如果你还不知道的话,没错,Steam 在 Linux 上也是可用的。Steam 推荐运行在 Ubuntu 上,但是它也能运行在其它主要的发行版上。如果你真的对 Steam 很狂热,这里甚至还有一个玩 Steam 游戏的专用操作系统:<a href="http://store.steampowered.com/steamos/">SteamOS</a>。我们在上一年 <a href="https://itsfoss.com/linux-gaming-distributions/">最佳的 Linux 游戏发行版</a> 文章中提及了它。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/03/143701wzqqs5hets8nqv4i.jpg">Steam 商店</a>Steam 有最大的 Linux 游戏商店。当写这篇文章的时候,在 Linux 平台上,确切地说有 3487 款游戏…
新接触 Linux 游戏并想知道从哪里来 下载 Linux 游戏?我们列出了最好的资源,在这里你既能 下载免费的 Linux 游戏 ,也能购买优质的 Linux 游戏。Linux 和游戏?从前,很难想象这两者走到一起。然而随着时间流逝,很多事情都在变化。到如今,有成千上万在 Linux 上可以玩的游戏,而大公司和独立开发者们正在开发更多的游戏。<a href="https://linux.cn/article-7316-1.html">在 Linux 上玩游戏</a> 现在已经是现实。今天我们将去看看,你在哪里可以找到 Linux 平台游戏、搜索到你喜欢的游戏。在哪里来下载 Linux 游戏?<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/03/143700nn81vt4nnvt4tx8v.jpg">下载 Linux 游戏的网站</a>首先,看看你的 Linux 发行版的软件中心(如果有的话)。在这里你也能找到大量的游戏。但是,这不意味着你应该将自己的视野局限于软件中心上。让我们来为你列出一些可以下载 Linux 游戏网站。1. Steam如果你是老练的玩家,你应该听过 Steam。如果你还不知道的话,没错,Steam 在 Linux 上也是可用的。Steam 推荐运行在 Ubuntu 上,但是它也能运行在其它主要的发行版上。如果你真的对 Steam 很狂热,这里甚至还有一个玩 Steam 游戏的专用操作系统:<a href="http://store.steampowered.com/steamos/">SteamOS</a>。我们在上一年 <a href="https://itsfoss.com/linux-gaming-distributions/">最佳的 Linux 游戏发行版</a> 文章中提及了它。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/03/143701wzqqs5hets8nqv4i.jpg">Steam 商店</a>Steam 有最大的 Linux 游戏商店。当写这篇文章的时候,在 Linux 平台上,确切地说有 3487 款游戏…
在 Linux 终端上观看 YouTube 视频
视频只能在 GUI 下看么?再想想。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/04/094842dm9jhmg99meolcqm.png">Media</a>我们即将结束为期 24 天的 Linux 命令行玩具日历。希望你一直在看,如果没有,请回到<a href="https://opensource.com/article/18/12/linux-toy-boxes">这里</a>开始,自己试试。你会发现 Linux 终端有很多游戏,消遣和奇怪的东西。虽然你之前可能已经看过我们日历中的一些玩具,但我们希望对每个人至少有一个新事物。今天我们要在昨天的玩具 <a href="https://linux.cn/article-10393-1.html">MPlayer</a> 上再加上一个 <a href="https://rg3.github.io/youtube-dl/">youtube-dl</a>。正如其名称所暗示的那样,youtube-dl 是一个用于下载 YouTube 视频的命令行程序,但它也可以从其他许多站点下载视频,而且它是一个有着<a href="https://github.com/rg3/youtube-dl/blob/master/README.md#readme">丰富文档</a>的功能齐全的程序,从而使视频获取变得容易。注意:请勿在任何违反你所在司法辖区的版权法的情况下使用 youtube-dl。youtube-dl 使用的是 <a href="https://unlicense.org/">Unlicense</a> 这个公共领域许可,类似于 Creative Common 的 <a href="https://creativecommons.org/share-your-work/public-domain/cc0/">CC0</a>。这里还有哪些公共领域贡献适用于开源领域的<a href="https://opensource.org/faq#public-domain">法律意见</a>,但它通常被认为与现有的开源许可证兼容,即使是不推荐使用它的组织也是如此。最简单地,我们将使用 youtube-dl 来获取视频以便在终端中播放。首先,使用适用于你发行版的方法<a href="https://github.com/rg3/youtube-dl/blob/master/README.md#installation">安装</a>它。对我来说,在 Fedora 中,它被打包在我的仓库中,因此安装非常简单:<pre class="prettyprint linenums">$ sudo dnf…
视频只能在 GUI 下看么?再想想。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/04/094842dm9jhmg99meolcqm.png">Media</a>我们即将结束为期 24 天的 Linux 命令行玩具日历。希望你一直在看,如果没有,请回到<a href="https://opensource.com/article/18/12/linux-toy-boxes">这里</a>开始,自己试试。你会发现 Linux 终端有很多游戏,消遣和奇怪的东西。虽然你之前可能已经看过我们日历中的一些玩具,但我们希望对每个人至少有一个新事物。今天我们要在昨天的玩具 <a href="https://linux.cn/article-10393-1.html">MPlayer</a> 上再加上一个 <a href="https://rg3.github.io/youtube-dl/">youtube-dl</a>。正如其名称所暗示的那样,youtube-dl 是一个用于下载 YouTube 视频的命令行程序,但它也可以从其他许多站点下载视频,而且它是一个有着<a href="https://github.com/rg3/youtube-dl/blob/master/README.md#readme">丰富文档</a>的功能齐全的程序,从而使视频获取变得容易。注意:请勿在任何违反你所在司法辖区的版权法的情况下使用 youtube-dl。youtube-dl 使用的是 <a href="https://unlicense.org/">Unlicense</a> 这个公共领域许可,类似于 Creative Common 的 <a href="https://creativecommons.org/share-your-work/public-domain/cc0/">CC0</a>。这里还有哪些公共领域贡献适用于开源领域的<a href="https://opensource.org/faq#public-domain">法律意见</a>,但它通常被认为与现有的开源许可证兼容,即使是不推荐使用它的组织也是如此。最简单地,我们将使用 youtube-dl 来获取视频以便在终端中播放。首先,使用适用于你发行版的方法<a href="https://github.com/rg3/youtube-dl/blob/master/README.md#installation">安装</a>它。对我来说,在 Fedora 中,它被打包在我的仓库中,因此安装非常简单:<pre class="prettyprint linenums">$ sudo dnf…