Merge pull request #1 from LCTT/master

同步仓库
This commit is contained in:
jx.zeng 2020-06-24 20:04:08 -05:00 committed by GitHub
commit 504179e130
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 2584 additions and 1178 deletions

View File

@ -0,0 +1,171 @@
[#]: collector: (lujun9972)
[#]: translator: (robsean)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-12341-1.html)
[#]: subject: (Ubuntu MATE 20.04 LTS Review: Better Than Ever)
[#]: via: (https://itsfoss.com/ubuntu-mate-20-04-review/)
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
Ubuntu MATE 20.04 LTS士别三日当刮目相待
======
Ubuntu MATE 20.04 LTS 无疑是最流行的 [Ubuntu 官方特色版本][1]之一。
不仅仅是我,这份[Ubuntu 20.04 调查报告][2]也持同样观点。不过不管流行与否,它都是一个令人印象深刻的 Linux 发行版,尤其是用在较旧的硬件上时。事实上,它也是可用的[最轻量的 Linux 发行版][3]之一。
所以,我想在一个虚拟机中尝试一下,为你提供一个概览,这样你可以了解其中有何值得期盼的变化,以及是否值得尝试。
### 在 Ubuntu MATE 20.04 LTS 中有什么新功能?
- [video](https://www.youtube.com/embed/WBZyXDHw4HA)
Ubuntu MATE 20.04 LTS 的主要亮点应该是增加了 MATE Desktop 1.24。
你可以期待 MATE Desktop 1.24 中的所有新特色都被打包到 Ubuntu MATE 20.04 中。除此之外,还有很多重要的变化、改进和增补。
这是 Ubuntu MATE 20.04 中变化的概述:
* 新增 MATE Desktop 1.24
* 大量视觉改进
* 数十处错误修复
* 基于 [Linux 内核 5.4][5] 系列
* 添加了实验性的 [ZFS][6] 支持
* 添加了来自 [Feral Interactive][7] 的 GameMode
* 一些软件包更新
现在,为了更好地了解 Ubuntu MATE 20.04,我将给你提供更多的细节。
### 用户体验改善
![][8]
考虑到越来越多的用户倾向于在桌面上使用 Linux而用户体验在桌面中起着至关重要的作用。
如果有一些易于使用和令人愉悦的东西,那么第一印象就会有很大不同。
对于 Ubuntu MATE 20.04 LTS我没有感到失望。就我个人而言我是最新的 [GNOME 3.36][9] 的粉丝。我喜欢在我 [Pop!_OS 20.04][10] 上使用它,但是随着 [MATE 1.24][11] 的出现,使得 Ubuntu MATE 也同样具有很好的体验。
你会看到窗口管理器有一些重大更改包括增加了用于重新调整大小的隐形边框HiDPI 图标渲染,重新设计了 `ALT+TAB` 工作区切换器的弹出窗口和一些其它的更改,这些是最新的 MATE 1.24 桌面环境的一部分。
![][12]
此外, MATE Tweak 也得到了一些贴心的改进,即使你更改桌面的布局,也可以保留用户偏好。新的 MATE 欢迎屏幕也会告知用户更改桌面布局的能力,因此,用户无需不断摸索就能知道这个变化。
此外,我最喜欢的新增功能之一是可以预览最小化的应用程序。
例如,你已经最小化了一个应用程序,但是你想在拉起它之前看到它的预览 —— 现在你只需将鼠标悬停在任务栏上就可以做到这一点,如下图所示:
![][13]
不过,我必须指出,并不是每个应用程序都可以如预期般的工作。因此,这个功能是有缺陷的,还需要改进。
### 应用程序新增或升级
![][14]
在 MATE 20.04 中,你会注意到有一个新的固件更新器,它是 [fwupd][15] 的 GTK 前端。你可以使用这个更新器来轻松地管理你的固件驱动。
这个版本也使用 Evolution 替换了 Thunderbird 电子邮件客户端。尽管 [Thunderbird][16] 是一个非常流行的电子邮件客户端,但是 [Evolution][17] 与 MATE 桌面集成得更好,并且证明它更有用。
![][18]
考虑到我们已经搭载了 MATE 1.24你也将发现一个新的时间和日期管理应用程序。不仅如此如果你需要一个放大镜Ubuntu MATE 20.04 还内置了 [Magnus][19]。
![][20]
Ubuntu MATE 20.04 也包括了众多预安装的软件包/应用程序的升级包。
![][21]
尽管这些是小的增补,但却能在很大程度上帮助发行版变得更有用。
### Linux Kernel 5.4
Ubuntu MATE 20.04 带有 2019 年最后一个主要的稳定版内核,即 [Linux 内核 5.4][5]。
使用该内核,你可以获得原生的 [exFAT 支持][22]、改进的硬件支持。更不用说,拥有 [WireGuard][23] VPN 的支持也是一件极好的事。
所以,你会注意到 Linux Kernel 5.4 的众多好处,包括内核锁定功能。如果你好奇,你可以阅读我们关于 [Linux Kernel 5.4][5] 的新闻报道来了解更多的细节。
### 增加了 Feral Interactive 的 GameMode
以将游戏带到 Linux 平台而闻名的 Feral Interactive 带来了一款实用的命令行工具,即 [GameMode][7]。
它没有提供图形界面,但是在启动一个游戏前,你可以使用命令行请求临时性的系统优化。
虽然这可能不会给每个系统都带来很大的不同,而是给玩游戏提供了更多的资源,并且 GameMode 可以确保你获得必要的优化。
### 实验性的 ZFS 安装选项
你可以使用 ZFS 作为根文件系统了。值得注意的是,它是一个实验性的功能,如果你不确定自己在做什么,那么就不应该使用它。
要更好地了解 ZFS我建议你阅读我们的一篇文章[John Paul][24] 所写的《[ZFS 是什么][6]》的文章。
### 性能和其它的改进
Ubuntu MATE 是一款完美的轻量级发行版,同时也是一款适合现代台式机的发行版。
![][25]
在这个评测中,我没有运行任何特殊的基准测试工具,以一个普通用户来说,我在虚拟机设置中没有发现任何性能问题。我在一台使用了一颗 i5-7400 处理器、配备 GTX 1050 显卡和 16 GB 内存的主机系统上进行了测试。并且,我将 7 GB 的内存 + 768 MB 的显存 + 2 个处理器核心分配给了虚拟机。
![][26]
如果你要自己测试它,请随时告诉我你对它的感觉如何。
总的来说,除了所有主要的改进之外,还有一些细微的改变/修复/改进,使得 Ubuntu MATE 20.04 LTS 成为了一个很好的升级版本。
### 我应该升级吗?
如果你正在运行 Ubuntu MATE 19.10,你应该立即升级它,因为它的支持将在 2020 年 6 月结束。
对于 Ubuntu MATE 18.04 用户(支持到 2021 年 4 月)来说,这取决于你的需求。如果你需要最新发布版本的功能,你应该选择立即升级它。
但是,如果你不一定需要新的功能,你可以查看[现存的错误列表][27] 并加入 [Ubuntu MATE 社区][28] 来了解更多最新发布版本的问题。
在你做完必要的研究后,你可以继续升级你的系统到 Ubuntu MATE 20.04 LTS它将支持到 2023 年 4 月。
你试过最新的 Ubuntu MATE 20.04 吗?你认为它怎么样?在评论中让我知道。
--------------------------------------------------------------------------------
via: https://itsfoss.com/ubuntu-mate-20-04-review/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[robsean](https://github.com/robsean)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/which-ubuntu-install/
[2]: https://ubuntu.com/blog/ubuntu-20-04-survey-results
[3]: https://itsfoss.com/lightweight-linux-beginners/
[4]: https://www.youtube.com/c/itsfoss?sub_confirmation=1
[5]: https://itsfoss.com/linux-kernel-5-4/
[6]: https://itsfoss.com/what-is-zfs/
[7]: https://github.com/FeralInteractive/gamemode
[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-20-04.jpg?ssl=1
[9]: https://itsfoss.com/gnome-3-36-release/
[10]: https://linux.cn/article-12175-1.html
[11]: https://mate-desktop.org/blog/2020-02-10-mate-1-24-released/
[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-desktop-layout.png?ssl=1
[13]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-minimized-app.png?ssl=1
[14]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-20-04-firmware.png?ssl=1
[15]: https://fwupd.org
[16]: https://www.thunderbird.net/en-US/
[17]: https://wiki.gnome.org/Apps/Evolution
[18]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-evolution.png?ssl=1
[19]: https://kryogenix.org/code/magnus/
[20]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-magnus.jpg?ssl=1
[21]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-apps.png?ssl=1
[22]: https://cloudblogs.microsoft.com/opensource/2019/08/28/exfat-linux-kernel/
[23]: https://wiki.ubuntu.com/WireGuard
[24]: https://itsfoss.com/author/john/
[25]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-system-reosource.jpg?ssl=1
[26]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-focal-neofetch.png?ssl=1
[27]: https://bugs.launchpad.net/ubuntu-mate
[28]: https://ubuntu-mate.community/

View File

@ -1,24 +1,26 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-12340-1.html)
[#]: subject: (5 ways to examine the content of files on Linux)
[#]: via: (https://www.networkworld.com/article/3561490/5-ways-to-examine-the-content-of-files-on-linux.html)
[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/)
在 Linux 上查看文件内容的 5 种方法
======
如何使用 cat、more、head 和 tail 命令查看 Linux 文件的内容,而不仅仅是文本文件。
[mari lezhava / Unsplash][1] [(CC0)][2]
Linux 提供了许多命令来查看文件的内容,包 括**cat**、**more**、**head** 和 **tail**,但这只是一个开始
> 如何使用 cat、more、head 和 tail 命令查看 Linux 文件的内容,而不仅仅是文本文件。
一方面,即使是最显而易见的命令也有很多许多用户不会去使用的选项。还有一些不太明显的命令提供了一些独特的功能。在本文中,我们将同时提供查看文件内容的命令和用于定制这些视图以更好地满足你的需求的选项。
![](https://img.linux.net.cn/data/attachment/album/202006/23/121047zz9gwx9dwz155m2w.jpg)
Linux 提供了许多命令来查看文件的内容,包 括 `cat`、`more`、`head` 和 `tail`,但这只是一个开始。
一方面,即使是最显而易见的命令也有很多许多用户不会去使用的选项。还有一些普普通通的命令提供了一些独特的功能。在本文中,我们将介绍查看文件内容的命令,以及如何定制这些视图以更好地满足你的需求的选项。
### cat
cat 命令将文本文件的全部内容发送到终端窗口以供查看。实际上,如果你输入 “cat”然后输入包含数千行的文件名那么这些行将以极快的速度在你的窗口中滚动你将无法看到除了最后一屏外的其他文本。对于 Linux 用户来说 cat 命令很熟悉,但即使这个基本命令也提供了许多有用的选项,例如对输出中的行进行编号,这是我们许多人可能从未使用过的。扩展一下,不仅可以对行进行编号,你还可以选择如何编号。
`cat` 命令将文本文件的全部内容发送到终端窗口以供查看。实际上,如果你输入 `cat`,然后输入包含数千行内容的文件名,那么这些行将以极快的速度在你的窗口中滚动,你将无法看到除了最后一屏外的其他文本。对于 Linux 用户来说 `cat` 命令很熟悉,但即使这个基本命令也提供了许多有用的选项,例如对输出中的行进行编号,这是我们许多人可能从未使用过的。更进一步,你不仅可以对行进行编号,还可以选择如何编号。
对每行进行编号就像这样:
@ -36,7 +38,7 @@ $ cat -n msg
10 s.
```
你也可以仅对内容行编号。 请注意,对于此命令,仅包含空格的行不被视为“空”,而是会被编号。
你也可以只对有内容的行编号。请注意,对于此命令,仅包含空格的行不被视为“空”,而是会被编号。
```
$ cat -b msg
@ -52,7 +54,7 @@ $ cat -b msg
5 s.
```
cat 命令允许你使用 -s 选项忽略重复的空白行,但是你必须添加另一个命令来完全禁止空白行
`cat` 命令允许你使用 `-s` 选项忽略重复的空白行,但是要完全忽略空白行你必须添加另一个命令。
```
$ cat -s msg
@ -67,7 +69,7 @@ bye!
s.
```
要忽略所有空白行,只需如下将 **cat** 的输出通过管道传递给 **grep** 命令。 点(.)匹配包含空白字符的文本,因此它将显示仅包含空格且看起来为空的行
要忽略所有空白行,只需如下将 `cat` 的输出通过管道传递给 `grep` 命令。 点(`.`匹配包含任意字符的文本因此它将显示任意非空的行用于结束一行的回车换行做匹配LCTT 译注:此处原文有误,径改)
```
$ cat msg | grep .
@ -78,7 +80,7 @@ bye!
s.
```
**-E** 选项通过在每行末尾加 $ 符提供视觉提示,来显示行尾是否还有多余的空格。
`-E` 选项通过在每行末尾加 `$` 符提供视觉提示,来显示行尾是否还有多余的空格。
```
$ cat -E msg
@ -94,7 +96,7 @@ $
s.$
```
使用 **-A** 时,每行的末尾都有 $ 字符,并且制表符都显示为 **^I** 而不是空白。
使用 `-A` 时,既可以在每行的末尾显示 `$` 字符,并且制表符会显示为 `^I` 而不是空白。
```
$ cat -A msg
@ -103,7 +105,7 @@ $
I hope you are having a wonderful day!$
$
$
Thats it for ^Inow$
Thats it for ...^Inow$
$
bye!$
$
@ -112,7 +114,7 @@ s.$
### 使用 head 和 tail 显示文件部分内容
**head** 和 **tail** 显示文件的头部或底部,默认为十行。 你可以使用 -3显示 3 行)或 -11显示 11 行)之类的字符串来指定要查看的其他行数。**tail** 命令与 **head** 的工作方式相同,但是显示文件的底部而不是头部。
`head``tail` 显示文件的头部或尾部,默认为十行。 你可以使用 `-3`(显示 3 行)或 `-11`(显示 11 行)之类的字符串来指定要查看的其它行数。`tail` 命令与 `head` 的工作方式相同,但是显示文件的尾部而不是头部。
```
$ head -3 msg
@ -124,7 +126,7 @@ bye!
s.
```
你还可以结合使用 head 和 tail 命令来查看文件中间的文本。 你只需要选择起点和想要查看行数即可。 在此例中,命令将在文件中显示第二个一百行,并在 **cat** 的帮助下为这些行编号。
你还可以结合使用 `head``tail` 命令来查看文件中间的文本。你只需要选择起点和想要查看行数即可。在此例中,命令将在文件中显示第二个一百行,并在 `cat` 的帮助下为这些行编号。
```
$ cat -b mybigfile | head -200 | tail -100
@ -134,11 +136,11 @@ $ cat -b mybigfile | head -200 | tail -100
### 使用 more 或者 less 浏览一屏文本
**more** 命令是一次浏览一屏内容的选择,而 **less** 通过使用上下键盘箭头增加了在文件中上下移动的能力,这样你就可以扫描,然后备份到文件中
`more` 命令是一次浏览一屏内容的自然之选,而 `less` 通过使用上下键盘箭头增加了在文件中上下移动的能力,这样你就可以遍历内容,然后在文件中回退
### 使用 od 查看文本的两种方法
**od**(八进制转储)命令能够以常规文本和一系列 ASCII 值(即该文本在文件中的实际编码方式)的形式查看。 在下面的例子中可以看到,带编号的行显示了 ASCII 数字值,而其他行则显示了文本和不可打印的字符。
`od`(八进制转储)命令能够以常规文本和一系列 ASCII 值(即该文本在文件中的实际编码方式)的形式查看文件。在下面的例子中可以看到,带编号的行显示了 ASCII 数字值,而其他行则显示了文本和不可打印的字符。
```
$ od -bc msg
@ -156,9 +158,9 @@ $ od -bc msg
s . \n
```
请注意,换行符显示为 **\n** (八进制 012而制表符显示为 **\t**(八进制 011)。
请注意,换行符显示为 `\n`(八进制 `012`),而制表符显示为 `\t`(八进制 `011`)。
**od** 命令特别有用的用途之一是查看非文本文件以获取标识文件类型的信息。 在这里,我们看到 **JFIF**JPEG 文件交换格式)标签,该标签让 **file** 之类报告文件类型的命令将它标示为 jpg 文件。 这里还有很多其他有用的信息,特别是如果你对这些文件的格式感到好奇的话。
`od` 命令特别有用的用途之一是查看非文本文件以获取可以标识文件类型的信息。在这里,我们看到 `JFIF`JPEG 文件交换格式)标签,该标签让 `file` 之类报告文件类型的命令将它标示为 jpg 文件。这里还有很多其他有用的信息,特别是如果你对这些文件的格式感到好奇的话。
在接下来的命令中,我们查看 jpg 文件的开始部分。
@ -178,7 +180,7 @@ $ od -bc arrow.jpg | head -12
022 023 022 020 023 017 020 020 020 377 333 \0 C 001 003 003
```
如果我们要 **file** 命令提供有关此图像的信息我们可能会看到类似这样的信息。file 命令从文件开头的数据中提取所有这些描述性信息。
如果我们要 `file` 命令提供有关此图像的信息,我们可能会看到类似下面这样的信息。`file` 命令从文件开头的数据中提取了所有这些描述性信息:
```
$ file arrow.jpg
@ -187,8 +189,7 @@ arrow.png: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segme
### 使用 jp2a 将文件视为基于文本的图像
如果你只能在命令行,并且想了解特定图像包含的内容,那么可以使用 **jp2a**jpeg to ascii之类的工具提供字符再现。 图像在这种格式下的识别程度取决于文件。不要太期待,因为你将看到的图像版本是“低分辨率”下的测试! 这是一只分辨率很低的帝王企鹅。
如果你只能在命令行工作,并且想了解特定图像包含的内容,那么可以使用 `jp2a`jpeg to ascii之类的工具提供字符渲染。图像在这种格式下的识别程度取决于文件。不要有太多期待因为你将看到的图像版本是“低分辨率”下的测试这是一只分辨率很低的帝王企鹅。请离远点看
```
$ jp2a Emperor_Penguin.jpg
@ -217,11 +218,9 @@ MMMNkdd:,'ldXXO0xl;x0kx:;lKMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
```
#### 总结
### 总结
Linux 上有很多命令可以通过各种方式查看文件的内容。 其中一些选项在你需要处理文件内容时可能会非常有用。 其他的只是……有趣。
加入 [Facebook][3] 和 [LinkedIn][4] 上的 Network World 社区,评论热门主题。
Linux 上有很多命令可以通过各种方式查看文件的内容。其中一些选项在你需要处理文件内容时可能会非常有用。其它的只是……有趣。
--------------------------------------------------------------------------------
@ -230,7 +229,7 @@ via: https://www.networkworld.com/article/3561490/5-ways-to-examine-the-content-
作者:[Sandra Henry-Stocker][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -0,0 +1,154 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-12344-1.html)
[#]: subject: (How to use Bash history commands)
[#]: via: (https://opensource.com/article/20/6/bash-history-commands)
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
如何使用 Bash history 命令
======
> Bash 的 history 命令在它提供的功能数量上超过了所有其他 Linux Shell 历史接口。
![](https://img.linux.net.cn/data/attachment/album/202006/24/101620c0uj0dgg0buo9nib.jpg)
Bash 有丰富的历史。也就是说,它是一个古老的的 shell还有一个更古老的 Shell Bourne shell的前辈但是它还有一个很棒的 `history` 命令,它提供的功能数量超过了所有其他 shell 的历史接口。 [Bash][2] 版本的 `history` 可进行反向搜索、快速调用、重写历史记录等。
`history` 命令与许多其他命令不同。你可能习惯于将命令作为可执行文件放在常见的系统级位置,例如 `/usr/bin`、`/usr/local/bin` 或者 `~/bin`。 内置的 `history` 命令不在你的 `PATH` 中并且没有物理位置:
```
$ which history
which: no history in [PATH]
```
相反,`history` 是 shell 本身的内置函数:
```
$ type history
history is a shell builtin
$ help history
history: history [-c] [-d offset] [n] or
history -anrw [filename] or
history -ps arg [arg...]
Display or manipulate the history list.
[...]
```
出于这个原因,每个 shell 中的历史功能都是独特的,因此你在 Bash 中使用的功能可能无法在 Tcsh 或 Fish 或 Dash 中使用,而在这些 shell 中使用的功能可能也无法在 Bash 中使用。在某些情况下,了解 Bash 可以做什么可能会激发其他 shell 的用户创建有趣的改造来复制 Bash 行为,并且可能会解锁你从未知道的 Bash 功能。
### 查看你的 Bash 历史
`history` 命令最基本、最频繁的用法是查看 shell 会话的历史记录:
```
$ echo "hello"
hello
$ echo "world"
world
$ history
  1  echo "hello"
  2  echo "world"
  3  history
```
### 事件指示器
<ruby>事件指示器<rt>Event designator</rt></ruby>按事件搜索你的历史记录。在这里,“事件”是指记录在历史中的命令,以换行符划定。换句话说,一行一个事件,以索引号来标记。
事件指示器大多以感叹号开头,有时也称为 “bang”`!`)。
要从你的历史记录中重新运行命令,请使用感叹号,之后紧跟(之间没有空格)所需命令的索引号。例如,假设第 1 行包含命令 `echo "hello"`,你想要想再次运行它:
```
$ !1
echo "hello"
hello
```
你可以使用相对定位,提供基于你历史中当前位置向后的负数行号。例如,返回到历史中倒数第三个条目:
```
$ echo "foo"
foo
$ echo "bar"
bar
$ echo "baz"
baz
$ !-3
echo "foo"
foo
```
如果只想回去一行,那么可以使用速记 `!!` 代替 `!-1`。这节省了按键时间!
```
$ echo "foo"
$ !!
echo "foo"
foo
```
### 字符串搜索
你也可以对条目搜索特定的字符串,反过来搜索要运行命令。要搜索以指定字符串*开始*的命令,请使用感叹号,之后紧跟(没有空格)要搜索的字符串:
```
$ echo "foo"
$ true
$ false
$ !echo
echo "foo"
foo
```
你还可以在任意位置(不仅是开头)搜索包含该字符串的命令。为此,请像之前一样使用 `!` 加上要搜索的字符串,但在字符串的两端都用问号(`?`)围绕起来。如果你知道该字符串后紧跟一个换行符,那么可以省略最后的问号(就是在按*回车*之前输入的最后字符):
```
$ echo "foo"
$ true
$ false
$ !?foo?
echo "foo"
foo
```
### 字符串替换
类似于在行首搜索字符串,你可以搜索字符串并用新字符串替换它,以更改命令:
```
$ echo "hello"
hello
$ echo "world"
world
$ ^hello^foo
echo "foo"
foo
```
### 让 history 有用
在 Bash 中,`history` 命令的功能远远超过此处介绍的内容,但这是一个很好的开始, 可以让你习惯使用你的历史记录, 而不是仅仅把它当作一个参考。经常使用 `history` 命令,并试试无需输入命令即可执行的操作。你可能会感到惊讶!
--------------------------------------------------------------------------------
via: https://opensource.com/article/20/6/bash-history-commands
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/1980s-computer-yearbook.png?itok=eGOYEKK- (Person typing on a 1980's computer)
[2]: https://opensource.com/resources/what-bash

View File

@ -0,0 +1,81 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (GNU Health expands Raspberry Pi support, Megadeth's guitarist uses open source principles, and more open source news.)
[#]: via: (https://opensource.com/article/20/6/news-june-23)
[#]: author: (Lauren Maffeo https://opensource.com/users/lmaffeo)
GNU Health expands Raspberry Pi support, Megadeth's guitarist uses open source principles, and more open source news.
======
Catch up on the biggest open source headlines from the past two weeks.
![][1]
In this weeks edition of our open source news roundup, GNU Health expands to Raspberry Pis, how Megadeth's guitarist uses open source principles, and more open source news.
### GNU Health expands its support for Raspberry Pi
The GNU Health project, designed to help hospitals run on low-cost software and hardware, expanded its support for Rapsberry Pi models in its recent release [according to CNX][2]. The GNU Health Embedded version that runs on Raspberry Pis is "especially suited for remote areas without internet, academic Institutions, domiciliary units, home nursing, and laboratory stations."
> *"GNU Health (GH) is a free and open-source Health and Hospital Information System (HIS) that can manage the internal processes of a health institution, such as financial management, electronic medical records (EMR), stock &amp; pharmacies or laboratories (LIMS)." *
GNU Health is a free and open source health and hospital information system (HIS) to help healthcare systems manage finances, pharmacies, electronic medical records (EMRs), and more. The Raspberry Pi solution supports real-time monitoring of vital signs in hospitals, and retrieve information from labs. 
More details may be found on [the official website][3].
### Megadeth's guitarist brings OSS approaches to music
Heavy metal fans likely know Kiko Loureiro as Megadeth's guitarist. Loureiro is less known in the OSS world, but that might change soon: His new solo album is called _Open Source_.
"By definition, 'open source' is related to softwares [in] which the original source code is made freely available and may be redistributed and modified," Loureiro shared [in a recent interview.][4] "It brings us a higher sense of community, enhances our creativity and creates new possibilities." 
In true open source fashion, Loureiro is running an Indiegogo fundraiser to [keep his album][5] independent. His fundraiser emphasizes the "Open Source Mentality," which includes making his song's stems available for listeners to remix. 
### The Linux Foundation partners with Harvard for a FOSS contributor security survey
The Linux Foundation's Core Infrastructure Initiative (CII) launched [a survey for FOSS contributors][6] addressing security concerns in open source. CII developed the survey in partnership with the Laboratory for Innovation Science at Harvard (LISH). FOSS contributors can [take the survey][7] through early August.
This new survey follows [the Census II analysis and report][8], which assessed popular FOSS components for vulnerabilities. David A. Wheeler, The Linux Foundation's director of open source supply chain security, said the survey is essential since open source solutions are used so widely now.
Along with its reports and surveys, CII built a [Best Practices badge program][9] that encourages developers to audit their solutions for security threats. 
### In other news
* [OpenStack adds the StarlingX edge computing stack to its top-level projects][10]
* [OpenSAFELY is a new secure analytics platform for electronic health records in the NHS][11]
* [Linux Kernel 5.6 Reached End of Life, Upgrade to Linux Kernel 5.7 Now][12]
Thanks, as always, to Opensource.com staff members and [Correspondents][13] for their help this week.
--------------------------------------------------------------------------------
via: https://opensource.com/article/20/6/news-june-23
作者:[Lauren Maffeo][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/lmaffeo
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/weekly_news_roundup_tv.png?itok=tibLvjBd
[2]: https://www.cnx-software.com/2020/06/15/gnu-health-embedded-open-source-health-platform-works-on-raspberry-pi-3-4-and-soon-olimex-sbcs
[3]: https://www.gnuhealth.org/#/embedded
[4]: https://www.blabbermouth.net/news/megadeths-kiko-loureiro-unveils-cover-art-for-open-source-solo-album/
[5]: https://www.indiegogo.com/projects/kiko-loureiro-new-open-source-album#/
[6]: https://www.linuxfoundation.org/blog/2020/06/linux-foundation-harvard-announce-free-libre-and-open-source-software-foss-contributor-survey/?SSAID=389818&sscid=61k4_isd0j
[7]: https://hbs.qualtrics.com/jfe/form/SV_enfu6tjRM0QzwQB
[8]: https://www.coreinfrastructure.org/programs/census-program-ii/
[9]: https://www.linuxfoundation.org/blog/2020/06/why-cii-best-practices-gold-badges-are-important/?SSAID=389818&sscid=61k4_isyv5
[10]: https://techcrunch.com/2020/06/11/openstack-adds-the-starlinkx-edge-computing-stack-to-its-top-level-projects/
[11]: https://opensafely.org/
[12]: https://9to5linux.com/linux-kernel-5-6-reached-end-of-life-upgrade-to-linux-kernel-5-7-now
[13]: https://opensource.com/correspondent-program

View File

@ -1,63 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (How IoT will rescue aviation)
[#]: via: (https://www.networkworld.com/article/3543318/how-iot-will-rescue-aviation.html)
[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/)
How IoT will rescue aviation
======
European airplane maker Airbus is one company exploring virus-spotting IoT sensors in an attempt to keep COVID-19-infected passengers off planes.
[Stéphan Valentin][1] [(CC0)][2]
A biotech company that develops sensors to detect explosives and other chemicals on planes and in airports is teaming up with Airbus to create a sensor that could detect passengers who are positive for COVID-19.
California-based Koniku and Airbus, which have been working since 2017 on contactless equipment that sniffs out chemicals, are trying to adapt that technology to sniff out pathogens, says Osh Agabi, founder and CEO of Koniku, [in a blog post][3].
[[Get regularly scheduled insights by signing up for Network World newsletters.]][4]
They hope to identify odors in breath or sweat that are chemical markers indicating the presence of COVID-19 infection. "Most infections and diseases cause slight changes to the composition of our breath and sweat, which then produce distinct odors," Agabi writes. "If we can detect those odors, we can detect the presence of those infections."
The companies hope to identify markers specific to the novel coronavirus and an IOT sensor equipped with genetically engineered odoroant receptors that can detect them. "Those receptors screen molecules in the air and produce a signal when they come into contact with the molecular compounds of the hazard or threat that they have been programmed to detect," he writes.
He says that passengers would be screened by walking through an enclosed corridor where the sensors are deployed. "By programming the DNA of the cells that make up these receptors to react to the compounds that appear in infected peoples breath or sweat, we believe we will be able to quickly and reliably screen for COVID-19 and determine whether a person is infected," he writes.
Other types of contactless detectors are already in use, including elevated-skin-temperature (EST) cameras.
Italy's main airport, Leonardo da Vinci, acquired three thermal-imaging helmets with the intent to use them to spot persons with fevers. The airport already had fixed thermal scanners and has ordered more. Passengers detected with potentially high temperatures are made to take a further medical exam, [according to regional publication Fiumicino Online][5].
KC Wearable, the Shenzhen, China, company that makes the helmets, says they can be worn by staff and used at a distance from passengers.
FLIR Systems, which makes thermal cameras, says theres been increased demand for them to be used in EST screening, the company says in this month in its [financial results][6].
"Although these thermal cameras cannot detect or diagnose any type of medical condition, the cameras do serve as an effective tool to identify elevated skin temperatures," it says.
"Many companies are looking to install this technology in their facilities in anticipation of lifting the shelter-in-place orders," FLIR CEO Jim Cannon [said in an earnings call][7] this month. General Motors is one of them, [according to Reuters][8].
Join the Network World communities on [Facebook][9] and [LinkedIn][10] to comment on topics that are top of mind.
--------------------------------------------------------------------------------
via: https://www.networkworld.com/article/3543318/how-iot-will-rescue-aviation.html
作者:[Patrick Nelson][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.networkworld.com/author/Patrick-Nelson/
[b]: https://github.com/lujun9972
[1]: https://unsplash.com/photos/s7NGQU2Nt8k
[2]: https://creativecommons.org/publicdomain/zero/1.0/
[3]: https://www.linkedin.com/pulse/what-happens-when-airports-open-back-up-osh-agabi/?src=aff-lilpar&veh=aff_src.aff-lilpar_c.partners_pkw.10078_plc.Skimbit%20Ltd._pcrid.449670_learning&trk=aff_src.aff-lilpar_c.partners_pkw.10078_plc.Skimbit%20Ltd._pcrid.449670_learning&clickid=WNmzMlyalxyOUI7wUx0Mo34HUkiwwpy%3APQ3X1Y0&irgwc=1
[4]: https://www.networkworld.com/newsletters/signup.html
[5]: https://www.fiumicino-online.it/articoli/cronaca-2/fase-2-all-aeroporto-di-fiumicino-lo-smart-helmet-per-controllare-la-febbre-a-distanza
[6]: https://flir.gcs-web.com/news-releases/news-release-details/flir-systems-announces-first-quarter-2020-financial-results
[7]: https://www.fool.com/earnings/call-transcripts/2020/05/06/flir-systems-inc-flir-q1-2020-earnings-call-transc.aspx
[8]: https://uk.reuters.com/article/us-flir-systems-gm/general-motors-taps-flir-systems-for-fever-check-cameras-at-factories-idUKKBN22J02B
[9]: https://www.facebook.com/NetworkWorld/
[10]: https://www.linkedin.com/company/network-world

View File

@ -1,157 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (Yufei-Yan)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (What is IoT? The internet of things explained)
[#]: via: (https://www.networkworld.com/article/3207535/what-is-iot-the-internet-of-things-explained.html)
[#]: author: (Josh Fruhlinger https://www.networkworld.com/author/Josh-Fruhlinger/)
What is IoT? The internet of things explained
======
The internet of things (IoT) is a network of connected smart devices providing rich data, but it can also be a security nightmare.
Thinkstock
The internet of things (IoT) is a catch-all term for the growing number of electronics that aren't traditional computing devices, but are connected to the internet to send data, receive instructions or both.
There's an incredibly broad range of things that fall under that umbrella: Internet-connected "smart" versions of traditional appliances like refrigerators and light bulbs; gadgets that could only exist in an internet-enabled world like Alexa-style digital assistants; internet-enabled sensors that are transforming factories, healthcare, transportation, distribution centers and farms.
### What is the internet of things?
The IoT brings the power of the internet, data processing and analytics to the real world of physical objects. For consumers, this means interacting with the global information network without the intermediary of a keyboard and screen; many of their everyday objects and appliances can take instructions from that network with minimal human intervention.
**[ [More IoT coverage of Network World][1] ]**
In enterprise settings, IoT can bring the same efficiencies to physical manufacturing and distribution that the internet has long delivered for knowledge work. Millions if not billions of embedded internet-enabled sensors worldwide are providing an incredibly rich set of data that companies can use to gather data about their safety of their operations, track assets and reduce manual processes. Researchers can also use the IoT to gather data about people's preferences and behavior, though that can have serious implications for privacy and security.
### How big is it?
In a word: enormous. [Priceonomics breaks it down][2]: There are more than 50 billion IoT devices as of 2020, and those devices will generate 4.4 zettabytes of data this year. (A zettabyte is a trillion gigabytes.) By comparison, in 2013 IoT devices generated a mere 100 billion gigabytes. The amount of money to be made in the IoT market is similarly staggering; estimates on the value of the market in 2025 range from $1.6 trillion to $14.4 trillion.
### History of IoT
A world of omnipresent connected devices and sensors is one of the oldest tropes of science fiction. IoT lore has dubbed a [vending machine at Carnegie Mellon][3] that was connected to APRANET in 1970 as the first Internet of Things device, and many technologies have been touted as enabling "smart" IoT-style characteristics to give them a futuristic sheen. But the term Internet of Things was coined in 1999 by British technologist [ Kevin Ashton][4].
At first, the technology lagged behind the vision. Every internet-connected thing needed a processor and a means to communicate with other things, preferably wirelessly, and those factors imposed costs and power requirements that made widespread IoT rollouts impractical, at least until Moore's Law caught up in the mid '00s.
One important milestone was [widespread adoption of RFID tags][5], cheap minimalist transponders that could be stuck on any object to connect it to the larger internet world. Omnipresent Wi-Fi and 4G made it possible to for designers to simply assume wireless connectivity anywhere. And the rollout of IPv6 means that connecting billions of gadgets to the internet won't exhaust the store of IP addresses, which was a real concern. (Related story: [Can IoT networking drive adoption of IPv6?][6])
### How does the IoT work?
The basic elements of the IoT are devices that gather data. Broadly speaking, they are internet-connected devices, so they each have an IP address. They range in complexity from autonomous vehicles that haul products around factory floors to simple sensors that monitor the temperature in buildings. They also include personal devices like fitness trackers that monitor the number of steps individuals take each day. To make that data useful it needs to be collected, processed, filtered and analyzed, each of which can be handled in a variety of ways.
Collecting the data is done by transmitting it from the devices to a gathering point. Moving the data can be done wirelessly using a range of technologies or on wired networks. The data can be sent over the internet to a data center or a cloud that has storage and compute power or the transfer can be staged, with intermediary devices aggregating the data before sending it along.
Processing the data can take place in data centers or cloud, but sometimes thats not an option. In the case of critical devices such as shutoffs in industrial settings, the delay of sending data from the device to a remote data center is too great. The round-trip time for sending data, processing it, analyzing it and returning instructions (close that valve before the pipes burst) can take too long. In such cases edge-computing can come into play, where a smart edge device can aggregate data, analyze it and fashion responses if necessary, all within relatively close physical distance, thereby reducing delay. Edge devices also have upstream connectivity for sending data to be further processed and stored.
[][7] Network World / IDG
How the internet of things works. 
### **Examples of IoT devices**
Essentially, anything that's capable of gathering some information about the physical world and sending it back home can participate in the IoT ecosystem. Smart home appliances, RFID tags, and industrial sensors are a few examples. These sensors can monitor a range of factors including temperature and pressure in industrial systems, status of critical parts in machinery, patient vital signs, and use of water and electricity, among many, many other possibilities.
Entire factory robots can be considered IoT devices, as can autonomous vehicles that move products around industrial settings and warehouses.
Other examples include fitness wearables and home security systems. There are also more generic devices, like the [Raspberry Pi][8] or [Arduino][9], that let you build your own IoT end points. Even though you might think of your smartphone as a pocket-sized computer, it may well also be beaming data about your location and behavior to back-end services in very IoT-like ways.
#### **Device management**
In order to work together, all those devices need to be authenticated, provisioned, configured, and monitored, as well as patched and updated as necessary. Too often, all this happens within the context of a single vendor's proprietary systems or, it doesn't happen at all, which is even more risky. But the industry is starting to transition to a [standards-based device management model][10], which allows IoT devices to interoperate and will ensure that devices aren't orphaned.
#### **IoT communication standards and protocols**
When IoT gadgets talk to other devices, they can use a wide variety of communications standards and protocols, many tailored to devices with limited processing capabilities or not much electrical power. Some of these you've definitely heard of — some devices use Wi-Fi or Bluetooth, for instance — but many more are specialized for the world of IoT. ZigBee, for instance, is a wireless protocol for low-power, short-distance communication, while message queuing telemetry transport (MQTT) is a publish/subscribe messaging protocol for devices connected by unreliable or delay-prone networks. (See Network Worlds glossary of [IoT standards and protocols][11].)
The increased speeds and bandwidth of the coming 5G standard for cellular networks will also benefit IoT, though that usage will [lag behind ordinary cell phones][12].
### IoT, edge computing and the cloud
[][13] Network World / IDG
How edge computing enables IoT.
For many IoT systems, there's a lot of data coming in fast and furious, which has given rise to a new technology category, [edge computing][14]_,_ consisting of appliances placed relatively close to IoT devices, fielding the flow of data from them. These machines process that data and send only relevant material back to a more centralized system for analysis. For instance, imagine a network of dozens of IoT security cameras. Instead of bombarding the building's security operations center (SoC) with simultaneous live-streams, edge-computing systems can analyze the incoming video and only alert the SoC when one of the cameras detects movement.
And where does that data go once its been processed? Well, it might go to your centralized data center, but more often than not it will end up in the cloud.
The elastic nature of cloud computing is great for IoT scenarios where data might come in intermittently or asynchronously. And many of the big cloud heavy hitters — including [Google][15], [Microsoft][16], and [Amazon][17] — have IoT offerings. 
### IoT platforms
The cloud giants are trying to sell more than just a place to stash the data your sensors have collected. They're offering full IoT platforms*,* which bundle together much of the functionality to coordinate the elements that make up IoT systems. In essence, an IoT platform serves as middleware that connects the IoT devices and edge gateways with the applications you use to deal with the IoT data. That said, every platform vendor seems to have a slightly different definition of what an IoT platform is, the better to [distance themselves from the competition][18].
### IoT and data
As mentioned, there are zettabytes of data being collected by all those IoT devices, funneled through edge gateways, and sent to a platform for processing. In many scenarios, this data is the reason IoT has been deployed in the first place. By collecting information from sensors in the real world, organizations can make nimble decisions in real time.
Oracle, for instance, [imagines a scenario][19] where people at a theme park are encouraged to download an app that offers information about the park. At the same time, the app sends GPS pings back to the park's management to help predict wait times in lines. With that information, the park can take action in the short term (by adding more staff to increase the capacity of some attractions, for instance) and the long term (by learning which rides are the most and least popular at the park).
These decisions can be made without human intervention. For example, data gathered from pressure sensors in a chemical-factory pipeline could be analyzed by software in an edge device that spots the threat of a pipeline rupture, and that information can trigger a signal to shut valves to avert a spill. 
### IoT and big data analytics
The theme park example is easy to get your head around, but is small potatoes compared to many real-world IoT data-harvesting operations. Many big data operations use information harvested from IoT devices, correlated with other data points, to get insight into human behavior. _Software Advice_ gives [a few examples][20], including a service from Birst that matches coffee brewing information collected from internet-connected coffeemakers with social media posts to see if customers are talking about coffee brands online.
Another dramatic example came recently when X-Mode released a map based on tracking location data of people who partied at spring break in Ft. Lauderdale in March of 2020, even as the coronavirus pandemic was gaining speed in the United States, showing [where all those people ended up across the country][21]. The map was shocking not only because it showed the potential spread of the virus, but also because it illustrated just how closely IoT devices can track us. (For more on IoT and analytics, click [here][22].
### IoT data and AI
The volume of data IoT devices can gather is far larger than any human can deal with in a useful way, and certainly not in real time. We've already seen that edge computing devices are needed just to make sense of the raw data coming in from the IoT endpoints. There's also the need to detect and deal with data that might [be just plain wrong][23].
Many IoT providers are offering machine learning and artificial intelligence capabilities to make sense of the collected data. IBM's Jeopardy!-winning Watson platform, for instance, can be [trained on IoT data sets][24] to produce useful results in the field of predicative maintenance — analyzing data from drones to distinguish between trivial damage to a bridge and cracks that need attention, for instance. Meanwhile, Arm is working on [low-power chips][25] that can provide AI capabilities on the IoT endpoints themselves.    ** ** 
### IoT and business
Business uses for IoT include keeping track of customers, inventory, and the status of important components. [IoT for All][26] flags four industries that have been transformed by IoT:
* **Oil and gas**: Isolated drilling sites can be better monitored with IoT sensors than by human intervention
* A**griculture**: Granular data about crops growing in fields derived from IoT sensors can be used to increase yields
* **HVAC**: Climate control systems across the country can be monitored by manufacturers
* **Brick-and-mortar retail**: Customers can be microtargeted with offers on their phones as they linger in certain parts of a store
More generally, enterprises are looking for IoT solutions that can help in [four areas][27]: energy use, asset tracking, security, and the customer experience.
--------------------------------------------------------------------------------
via: https://www.networkworld.com/article/3207535/what-is-iot-the-internet-of-things-explained.html
作者:[Josh Fruhlinger][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.networkworld.com/author/Josh-Fruhlinger/
[b]: https://github.com/lujun9972
[1]: https://www.networkworld.com/category/internet-of-things/
[2]: https://priceonomics.com/the-iot-data-explosion-how-big-is-the-iot-data/
[3]: https://www.machinedesign.com/automation-iiot/article/21836968/iot-started-with-a-vending-machine
[4]: https://www.visioncritical.com/blog/kevin-ashton-internet-of-things
[5]: https://www.networkworld.com/article/2319384/rfid-readers-route-tag-traffic.html
[6]: https://www.networkworld.com/article/3338106/can-iot-networking-drive-adoption-of-ipv6.html
[7]: https://images.idgesg.net/images/article/2020/05/nw_how_iot_works_diagram-100840757-orig.jpg
[8]: https://www.networkworld.com/article/3176091/10-killer-raspberry-pi-projects-collection-1.html
[9]: https://www.networkworld.com/article/3075360/arduino-targets-the-internet-of-things-with-primo-board.html
[10]: https://www.networkworld.com/article/3258812/the-future-of-iot-device-management.html
[11]: https://www.networkworld.com/article/3235124/internet-of-things-definitions-a-handy-guide-to-essential-iot-terms.html
[12]: https://www.networkworld.com/article/3291778/what-s-so-special-about-5g-and-iot.html
[13]: https://images.idgesg.net/images/article/2017/09/nw_how_edge_computing_works_diagram_1400x1717-100736111-orig.jpg
[14]: https://www.networkworld.com/article/3224893/what-is-edge-computing-and-how-it-s-changing-the-network.html
[15]: https://cloud.google.com/solutions/iot
[16]: https://azure.microsoft.com/en-us/overview/iot/
[17]: https://aws.amazon.com/iot/
[18]: https://www.networkworld.com/article/3336166/why-are-iot-platforms-so-darn-confusing.html
[19]: https://blogs.oracle.com/bigdata/how-big-data-powers-the-internet-of-things
[20]: https://www.softwareadvice.com/resources/iot-data-analytics-use-cases/
[21]: https://www.cnn.com/2020/04/04/tech/location-tracking-florida-coronavirus/index.html
[22]: https://www.networkworld.com/article/3311919/iot-analytics-guide-what-to-expect-from-internet-of-things-data.html
[23]: https://www.networkworld.com/article/3396230/when-iot-systems-fail-the-risk-of-having-bad-iot-data.html
[24]: https://www.networkworld.com/article/3449243/watson-iot-chief-ai-can-broaden-iot-services.html
[25]: https://www.networkworld.com/article/3532094/ai-everywhere-iot-chips-coming-from-arm.html
[26]: https://www.iotforall.com/4-unlikely-industries-iot-changing/
[27]: https://www.networkworld.com/article/3396128/the-state-of-enterprise-iot-companies-want-solutions-for-these-4-areas.html

View File

@ -1,177 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Ubuntu Budgie 20.04 Review: Smooth, Polished & Plenty of Changes)
[#]: via: (https://itsfoss.com/ubuntu-budgie-20-04-review/)
[#]: author: (John Paul https://itsfoss.com/author/john/)
Ubuntu Budgie 20.04 Review: Smooth, Polished & Plenty of Changes
======
As we promised our readers, well be reviewing all major flavors of [Ubuntu 20.04 LTS release][1]. In that continuation, heres our take on the Ubuntu Budgie.
![Ubuntu Budgie Desktop][2]
[Ubuntu Budgie][3], as the name implies, is an [official flavor of Ubuntu][4] using the [Budgie desktop environment][5]. This flavor is a newer member of the Ubuntu family. Ubuntu Budgies first release was 16.04 and it was accepted as an official flavor with the 17.04 release.
Their [goal][6] is to “combine the simplicity and elegance of the Budgie interface to produce a traditional desktop orientated distro with a modern paradigm”.
### Ubuntu 20.04 Review: What has changed and what has not!
There have been a surprising number of updates and improvements to [Ubuntu Budgie since the 18.04 LTS release][7].
* New stylish menu apple
* Budgie-based network manager applet as default
* New Window Shuffler allows you to tile applications from the keyboard
* New tool to quickly switch desktop layout
* 4k resolution support
* GNOME Firmware and Drawing are new default applications
* Backport packages have now been rebuilt for 20.04
* Firefox is the default browser.
* Catfish file and text search is now the default
* budgie-nemo integration
* System Tray applet removed due to bugs
* Event alerts sounds are disabled by default
* Fix for keyboard shortcuts mysteriously going missing
* Better lock screen styling
* Files (Nautilus) has been replaced with Files (Nemo) due to community demand
* Plank dock has now been switched to the bottom of the screen, is transparent and has the bounce animations by default
* The Quick Notes and Hot Corners applets have been ported from Python to Vala to improve speed
* Celluloid replaces MPV
* GNOME dependencies have been updated
![][8]
Ubuntu Budgie now ships with the most recent release of the Budgie desktop environment (10.5.1). Improvements include:
* New Raven section in Budgie Desktop Settings
* Raven Notification grouping and the ability to turn off notifications
* Icon Task List has been revamped
* Ability to set number of virtual desktops
Ubuntu Budgie comes with a whole slew of Budgie applets and min-apps. They can be installed through Ubuntu Budgie Welcome.
![Ubuntu Budgie Welcome][9]
* WeatherShow shows the forecast for the next five days and updates every 3 hours
* Wallstreet a wallpaper utility that allows you to cycle through a folder of images
* Visual-space a compact workspace switcher
* Dropby this applet allows you to quickly manage USB thumb drives from the panel
* Kangaroo quickly browser folders from the panel
* Trash applet manage your trash can
* Fuzzyclock shows time in a fuzzy way
* Workspace stopwatch allows you to keep track of the time spent in each workspace
For a complete list of changes and updates, visit the [changelog][10].
#### System Requirements
Ubuntu Budgie 20.04 has updated the [system requirements][11]:
* 4GB or more of RAM
* 64-bit capable Intel and AMD processors
* UEFI PCs booting in CSM mode
* Modern Intel-based Apple Macs
As you can see, Budgie is not really a lightweight option here.
#### Included Apps
![][12]
The following useful applications are included in Ubuntu Budgie by default:
* AisleRiot Solitaire
* Geary
* Catfish search tool
* Cheese webcam tool
* GNOME Drawing
* GNOME 2048
* GNOME Mahjongg
* GNOME Mines
* GNOME Sudoku
* Gthumb
* LibreOffice
* Maps
* Rhythmbox
* Tilix
* Ubuntu Budgie Welcome
* Evince document viewer
* Plank
* Celluloid
![Ubuntu Budgie Ram Usage][13]
### Installation
Initially, I was unable to get Ubuntu Budgie to do into the live environment so that I could install it. It turned out that Ubuntu Budgie was trying to boot via EFI. I contacted the [Ubuntu Budgie forum][14] and was able to get a solution.
Once the purple splash screen I had to hit ESC and select legacy. After that, it booted as normal and installed without issue. I have only run into this issue with Ubuntu Budgie. I downloaded and tried the Ubuntu MATE 20.04 ISO, but didnt have a similar issue.
### Experience with Ubuntu Budgie 20.04
![][15]
Other than the minor installation issue, my time with Ubuntu Budgie was very pleasant. The Budgie desktop has come a long way since [Ikey][16] first created it and it has become a very mature option. The goal of Ubuntu Budgie is to “produce a traditional desktop orientated distro”. It does that in spades. All the changes that they have made continually add more polish to their product.
Overall, Ubuntu Budgie is a very nice looking distro. From the default theme to wallpaper options, you can tell that a lot of effort was put into making the visual experience very appealing.
One thing to keep in mind is that Ubuntu Budgie is not intended for low spec systems. Im running it on my Dell Latitude D630. Without any applications open, it used about 700 MB of RAM.
One part of Ubuntu Budgie that I enjoyed more than I should have, was the inclusion of the [Tilix terminal emulator][17]. Tilix allows you to add terminal windows to the right or below. It has a whole host of features and just loved using it. Im planning to install on my other Linux systems.
### Final Thoughts on Ubuntu Budgie 20.04
Ubuntu Budgie is a welcome addition to the litany of official flavors. Budgie feels very smooth and polished. It gets out of your way and lets you get work done.
If you are tired of your current desktop environment and want to take a look at something new, check it out. If youre happy with your current setup, check Ubuntu Budgies live DVD. You just might like it.
![Ubuntu Budgie About][18]
Have you already tried Ubuntu 20.04 Budgie? Hows your experience with it? If not, which Ubuntu 20.04 flavor are you using right now?
--------------------------------------------------------------------------------
via: https://itsfoss.com/ubuntu-budgie-20-04-review/
作者:[John Paul][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/john/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/download-ubuntu-20-04/
[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-busgie-desktop.png?resize=800%2C500&ssl=1
[3]: https://ubuntubudgie.org/
[4]: https://itsfoss.com/which-ubuntu-install/
[5]: https://en.wikipedia.org/wiki/Budgie_(desktop_environment
[6]: https://ubuntubudgie.org/about-us/
[7]: https://itsfoss.com/ubuntu-budgie-18-review/
[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-budgie-desktop-settings.jpeg?ssl=1
[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-budgie-welcome.png?resize=800%2C472&ssl=1
[10]: https://ubuntubudgie.org/2020/04/21/ubuntu-budgie-20-04lts-release-notes-for-18-04-upgraders/
[11]: https://ubuntubudgie.org/downloads/
[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-budgie-applications.jpeg?ssl=1
[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-budgie-ram-usage.png?resize=800%2C600&ssl=1
[14]: https://discourse.ubuntubudgie.org/t/cant-get-ub-to-boot/3397
[15]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-budgie-20-04.jpg?ssl=1
[16]: https://itsfoss.com/ikey-doherty-serpent-interview/
[17]: https://gnunn1.github.io/tilix-web/
[18]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-budgie-about.png?resize=800%2C648&ssl=1

View File

@ -1,173 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (robsean)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Ubuntu MATE 20.04 LTS Review: Better Than Ever)
[#]: via: (https://itsfoss.com/ubuntu-mate-20-04-review/)
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
Ubuntu MATE 20.04 LTS Review: Better Than Ever
======
Ubuntu MATE 20.04 LTS is undoubtedly one of the most popular [official flavors of Ubuntu][1].
Its not just me, but [Ubuntu 20.04 survey results][2] also pointed out the same. Popular or not, it is indeed an impressive Linux distribution specially for older hardware. As a matter of fact, it is also one of the [best lightweight Linux distros][3] available out there.
So, I thought of trying it out for a while in a virtual machine setting to provide you an overview of what you can expect out of it. And, whether its worth trying out.
### Whats New In Ubuntu MATE 20.04 LTS?
[Subscribe to our YouTube channel for more Linux videos][4]
The primary highlight on Ubuntu MATE 20.04 LTS would be the addition of MATE Desktop 1.24.
You can expect all the new features of the MATE Desktop 1.24 to come packed in with Ubuntu MATE 20.04. In addition to that, there have been many significant changes, improvements, and additions.
Heres an overview of what has changed in Ubuntu MATE 20.04:
* Addition of MATE Desktop 1.24
* Numerous visual improvements
* Dozens of bugs fixed
* Based on [Linux Kernel 5.4][5] series
* Addition of experimental [ZFS][6] support
* Addition of GameMode from [Feral Interactive][7].
* Several package updates
Now, to get a better idea on Ubuntu MATE 20.04, Ill give you some more details.
### User Experience Improvements
![][8]
Considering that more users are leaning towards Linux on Desktop, the user experience plays a vital role in that.
If its something easy to use and pleasant to look at that makes all the difference as the first impression.
With Ubuntu MATE 20.04 LTS, I wasnt disappointed either. Personally, Im a fan of the latest [GNOME 3.36][9]. I like it on my [Pop OS 20.04][10] but with the presence of [MATE 1.24][11], it Ubuntu MATE was also a good experience.
You will see some significant changes to the window manager including the addition of **invisible resize borders**, **icons rendering in HiDPI**, **rework of ALT+TAB workspace switcher pop ups**, and a couple of other changes that comes as part of the latest MATE 1.24 desktop.
![][12]
Also, **MATE Tweak** has got some sweet improvements where you get to preserve user preferences even if you change the layout of the desktop. The new **MATE Welcome screen** also informs the user about the ability to change the desktop layout, so they dont have to fiddle around to know about it.
Among other things, one of my favorite additions would be the **minimized app preview feature**.
For instance, you have an app minimized but want to get a preview of it before launching it now you can do that by simply hovering your mouse over the taskbar as shown in the image below.
![][13]
Now, I must mention that it does not work as expected for every application. So, Id still say **this feature is buggy and needs improvements**.
### App Additions or Upgrades
![][14]
With MATE 20.04, you will notice a new **Firmware updater** which is a GTK frontend for [fwupd][15]. You can manage your drivers easily using the updater.
This release also **replaces** **Thunderbird with the Evolution** email client. While [Thunderbird][16] is a quite popular desktop email client, [Evolution][17] integrates better with the MATE desktop and proves to be more useful.
![][18]
Considering that we have MATE 1.24 on board, you will also find a **new time and date manager app**. Not just that, if you need a magnifier, [Magnus][19] comes baked in with Ubuntu MATE 20.04.
![][20]
Ubuntu MATE 20.04 also includes upgrades to numerous packages/apps that come pre-installed.
![][21]
While these are small additions but help in a big way to make the distro more useful.
### Linux Kernel 5.4
Ubuntu MATE 20.04 ships with the last major stable kernel release of 2019 i.e [Linux Kernel 5.4][5].
With this, you will be getting the native [exFAT support][22] and improved hardware support as well. Not to mention, the support for [WireGuard][23] VPN is also a nice thing to have.
So, you will be noticing numerous benefits of Linux Kernel 5.4 including the kernel lock down feature. In case youre curious, you can read our coverage on [Linux Kernel 5.4][5] to get more details on it.
### Adding GameMode by Feral Interactive
Feral Interactive popularly known for bringing games to Linux platform came up with a useful command-line tool i.e. [GameMode][7].
You wont get a GUI but using the command-line you can apply temporary system optimizations before launching a game.
While this may not make a big difference for every system but its best to have more resources available for gaming and the GameMode ensures that you get the necessary optimizations.
### Experimental ZFS Install Option
You get the support for ZFS as your root file system. It is worth noting that it is an experimental feature and should not be used if youre not sure what youre doing.
To get a better idea of ZFS, I recommend you reading one of our articles on [What is ZFS][6] by [John Paul][24].
### Performance &amp; Other Improvements
Ubuntu MATE is perfectly tailored as a lightweight distro and also something fit for modern desktops.
![][25]
In this case, I didnt run any specific benchmark tools- but for an average user, I didnt find any performance issues in my virtual machine setting. If it helps, I tested this on a host system with an i5-7400 processor with a GTX 1050 graphics card coupled with 16 Gigs of RAM. And, 7 GB of RAM + 768 MB of graphics memory + 2 cores of my processor was allocated for the virtual machine.
![][26]
When you test it out yourself, feel free to let me know how it was for you.
Overall, along with all the major improvements, there are subtle changes/fixes/improvements here and there that makes Ubuntu MATE 20.04 LTS a good upgrade.
### Should You Upgrade?
If you are running Ubuntu MATE 19.10, you should proceed upgrading it immediately as the support for it ends in **June 2020.**
For Ubuntu MATE 18.04 users (**supported until April 2021**) it depends on what works for you. If you need the features of the latest release, you should choose to upgrade it immediately.
But, if you dont necessarily need the new stuff, you can look around for the [list of existing bugs][27] and join the [Ubuntu MATE community][28] to know more about the issues revolving the latest release.
Once you do the research needed, you can then proceed to upgrade your system to Ubuntu MATE 20.04 LTS which will be **supported until April 2023**.
_**Have you tried the latest Ubuntu MATE 20.04 yet? What do you think about it? Let me know your thoughts in the comments.**_
--------------------------------------------------------------------------------
via: https://itsfoss.com/ubuntu-mate-20-04-review/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/which-ubuntu-install/
[2]: https://ubuntu.com/blog/ubuntu-20-04-survey-results
[3]: https://itsfoss.com/lightweight-linux-beginners/
[4]: https://www.youtube.com/c/itsfoss?sub_confirmation=1
[5]: https://itsfoss.com/linux-kernel-5-4/
[6]: https://itsfoss.com/what-is-zfs/
[7]: https://github.com/FeralInteractive/gamemode
[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-20-04.jpg?ssl=1
[9]: https://itsfoss.com/gnome-3-36-release/
[10]: https://itsfoss.com/pop-os-20-04-review/
[11]: https://mate-desktop.org/blog/2020-02-10-mate-1-24-released/
[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-desktop-layout.png?ssl=1
[13]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-minimized-app.png?ssl=1
[14]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-20-04-firmware.png?ssl=1
[15]: https://fwupd.org
[16]: https://www.thunderbird.net/en-US/
[17]: https://wiki.gnome.org/Apps/Evolution
[18]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-evolution.png?ssl=1
[19]: https://kryogenix.org/code/magnus/
[20]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-magnus.jpg?ssl=1
[21]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-apps.png?ssl=1
[22]: https://cloudblogs.microsoft.com/opensource/2019/08/28/exfat-linux-kernel/
[23]: https://wiki.ubuntu.com/WireGuard
[24]: https://itsfoss.com/author/john/
[25]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-system-reosource.jpg?ssl=1
[26]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-mate-focal-neofetch.png?ssl=1
[27]: https://bugs.launchpad.net/ubuntu-mate
[28]: https://ubuntu-mate.community/

View File

@ -1,174 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (robsean)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Using the Lightweight Apt Package Manager Synaptic in Ubuntu and Other Debian-based Linux Distributions)
[#]: via: (https://itsfoss.com/synaptic-package-manager/)
[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)
Using the Lightweight Apt Package Manager Synaptic in Ubuntu and Other Debian-based Linux Distributions
======
This weeks open source software highlight is Synaptic. Learn what this good old package manager can do that the modern software managers cannot.
### What is Synaptic package manager?
[Synaptic][1] is a lightweight GUI front end to [apt package management system][2] used in Debian, Ubuntu, Linux Mint and many other Debian/Ubuntu based distributions.
Basically, everything that you can do [using the apt-get commands in the terminal][3] can be achieved with Synaptic.
![][4]
There was a time when Synaptic was the default graphical software manager on almost all Debian-based Linux distributions. It was considered to be a user-friendly, easy to use way of managing applications.
Things changed as modern software manager tools like [GNOME Software][5] and [KDE Discover][6] came up with more modern and intuitive UI. These software managers have better interface, display the package information in a more friendly way with thumbnails, ratings and reviews.
Eventually, Synaptic got [confined to mostly lightweight Linux distributions][7].
#### Why would you use an ancient software like Synaptic package manager?
You dont have to. Not most of the time, of course.
But Synaptic is still a lot versatile than the likes of GNOME Software. Remember, it is basically GUI front end to apt which means it can do (almost) everything you do with [apt commands in the terminal][8].
For example, if you want to [prevent the update of a specific package in Ubuntu][9], you can do that in Synaptic but not in GNOME/Ubuntu Software Center.
![][10]
Also, I have noticed some issues with the Software Center in Ubuntu 20.04. Its slow to load, its slow when searching for software and it is full of snap application (that not everyone prefers).
Synaptic is also [one of the lightweight applications you can use in Ubuntu][7] to speed up your system a bit.
#### Synaptic package manager features
Here is a summary of what you can do with Synaptic:
* Update the package cache
* Upgrade the entire system
* Manage package repositories
* Search for packages by name, description, maintainer, version, dependencies etc
* List packages by section, status (installed), origin or more
* Sort packages by name, status, size or version
* Get information related to a package
* Lock package version
* Install specific version of a package
There are more features that you may explore on your own.
### How to install Synaptic package manager on Ubuntu
Synaptic package manager is available in the Universe repository in Ubuntu. If it is enabled, you may find it in the Software Center:
![Synaptic in Ubuntu Software Center][11]
You may also install Synaptic via command line. Make sure to enable universe repository first:
```
sudo add-apt-repository univers
```
And then update the cache (not required in Ubuntu 18.04 and higher versions):
```
sudo apt update
```
Now, use the command below to install synaptic package manager:
```
sudo apt install synaptic
```
Thats it.
### How to use Synaptic package manager
Once installed, you can search for Synaptic in the menu and start it from there:
![][12]
You can see that the interface is not among the best-looking ones here. Note the color of the checkboxes. White means the package is not installed, green means it is installed.
![][4]
You can search for an application and click on the checkbox to mark it for installation. It will also highlight packages (in green) that will be installed as dependencies. Hit apply to install the selected packages:
![][13]
You can [see all the installed packages in Ubuntu][14] using Synaptic. You can also choose to remove packages from this view.
![][15]
You can see packages available in individual repositories by displaying them based on Origin. Good way to see [which PPA offers what packages][16]. You can install or remove packages as described above.
![][17]
Usually, when you update Ubuntu, all the packages are updated at once. With Synaptic, you can easily choose which packages you want to update/upgrade to a newer version.
![][18]
You can also lock the version of packages so that they dont get updated along with the system updates.
![][10]
You can also search for packages using Synaptic. This is like [searching for packages using apt-cache search command][19].
![][20]
If you think you made the wrong selection, you can click Undo from the Edit menu.
There are plenty more you can do with Synaptic and I cannot cover all the possible usages. I have covered the most common ones here and I leave you to explore it, if you are going to use Synaptic.
### Synaptic is not for everyone
If you dont like Synaptic, you can remove it from the Software Center or using this command in terminal:
```
sudo apt remove synaptic
```
There was another lightweight software manager for Ubuntu called [AppGrid][21]. It hasnt been updated in recent times as far as I know.
Synaptic is certainly not for everyone. It lists libraries and packages that you wont otherwise see in the regular Software Center. If you removed a library that you were not aware of, it may cause issues.
I think that Synaptic is suitable for intermediate to advanced users who want better control over the package management without going the command line way.
What do you say? Have you ever used Synaptic for package management? Do you reply on software center or you just dive into the terminal? Do share your preference in the comment section.
--------------------------------------------------------------------------------
via: https://itsfoss.com/synaptic-package-manager/
作者:[Abhishek Prakash][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/abhishek/
[b]: https://github.com/lujun9972
[1]: https://www.nongnu.org/synaptic/
[2]: https://en.wikipedia.org/wiki/APT_(software)
[3]: https://itsfoss.com/apt-get-linux-guide/
[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/synaptic-interface.png?ssl=1
[5]: https://wiki.gnome.org/Apps/Software
[6]: https://userbase.kde.org/Discover
[7]: https://itsfoss.com/lightweight-alternative-applications-ubuntu/
[8]: https://itsfoss.com/apt-command-guide/
[9]: https://itsfoss.com/prevent-package-update-ubuntu/
[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/lock-version-synaptic.png?ssl=1
[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/synaptic-ubuntu-software-center.png?ssl=1
[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/synaptic-package-manager-ubuntu.jpg?ssl=1
[13]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/install-packages-in-synaptic.png?ssl=1
[14]: https://itsfoss.com/list-installed-packages-ubuntu/
[15]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/remove-packages-using-synaptic.png?ssl=1
[16]: https://itsfoss.com/ppa-guide/
[17]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/see-packages-by-repositories-synaptic.png?ssl=1
[18]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/upgrade-packages-synaptic.png?ssl=1
[19]: https://itsfoss.com/apt-search-command/
[20]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/search-results-synaptic.png?ssl=1
[21]: https://itsfoss.com/app-grid-lighter-alternative-ubuntu-software-center/

View File

@ -1,132 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Import functions and variables into Bash with the source command)
[#]: via: (https://opensource.com/article/20/6/bash-source-command)
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
Import functions and variables into Bash with the source command
======
Source is like a Python import or a Java include. Learn it to expand
your Bash prowess.
![bash logo on green background][1]
When you log into a Linux shell, you inherit a specific working environment. An _environment_, in the context of a shell, means that there are certain variables already set for you, which ensures your commands work as intended. For instance, the [PATH][2] environment variable defines where your shell looks for commands. Without it, nearly everything you try to do in Bash would fail with a **command not found** error. Your environment, while mostly invisible to you as you go about your everyday tasks, is vitally important.
There are many ways to affect your shell environment. You can make modifications in configuration files, such as `~/.bashrc` and `~/.profile`, you can run services at startup, and you can create your own custom commands or script your own [Bash functions][3].
### Add to your environment with source
Bash (along with some other shells) has a built-in command called `source`. And here's where it can get confusing: `source` performs the same function as the command `.` (yes, that's but a single dot), and it's _not_ the same `source` as the `Tcl` command (which may come up on your screen if you type `man source`). The built-in `source` command isn't in your `PATH` at all, in fact. It's a command that comes included as a part of Bash, and to get further information about it, you can type `help source`.
The `.` command is [POSIX][4]-compliant. The `source` command is not defined by POSIX but is interchangeable with the `.` command.
According to Bash `help`, the `source` command executes a file in your current shell. The clause "in your current shell" is significant, because it means it doesn't launch a sub-shell; therefore, whatever you execute with `source` happens within and affects your _current_ environment.
Before exploring how `source` can affect your environment, try `source` on a test file to ensure that it executes code as expected. First, create a simple Bash script and save it as a file called `hello.sh`:
```
#!/usr/bin/env bash
echo "hello world"
```
Using `source`, you can run this script even without setting the executable bit:
```
$ source hello.sh
hello world
```
You can also use the built-in`.` command for the same results:
```
$ . hello.sh
hello world
```
The `source` and `.` commands successfully execute the contents of the test file.
### Set variables and import functions
You can use `source` to "import" a file into your shell environment, just as you might use the `include` keyword in C or C++ to reference a library or the `import` keyword in Python to bring in a module. This is one of the most common uses for `source`, and it's a common default inclusion in `.bashrc` files to `source` a file called `.bash_aliases` so that any custom aliases you define get imported into your environment when you log in.
Here's an example of importing a Bash function. First, create a function in a file called `myfunctions`. This prints your public IP address and your local IP address:
```
function myip() {
        curl <http://icanhazip.com>      
        ip addr | grep inet$IP | \
        cut -d"/" -f 1 | \
        grep -v 127\\.0 | \
        grep -v \:\:1 | \
        awk '{$1=$1};1'
}
```
Import the function into your shell:
```
`$ source myfunctions`
```
Test your new function:
```
$ myip
93.184.216.34
inet 192.168.0.23
inet6 fbd4:e85f:49c:2121:ce12:ef79:0e77:59d1
inet 10.8.42.38
```
### Search for source
When you use `source` in Bash, it searches your current directory for the file you reference. This doesn't happen in all shells, so check your documentation if you're not using Bash.
If Bash can't find the file to execute, it searches your `PATH` instead. Again, this isn't the default for all shells, so check your documentation if you're not using Bash.
These are both nice convenience features in Bash. This behavior is surprisingly powerful because it allows you to store common functions in a centralized location on your drive and then treat your environment like an integrated development environment (IDE). You don't have to worry about where your functions are stored, because you know they're in your local equivalent of `/usr/include`, so no matter where you are when you source them, Bash finds them.
For instance, you could create a directory called `~/.local/include` as a storage area for common functions and then put this block of code into your `.bashrc` file:
```
for i in $HOME/.local/include/*;
  do source $i
done
```
This "imports" any file containing custom functions in `~/.local/include` into your shell environment.
Bash is the only shell that searches both the current directory and your `PATH` when you use either the `source` or the `.` command.
### Using source for open source
Using `source` or `.` to execute files can be a convenient way to affect your environment while keeping your alterations modular. The next time you're thinking of copying and pasting big blocks of code into your `.bashrc` file, consider placing related functions or groups of aliases into dedicated files, and then use `source` to ingest them.
--------------------------------------------------------------------------------
via: https://opensource.com/article/20/6/bash-source-command
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bash_command_line.png?itok=k4z94W2U (bash logo on green background)
[2]: https://opensource.com/article/17/6/set-path-linux
[3]: https://opensource.com/article/20/6/how-write-functions-bash
[4]: https://opensource.com/article/19/7/what-posix-richard-stallman-explains

View File

@ -1,114 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (How to dump the GOSSAFUNC graph for a method)
[#]: via: (https://dave.cheney.net/2020/06/19/how-to-dump-the-gossafunc-graph-for-a-method)
[#]: author: (Dave Cheney https://dave.cheney.net/author/davecheney)
How to dump the GOSSAFUNC graph for a method
======
The Go compilers SSA backend contains a facility to produce HTML debugging output of the compilation phases. This post covers how to print the SSA output for function _and_ methods.
Lets start with a sample program which contains a function, a value method, and a pointer method:
```
package main
import (
"fmt"
)
type Numbers struct {
vals []int
}
func (n *Numbers) Add(v int) {
n.vals = append(n.vals, v)
}
func (n Numbers) Average() float64 {
sum := 0.0
for _, num := range n.vals {
sum += float64(num)
}
return sum / float64(len(n.vals))
}
func main() {
var numbers Numbers
numbers.Add(200)
numbers.Add(43)
numbers.Add(-6)
fmt.Println(numbers.Average())
}
```
Control of the SSA debugging output is via the `GOSSAFUNC` environment variable. This variable takes the name of the function to dump. This is _not_ the functions fully qualified name. For `func main` above the name of the function is `main` _not_ `main.main`.
```
% env GOSSAFUNC=main go build
runtime
dumped SSA to ../../go/src/runtime/ssa.html
t
dumped SSA to ./ssa.html
```
In this example `GOSSAFUNC=main` matched both `main.main` and a function called `runtime.main`.[1][1] This is a little unfortunate, but in practice probably not a big deal as, if youre performance tuning your code, it wont be in a giant spaghetti blob in `func main`.
What is more likely is your code will be in a _method_, so youve probably landed on this post looking for the correct incantation to dump the SSA output for a method.
To print the SSA debug for the pointer method `func (n *Numbers) Add`, the equivalent function name is`(*Numbers).Add`:[2][2]
```
% env "GOSSAFUNC=(*Numbers).Add" go build
t
dumped SSA to ./ssa.html
```
To print the SSA debug for a value method `func (n Numbers) Average`, the equivalent function name is `(*Numbers).Average` _even though this is a value method_:
```
% env "GOSSAFUNC=(*Numbers).Average" go build
t
dumped SSA to ./ssa.html
```
1. If you didnt build Go from source then the path to the `runtime` package may be read only and you might receive an error. Please dont use the `sudo` hammer to fix this.[][3]
2. Please pay attention to the shell quoting.[][4]
### Related posts:
1. [Accidental method value][5]
2. [Never edit a method, always rewrite it][6]
3. [How to find out which Go version built your binary][7]
4. [Declaration scopes in Go][8]
--------------------------------------------------------------------------------
via: https://dave.cheney.net/2020/06/19/how-to-dump-the-gossafunc-graph-for-a-method
作者:[Dave Cheney][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://dave.cheney.net/author/davecheney
[b]: https://github.com/lujun9972
[1]: tmp.kLSHpQXzhr#easy-footnote-bottom-1-4188 (If you didnt build Go from source then the path to the <code>runtime</code> package may be read only and you might receive an error. Please dont use the <code>sudo</code> hammer to fix this.)
[2]: tmp.kLSHpQXzhr#easy-footnote-bottom-2-4188 (Please pay attention to the shell quoting.)
[3]: tmp.kLSHpQXzhr#easy-footnote-1-4188
[4]: tmp.kLSHpQXzhr#easy-footnote-2-4188
[5]: https://dave.cheney.net/2014/05/19/accidental-method-value (Accidental method value)
[6]: https://dave.cheney.net/2017/11/30/never-edit-a-method-always-rewrite-it (Never edit a method, always rewrite it)
[7]: https://dave.cheney.net/2017/06/20/how-to-find-out-which-go-version-built-your-binary (How to find out which Go version built your binary)
[8]: https://dave.cheney.net/2016/12/15/declaration-scopes-in-go (Declaration scopes in Go)

View File

@ -1,5 +1,5 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: translator: (robsean)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )

View File

@ -0,0 +1,139 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (7 open source alternatives to VS Code)
[#]: via: (https://opensource.com/article/20/6/open-source-alternatives-vs-code)
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
7 open source alternatives to VS Code
======
Avoid Microsoft's proprietary VS Code build and opt for an open source
code editor instead.
![Person using a laptop][1]
Visual Studio Code, also known as VS Code, is a code editor for Linux, Windows, and macOS. It's the kind of editor that walks the line between editing text and managing your entire codebase, like an integrated development environment (IDE). It's extensible through plugins and has proven to be a reliable text editor that's easily beaten out formidable non-open rival editors.
Microsoft released VS Code as open source, but the version you download from Microsoft is not open source. However, you have several options for using VS Code as open source or selecting one of its open source alternatives.
### Building VS Code as open source
VS Code's source code is available [on GitHub][2]. Yet when you download the VS Code application [from Microsoft][3], you'll find that your download is licensed under the [Microsoft Software License][4]. This isn't an open source license. The difference is in the build process.
Chris Dias, a Microsoft developer on the VS Code project, [makes a comparison][5] between VS Code and, for instance, the Chrome browser and its open source "upstream" project, [Chromium][6]. VS Code is indeed built upon an open source codebase. The official Microsoft-branded release is customized with Microsoft-specific functionality, including a trademark, an extensions gallery, a proprietary C# debugger, and telemetry. But when you clone and build the code yourself, none of these targets is configured, so you generate a "clean" version, which is called Code - OSS (OSS stands for open source software).
In practice, the differences between VS Code and Code - OSS are minimal. Most notably, VS Code includes telemetry, which is tracking software. It's unlikely that Microsoft is literally tracking your every move, and there's lots of software out there these days that gathers usage data. Whether or not you care about VS Code's telemetry is up to you. If you'd rather do without the usage tracking, here are some great (and open source) alternatives to VS Code.
### VSCodium
![Code OSS screenshot][7]
(Seth Kenlon, [CC BY-SA 4.0][8])
The easiest alternative to VS Code is VS Code itself, built without Microsoft's proprietary additions. The [VSCodium][9] project provides downloadable executables of Code - OSS, built from the VS Code codebase without Microsoft's `product.json` changes. The VSCodium developers also go to great length to deactivate all hard-to-find telemetry options, delivering the cleanest build of VS Code's source you can find without building it yourself.
VSCodium cautions that VS Code quietly includes some proprietary tools that cannot be shipped with an open source build. This includes a C# debugger and some gallery extensions. If you need them, there are [documented workarounds][10] for these issues, but if you rely on something very specific in VS Code, you should verify that it functions in VSCodium.
You should also verify that all [telemetry is deactivated][11].
### Code - OSS
If you don't want to use VSCodium's build, you can [compile VS Code from source][12] yourself and end up with the same thing. The executable is called `Code - OSS` rather than `VSCode`, and the license restrictions that apply to VSCodium also apply to your build, but so do the workarounds.
If you build the application from source, you should verify that all [telemetry is deactivated][11] when you first launch it.
### Atom
![Atom screenshot][13]
(Seth Kenlon, [CC BY-SA 4.0][8])
[Atom][14] is an open source IDE-like text editor that Microsoft acquired when it purchased GitHub. Like VS Code, you can extend the Atom editor with plugins and customize it with themes and your unique combination of tools. It is also cross-platform and has built-in GitHub integration. In short, Atom is potentially whatever you need it to be, so long as the extensions you need already exist or you're willing to write them.
Also like VS Code, Atom includes [metrics tracking by default][15]. This can be disabled, and unlike VS Code, there are no arbitrary restrictions on extensions, so you don't have to change up your workflow in exchange for your privacy. Atom is certainly a useful tool for coders, but it's also a pretty great editor for [anyone who uses a computer][16]. If you're looking for a good general-purpose text editor, give Atom a try.
### GNOME Builder
![GNOME Builder screenshot][17]
(Seth Kenlon, [CC BY-SA 4.0][8])
Developed as an IDE for the GNOME desktop, [GNOME Builder][18] is a code editor for Linux, specifically for building GNOME applications. If you're building applications for Linux and want an easy avenue to compatibility, Builder is the easy choice. Install Builder from [Flathub.org][19]; when you start a project, it'll even prompt you to install the GNOME SDK if you're missing it. This means you don't have to consciously track GNOME as you maintain your application because Builder does it for you.
However, you can use Builder for much more than just GNOME applications. It supports dozens of programming languages, including Python, Rust, C and C++, Java, Go, JavaScript, TypeScript, VB.NET, several markup and Markdown languages, and more. Some of these have full support with autocompletion and pop-up function definitions, while others only have simple conveniences such as syntax highlighting and auto-bracket matching. The IDE is a pleasure to work with, though, whether you consider yourself a serious programmer or you're just in need of a good HTML and CSS editor.
### Geany
![Geany screenshot][20]
(Seth Kenlon, [CC BY-SA 4.0][8])
[Geany][21] is a powerful, stable, and lightweight editor with useful features to help you write good Bash, Python, Lua, XML, HTML, LaTeX, and more. There's plenty of support for 50 different programming and scripting languages, markup languages, and miscellaneous filetypes (such as .diff and .po). At the very least, Geany almost certainly provides bracket matching and syntax highlighting—and it usually offers quite a lot more.
Geany is a modest little editor, but through plugins, you can add features such as a panel for a project view, filesystem tree, debugging, a terminal, and so on until it looks and acts like an IDE. Or, if you prefer, you can keep it simple and understated. If you can't run VS Code on a computer due to limitations in CPU or RAM, Geany is the obvious alternative. It's quick to launch, and its memory footprint is negligible. While Geany is a little heftier than running Vim in a terminal, it's fast and snappy even on a Raspberry Pi.
### Brackets
![Brackets screenshot][22]
(Seth Kenlon, [CC BY-SA 4.0][8])
[Brackets][23] is a text editor and IDE aimed at web developers. It has strong support for HTML, CSS, JavaScript, PHP, and even Python. However, like VS Code, it has a rich ecosystem of extensions, so you can expand it to serve as your workbench for whatever language you work in the most.
There are extensions to help parse languages, to run scripts, and even to compile and execute code. Brackets has a traditional interface anyone can understand, whether or not you're familiar with an IDE or even a text editor beyond a simple notepad. If you spend a little time adding relevant extensions and getting to know them, you'll find Brackets a useful and subtle editor that helps you, through autocompletion and linting, avoid silly mistakes in whatever you're typing. And if you're writing code, it'll probably make your testing and debugging workflow faster.
### Che
![Che screenshot][24]
(Seth Kenlon, [CC BY-SA 4.0][8])
If you enjoy living on the cutting edge, [Che][25] is an editor you need to try. It's a cloud-based IDE, so it runs by default as a Software as a Service (SaaS), but it's entirely open source, so it can be run as _your own_ SaaS, provided you have a Kubernetes instance.
More than just being an online IDE, though, Che is an IDE built for cloud development. It makes no assumptions that you expect or want a view of your local filesystem. It lives and works in the cloud, so you can too. In fact, if you have a Git server, you can treat it as your filesystem and work on a project directly from its repository. Of course, you can also download any work you do, if you like to have a local backup copy.
But its main feature, and the one cloud developers are excited about, is that Che is a full-featured, Kubernetes-aware, open source IDE. If you're building apps, sites, or containers (or a combination of the three) for the cloud, then Che is an editor you need to try.
### What's your choice?
Are you using one of these alternatives to VS Code? Is there one you would like to try? Please share your feedback in the comments.
--------------------------------------------------------------------------------
via: https://opensource.com/article/20/6/open-source-alternatives-vs-code
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/laptop_screen_desk_work_chat_text.png?itok=UXqIDRDD (Person using a laptop)
[2]: https://github.com/microsoft/vscode
[3]: https://code.visualstudio.com/
[4]: https://code.visualstudio.com/license
[5]: https://github.com/Microsoft/vscode/issues/60#issuecomment-161792005
[6]: https://www.chromium.org/
[7]: https://opensource.com/sites/default/files/uploads/code-oss.png (Code OSS screenshot)
[8]: https://creativecommons.org/licenses/by-sa/4.0/
[9]: https://vscodium.com/
[10]: https://github.com/VSCodium/vscodium/blob/master/DOCS.md
[11]: https://code.visualstudio.com/docs/supporting/faq#_how-to-disable-telemetry-reporting
[12]: https://github.com/Microsoft/vscode/wiki/How-to-Contribute#build-and-run
[13]: https://opensource.com/sites/default/files/uploads/atom.jpg (Atom screenshot)
[14]: http://atom.io
[15]: https://discuss.atom.io/t/how-do-i-disable-the-metrics-or-tracking/24520
[16]: https://opensource.com/article/19/4/write-git
[17]: https://opensource.com/sites/default/files/uploads/builder.png (GNOME Builder screenshot)
[18]: https://wiki.gnome.org/Apps/Builder
[19]: https://flathub.org/apps/details/org.gnome.Builder
[20]: https://opensource.com/sites/default/files/uploads/geany.png (Geany screenshot)
[21]: https://www.geany.org/
[22]: https://opensource.com/sites/default/files/uploads/brackets.jpg (Brackets screenshot)
[23]: http://brackets.io/
[24]: https://opensource.com/sites/default/files/uploads/che-cpp.jpg (Che screenshot)
[25]: https://www.eclipse.org/che/extend/

View File

@ -0,0 +1,125 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Linux tools for improving your time management)
[#]: via: (https://opensource.com/article/20/6/linux-time-management)
[#]: author: (Sudeshna Sur https://opensource.com/users/sudeshna-sur)
Linux tools for improving your time management
======
Whether you need help to stay focused, maintain timeliness, or find
shortcuts to avoid repetition, these Linux tools have you covered.
![Business woman on laptop sitting in front of window][1]
Productivity is a subjective term, but essentially, it's a measurement of how efficiently a particular task is completed. Everyone has different things that keep them productive—some people need help staying on task, some people need a particular kind of work environment, some people need alerts and reminders to avoid missed deadlines, and some need assistance with repetitive, manual chores. Luckily, there are myriad tools and technologies available to provide you the specific support you need. In particular, if you are a Linux user, there are some tweaks that can help you increase your productivity; here are two that I use on a regular basis.
### Clipboard Indicator
Are you someone who uses a lot of copy and paste functions between several documents in your day to day usage? If so, then [Clipboard Indicator][2] should become one of your go-to solutions. Install Clipboard Indicator as a GNOME extension to your Linux distribution. In my experience, it has a minimum performance impact on GNOME Shell—at least, less than other solutions I have tried.
This tool adds an indicator menu to the top panel and caches your clipboard history. You can set the history size, preview the number of characters you want to view. It shows notifications on copy and acts as a temporary space to store whatever you copy.
![Clipboard indicator menu on GNOME desktop][3]
The easiest way to install the extension and connector is to use your distro's package manager.
For Fedora, CentOs, or RHEL, use:
```
`$ sudo dnf install chrome-gnome-shell`
```
On Ubuntu or Debian, use `apt install` instead.
Once it's installed, go to <https://extensions.gnome.org/> and check your installed extensions.
If you use Firefox, use the Firefox browser add-on and install the `GNOME Shell integration`**.** You will see a small footprint icon in your Firefox toolbar, which will take you to the Extensions page. On that page, search for the Clipboard Indicator extension and toggle to enable it.
Now, follow the prompts to download the GNOME extension and activate it. You can check your `~/.local/share/gnome-shell/extensions` location to view the extension.
Voila! You'll see a new icon in the top-right corner of your GNOME desktop. Copy anything and experiment with its settings.
A quick installation via Git can also be performed by cloning the repo into your local `gnome-shell extensions` directory using the command:
```
`$ git clone https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator.git ~/.local/share/gnome-shell/extensions/clipboard-indicator@tudmotu.com`
```
Go to the GNOME Tweak tool and activate it from the Extensions screen.
### Pomodoro
![Using the pomodoro timer on GNOME][4]
The Pomodoro Technique is a time management philosophy that aims to provide the user with maximum focus. Each 25-minute work period is called a "pomodoro," (Italian for tomato); after each pomodoro, you take a five-minute break. Every four pomodoros, or 100 minutes, you then take a 15 to 20-minute break. If you have a large and varied to-do list, using the Pomodoro Technique can help you crank through projects faster by forcing you to adhere to strict timing.
The installation procedure can be managed through the GNOME Tweaks webpage (extensions.gnome.org) or through the command line. For the latter, choose your distribution of Linux along with the release version and install using the following command:
```
`$ sudo dnf install gnome-shell-extension-pomodoro`
```
or if you wish to build from source:
```
$ git clone -b gnome-3.34 <https://github.com/codito/gnome-pomodoro.git>
$ cd gnome-pomodoro
```
The source code has a number of dependencies, many of which are likely already installed. To make sure of it, install of the following.
```
`$ sudo dnf install autoconf-archive gettext vala vala-tools pkg-config desktop-file-utils glib2-devel gtk3-devel libappstream-glib-devel libappindicator-gtk3-devel libcanberra-devel libpeas-devel sqlite-devel gom-devel gobject-introspection-devel gsettings-desktop-schemas-devel gstreamer1-devel`
```
Inside unpacked directory of the source code, complete the build.
```
$ ./autogen.sh --prefix=/usr --datadir=/usr/share 
$ make 
$ sudo make install 
```
No matter how we install, go to GNOME Tweaks and turn on the pomodoro timer. If you don't already have GNOME Tweaks, installing it through your package manager or in your software installer of choice. For example, on Fedora:
```
`$ sudo dnf install gnome-tweaks`
```
On Ubuntu or Debian, use `apt install` instead.
Pomodoro desktop integration is currently available for GNOME Shell, and they plan to support more desktops in the future. Check out <https://gnomepomodoro.org/> for the latest on the project. For KDE users in the meantime, there is an alternative called [Fokus][5].
### Productivity on Linux
Productivity is personal, but it's something we all are after in one way or another. Each of these tools has either saved me time or made my working time more productive, and they're a quick integration with Linux.
Do you have a favorite productivity tool? Share it in the comments!
--------------------------------------------------------------------------------
via: https://opensource.com/article/20/6/linux-time-management
作者:[Sudeshna Sur][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/sudeshna-sur
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/lenovo-thinkpad-laptop-concentration-focus-windows-office.png?itok=-8E2ihcF (Woman using laptop concentrating)
[2]: https://extensions.gnome.org/extension/779/clipboard-indicator/
[3]: https://opensource.com/sites/default/files/uploads/gnome-tweaks-productivity_0.png (Clipboard indicator menu on GNOME desktop)
[4]: https://opensource.com/sites/default/files/uploads/pomodoro-timer-fedora-opensourcecom.png (Using the pomodoro timer on GNOME)
[5]: https://store.kde.org/p/1308861/

View File

@ -0,0 +1,122 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Manage your Kubernetes cluster with Lens)
[#]: via: (https://opensource.com/article/20/6/kubernetes-lens)
[#]: author: (Chris Collins https://opensource.com/users/clcollins)
Manage your Kubernetes cluster with Lens
======
Lens is a useful, attractive, open source user interface for working
with Kubernetes clusters.
![Ship captain sailing the Kubernetes seas][1]
As more workloads are migrated to containerized environments, it becomes challenging to manage those larger numbers of containers and the connections between them and other systems. As the scale and complexity of a containerized environment increase past a human's ability to manage, container orchestration platforms such as [Kubernetes][2] become increasingly important. Such platforms, however, come with their own management challenges that require metrics, observability, and a user-friendly interface to present their huge amount of complexity.
### Enter Lens
[Lens][3], which bills itself as "the Kubernetes IDE," is a useful, attractive, open source user interface (UI) for working with Kubernetes clusters. Out of the box, Lens can connect to Kubernetes clusters using your kubeconfig file and will display information about the cluster and the objects it contains. Lens can also connect to—or install—a Prometheus stack and use it to provide metrics about the cluster, including node information and health.
![Lens UI displaying an overview of workloads on the cluster][4]
An overview of workloads on the cluster. (Chris Collins, [CC BY-SA 4.0][5])
Like Kubernetes' dashboard and OpenShift, Lens provides live updates on the state of objects in the cluster and metrics collected by [Prometheus][6].
### Get started
Installing Lens is straightforward. [AppImage][7] packages are available for Linux, and there are binaries available for macOS and Windows clients. This tutorial explains how to download and use the Lens AppImage to install and use Lens on Linux.
According to [AppImage's FAQ][8], an AppImage is "a downloadable file for Linux that contains an application and everything the application needs to run." An application packaged as an AppImage is just that—a single executable file that can be downloaded and run.
The AppImage for Lens can be downloaded from the [Lens Releases][9] page on GitHub. After you download it, mark the file executable with `chmod`, and then either execute it directly or copy it to a place in your `$PATH`:
```
# Download the 3.4.0 AppImage for Lens, mark it executable and copy it to your $PATH
# (output omitted for brevity)
$ wget <https://github.com/lensapp/lens/releases/download/v3.4.0/Lens-3.4.0.AppImage>
$ chmod +x Lens-3.4.0.AppImage
$ sudo mv Lens-3.4.0.AppImage /usr/sbin/lens
```
Then you can start Lens by typing `lens` on the command line.
### Connect Lens to a Kubernetes cluster
Once you launch Lens, connect it to a Kubernetes cluster by clicking the **+** icon in the top-left corner and selecting a kubeconfig. Next, a drop-down box will appear containing any Kubernetes contexts from your `~/.kube/config` file, or you can select a custom one. Because cluster and authentication information about the cluster for any context is included in the kubeconfig file, Lens treats each context as a different cluster, unfortunately.
This is particularly unhelpful compared with how OpenShift creates context information in the kubeconfig file automatically for any project (namespace) you switch to. As a site-reliability engineer (SRE) working on hundreds of clusters, I had dozens and dozens of "clusters" to choose from when setting up Lens. In practice, I found it best to select the `default` context for any cluster. You can manage all namespaces and workloads once Lens has connected, and there's no need to add them all.
Once it's connected, Lens will display a ton of information about your cluster. You can see the workloads that are running: pods and deployments, daemon sets, cron jobs, etc. You can also view information about config maps and secrets, networking information, storage, namespaces, and events. Each will let you drill down into the information about a given object, and you can even edit the objects directly in Lens.
![Lens displaying details of pods running on the cluster, including information on a specific pod.][10]
Details of pods running on the cluster. (Chris Collins, [CC BY-SA 4.0][5])
### Gather metrics about your cluster
One of Lens' incredibly helpful features is its ability to connect to a Prometheus stack installed in your cluster to gather metrics about the cluster and its nodes for both current and historical data. This is great for getting at-a-glance information about the cluster right within the Lens UI without having to go to an external dashboard. However, the information presented is not comprehensiveit's good for an overview, but you may still wish to utilize a visualization tool such as Grafana with a more complicated dashboard to gather more specialized information.
Along with being able to connect to an existing Prometheus stack provisioned in the cluster, Lens can install applications on your behalf, too. This is very useful for enthusiasts running Kubernetes clusters in their homelabs to be able to deploy and connect to Prometheus in a single click.
### Install Prometheus with Lens
If you have been following along with this series, especially [_Build a Kubernetes cluster with the Raspberry Pi_][11], you will have a Kubernetes cluster provisioned in your homelab for education and tinkering. One thing the vanilla cluster lacks is metrics, and this is a great opportunity to add Prometheus to the cluster and install the [kube-state-metrics][12] service to gather information about the cluster.
To install it, just right-click on the cluster icon in the top-left corner of the Lens UI (after connecting to the cluster, of course) and select **Settings**. Under **Features** on the Settings page, you will find a **Metrics** section and a button to install Prometheus. Click **Install** to deploy the Prometheus stack to your cluster, and Lens will auto-detect its existence and begin displaying metrics. (It will take a minute—the new Prometheus has to collect some metrics first.)
I also appreciate that Lens links directly to the manifests used to deploy this stack, so you can verify what will be created before doing it, if you want.
![Lens UI, displaying hardware utilization metrics about the cluster][13]
Hardware utilization metrics about the cluster. (Chris Collins, [CC BY-SA 4.0][5])
### Fix kube-state-metrics
Unfortunately, while Prometheus will install just fine on a Raspberry Pi-based cluster, the kube-state-metrics service will fail. Currently, the kube-state-metrics project does not build an AArch64/ARM64 image, so pods created from that image will continuously crash with `exec format error` messages in the logs.
Luckily [this issue is being tracked][14], and the kube-state-metrics project is working toward building the infrastructure to produce official ARM images. Until then, however, you can use a community-developed image and patch the kube-state-metrics deployment directly using Lens.
Go back into the cluster information, click on **Workloads**, and select **Deployments**. A list of all the Kubernetes deployment objects in the cluster will appear in the pane on the right. You should be able to pick out the kube-state-metrics deployment easily by the angry red entry under the **Conditions** column that indicates the crash-looping pod issue.
Select the kube-state-metrics deployment, and details of the object will slide out from the right in an overlay window. In the upper-right corner of this window is a pencil icon. Clicking that icon opens an editor window with the YAML representation of the kube-state-metrics deployment. Scroll down, and edit the `.spec.template.spec.containers.image` value. By default, this value points to the official image: `quay.io/coreos/kube-state-metrics:v1.9.5`.
Replace this value with `'docker.io/carlosedp/kube-state-metrics:v1.9.5'`, and click **Save**. This will trigger the deployment to roll out new kube-state-metrics pods with an ARM64 architecture, and they should become ready and begin reporting the metrics directly to Prometheus.
### Lens lets you see clearly
Kubernetes is complex, and any tool that makes it easier to visualize and work with Kubernetes clusters can lower the barrier of entry for new folks and make life considerably easier for experienced Kubernetes administrators. Lens knocks this out of the park with an attractive, intuitive, and easy-to-use UI for managing one or more clusters, from the 10,000-foot view down into the nitty-gritty of individual Kubernetes objects. Lens also helps display metrics about the cluster and makes installing and using a Prometheus stack to display the metrics almost push-button.
I am extremely impressed with Lens and use it to manage several Kubernetes clusters in my own homelab, and I hope you find it useful as well. Do you have tools you like for managing or visualizing what goes on in your Kubernetes clusters? Share them in the comments, so we can all try them out!
--------------------------------------------------------------------------------
via: https://opensource.com/article/20/6/kubernetes-lens
作者:[Chris Collins][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/clcollins
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/ship_captain_devops_kubernetes_steer.png?itok=LAHfIpek (Ship captain sailing the Kubernetes seas)
[2]: https://opensource.com/resources/what-is-kubernetes
[3]: https://k8slens.dev/
[4]: https://opensource.com/sites/default/files/uploads/lens2.png (Lens UI displaying an overview of workloads on the cluster)
[5]: https://creativecommons.org/licenses/by-sa/4.0/
[6]: https://opensource.com/sitewide-search?search_api_views_fulltext=prometheus
[7]: https://opensource.com/article/20/6/appimages
[8]: https://docs.appimage.org/user-guide/faq.html#question-what-is-an-appimage
[9]: https://github.com/lensapp/lens/releases/latest
[10]: https://opensource.com/sites/default/files/uploads/lens3.png (Lens displaying details of pods running on the cluster, including information on a specific pod.)
[11]: https://opensource.com/article/20/6/kubernetes-raspberry-pi
[12]: https://github.com/kubernetes/kube-state-metrics
[13]: https://opensource.com/sites/default/files/uploads/lens1.png (Lens UI, displaying hardware utilization metrics about the cluster)
[14]: https://github.com/kubernetes/kube-state-metrics/issues/1037

View File

@ -1,5 +1,5 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )

View File

@ -0,0 +1,347 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Protect your system with fail2ban and firewalld blacklists)
[#]: via: (https://fedoramagazine.org/protect-your-system-with-fail2ban-and-firewalld-blacklists/)
[#]: author: (hobbes1069 https://fedoramagazine.org/author/hobbes1069/)
Protect your system with fail2ban and firewalld blacklists
======
![][1]
If you run a server with a public-facing SSH access, you might have experienced malicious login attempts. This article shows how to use two utilities to keep the intruder out of our systems.
To protect against repeated ssh login attempts, well look at _fail2ban_. And if you dont travel much, and perhaps stay in one or two countries, you can configure _firewalld_ to only [allow access from the countries you choose][2].
First lets work through a little terminology for those not familiar with the various applications well need to make this work:
**fail2ban:** Daemon to ban hosts that cause multiple authentication errors.
fail2ban will monitor the SystemD journal to look for failed authentication attempts for whichever jails have been enabled. After the number of failed attempts specified it will add a firewall rule to block that specific IP address for an amount of time configured.
**firewalld:** A firewall daemon with D-Bus interface providing a dynamic firewall.
Unless youve manually decided to use traditional iptables, youre already using firewalld on all supported releases of Fedora and CentOS.
### Assumptions
* The host system has an internet connection and is either fully exposed directly, through a DMZ (both REALLY bad ideas unless you know what youre doing), or has a port being forwarded to it from a router.
* While most of this might apply to other systems, this article assumes a current version of Fedora (31 and up) or RHEL/CentOS 8. On CentOS you must enable the Fedora EPEL repo with sudo dnf install epel-release
### Install &amp; Configuration
#### Fail2Ban
More than likely whichever FirewallD zone is set already allows SSH access but the sshd service itself is not enabled by default. To start it manually and without permanently enabling on boot:
```
$ sudo systemctl start sshd
```
Or to start and enable on boot:
```
$ sudo systemctl enable --now sshd
```
The next step is to install, configure, and enable fail2ban. As usual the install can be done from the command line:
```
$ sudo dnf install fail2ban
```
Once installed the next step is to configure a jail (a service you want to monitor and ban at whatever thresholds youve set). By default IPs are banned for 1 hour (which is not near long enough). The best practice is to override the system defaults using *.local files instead of directly modifying the *.config files. If we look at my jail.local we see:
```
# cat /etc/fail2ban/jail.local
[DEFAULT]
# "bantime" is the number of seconds that a host is banned.
bantime = 1d
# A host is banned if it has generated "maxretry" during the last "findtime"
findtime = 1h
# "maxretry" is the number of failures before a host get banned.
maxretry = 5
```
Turning this into plain language, after 5 attempts within the last hour the IP will be blocked for 1 day. Theres also options for increasing the ban time for IPs that get banned multiple times, but thats the subject for another article.
The next step is to configure a jail. In this tutorial sshd is shown but the steps are more or less the same for other services. Create a configuration file inside _/etc/fail2ban/jail.d_. Heres mine:
```
# cat /etc/fail2ban/jail.d/sshd.local
[sshd]
enabled = true
```
Its that simple! A lot of the configuration is already handled within the package built for Fedora (Hint: Im the current maintainer). Next enable and start the fail2ban service.
```
$ sudo systemctl enable --now fail2ban
```
Hopefully there were not any immediate errors, if not, check the status of fail2ban using the following command:
```
$ sudo systemctl status fail2ban
```
If it started without errors it should look something like this:
```
$ systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2020-06-16 07:57:40 CDT; 5s ago
Docs: man:fail2ban(1)
Process: 11230 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
Main PID: 11235 (f2b/server)
Tasks: 5 (limit: 4630)
Memory: 12.7M
CPU: 109ms
CGroup: /system.slice/fail2ban.service
└─11235 /usr/bin/python3 -s /usr/bin/fail2ban-server -xf start
Jun 16 07:57:40 localhost.localdomain systemd[1]: Starting Fail2Ban Service…
Jun 16 07:57:40 localhost.localdomain systemd[1]: Started Fail2Ban Service.
Jun 16 07:57:41 localhost.localdomain fail2ban-server[11235]: Server ready
```
If recently started, fail2ban is unlikely to show anything interesting going on just yet but to check the status of fail2ban and make sure the jail is enabled enter:
```
$ sudo fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd
```
And the high level status of the sshd jail is shown. If multiple jails were enabled they would show up here.
To check the detailed status a jail, just add the jail to the previous command. Heres the output from my system which has been running for a while. I have removed the banned IPs from the output:
```
$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 8
| |- Total failed: 4399
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 101
|- Total banned: 684
`- Banned IP list: ...
```
Monitoring the fail2ban log file for intrusion attempts can be achieved by “tailing” the log:
```
$ sudo tail -f /var/log/fail2ban.log
```
Tail is a nice little command line utility which by default shows the last 10 lines of a file. Adding the “-f” tells it to follow the file which is a great way to watch a file thats still being written to.
Since the output has real IPs in it, a sample wont be provided but its pretty human readable. The INFO lines will usually be attempts at a login. If enough attempts are made from a specific IP address you will see a NOTICE line showing an IP address was banned. After the ban time has been reached you will see an NOTICE unban line.
Lookout for several WARNING lines. Most often this happens when a ban is added but fail2ban finds the IP address already in its ban database, which means banning may not be working correctly. If recently installed the fail2ban package it should be setup for FirewallD rich rules. The package was only switched from “ipset” to “rich rules” as of _fail2ban-0.11.1-6_ so if you have an older install of fail2ban it may still be trying to use the ipset method which utilizes legacy iptables and is not very reliable.
#### FirewallD Configuration
##### Reactive or Proactive?
There are two strategies that can be used either separately or together. Reactive or proactive permanent blacklisting of individual IP address or subnets based on country of origin.
For the reactive approach once fail2ban has been running for a while its a good idea to take a look at how “bad is bad” by running _sudo fail2ban-client status sshd_ again. There most likely will be many banned IP addresses. Just pick one and try running _whois_ on it. There can be quite a bit of interesting information in the output but for this method, only the country of origin is of importance. To keep things simple, lets filter out everything but the country.
For this example a few well known domain names will be used:
```
$ whois google.com | grep -i country
Registrant Country: US
Admin Country: US
Tech Country: US
```
```
$ whois rpmfusion.org | grep -i country
Registrant Country: FR
```
```
$ whois aliexpress.com | grep -i country
Registrant Country: CN
```
The reason for the _grep -i_ is to make grep non-case sensitive while most entries use “Country”, some are in all lower case so this method matches regardless.
Now that the country of origin of an intrusion attempt is known the question is, “Does anyone from that country have a legitimate reason to connect to this computer?” If the answer is NO, then it should be acceptable to block the entire country.
Functionally the proactive approach it not very different from the reactive approach, however, there are countries from which intrusion attempts are very common. If the system neither resides in one of those countries, nor has any customers originating from them, then why not add them to the blacklist now rather than waiting?
##### Blacklisting Script and Configuration
So how do you do that? With FirewallD ipsets. I developed the following script to automate the process as much as possible:
```
#!/bin/bash
# Based on the below article
# https://www.linode.com/community/questions/11143/top-tip-firewalld-and-ipset-country-blacklist
# Source the blacklisted countries from the configuration file
. /etc/blacklist-by-country
# Create a temporary working directory
ipdeny_tmp_dir=$(mktemp -d -t blacklist-XXXXXXXXXX)
pushd $ipdeny_tmp_dir
# Download the latest network addresses by country file
curl -LO http://www.ipdeny.com/ipblocks/data/countries/all-zones.tar.gz
tar xf all-zones.tar.gz
# For updates, remove the ipset blacklist and recreate
if firewall-cmd -q --zone=drop --query-source=ipset:blacklist; then
firewall-cmd -q --permanent --delete-ipset=blacklist
fi
# Create the ipset blacklist which accepts both IP addresses and networks
firewall-cmd -q --permanent --new-ipset=blacklist --type=hash:net \
--option=family=inet --option=hashsize=4096 --option=maxelem=200000 \
--set-description="An ipset list of networks or ips to be dropped."
# Add the address ranges by country per ipdeny.com to the blacklist
for country in $countries; do
firewall-cmd -q --permanent --ipset=blacklist \
--add-entries-from-file=./$country.zone && \
echo "Added $country to blacklist ipset."
done
# Block individual IPs if the configuration file exists and is not empty
if [ -s "/etc/blacklist-by-ip" ]; then
echo "Adding IPs blacklists."
firewall-cmd -q --permanent --ipset=blacklist \
--add-entries-from-file=/etc/blacklist-by-ip && \
echo "Added IPs to blacklist ipset."
fi
# Add the blacklist ipset to the drop zone if not already setup
if firewall-cmd -q --zone=drop --query-source=ipset:blacklist; then
echo "Blacklist already in firewalld drop zone."
else
echo "Adding ipset blacklist to firewalld drop zone."
firewall-cmd --permanent --zone=drop --add-source=ipset:blacklist
fi
firewall-cmd -q --reload
popd
rm -rf $ipdeny_tmp_dir
```
This should be installed to _/usr/local/sbin_ and dont forget to make it executable!
```
$ sudo chmod +x /usr/local/sbin/firewalld-blacklist
```
Then create a configure file: _/etc/blacklist-by-country_:
```
# Which countries should be blocked?
# Use the two letter designation separated by a space.
countries=""
```
And another configuration file _/etc/blacklist-by-ip_, which is just one IP per line without any additional formatting.
For this example 10 random countries were selected from the ipdeny zones:
```
# ls | shuf -n 10 | sed "s/\.zone//g" | tr '\n' ' '
nl ee ie pk is sv na om gp bn
```
Now as long as at least one country has been added to the config file its ready to run!
```
$ sudo firewalld-blacklist
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 142 100 142 0 0 1014 0 --:--:-- --:--:-- --:--:-- 1014
100 662k 100 662k 0 0 989k 0 --:--:-- --:--:-- --:--:-- 989k
Added nl to blacklist ipset.
Added ee to blacklist ipset.
Added ie to blacklist ipset.
Added pk to blacklist ipset.
Added is to blacklist ipset.
Added sv to blacklist ipset.
Added na to blacklist ipset.
Added om to blacklist ipset.
Added gp to blacklist ipset.
Added bn to blacklist ipset.
Adding ipset blacklist to firewalld drop zone.
success
```
To verify that the firewalld blacklist was successful, check the drop zone and blacklist ipset:
```
$ sudo firewall-cmd --info-zone=drop
drop (active)
target: DROP
icmp-block-inversion: no
interfaces:
sources: ipset:blacklist
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
$ sudo firewall-cmd --info-ipset=blacklist | less
blacklist
type: hash:net
options: family=inet hashsize=4096 maxelem=200000
entries:
```
The second command will output all of the subnets that were added based on the countries blocked and can be quite lengthy.
##### So now what do I do?
While it will be a good idea to monitor things more frequently at the beginning, over time the number of intrusion attempts should decline as the blacklist grows. Then the goal should be maintenance rather than active monitoring.
To this end I created a SystemD service file and timer so that on a monthly basis the by country subnets maintained by ipdeny are refreshed. In fact everything discussed here can be downloaded from my pagure.io project:
<https://pagure.io/firewalld-blacklist>
Arent you glad you read the whole article? Now just download the service file and timer to _/etc/systemd/system/_ and enable the timer:
```
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now firewalld-blacklist.timer
```
--------------------------------------------------------------------------------
via: https://fedoramagazine.org/protect-your-system-with-fail2ban-and-firewalld-blacklists/
作者:[hobbes1069][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://fedoramagazine.org/author/hobbes1069/
[b]: https://github.com/lujun9972
[1]: https://fedoramagazine.org/wp-content/uploads/2020/06/fail2ban-and-firewalld-816x345.png
[2]: https://www.linode.com/community/questions/11143/top-tip-firewalld-and-ipset-country-blacklist

View File

@ -0,0 +1,128 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Jitsi Meet: A Free & Open Source Video Conferencing Solution That is Also Free to Use Without Any Set Up)
[#]: via: (https://itsfoss.com/jitsi-meet/)
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
Jitsi Meet: A Free & Open Source Video Conferencing Solution That is Also Free to Use Without Any Set Up
======
_**Brief: Jitsi Meet is an open-source video conferencing service that you can use for free to organize online classes, conferences and meet ups. You can also host Jitsi on your own server**._
The remote work trend grew significantly amidst the COVID-19 pandemic. No matter whether you like it or not, video conferencing is proving to be a great solution for both individuals and businesses.
One of the video conferencing services that got insanely popular in last few months is Zoom. However, there are plenty of security and privacy concerns [about Zoom video calls][1].
So, its important to choose a secure and easy-to-use video conferencing app that gets the work done. Im sure there are numerous alternatives, but here — lets take a look at an open-source option [Jitsi Meet][2].
### Jitsi Meet: Free to Use, Open-Source Video Conferencing Service
![][3]
Jitsi Meet is a part of [Jitsi][4], which is a collection of open-source voice, video conferencing, and instant messaging services.
The Jitsi Meet allows you to host group video calls, i.e. video conferencing in seconds. You dont even need an account with them.
For desktop, it is browser-based and does not offer a native desktop app. I think thats not an issue because installing an app is probably an overhead for some.
And, for smartphones, it does offer both iOS and Android apps that you can install from the App Store and the Play Store respectively. In addition to these, you can also find it on the open source Android app store [F-Droid][5].
If you want to go the extra mile, you can deploy Jitsi Meet on your server. This is ideal for businesses who dont want to use a third-party server even if it is from the developers of the software.
### Features of Jitsi Meet
![][6]
Jitsi Meet is simple and yet feature-rich. Heres the set of features that youll get:
* Does not need user registration
* Edit documents together using Etherpad
* Gives you the ability to self-host
* Supports Slack and Rocket.chat integration
* Offers password protection if needed
* End-to-End encryption (beta)
* Background blur (beta)
* Recording option
* Live stream support
* YouTube video sharing
* View the network status of users
* Google and Microsoft Calendar Integration
* Chat feature
* Screen sharing
* Supports International dial-in connection to join
* The session exists for you to continue the video call later without needing the meeting code.
* Low-bandwidth mode option
![][7]
For obvious reasons, you will find fewer options on the mobile app.
Do note that [end-to-end encryption is still in beta][8]. But, even without it, Jitsi Meet should be a privacy-friendly and secure video conferencing solution.
On mobile, I just wish if it had the screen sharing option — except that, everything else works just fine.
### How To Use Jitsi Meet?
![][9]
Theres nothing extra that you need to do in order to make it work on Linux. You just need to head over to their [official Jitsi Meet instance][2] and then type in the name of the meeting to create or join.
As you can see in the screenshot above, you can also find a list of your recent meeting rooms so that you dont have to type or create the meeting room again.
![][10]
If youre creating it, its best to go with a unique name and also add a password protection to it if you do not need anyone else to join in accidentally.
![][11]
If youre joining someone elses meeting, simply ask for the meeting name or the link of the meeting to be able to easily join using your desktop or smartphone.
It works the same way on desktop minus some options. Ive been using it for a while and Ive also encouraged and trained my dads employer (our neighborhood school) to use Jitsi Meet to host online classes.
Even though it has a limit of up to 75 participants, it holds up pretty well and works perfectly fine.
[Jitsi Meet][12]
**Wrapping Up**
If youre looking to host your own Jitsi instance, I suggest you to follow their [official self-hosting guide][13] to get it up and running. You can also find a [list of instances on their GitHub page][14].
Jitsi Meet is an amazing open-source video conferencing application. Its a privacy-friendly alternative to Zoom and other video calling services of that kind.
I also suggest looking at [NextCloud, an open source alternative to MS Office 365][15].
What do you think about Jitsi Meet? Have you tried it yet? Whats your favorite video conferencing tool?
--------------------------------------------------------------------------------
via: https://itsfoss.com/jitsi-meet/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://www.tomsguide.com/news/zoom-security-privacy-woes
[2]: https://meet.jit.si/
[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/jitsi-meet-screenshot.png?ssl=1
[4]: https://jitsi.org/
[5]: https://f-droid.org/en/packages/org.jitsi.meet/
[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/jitsi-meet-smartphones.jpg?ssl=1
[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/jitsi-options-desktop.png?ssl=1
[8]: https://jitsi.org/blog/e2ee/
[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/jitsi-meet-use.resized.png?ssl=1
[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/jitsi-meet-browser-screenshot.png?ssl=1
[11]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/jitsi-meet-password.png?ssl=1
[12]: https://meet.jit.si
[13]: https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart
[14]: https://github.com/jitsi/jitsi-meet/wiki/Jitsi-Meet-Instances
[15]: https://itsfoss.com/nextcloud/

View File

@ -0,0 +1,281 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Make the switch from Mac to Linux easier with Homebrew)
[#]: via: (https://opensource.com/article/20/6/homebrew-linux)
[#]: author: (Matthew Broberg https://opensource.com/users/mbbroberg)
Make the switch from Mac to Linux easier with Homebrew
======
Whether you want to ease your migration from Mac to Linux or just don't
like the standard Linux package managers, give Homebrew a try.
![Digital images of a computer desktop][1]
The [Homebrew][2] project began its life as an unofficial Linux-style package manager for the Mac. Its users quickly fell in love with its friendly interface and helpful prompts, and—in what may seem like a strange twist of fate—it got ported to Linux.
At first, there were two separate projects for macOS and Linux (Homebrew and Linuxbrew), but now Homebrew's core manages both operating systems. Because I've been on a journey to [migrate from Mac to Linux][3], I have been looking at how my favorite open source applications for macOS perform on Linux, and I've been happy to find that Homebrew's support for Linux truly shines.
### Why Homebrew on Linux?
A reasonable first response to Homebrew from long-time Linux users is: "Why not just use…" where the next word is a package manager for their preferred version of Linux. Debian-based systems already have `apt`, Fedora-systems have `dnf` and `yum`, and projects like Flatpak and AppImage work to span the gap by running smoothly on both. I have spent a decent amount of time using all these technologies, and I have to say each one is powerful in its own right.
So why do I [stick with Homebrew][4]? First off, it's incredibly familiar to me. I'm already learning a lot as I transition to more open source alternatives for my past proprietary tools, and keeping something familiar—like Homebrew—helps me focus on learning one thing at a time instead of being overwhelmed by all the differences between operating systems.
Also, I have yet to see a package manager that is as kind to the user as Homebrew. Commands are well organized, as the default Help output shows:
```
$ brew -h
Example usage:
  brew search [TEXT|/REGEX/]
  brew info [FORMULA...]
  brew install FORMULA...
  brew update
  brew upgrade [FORMULA...]
  brew uninstall FORMULA...
  brew list [FORMULA...]
Troubleshooting:
  brew config
  brew doctor
  brew install --verbose --debug FORMULA
Contributing:
  brew create [URL [--no-fetch]]
  brew edit [FORMULA...]
Further help:
  brew commands
  brew help [COMMAND]
  man brew
  <https://docs.brew.sh>
```
This short output might be mistaken as a limitation, but a quick look inside any of the subcommands reveals a wealth of functionality. The list above is just 23 lines long, but the `install` subcommand has a whopping 79 lines of information available for the advanced user:
```
$ brew --help | wc -l
23
$ brew install --help | wc -l
79
```
It has options for ignoring or installing dependencies, choosing to build from source and with what compiler, and using exact upstream Git commits versus the official "bottled" version of the application. Suffice it to say, Homebrew is for experts and novices alike.
### Get started with Homebrew on Linux
If you want to give Homebrew a try, there is a great one-liner script to install it on Mac or Linux:
```
`$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"`
```
This command executes the Homebrew installer script immediately. If you are more cautious, you can `curl` the file, then run it manually after a review:
```
$ curl -fsSL <https://raw.githubusercontent.com/Homebrew/install/master/install.sh> \--output homebrew_installer.sh
$ more homebrew_installer.sh # review the script until you feel comfortable
$ bash homebrew_installer.sh
```
The Linux instructions include configurations for dotfiles, particularly `~/.profile` on Debian systems and `~/.bash_profile` on Fedora:
```
$ test -d /home/linuxbrew/.linuxbrew &amp;&amp; eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
$ test -r ~/.bash_profile &amp;&amp; echo "eval \$($(brew --prefix)/bin/brew shellenv)" &gt;&gt;~/.bash_profile
$ echo "eval \$($(brew --prefix)/bin/brew shellenv)" &gt;&gt;~/.profile
```
To confirm the installation, the Homebrew team provides an empty `hello` formula for testing:
```
$ brew install hello
==&gt; Downloading <https://linuxbrew.bintray.com/bottles/hello-2.10.x86\_64\_linux.bottle.tar.gz>
######################################################################## 100.0%
==&gt; Pouring hello-2.10.x86_64_linux.bottle.tar.gz
🍺  /home/linuxbrew/.linuxbrew/Cellar/hello/2.10: 52 files, 595.6KB
```
It looks like my installation is working without any issues, so I'll explore a little more.
### Brew for command-line utilities
Homebrew boasts of being an application that "installs the stuff you need that [Linux] didn't" by default.
You use the `brew` command to install any of the command-line utilities packaged up in Homebrew. These package definitions are called "formulae," and they are compiled and shared through "bottles." There is a host of other beer-oriented terminology in the Homebrew universe, but the package manager's main takeaway is to make software easily accessible.
What kind of software? Think about the things that come in handy for nerds like me (and, since you're reading this, probably you, too). For example, the handy `tree` command that shows directory structures or `pyenv`, which I use to [manage multiple versions of Python on a Mac][5].
You can see all formulae available using the `search` command, and adding the `wc` command shows how many are available:
```
# -l counts the number of lines
$ brew search | wc -l
    5087
```
There are over 5,000 formulae to date, which is an incredible amount of software. The caveat is that not every formula will run on Linux. There is a section in the output of `brew search --help` that shows flags to filter software by the operating system it runs on. It launches each operating system's repository list to a browser. I'm running Fedora, so I'll give it a try with:
```
`$ brew search --fedora tree`
```
The browser loads `https://apps.fedoraproject.org/packages/s/tree`, which shows the options available for Fedora. There are other ways to browse, as well. Formulae are codified and centralized into the core repositories that are split out by operating system (Mac in [Homebrew Core][6] and [Linux Core][7] for Linux bits). They are also available through the Homebrew API and [listed on the website][8].
Even with all these options, I still find most of my new tools through recommendations from other users. Here are some of my favorites, if you're looking for inspiration:
* `pyenv`, `rbenv`, and `nodenv` to manage Python, Ruby, and Node.js versions (respectively)
* `imagemagick` for scriptable image edits
* `pandoc` for scriptable document conversions (I often switch from .docx to .md or .html)
* `hub` for a [better Git experience][9] for GitHub users
* `tldr` for examples of how to use a command-line utility
To explore Homebrew, take a look at [tldr pages][10], which is a user-friendly alternative to scrolling through an application's man pages. Confirm it's available by running `search`:
```
$ brew search tldr
==&gt; Formulae
tldr ✔
```
Success! The checkmark lets you know it is available. Now you can install it:
```
$ brew install tldr
==&gt; Downloading <https://linuxbrew.bintray.com/bottles/tldr-1.3.0\_2.x86\_64\_linux.bottle.1.tar.gz>
######################################################################## 100.0%
==&gt; Pouring tldr-1.3.0_2.x86_64_linux.bottle.1.tar.gz
🍺  /home/linuxbrew/.linuxbrew/Cellar/tldr/1.3.0_2: 6 files, 63.2KB
```
Homebrew serves up prebuilt binaries, so you don't have to build from source code on your local machine. That saves a lot of time and CPU fan noise. Another thing I appreciate about Homebrew is that you can appreciate this feature without understanding exactly what it means. If you prefer to build it yourself, use the `-s` or `--build-from-source` flag with `brew install` to compile the formula from source (even if a bottle exists).
Similarly, the complexity under the hood can be interesting. Running `info` on `tldr` shows how dependency management happens, where the source code of the formula sits on disk, and even the public analytics are available:
```
$ brew info tldr
tldr: stable 1.3.0 (bottled), HEAD
Simplified and community-driven man pages
<https://tldr.sh/>
Conflicts with:
  tealdeer (because both install `tldr` binaries)
/home/linuxbrew/.linuxbrew/Cellar/tldr/1.3.0_2 (6 files, 63.2KB) *
  Poured from bottle on 2020-06-08 at 15:56:15
From: <https://github.com/Homebrew/linuxbrew-core/blob/master/Formula/tldr.rb>
==&gt; Dependencies
Build: pkg-config ✔
Required: libzip ✔, curl ✔
==&gt; Options
\--HEAD
        Install HEAD version
==&gt; Analytics
install: 197 (30 days), 647 (90 days), 1,546 (365 days)
install-on-request: 197 (30 days), 646 (90 days), 1,546 (365 days)
build-error: 0 (30 days)
```
### One limitation from Mac to Linux
On macOS, the Homebrew `cask` subcommand offers users a way to install and manage entire applications using the same great command-line utility. Unfortunately, `cask` does not yet work on any Linux distributions. I found this out while trying to install an open source tool:
```
$ brew cask install tusk
Error: Installing casks is supported only on macOS
```
I asked about it [on the forum][11] and got some quick feedback from other users. In short, the options are to:
* Fork the project, build the feature, and show others that it's worthwhile
* Write a formula for the application and build from source
* Create a third-party repository for the application
The last one is the most interesting to me. Homebrew manages third-party repositories by [creating and maintaining "taps"][12] (another beer-influenced term). Taps are worth exploring as you get more familiar with the system and want to add to the ecosystem.
### Backing up Homebrew installs
One of my favorite Homebrew features is how you can back up your installation just like any other [dotfile in version control][13]. For this process, Homebrew offers a `bundle` subcommand that holds a `dump` subcommand that generates a Brewfile. This file is a reusable list of all your currently installed tools. To generate a Brewfile from your installation, go into whichever folder you want to use and run:
```
$ cd ~/Development/dotfiles # This is my dotfile folder
$ brew bundle dump
$ ls Brewfile
Brewfile
```
When I change machines and want to set up the same applications on it, I go to the folder with the Brewfile and reinstall them with:
```
$ ls Brewfile
Brewfile
$ brew bundle
```
It will install all the listed formulae on my new machine. 
#### Brewfile management across Mac and Linux
The Brewfile is a great way to backup your existing installation, but what if something on Mac doesn't run on Linux or vice versa? What I have found is that Homebrew will gracefully ignore the lines that don't work on a given operating system, whether Mac or Linux. As it comes across incompatible requests (like asking brew to install casks on Linux), it skips them and continues on its way: 
```
$ brew bundle --file=Brewfile.example
Skipping cask licecap (on Linux)
Skipping cask macdown (on Linux)
Installing fish
Homebrew Bundle complete! 1 Brewfile dependency now installed.
```
To keep my configuration as simple as possible, I use the same Brewfile across both operating systems and haven't run into an issue since it installs the OS-specific version each time I run it.
### Homebrew for package management
Homebrew has been my go-to manager for command-line utilities, and its familiarity makes my Linux experience that much more enjoyable. Homebrew keeps me organized and up to date, and I continue to appreciate its balance between ease of use and depth of functionality. I prefer to keep package management details to the minimal amount of information a user needs to know, and most people will benefit from that. If you're already comfortable with Linux package managers, Homebrew may come off as simple, but looking a little deeper reveals its advanced options that go far beyond what's in this article.
There are a lot of package management options for Linux users. If you are coming from the world of macOS, Homebrew will feel like home.
--------------------------------------------------------------------------------
via: https://opensource.com/article/20/6/homebrew-linux
作者:[Matthew Broberg][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/mbbroberg
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_desk_home_laptop_browser.png?itok=Y3UVpY0l (Digital images of a computer desktop)
[2]: https://brew.sh/
[3]: https://opensource.com/article/19/10/why-switch-mac-linux
[4]: https://opensource.com/article/20/6/homebrew-mac
[5]: https://opensource.com/article/20/4/pyenv
[6]: https://github.com/Homebrew/homebrew-core
[7]: https://github.com/Homebrew/linuxbrew-core
[8]: https://formulae.brew.sh/formula/
[9]: https://opensource.com/article/20/3/github-hub
[10]: https://github.com/tldr-pages/tldr
[11]: https://discourse.brew.sh/t/add-linux-support-to-existing-cask/5766
[12]: https://docs.brew.sh/How-to-Create-and-Maintain-a-Tap
[13]: https://opensource.com/article/19/3/move-your-dotfiles-version-control

View File

@ -0,0 +1,106 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Take control of your data with associative arrays in Bash)
[#]: via: (https://opensource.com/article/20/6/associative-arrays-bash)
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
Take control of your data with associative arrays in Bash
======
Associative arrays let you create lists of key and value pairs, instead
of just numbered values.
![bash logo on green background][1]
If you've ever written code, whether it's a shell script, a Python script, C++, or even Scratch, then you know that variables are vital. Computers and coders use variables as waystations, where they surreptitiously pass information back and forth. For instance, if you need to process a user's name in a shell script, you might set up a variable, put the username into the variable, and then instruct the computer to do something to the variable (check it against a list of authorized users, for example). Variables are important because they enable code to by dynamic: they're placeholders for information that's expected to change every time you run the code.
But variables, because they're so common, can also become rather unwieldy. Often times, you gather so many variables in a code project that it's next to impossible to keep track of them all. You can use clever conventions, such as prefixing all related variables with a common string (user_name, user_pass, user_time, and so on), or you can create a master list of them somewhere for easy reference, but the overhead of keeping track of it all can becoming taxing.
One answer to this problem has, traditionally, been arrays. These have worked well in most coding languages, including shell scripting languages like Bash.
Most shells offer the ability to create, manipulate, and query indexed arrays. In plain English, an indexed array is a list of things prefixed with a number. This list of things, along with their assigned number, is conveniently wrapped up in a single variable, which makes it easy to "carry" around in your code.
[Bash][2], however, includes the ability to create associative arrays, and it treats these arrays the same as any other array. An associative array lets you create lists of key and value pairs, instead of just numbered values.
You can assign values to arbitrary keys:
```
$ declare -A userdata
$ userdata[name]=seth
$ userdata[pass]=8eab07eb620533b083f241ec4e6b9724
$ userdata[login]=`date --utc +%s`
```
Query any key:
```
$ echo "${userdata[name]}"
seth
$ echo "${userdata[login]}"
1583362192
```
Most of the usual array operations you'd expect from an array are available. For instance, you can list all values:
```
$ echo "${userdata[*]}"
8eab07eb620533b083f241ec4e6b9724 seth 1583362192
```
You can view the entire array:
```
$ typeset -A
declare -A BASH_ALIASES='()'
declare -A BASH_CMDS='()'
declare -A userdata='([pass]="8eab07eb620533b083f241ec4e6b9724"
[name]="seth"
[login]="1583362192" )'
```
You can also remove items from your array using the **unset** command:
```
$ unset userdata[pass]
$ typeset -A
[...]
declare -A userdata='([name]="seth"
[login]="1583362192" )'
```
Finally, you can dismiss the entire array.
```
`$ unset "userdata[*]"`
```
### Arrays for data
Arrays are useful tools for storing related data together. You can use a plain old variable in most cases, but sometimes it's more logical to store attributes of a singular data "object" in an array, to keep the data consolidated and indexed. For example, if you're processing login names and times taken from **utmp**, it would be more useful for you to _associate_ the login time with the user to whom the time referred, rather than just storing the two data objects as separate variables with no obvious connection.
Furthermore, unlike variables, an entry in an array doesn't need to exist before you store data in it. You don't have to know exactly how much data is going to get stored before you store it. That can be a big advantage if you're processing data that you can't control or predict: if you don't know how many users to expect in **utmp** one day to the next, it's hard to build a script to contain all the entries. With an array, though, all you have to do is declare one array and read data into it, creating a new key and value pair until you run out of data to ingest.
Arrays are powerful, and they're common in programming languages beyond Bash. Start using them now!
--------------------------------------------------------------------------------
via: https://opensource.com/article/20/6/associative-arrays-bash
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bash_command_line.png?itok=k4z94W2U (bash logo on green background)
[2]: https://opensource.com/resources/what-bash

View File

@ -0,0 +1,113 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (How to Disable Dock on Ubuntu 20.04 and Gain More Screen Space)
[#]: via: (https://itsfoss.com/disable-ubuntu-dock/)
[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)
How to Disable Dock on Ubuntu 20.04 and Gain More Screen Space
======
The launcher on the left side has become the identity of [Ubuntu][1] desktop. It was introduced with [Unity desktop][2] and even [when Ubuntu switched to GNOME][3], it forked Dash to Panel to create a similar dock on [GNOME][4] as well.
Personally, I find it handy for quickly accessing the frequently used applications. But not everyone wants it to take some extra space on the screen.
Starting with [Ubuntu 20.04][5], you can easily disable this dock. Let me show you how to do that graphically and via command line in this quick tutorial.
![][6]
### Disable Ubuntu dock with Extensions app
One of the [main features of Ubuntu 20.04][7] was the introduction of Extensions to manage GNOME extensions on your system. Just look for it in the GNOME menu (press Windows key and start typing):
![Look for Extensions app in the menu][8]
Dont have Extensions app?
If you dont have it installed already, you should enable GNOME Shell Extensions. The Extensions GUI app is part of this package.
```
sudo apt install gnome-shell-extensions
```
This is only valid for [GNOME 3.36][9] or higher version available in Ubuntu 20.04 and higher versions.
Start the extensions app and you should see Ubuntu Dock under the Built-in extensions section. You just have to toggle the button off to disable the dock.
![Disable Ubuntu Dock][10]
The change is immediate and youll see that dock disappears immediately.
You can bring it back the same way. Just toggle it on and it will appear immediately.
So easy to hide the dock in Ubuntu 20.04, isnt it?
### Alternative Method: Disable Ubuntu dock via command line
If you are a terminal enthusiast and prefer to do things in the terminal, I have good news for you. You can disable the Ubuntu dock from command line.
Open a terminal using Ctrl+Alt+T. You probably already know that [keyboard shortcut in Ubuntu][11].
In the terminal, use the following command to list all the available GNOME extensions:
```
gnome-extensions list
```
This will show you an output similar to this:
![List GNOME Extensions][12]
The default Ubuntu dock extension is [[email protected]][13] You can disable it using this command:
```
gnome-extensions disable [email protected]
```
There will be no output message displayed on the screen but youll notice that the launcher or dock disappears from the left side.
If you want, you can enable it again using the same command as above but with enable option this time:
```
gnome-extensions enable [email protected]
```
**Conclusion**
There are ways to disable the dock in Ubuntu 18.04 as well. However, it may lead to unwarranted situations if you try to remove it in 18.04. Removing this package also removes the ubuntu-desktop package and you may end up with a system with broken functionalities like no application menu.
This is the reason why I wont recommend removing it on Ubuntu 18.04.
Its good that Ubuntu 20.04 gives a way to hide the taskbar. Users have more freedom and more screen space. Speaking of more screen space, did you know that you can [remove the top title bar from Firefox and gain more screen space][14]?
I am wondering how do you prefer your Ubuntu desktop? With the dock, without dock or without GNOME?
--------------------------------------------------------------------------------
via: https://itsfoss.com/disable-ubuntu-dock/
作者:[Abhishek Prakash][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/abhishek/
[b]: https://github.com/lujun9972
[1]: https://ubuntu.com/
[2]: https://itsfoss.com/keeping-ubuntu-unity-alive/
[3]: https://itsfoss.com/ubuntu-unity-shutdown/
[4]: https://www.gnome.org/
[5]: https://itsfoss.com/download-ubuntu-20-04/
[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/disable-dock-in-ubuntu.png?ssl=1
[7]: https://itsfoss.com/ubuntu-20-04-release-features/
[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/GNOME-extensions-app-ubuntu.jpg?ssl=1
[9]: https://itsfoss.com/gnome-3-36-release/
[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/disable-ubuntu-dock.png?ssl=1
[11]: https://itsfoss.com/ubuntu-shortcuts/
[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/list-gnome-extensions.png?ssl=1
[13]: https://itsfoss.com/cdn-cgi/l/email-protection
[14]: https://itsfoss.com/remove-title-bar-firefox/

View File

@ -0,0 +1,63 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: (Yufei-Yan)
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (How IoT will rescue aviation)
[#]: via: (https://www.networkworld.com/article/3543318/how-iot-will-rescue-aviation.html)
[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/)
物联网IoT将如何拯救航空业
======
为防止感染新冠病毒的乘客登机欧洲飞机制造商空中客车Airbus公司正在研究能够识别病毒的物联网IoT传感器。
[Stéphan Valentin][1] [(CC0)][2]
一家开发用于探测飞机上爆炸物和其他化学物品的生化公司正在和空中客车Airbus合作一同开发一种可以检测已经感染新冠病毒乘客的传感器。
Koniku 的创始人兼首席执行管 Osh Agabi 在[一篇博文][3]中说,总部位于加州的 Konibu 公司和空中客车Airbus公司从 2017 年就开始合作共同开发能够探测出不同化学物质的非接触式设备
[[订阅网络世界Network World简报定期获得新的视野]][4]
他们希望通过识别从呼吸或者汗液中的气味来判断是否感染新冠病毒,因为这些气味可能是新冠病毒中化学物质的标记。“大多数感染和疾病都会或多或少的改变我们呼吸和汗液里的化学成分,也就会制造出不同的气味,” Agabi 写道。“如果我们检测到这些气味,我们就可以检测是否存在感染。”
这两家公司希望能够识别这种新冠病毒的特别标记并且能找到一种可以检测这些标记的物联网IoT传感器这些传感器配备有通过基因工程改造过的受体从而对病毒进行探测。“那些受体会过滤空气中的分子并且当他们和危险的分子化合物接触或者遇到已经提前编辑好的可能的威胁的时候就会产生一个信号”他写道。
他说,当乘客经过一个装有传感器的密闭通道的时候,他们会受到检测。“通过对构成这些受体的细胞中的 DNA 进行编程,就可以让它对出现在感染者呼吸或者汗液中的化合物作出反应,我们相信,我们将能够迅速且可靠地筛查 COVID-19并且确定一个人是否已经被感染”他写道。
其他类型的无接触检测器已经在使用中了包括高温皮肤elevated-skin-temperatureEST摄像头。
意大利的最主要的机场莱昂纳德·达·芬奇Leonardo da Vinci为了发现发烧的人他们购买了三个热成像头盔。机场已经配备了固定的热感应扫描仪并且订购了更多的这种设备。[根据当地媒体 Fiumicino 网上的报道][15],被检测出可能发烧的乘客,被会要求做进一步的医学检查.
位于中国深圳制造这种头盔的 KC Wearable 公司表示,这种头盔可以由员工佩戴,并且可以与乘客保持一定的距离。
制造热感应摄像头的 FLIR Systems 公司在其本月的[财报][6]中表示,对 EST 系统的需求正在持续增加。
“尽管这些热感应摄像头不能检测或者诊断任何医疗状况,这些摄像头可以作为识别高温皮肤的有效工具。”报告说。
FLIR 公司 CEO Jim Cannon 在本月的收入电话会议上表示,“许多公司都在寻求在他们的设施中安装这种技术,以便解除现在挤压的订单”。[根据路透社报道][8]通用汽车General Motors就是其中之一。
在 Facebook[9] 和[领英][10]上加入网络世界Network World社区对重要话题发表评论。
--------------------------------------------------------------------------------
via: https://www.networkworld.com/article/3543318/how-iot-will-rescue-aviation.html
作者:[Patrick Nelson][a]
选题:[lujun9972][b]
译者:[Yufei-Yan](https://github.com/Yufei-Yan)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.networkworld.com/author/Patrick-Nelson/
[b]: https://github.com/lujun9972
[1]: https://unsplash.com/photos/s7NGQU2Nt8k
[2]: https://creativecommons.org/publicdomain/zero/1.0/
[3]: https://www.linkedin.com/pulse/what-happens-when-airports-open-back-up-osh-agabi/?src=aff-lilpar&veh=aff_src.aff-lilpar_c.partners_pkw.10078_plc.Skimbit%20Ltd._pcrid.449670_learning&trk=aff_src.aff-lilpar_c.partners_pkw.10078_plc.Skimbit%20Ltd._pcrid.449670_learning&clickid=WNmzMlyalxyOUI7wUx0Mo34HUkiwwpy%3APQ3X1Y0&irgwc=1
[4]: https://www.networkworld.com/newsletters/signup.html
[5]: https://www.fiumicino-online.it/articoli/cronaca-2/fase-2-all-aeroporto-di-fiumicino-lo-smart-helmet-per-controllare-la-febbre-a-distanza
[6]: https://flir.gcs-web.com/news-releases/news-release-details/flir-systems-announces-first-quarter-2020-financial-results
[7]: https://www.fool.com/earnings/call-transcripts/2020/05/06/flir-systems-inc-flir-q1-2020-earnings-call-transc.aspx
[8]: https://uk.reuters.com/article/us-flir-systems-gm/general-motors-taps-flir-systems-for-fever-check-cameras-at-factories-idUKKBN22J02B
[9]: https://www.facebook.com/NetworkWorld/
[10]: https://www.linkedin.com/company/network-world

View File

@ -0,0 +1,155 @@
[#]: collector: (lujun9972)
[#]: translator: (Yufei-Yan)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (What is IoT? The internet of things explained)
[#]: via: (https://www.networkworld.com/article/3207535/what-is-iot-the-internet-of-things-explained.html)
[#]: author: (Josh Fruhlinger https://www.networkworld.com/author/Josh-Fruhlinger/)
什么是 IoT物联网简介
======
物联网IoT是一个将智能设备连接起来的网络并提供了丰富的数据但是它也有可能是一场安全领域的噩梦。
对于越来越多不用于传统计算但却相互连接用来收发数据的电子设备来说物联网IoT这个词可以说是最夺人眼球的。
现在有数不胜数的东西可以归为这一类:传统家用电器里面,可以联网的那一部分"智能设备",比如说电冰箱和灯泡;那些只能运行于有互联网环境的小设备,比如像 Alexa 之类的电子助手;与互联网连接的传感器,他们正在改变着工厂、医疗、运输、物流中心和农场。
### 什么是物联网?
物联网IoT将互联网、数据处理和分析的能力带给了现实世界中的各种物品。对于消费者来说这就意味着不需要键盘和显示器这些东西就能和全世界的信息进行互动日常用品当中很多都可以通过网络得到操作指令从而最大程度的减少了人工的操作。
**[更多关于物联网IoT在网络世界中的内容][1]**
在企业环境当中互联网Internet长期以来为制造和分销提供了便利物联网IoT也能带来同样的效率。互联网嵌入式传感器即使没有几十亿全世界数百万的此类传感器正在提供着丰富的数据企业可以利用这些数据来保证他们运营的安全跟踪资产和减少人工处理的次数。研究人员也可以使用物联网IoT来获取人们的喜好和行为数据尽管这些行为可能会严重的涉及隐私和安全问题。
### 它有多大?
一句话:非常庞大。[Priceonomics 把它分开来看][2]在2020年的时候有超过50亿的物联网IoT设备这些设备可以生成 4.4 泽字节zettabyte译者注1 zettabyte = 10<sup>9</sup> terabyte = 10<sup>12</sup> gigabyte的数据。相比较物联网IoT设备在 2013 仅仅产生了 1000 亿千兆字节gigabyte的数据。在物联网IoT市场上可能挣到的钱也同样让人瞠目到 2025 年,这块市场的价值可以达到 1.6 万亿美元到 14.4 万亿美元。
### 物联网IoT的历史
一个所有设备和传感器无处不链接的世界是科幻小说中最经典的景象之一。物联网IoT的知识早在 1970 的时候就已经实现了,世界上第一个物联网设备,[卡耐基•梅隆大学的自动贩卖机][3],它还用来和 APRANET 相连,而且很多其他的技术也已经被发明出来并给大家展示了一个充满未来感和智慧的物联网。但是直到 1999 年,物联网这个词才由英国的技术人员,[Kevin Ashton][4] 提出来。
一开始技术是滞后于当时对未来的憧憬的。每个与互联网相连的设备都需要一个处理器和一种能和其他东西通信的方式无线的最好这些因素都增加了物联网IoT大规模实际应用的成本和性能要求这种情况至少一直持续到 21 世纪头十年中期,直到摩尔定律赶上来。
一个重要的里程碑是当 [RFID 的大规模使用][5],这种价格低廉的转发器可以被贴在任何物品上,然后这些物品就可以连接到更大的互联网上了。对于设计者来说,无处不在的 Wi-Fi 和 4G 让任何地方的无线连接都变得非常简单。而且IPv6 的出现在也不用让人们担心把数十亿小设备连接到互联网上会将 IP 地址耗尽。(相关故事:[物联网IoT网络可以促进IPv6的使用吗][6]
### 物联网IoT是如何工作的
物联网IoT的基本元素是收集的数据的设备。广义地说他们是和互联网相连的设备所以每一个设备都有 IP 地址。这些设备涵盖了从从工厂运输货物的自动驾驶车辆到简单的温度监控的传感器。这其中也包括每天统计步数的个人手环。为了让这些数据变得有意义,就需要收集、处理、过滤和分析这些数据,又会有很多种办法来实现这些过程。
搜集数据是通过把数据从设备上发送到搜集端。可以通过各种无线或者有线网络进行数据的转移。数据可以通过无联网发送到有存储空间或者计算能力的数据中心或者云端,或者这些数据可以分段的进行传输,中间设备在发送之前会将这些数据聚集在一起。
处理数据可以在数据中心或者云端进行但是有时候这不太可行。对于一些非常重要的设备比如说工业领域的关停设备从设备上将数据发送到远程数据中心的延迟代价实在是太高了。发送、处理、分析数据和返回指令在管道爆炸之前关闭阀门这些操作来回一趟的时间可能要花费非常多的时间。在这种情况下边缘计算edge-computing就可以大显身手了。边缘计算是一个智能的边缘设备可以聚集数据并且进行分析在需要的时候进行回应所有的这一系列操作都是距离所需要控制的设备很近的所以也就降低了延迟。边缘设备可以有上游连接这样数据就可以进一步被处理和储存。
[][7] 网络世界 / IDG
物联网IoT是如何工作的。
### **物联网IoT设备的一些例子**
本质上任何可以搜集来自于真实世界数据并且可以发送回去的设备都可以参与到物联网IoT生态系统中。典型的例子包括智能家居设备射频识别标签RFID和工业传感器。这些传感器可以监控一系列的要素包括工业系统中的温度和压力机器中关键设备的状态患者身上与生命体征相关的信号也可以利用水和电已经其他许多可能的东西。
一台工厂的机器人可以被认为是物联网IoT设备因为他们可以看作是自动化的载具将货物在仓库之间转移
其他的例子包括可穿戴设备和家庭安防系统。还有一些其他更基础的设备,比如说[树莓派Raspberry Pi][8]和[Arduino][9]这些设备可以让你构建你自己的物联网IoT终端节点。
#### **设备管理**
为了能让这些设备一起工作,所有这些设备都需要进行验证、合理分配、调试和监控,并且在需要的时候进行更新。要么这些操作会经常的出现在由一个设备供应商制造的系统中;要么这些操作根本就不会发生,这样也是最有风险的。但是整个工业界正在向[标准化的设备管理模型][10]过渡这样也就允许物联网IoT设备之间进行互相操作也可以保证设备不会被孤立。
#### **物联网IoT通信标准和协议**
当物联网IoT小设备和其他设备通信的时候他们可以使用各种通信标准和协议这其中许多都是为这些处理能力有限和缺少电源供应的设备专门定制的。你一定听说过其中的一些尽管说有一些设备使用的是Wi-Fi或者蓝牙但是更多的设备是使用了专门为物联网IoT世界定制的标准。比如ZigBee就是一个低功耗、远距离传输的无线通信协议而 MQTTMessage Queuing Telemetry Transport是为链接在不可靠或者有延迟网络上的设备定制的一个发布/订阅publish/subscribe模式的信息传递协议。参考网络世界的词汇表[物联网IoT标准和协议](11)。)
物联网IoT也会受益于5G为蜂窝网络带来的高速度和高带宽尽管这种使用场景会[滞后于普通的手机][12]。
### 物联网IoT, 边缘计算edge computing和云cloud
[][23] 网络世界 / IDG
边缘计算如何使物联网IoT成为可能。
对于许多物联网IoT系统来说大量的数据会以极快的速度涌来这种情况催生了一个新的科技领域[边缘计算edge computing][14]它由放置在物联网IoT设备附近的设备组成处理来自那些设备的数据。这些机器会处理这些数据并且只将相关的材料发送到一个更集中的系统系统进行分析。比如假设在一个有几十个物联网IoT安防摄像头的网络中边缘计算会直接分析传入的视频而且只有当其中一个摄像头检测到有物体移动的时候才向SoC发出警报而不会是一下子将所有的在线数据流全部发送到大楼的安全操作中心SoC
一旦这些数据已经被处理过了,他们有去哪里了呢?好吧,它也许会被送到你的数据中心,但是更多情况下,它最终会进入云。
对于物联网IoT这种间歇或者不同步的数据来往场景来说具有弹性的云计算是再适合不过的了。许多云计算巨头包括[谷歌][15][微软][16],和[亚马逊][17]都会提供物联网IoT产品。
### 物联网IoT平台
云计算巨头们正在尝试出售的不仅仅是存放传感器搜集的数据。他们要提供一个可以协调物联网IoT系统中各种元素的网正完整平提案平台会将很多功能捆绑在一起。本质上物联网IoT平台作为中间件将物联网IoT设备和边缘网关用处理物联网IoT数据的应用程序连接起来。也就是说每一个平台的厂商看上去都会对物联网IoT平台应该是什么这个问题有一些稍微不同的解释这样就能更好的[与其他竞争者拉开差距][18]。
### 物联网IoT和数据
正如前面所提到的所有那些物联网IoT设备收集了有泽字节zettabytes这个数量级的数据这些数据通过边缘网关被发送到平台上进行处理。在很多情况下这些数据就是首先要部署物联网IoT的原因。通过从现实世界中的传感器搜集来的数据各种组织就可以实时的作出灵活的决定。
例如Oracle 公司[假设了一个场景][19],当人们在主题公园的时候,会被鼓励下载一个可以提供公园信息的应用。同时,这个程序会将 GPS 信号发回到公园的管理部门来帮助他们预测排队时间。有了这些信息,公园就可以在短期内(比如通过增加员工数量来提高一些景点的容量)和长期内(通过了解哪些设施最受欢迎,那些最不受欢迎)采取行动。
这些决定完全可以在没有人工干预的情况作出。比如,从化工厂管道中的压力传感器收集的数据可以通过边缘设备的软件进行分析,从而发现管道破裂的威胁,这样的信息可以触发关闭阀门从而避免泄漏的信号。
### 物联网IoT和大数据分析
主题公园的例子可以让你很容易理解但是和许多现实世界中物联网IoT收集数据的操作相比就显得小菜一碟了。许多打数据操作都会使用到来自物联网IoT设备收集的信息然后与其他数据关联这样就可以分析预测到人类的行为。_Software Advice_ 给出了[一些例子][20]其中包括由Birst提供的一项服务该服务将从联网的咖啡机中收集的咖啡冲泡的信息与社交媒体上发布的帖子进行匹配看看顾客是否在网上谈论咖啡品牌。
另一个最近才发生的戏剧性的例子X-Mode 发布了一张基于位置追踪数据的地图,地图上显示了在 2020 年 3 月春假的时候正当新冠病毒在美国加速传播的时候人们在劳德代尔堡Ft. Lauderdale聚会完[最终都去了哪里][21]。这张地图令人震撼不仅仅是因为它显示出病毒可能的扩散方向更是因为它说明了物联网IoT设备是可以多么密切地追踪我们。更多关于物联网IoT和分析的信息请点击[此处][22]
### 物联网IoT数据和AI
物联网IoT设备能够收集的数据量远远大于任何人类能够以有效的方式处理的数据量而且这肯定不是实时的。我们已经看到来自于物联网IoT终端的原始数据需要边缘计算设备去进行解释。还需要检测和处理可能[完全错误的数据][23]。
许多物联网IoT供应商也同时提供机器学习和人工只能的功能可以用来理解收集来的数据。比如在 Watson 平台上获胜的 IBM Jeopard! ,就可以在[物联网IoT数据集进行训练][24],这样就可以在预测行维护领域产生有用的结果 - 比如说分析来自无人机的数据可以区分桥梁上轻微的损坏和需要重视的裂缝。同时ARM 也在研发[低功耗芯片][25]它可以在物联网IoT终端上提供AI的能力。
### 物联网IoT和贸易
贸易领域, 物联网IoT可以用于包括跟踪客户库存和重要部件的状态。[IoT for All][26] 列举了四个已经被物联网IoT改变的行业
* **石油和天然气**:与人工干预相比,无联网传感器可以更好的检测孤立的钻井场地。
* **农业**通过物联网IoT传感器获得的田间作物的数据可以用来提高产量。
* **采暖通风**:制造商可以监控全国各地的气候控制系统。
* **实体零售**:当顾客在商店的某一部分停留的时候,可以给他们的手机上发送优惠信息从而进行精准定位。
更普遍的情况是,企业正在寻找能够在[四个领域][27]上获得帮助的物联网IoT解决方案能源使用资产跟踪安全领域和客户体验。
--------------------------------------------------------------------------------
via: https://www.networkworld.com/article/3207535/what-is-iot-the-internet-of-things-explained.html
作者:[Josh Fruhlinger][a]
选题:[lujun9972][b]
译者:[Yufei-Yan](https://github.com/Yufei-Yan)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.networkworld.com/author/Josh-Fruhlinger/
[b]: https://github.com/lujun9972
[1]: https://www.networkworld.com/category/internet-of-things/
[2]: https://priceonomics.com/the-iot-data-explosion-how-big-is-the-iot-data/
[3]: https://www.machinedesign.com/automation-iiot/article/21836968/iot-started-with-a-vending-machine
[4]: https://www.visioncritical.com/blog/kevin-ashton-internet-of-things
[5]: https://www.networkworld.com/article/2319384/rfid-readers-route-tag-traffic.html
[6]: https://www.networkworld.com/article/3338106/can-iot-networking-drive-adoption-of-ipv6.html
[7]: https://images.idgesg.net/images/article/2020/05/nw_how_iot_works_diagram-100840757-orig.jpg
[8]: https://www.networkworld.com/article/3176091/10-killer-raspberry-pi-projects-collection-1.html
[9]: https://www.networkworld.com/article/3075360/arduino-targets-the-internet-of-things-with-primo-board.html
[10]: https://www.networkworld.com/article/3258812/the-future-of-iot-device-management.html
[11]: https://www.networkworld.com/article/3235124/internet-of-things-definitions-a-handy-guide-to-essential-iot-terms.html
[12]: https://www.networkworld.com/article/3291778/what-s-so-special-about-5g-and-iot.html
[13]: https://images.idgesg.net/images/article/2017/09/nw_how_edge_computing_works_diagram_1400x1717-100736111-orig.jpg
[14]: https://www.networkworld.com/article/3224893/what-is-edge-computing-and-how-it-s-changing-the-network.html
[15]: https://cloud.google.com/solutions/iot
[16]: https://azure.microsoft.com/en-us/overview/iot/
[17]: https://aws.amazon.com/iot/
[18]: https://www.networkworld.com/article/3336166/why-are-iot-platforms-so-darn-confusing.html
[19]: https://blogs.oracle.com/bigdata/how-big-data-powers-the-internet-of-things
[20]: https://www.softwareadvice.com/resources/iot-data-analytics-use-cases/
[21]: https://www.cnn.com/2020/04/04/tech/location-tracking-florida-coronavirus/index.html
[22]: https://www.networkworld.com/article/3311919/iot-analytics-guide-what-to-expect-from-internet-of-things-data.html
[23]: https://www.networkworld.com/article/3396230/when-iot-systems-fail-the-risk-of-having-bad-iot-data.html
[24]: https://www.networkworld.com/article/3449243/watson-iot-chief-ai-can-broaden-iot-services.html
[25]: https://www.networkworld.com/article/3532094/ai-everywhere-iot-chips-coming-from-arm.html
[26]: https://www.iotforall.com/4-unlikely-industries-iot-changing/
[27]: https://www.networkworld.com/article/3396128/the-state-of-enterprise-iot-companies-want-solutions-for-these-4-areas.html

View File

@ -0,0 +1,165 @@
[#]: collector: (lujun9972)
[#]: translator: (wxy)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Ubuntu Budgie 20.04 Review: Smooth, Polished & Plenty of Changes)
[#]: via: (https://itsfoss.com/ubuntu-budgie-20-04-review/)
[#]: author: (John Paul https://itsfoss.com/author/john/)
Ubuntu Budgie 20.04 评测:平滑、精致和丰富的变化
======
正如我们向读者承诺的那样,我们将对 [Ubuntu 20.04 LTS 版本][1]的所有主要特色版进行评测。在这个续篇中,我们将对 Ubuntu Budgie 进行评测。
![Ubuntu Budgie Desktop][2]
[Ubuntu Budgie][3],顾名思义,是使用 [Budgie 桌面环境][5]的 [Ubuntu 官方特色版][4]。这个版本是 Ubuntu 家族中较新的成员。Ubuntu Budgie 的第一个版本是 16.04,它在 17.04 版本中被接受为官方特色版。
他们的[目标][6]是“将 Budgie 界面的简洁和优雅结合起来,产生一个具有现代范式的传统的桌面导向的发行版。”
### Ubuntu Budgie 20.04 评测:哪些改变了,哪些没有!
[自 18.04 LTS 发布以来Ubuntu Budgie][7] 有了令人惊讶的更新和改进:
* 苹果风格的新菜单
* 默认采用基于 Budgie 的网络管理小程序
* 新的 Window Shuffler 允许你通过快捷键平铺应用程序
* 快速切换桌面布局的新工具
* 支持 4k 分辨率
* 新的默认应用程序GNOME Firmware 和 Drawing
* 现在已经为 20.04 重构了向后移植包
* 默认浏览器是火狐
* 默认使用 Catfish 搜索文件和文本
* 在 budgie 中集成了 Nemo 文件管理器
* 由于错误,系统托盘小程序被移除了
* 默认情况下,事件警报声被禁用
* 修复键盘快捷键神秘失踪的问题
* 更好的锁屏风格
* 由于社区的要求,文件应用 Nautilus 已被 Nemo 取代
* Plank 坞站现在已经切换到屏幕底部,是透明的,并且默认有反弹动画
* 快速笔记和热角小程序已从 Python 移植到 Vala以提高速度。
* Celluloid 取代了 MPV
* 更新了 GNOME 的依赖性
![][8]
Ubuntu Budgie 现在提供最新版本的 Budgie 桌面环境10.5.1)。改进的地方包括:
* 在 Budgie 桌面设置中新增 Raven 部分
* Raven 通知可以分组,通知可以关闭
* 图标任务列表被移除
* 能够设置虚拟桌面的数量
Ubuntu Budgie 自带了大量的 Budgie 小程序和微应用。它们可以通过 Ubuntu Budgie Welcome 来安装。
![Ubuntu Budgie Welcome][9]
* WeatherShow - 显示未来五天的天气预报,每 3 小时更新一次
* Wallstreet - 一个允许你在图像文件夹中循环的壁纸工具
* Visual-space - 一个紧凑的工作区切换器
* Dropby - 这个小程序允许你从面板上快速管理 U 盘
* Kangaroo - 从面板上快速浏览文件夹
* 垃圾桶小程序 - 管理你的垃圾桶
* Fuzzyclock - 以模糊的方式显示时间
* 工作区秒表 - 允许你跟踪在每个工作区花费的时间
完整的变更和更新列表,请访问[变更日志][10]。
#### 系统要求
Ubuntu Budgie 20.04 更新了[系统要求][11]
* 4GB 或以上的内存
* 64 位的 Intel 和 AMD 处理器
* 在 CSM 模式下启动的 UEFI 电脑
* 基于英特尔的现代苹果电脑
如你所见Budgie 并不是一个真正的轻量级选择。
#### 安装的应用
![][12]
Ubuntu Budgie 中默认包含了以下有用的应用程序:
* AisleRiot Solitaire
* Geary
* Catfish 搜索工具
* Cheese 网络摄像头工具
* GNOME Drawing
* GNOME 2048
* GNOME Mahjongg
* GNOME Mines
* GNOME Sudoku
* Gthumb
* LibreOffice
* Maps
* Rhythmbox
* Tilix
* Ubuntu Budgie Welcome
* Evince 文档查看器
* Plank
* Celluloid
![Ubuntu Budgie Ram Usage][13]
### 安装
起初,我无法让 Ubuntu Budgie 进入即用环境,以便我可以安装它。结果发现 Ubuntu Budgie 试图通过 EFI 来启动,我联系了 [Ubuntu Budgie 论坛][14],得到了解决方案。
一旦出现紫色的闪屏,我必须按下 `ESC` 键并选择 `legacy`。之后,它就像正常的启动和安装一样了,没有问题。我只在 Ubuntu Budgie 上遇到过这个问题。我下载并尝试了 Ubuntu MATE 20.04 ISO但没有遇到类似的问题。
### Ubuntu Budgie 20.04 的体验
![][15]
除了安装上的小问题,我使用 Ubuntu Budgie 期间非常愉快。自 [Ikey][16] 第一次创建 Budgie 桌面以来Budgie 桌面已经进步了很多它已经成为一个非常成熟的选择。Ubuntu Budgie 的目标是“制作一个传统的桌面导向的发行版”。它确实做到了这一点。他们所做的所有改变都在不断地为他们的产品增添更多的光彩。
总的来说Ubuntu Budgie 是一个非常漂亮的发行版。从默认的主题到壁纸选项,你可以看出他们在视觉体验上做了很多努力。
需要注意的是Ubuntu Budgie 并不适合低配置的系统。我在戴尔 Latitude D630 上运行它。在没有打开任何应用程序的情况下,它使用了大约 700MB 的内存。
在 Ubuntu Budgie 中,我最喜欢的一个部分是 [Tilix 终端模拟器][17]。Tilix 允许你在右侧或下方添加终端窗口。它有一大堆功能,我就是喜欢用它,我正打算安装在我的其他 Linux 系统上。
### 关于 Ubuntu Budgie 20.04 的最后感想
Ubuntu Budgie 是众多官方版本中一个值得欢迎的新版本。Budgie 给人的感觉是非常流畅和精致。它不会让你碍手碍脚,而是让你完成工作。
如果你厌倦了当前的桌面环境,想看看新的东西,不妨来看看。如果你对当前的设置感到满意,请查看 Ubuntu Budgie 的即用 DVD。你可能会喜欢上它。
![关于 Ubuntu Budgie][18]
你是否已经尝试过 Ubuntu 20.04 Budgie你对它的使用体验如何如果没有用过你现在使用的是哪个版本的 Ubuntu 20.04
--------------------------------------------------------------------------------
via: https://itsfoss.com/ubuntu-budgie-20-04-review/
作者:[John Paul][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/john/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/download-ubuntu-20-04/
[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-busgie-desktop.png?resize=800%2C500&ssl=1
[3]: https://ubuntubudgie.org/
[4]: https://itsfoss.com/which-ubuntu-install/
[5]: https://en.wikipedia.org/wiki/Budgie_(desktop_environment
[6]: https://ubuntubudgie.org/about-us/
[7]: https://itsfoss.com/ubuntu-budgie-18-review/
[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-budgie-desktop-settings.jpeg?ssl=1
[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-budgie-welcome.png?resize=800%2C472&ssl=1
[10]: https://ubuntubudgie.org/2020/04/21/ubuntu-budgie-20-04lts-release-notes-for-18-04-upgraders/
[11]: https://ubuntubudgie.org/downloads/
[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-budgie-applications.jpeg?ssl=1
[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-budgie-ram-usage.png?resize=800%2C600&ssl=1
[14]: https://discourse.ubuntubudgie.org/t/cant-get-ub-to-boot/3397
[15]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-budgie-20-04.jpg?ssl=1
[16]: https://itsfoss.com/ikey-doherty-serpent-interview/
[17]: https://gnunn1.github.io/tilix-web/
[18]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-budgie-about.png?resize=800%2C648&ssl=1

View File

@ -0,0 +1,174 @@
[#]: collector: (lujun9972)
[#]: translator: (robsean)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Using the Lightweight Apt Package Manager Synaptic in Ubuntu and Other Debian-based Linux Distributions)
[#]: via: (https://itsfoss.com/synaptic-package-manager/)
[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)
在 Ubuntu 或其它基于 Debian Linux 的发行版中使用轻量的 Apt 软件包管理器 Synaptic
======
这周的开源软件推荐是 Synaptic 。学习这个好的旧的软件包管理器可以做而现代的软件包管理器不能做什么。
### Synaptic 软件包管理器是什么?
[Synaptic][1] 是使用在 Debian, Ubuntu, Linux Mint 以及其它很多基于 Debian/Ubuntu 发行版中的一个 [apt 软件包管理器系统][2] 的轻量级 GUI 前端。
总的来说,你可以 [在终端中使用 apt-get 命令][3] 来完成的任何事,都可以通过 Synaptic 来实现。
![][4]
在一段时间内Synaptic 曾经几乎是所有基于 Debian Linux 发行版的默认图形化软件包管理器。它被认为是一种用户友好,易于使用的管理应用程序的方法。
随着像 [GNOME Software][5] 和 [KDE Discover][6] 等现代软件包管理器工具带来更现代和直观的图形用户界面,事情发生了变化。这些软件包管理器有更好的界面,以一种更友好的方式显示软件包信息,带有缩略图,评分和评论。
最后Synaptic [被限制使用于大多数的轻量级 Linux 发行版][7] 中。
#### 为什么你要使用像 Synaptic 软件包管理器这样的 ‘古老的’ 软件?
当然,在多大数的时间中,你没有必要这样做。
但是Synaptic 仍然比 GNOME 软件的功能要很多。记住,它基本上是 apt 的 GUI 前端,这意味着它可以(几乎)做任何你能够 [在终端中使用 apt 命令][8] 所做的事.
例如,如果你想 [在 Ubuntu 中阻止特定的软件包更新][9],你可以在 Synaptic 中做到这一点,但是你却不能 GNOME/Ubuntu 软件中心中实现。
![][10]
另外,我注意到在 Ubuntu 20.04 中的软件中心的一些问题。它加载速度缓慢,它搜索软件包时缓慢,并且它充满了 snap 应用程序 (不是每个人都喜欢).
Synaptic 也是 [你可以在 Ubuntu 中使用的一个轻量级应用程序][7] ,用以加速你的系统。
#### Synaptic 软件包管理器特色
这里是一个你可以使用 Synaptic 做什么的概括:
* 更新软件包缓存
* 升级整个系统
* 管理软件包包存储库
* 通过名称、描述、维护者、版本、依赖项等搜索软件包
* 通过组、状态(已安装)、源或更多信息列出软件包
* 通过名称、状态、大小或版本排序软件包
* 获取与软件包相关的信息
* 锁定软件包版本
* 安装具体指定版本的软件包
这里有很多功能,你可以自己去探索。
### 如何在 Ubuntu 上安装 Synaptic 软件包管理器
Synaptic 软件包管理器可在 Ubuntu 的 Universe 存储库中获得。如果 Universe 存储库未启用你可以在软件中心中找到Synaptic:
![Synaptic 在 Ubuntu 软件中心][11]
你也可以通过命令行来安装 Synaptic 。先确保启用 universe 存储库:
```
sudo add-apt-repository univers
```
然后更新缓存 (在 Ubuntu 18.04 及更高版本中不需要)
```
sudo apt update
```
现在,使用下面的命令来安装 synaptic 软件包管理器:
```
sudo apt install synaptic
```
这就是所有的安装过程。
### 如何使用 Synaptic 软件包管理器
在安装后,你可以在其菜单中开始搜索 Synaptic
![][12]
你可以看到这个界面不是这里最漂亮的一个界面。注意复选框的颜色。白色意味着软件包未安装,绿色意味软件包已安装。
![][4]
你可以搜索一个应用程序并单击复选框将标记其为安装。它也将高亮将被作为依赖关系项目的软件包(以绿色的形式)。单击应用来安装选择的软件包:
![][13]
你可以使用 Synaptic [查看在 Ubuntu 中安装的所有软件包][14] 。你也可以从这个视图中选择移除软件包。
![][15]
你可以看到在基于源显示的单个存储库中可用的软件包。一个很好的方法来查看 [哪个 PPA 提供什么软件包][16]。你可以通过如上所述的方法来安装或移除软件包。
![][17]
通常,当你更新 Ubuntu 时,所有的软件包都会同时更新。使用 Synaptic ,你可以轻松地选择你需要更新/升级到一个较新版本的软件包。
![][18]
你也可以锁定软件包的版本,以便它们就不会随着系统更新而被更新。
![][10]
你也可以使用 Synaptic 搜索软件包。这类似于 [使用 apt-cache search 命令搜索软件包][19]。
![][20]
如果你认为你做出了错误的选择,你可以从编辑菜单中单击撤销。
你可以使用 Synaptic 做很多事,我不可能涵盖所有可能的用法。我在这里已经涵盖了最常见的一些方法,如果你将要去使用 Synaptic 的话,我留给你去探索。
### Synaptic 并不适合所有的人
如果你不喜欢 Synaptic ,你可以在软件中心中移除它,或在终端中使用这个命令:
```
sudo apt remove synaptic
```
这里有另一个用于 Ubuntu 的被称为 [AppGrid][21] 的轻量级软件包管理器。据我所知,它已经很久没有更新了。
Synaptic 当然并不适合所有的人。它列出了在常规软件中心中你看不到的库和包。如果你移除了一个你不知道的库,那么它可能会引起问题。
我认为 Synaptic 更适合于那些既想更好地控制软件包管理器又不想使用命令行方法的中级到高级用户。
你有什么要说的吗?你曾经使用过 Synaptic 软件包管理器吗?你在软件中心中做出回应,还是你只在终端中探索?一定要在评论区中分享你的喜好。
--------------------------------------------------------------------------------
via: https://itsfoss.com/synaptic-package-manager/
作者:[Abhishek Prakash][a]
选题:[lujun9972][b]
译者:[robsean](https://github.comrobsean)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/abhishek/
[b]: https://github.com/lujun9972
[1]: https://www.nongnu.org/synaptic/
[2]: https://en.wikipedia.org/wiki/APT_(software)
[3]: https://itsfoss.com/apt-get-linux-guide/
[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/synaptic-interface.png?ssl=1
[5]: https://wiki.gnome.org/Apps/Software
[6]: https://userbase.kde.org/Discover
[7]: https://itsfoss.com/lightweight-alternative-applications-ubuntu/
[8]: https://itsfoss.com/apt-command-guide/
[9]: https://itsfoss.com/prevent-package-update-ubuntu/
[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/lock-version-synaptic.png?ssl=1
[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/synaptic-ubuntu-software-center.png?ssl=1
[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/synaptic-package-manager-ubuntu.jpg?ssl=1
[13]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/install-packages-in-synaptic.png?ssl=1
[14]: https://itsfoss.com/list-installed-packages-ubuntu/
[15]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/remove-packages-using-synaptic.png?ssl=1
[16]: https://itsfoss.com/ppa-guide/
[17]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/see-packages-by-repositories-synaptic.png?ssl=1
[18]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/upgrade-packages-synaptic.png?ssl=1
[19]: https://itsfoss.com/apt-search-command/
[20]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/search-results-synaptic.png?ssl=1
[21]: https://itsfoss.com/app-grid-lighter-alternative-ubuntu-software-center/

View File

@ -0,0 +1,132 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Import functions and variables into Bash with the source command)
[#]: via: (https://opensource.com/article/20/6/bash-source-command)
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
使用 source 命令将函数和变量导入 Bash
======
source 就像 Python 的 import 或者 Java 的 include。学习它扩展你的 Bash 能力。
![bash logo on green background][1]
登录 Linux shell 时,你将继承特定的工作环境。对于 shell 而言_环境_ environment 已经为你设置了某些变量,以确保你的命令按预期工作。例如,[PATH][2] 环境变量定义 shell 从哪里查找命令。没有它,几乎所有尝试在 Bash 中执行的所有操作都会因 **command not found** 错误而失败。在执行日常任务时,环境对你几乎是不可见的,但它很重要。
有多种方法可以影响你的 shell 环境。你可以在配置文件中进行修改,例如 `~/.bashrc``~/.profile`,你可以在启动时运行服务,还可以创建自己的自定义命令或编写自己的 [Bash 函数][3] 。
### 通过 source 添加到你的环境
Bash以及其他一些 shell有一个称为 `source` 的内置命令。这就是令人困惑的地方:`source` 执行与命令 `.` 相同的功能是的那只是一个点而__不是_与 `Tcl` 命令相同的 `source`(如果你输入 `man source`,可能会在屏幕上显示)。实际上,内置的 `source` 命令根本不在你的 `PATH` 中。这是 Bash 附带的命令,要获取有关它的更多信息,可以输入 `help source`
`.` 命令兼容 [POSIX][4]。 但 `source` 命令不是 POSIX 定义的,但可以与 `.` 命令互换。
根据 Bash `help``source` 命令在你当前的 shell 中执行一个文件。 “在你当前的 shell 中”这句很重要,因为它表示它不会启动子 shell。因此`source` 执行的任何操作都发生在内部并影响_当前_环境。
在探讨 `source` 对环境的影响之前,请在测试文件上尝试 `source` 以确保其按预期执行代码。首先,创建一个简单的 Bash 脚本并将其保存为 `hello.sh`
```
#!/usr/bin/env bash
echo "hello world"
```
使用 `source`,即使不设置可执行也可以运行此脚本:
```
$ source hello.sh
hello world
```
你也可以使用内置的 `.` 命令获得相同的结果:
```
$ . hello.sh
hello world
```
`source``.` 命令成功执行测试文件的内容。
### 设置变量和导入函数
你可以使用 `source` 将文件“导入”到 shell 环境中,就像你可以在 C 或 C++ 中使用 `include` 关键字引用一个库,或者在 Python 中使用 `import` 关键字引入一个模块一样。这是 `source` 的最常见用法之一,它也是 `.bashrc` 中的一个默认包含项,通过 `source` 导入 `.bash_aliases` 来将任何你自定义的别名在登录时导入。
这是导入 Bash 函数的示例。首先,在名为 `myfunctions` 的文件中创建一个函数。它将打印你的公共 IP 地址和本地 IP 地址:
```
function myip() {
        curl <http://icanhazip.com>      
        ip addr | grep inet$IP | \
        cut -d"/" -f 1 | \
        grep -v 127\\.0 | \
        grep -v \:\:1 | \
        awk '{$1=$1};1'
}
```
将函数导入你的 shell
```
`$ source myfunctions`
```
测试新函数:
```
$ myip
93.184.216.34
inet 192.168.0.23
inet6 fbd4:e85f:49c:2121:ce12:ef79:0e77:59d1
inet 10.8.42.38
```
### source 搜索
当你在Bash中使用 `source` 时,它将在当前目录中搜索你引用的文件。但并非所有 shell 都这样,因此,如果你不使用 Bash请查看文档。
如果 Bash 找不到要执行的文件,它将搜索你的 `PATH`。同样,这并不是所有 shell 的默认设置,因此,如果你不使用 Bash请查看文档。
这些都是 Bash 中不错的便利功能。这种出奇地强大,因为它允许你将常用函数保存在磁盘上的一个集中位置,然后将你的环境视为集成开发环境 IDE。你不必担心函数的存储位置因为你知道它们在本地等同于在 `/usr/include` 下,因此无论你在哪,当你 source 过它们Bash 都可以找到它们。
例如,你可以创建一个名为 `~/.local/include` 的目录作为常见函数存储区,然后将此代码块放入 .bashrc 文件中:
```
for i in $HOME/.local/include/*;
  do source $i
done
```
这会将 `~/.local/include` 中所有包含自定义函数的文件“导入”到 shell 环境中。
当你使用 `source``.` 命令时Bash 是唯一搜索当前目录和 `PATH` 的 shell。
### 将 source 用于开源
使用 `source``.` 执行文件是影响环境同时保持变更模块化的一种便捷方法。在下次考虑将大量代码复制并粘贴到 .bashrc 文件中时,请考虑将相关函数或别名组放入专用文件中,然后使用 source 获取它们。
--------------------------------------------------------------------------------
via: https://opensource.com/article/20/6/bash-source-command
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bash_command_line.png?itok=k4z94W2U (bash logo on green background)
[2]: https://opensource.com/article/17/6/set-path-linux
[3]: https://opensource.com/article/20/6/how-write-functions-bash
[4]: https://opensource.com/article/19/7/what-posix-richard-stallman-explains

View File

@ -1,158 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (How to use Bash history commands)
[#]: via: (https://opensource.com/article/20/6/bash-history-commands)
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
如何使用 Bash history 命令
======
Bash 的 history 命令超过了所有其他 Linux Shell history 接口提供的功能数量。
![Person typing on a 1980's computer][1]
Bash 有丰富的历史。 也就是说,它是一个久远的 shellBourne shell但是它还有一个很棒的 `history` 命令,它的功能数量超过了所有其他 shell 的 history 接口。 [Bash][2]版本的 `history` 可进行反向搜索、快速调用、重写历史记录等。
`history` 命令与许多其他命令不同。 你可能习惯于将命令作为可执行文件放在常见的系统级位置,例如 `/usr/bin`、`/usr/local/bin` 或者 `~/bin`。 内置的 `history` 命令不在你的 `PATH` 中并且没有物理位置:
```
$ which history
which: no history in [PATH]
```
相反,`history` 是 shell 本身的内置函数:
```
$ type history
history is a shell builtin
$ help history
history: history [-c] [-d offset] [n] or
history -anrw [filename] or
history -ps arg [arg...]
Display or manipulate the history list.
[...]
```
因此,每个 shell 中的历史功能都是唯一的,因此你在 Bash 中使用的内容可能无法在 Tcsh 或 Fish 或 Dash 中使用,而在这些 shell 中使用的内容可能也无法在 Bash 中使用。在某些情况下,了解 Bash 可以做什么可能会激发其他 shell 的用户创建有趣的改造来复制 Bash 行为,并且可能会解锁你从未知道的 Bash 功能。
### 查看你的 Bash 历史
`history` 命令最基本,最频繁的用法是查看 shell 会话的历史记录:
```
$ echo "hello"
hello
$ echo "world"
world
$ history
  1  echo "hello"
  2  echo "world"
  3  history
```
### 事件指示器
事件指示器 Event designator 按事件搜索你的历史记录。在这里_事件_ enent 是记录在历史中的命令,以换行符表示。换句话说,它是一行,以索引号来标记。
事件指示器大多以感叹号开头,有时也称为 _bang_`!`)。
要从你的历史记录中重新运行命令,请使用感叹号,之后紧跟(无空格)所需命令的索引号。例如,假设第 1 行包含命令 `echo "hello"`,你想要想再次运行它:
```
$ !1
echo "hello"
hello
```
你可以在 history 中使用基于你当前位置的负数行号进行相对定位。例如,返回到倒数第三个条目:
```
$ echo "foo"
foo
$ echo "bar"
bar
$ echo "baz"
baz
$ !-3
echo "foo"
foo
```
如果只想回去一行,那么可以使用速记 `!!` 代替 `!-1`。这节省了按键时间!
```
$ echo "foo"
$ !!
echo "foo"
foo
```
### 字符串搜索
你也可以反过来通过条目搜索特定的字符串来运行命令。要搜索以指定字符串_开始_的命令请使用感叹号之后紧跟无空格要搜索的字符串
```
$ echo "foo"
$ true
$ false
$ !echo
echo "foo"
foo
```
你还可以搜索在任意位置(不仅是开头)包含该字符串的命令。为此,请像之前一样使用 `!` 加上要搜索的字符串,但在字符串的两端都用问号围绕起来。如果你知道该字符串后紧跟一个换行符,那么可以省略最后的问号(就是在按**回车**之前输入的最后字符):
```
$ echo "foo"
$ true
$ false
$ !?foo?
echo "foo"
foo
```
### 字符串替换
类似于在行首搜索字符串,你可以搜索字符串并用新字符串替换它,更改命令:
```
$ echo "hello"
hello
$ echo "world"
world
$ ^hello^foo
echo "foo"
foo
```
### 让 history 有用
在 Bash 中history 命令的功能远远超过此处介绍的内容但这是让你习惯_使用_ history 而不仅仅是作为参考的良好起点。 经常使用 `history` 命令,并试试无需输入命令即可执行的操作。 你可能会感到惊讶!
--------------------------------------------------------------------------------
via: https://opensource.com/article/20/6/bash-history-commands
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/1980s-computer-yearbook.png?itok=eGOYEKK- (Person typing on a 1980's computer)
[2]: https://opensource.com/resources/what-bash

View File

@ -0,0 +1,99 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (How to dump the GOSSAFUNC graph for a method)
[#]: via: (https://dave.cheney.net/2020/06/19/how-to-dump-the-gossafunc-graph-for-a-method)
[#]: author: (Dave Cheney https://dave.cheney.net/author/davecheney)
如何转储一个方法的 GOSSAFUNC 图
======
Go 编译器的 SSA 后端包含一种工具,可以生成编译阶段的 HTML 调试输出。这篇文章介绍了如何为函数_和_方法打印 SSA 输出。
让我们从一个包含函数、值方法和指针方法的示例程序开始:
```
package main
import (
"fmt"
)
type Numbers struct {
vals []int
}
func (n *Numbers) Add(v int) {
n.vals = append(n.vals, v)
}
func (n Numbers) Average() float64 {
sum := 0.0
for _, num := range n.vals {
sum += float64(num)
}
return sum / float64(len(n.vals))
}
func main() {
var numbers Numbers
numbers.Add(200)
numbers.Add(43)
numbers.Add(-6)
fmt.Println(numbers.Average())
}
```
通过 `GOSSAFUNC` 环境变量控制 SSA 调试输出。此变量含有要转储的函数的名称。这_不是_函数的完全限定名。对于上面的 `func main`,函数名称为 `main` _而不是_ `main.main`
```
% env GOSSAFUNC=main go build
runtime
dumped SSA to ../../go/src/runtime/ssa.html
t
dumped SSA to ./ssa.html
```
在这个例子中,`GOSSAFUNC=main` 同时匹配了 `main.main` 和一个名为 `runtime.main` 的函数。[1][1]这有点不走运,但是实际上可能没什么大不了的,因为如果你要对代码进行性能调整,它就不会出现在 `func main` 中的巨大的意大利面块中。
你的代码更有可能在_方法_中你可能已经看到这篇文章并寻找能够转储方法的 SSA 输出。
要为指针方法 `func (n *Numbers) Add` 打印 SSA 调试,等效函数名为 `(*Numbers).Add`[2][2]
```
% env "GOSSAFUNC=(*Numbers).Add" go build
t
dumped SSA to ./ssa.html
```
要为值方法 `func (n Numbers) Average` 打印 SSA 调试,等效函数名为 `(*Numbers).Average`_即使这是一个值方法_
```
% env "GOSSAFUNC=(*Numbers).Average" go build
t
dumped SSA to ./ssa.html
```
1. 如果你没有从源码构建 Go那么 `runtime` 软件包的路径可能是只读的,并且可能会收到错误消息。请不要使用 `sudo` 来解决此问题。
2. 请注意 shell 引用
--------------------------------------------------------------------------------
via: https://dave.cheney.net/2020/06/19/how-to-dump-the-gossafunc-graph-for-a-method
作者:[Dave Cheney][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://dave.cheney.net/author/davecheney
[b]: https://github.com/lujun9972
[1]: tmp.kLSHpQXzhr#easy-footnote-bottom-1-4188 (If you didnt build Go from source then the path to the <code>runtime</code> package may be read only and you might receive an error. Please dont use the <code>sudo</code> hammer to fix this.)
[2]: tmp.kLSHpQXzhr#easy-footnote-bottom-2-4188 (Please pay attention to the shell quoting.)