Fedora Linux Flatpak 八月推荐应用

Summary: 本文介绍了 Flathub 中可用的项目以及安装说明。

用密码管理器相当于雇了一个管家，管家有你所有银行卡+密码+手机+身份证。

本文介绍了 Flathub 中可用的项目以及安装说明。

![](/data/attachment/album/202308/21/093420dsugs5cssmk5vu5w.jpg)

>
> 本文介绍了 Flathub 中可用的项目以及安装说明。
>
>
>

[Flathub](https://flathub.org) 是获取和分发适用于所有 Linux 的应用的地方。它由 Flatpak 提供支持，允许 Flathub 应用在几乎任何 Linux 发行版上运行。

请阅读 “[Flatpak 入门](https://fedoramagazine.org/getting-started-flatpak/)”。要启用 Flathub 作为你的 Flatpak 提供商，请使用 [Flatpak 站点](https://flatpak.org/setup/Fedora) 上的说明。

### Authenticator

[Authenticator](https://flathub.org/apps/com.belmoussaoui.Authenticator) 是一个简单的应用，可让你生成双因素身份验证代码。它有一个非常简单和优雅的界面，支持很多算法和方法。它的一些特点是：

* 支持基于时间/基于计数器/Steam 方法
* 支持 SHA-1/SHA-256/SHA-512 算法
* 使用相机或截图扫描二维码
* 使用密码锁定应用
* 从已知应用备份/恢复，如 FreeOTP+、Aegis（加密/纯文本）和 OTP、谷歌验证器

你可以通过单击站点上的安装按钮或手动使用以下命令来安装 Authenticator：

```
flatpak install flathub com.belmoussaoui.Authenticator

```

### Secrets

[Secrets](https://flathub.org/apps/org.gnome.World.Secrets) 是一个与 GNOME 集成的密码管理器。它易于使用，并使用 KeyPass 文件格式。它的一些特点是：

* 支持的加密算法：
	+ AES 256 位
	+ Twofish 256 位
	+ ChaCha20 256 位
* 支持的衍生算法：
	+ Argon2 KDBX4
	+ Argon2id KDBX4
	+ AES-KDF KDBX 3.1
* 创建或导入 KeePass safes 数据库
* 将附件添加到你的加密数据库
* 生成高强度加密的密码
* 快速搜索你喜爱的条目
* 不活动时自动锁定数据库
* 支持双因素认证

你可以通过单击站点上的安装按钮或手动使用以下命令来安装 Secrets：

```
flatpak install flathub org.gnome.World.Secrets

```

### Flatsweep

[Flatsweep](https://flathub.org/apps/io.github.giantpinkrobots.flatsweep) 是一个简单的应用，用于在 Flatpak 卸载后删除残留文件。它使用 GTK4 和 Libadwaita 提供一致的用户界面，与 GNOME 很好地集成，但你可以在任何桌面环境中使用它。

你可以通过单击站点上的安装按钮或手动使用以下命令来安装 Flatsweep：

```
flatpak install flathub io.github.giantpinkrobots.flatsweep

```

### Solanum

Solanum 是一款使用 [番茄工作法](https://en.wikipedia.org/wiki/Pomodoro_Technique) 的时间跟踪应用。它使用 GTK4，其界面与 GNOME 很好地集成。

你可以通过单击站点上的安装按钮或手动使用以下命令来安装 Solanum：

```
flatpak install flathub org.gnome.Solanum

```

*（题图：MJ/3e95393e-6dc5-4328-b0f9-27031c8848a2）*

---

via: <https://fedoramagazine.org/fedora-linux-flatpak-cool-apps-to-try-for-august/>

作者：[Eduard Lucena](https://fedoramagazine.org/author/x3mboy/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Bash 基础知识系列 #8：For、While 和 Until 循环

Summary: 在 Bash 基础知识系列的倒数第二章节，学习 for、while 和 until 循环。

![](/data/attachment/album/202308/21/100731qmt2cmxnyub9xm62.jpg)

>
> 在 Bash 基础知识系列的倒数第二章节，学习 `for`、`while` 和 `until` 循环。
>
>
>

循环是任何编程语言中的一个强大功能。如果你还不知道，循环其实是一种根据某些条件重复代码的方式。

例如，想象一下你需要打印从 1 到 10 的数字。你可以使用 `echo` 命令写十次，但那太原始了。你使用一个循环，在 3 到 4 行代码内，就能完成。

这是我能想到的最简单的例子。我将在讨论 Bash 循环时，分享一些实际有用的例子。

在 Bash 中有三种类型的循环：

* `for`
* `while`
* `until`

我将在教程中展示所有三种类型的循环。让我们从最常见的一种开始。

### Bash 中的 For 循环

以下是 Bash 中的 `for` 循环语法：

```
for arg in LIST; do
    commands
done

```

这里的 `LIST` 可能是一个数组或者一个项目列表。[括号扩展](https://linuxhandbook.com/brace-expansion/?ref=itsfoss.com) 也是进行循环的常用手段。

考虑一下我在开始提到的最简单的场景。让我们使用 `for` 循环打印从 1 到 10 的数字：

```
#!/bin/bash

for num in {1..10}; do
    echo $num
done

```

如果你运行它，你应该会看到像这样的输出：

```
$ ./for-loop.sh
1
2
3
4
5
6
7
8
9
10

```

你也可以使用 `for num in 1 2 3 4 5 6 7 8 9 10; do` ，但是使用括号扩展使得代码看起来更短且更智能。

`{..}` 是用于扩展模式的。你使用 `{d..h}` ，它等同于 `d e f g h` 。关于括号扩展的更多信息，可以在这篇文章中找到。

>
> **[在 Bash 中使用括号扩展](https://linuxhandbook.com/brace-expansion/?ref=itsfoss.com)**
>
>
>

>
> ? 如果你熟悉 C 语言编程，你可能会喜欢在 bash 中使用 C 风格的 for 循环：
>
>
>
> ```
> for ((i = 0 ; i < 10 ; i++)); do
>   echo $i
> done
>
> ```
>
>

让我们看另一个例子，显示 [Bash 数组](https://itsfoss.com/bash-arrays/) 的所有内容：

```
#!/bin/bash

distros=(Ubuntu Fedora Debian Alpine)

for i in "${distros[@]}"; do
    echo $i
done

```

如果你运行脚本，它将显示数组中定义的所有发行版：

```
Ubuntu
Fedora
Debian
Alpine

```

### Bash 中的 While 循环

`while` 循环测试一个条件，然后只要条件为真，就继续循环。

```
while [ condition ]; do
    commands
done

```

如果你考虑前一个例子，它可以使用 `while` 循环进行重写：

```
#!/bin/bash

num=1
while [ $num -le 10 ]; do
    echo $num
    num=$(($num+1))
done

```

如你所见，你首先需要将变量 `num` 定义为 1，然后在循环体内，你增加 `num` 的值。只要 `num` 小于或等于 10，while 循环就会检查条件并运行脚本。

因此，现在运行脚本将会显示出和之前 `for` 循环中看到的完全相同的结果。

```
1
2
3
4
5
6
7
8
9
10

```

让我们看另一个例子。这是一个 [Bash 脚本，它接受一个数字作为参数](https://itsfoss.com/bash-pass-arguments/) 并显示该表。

```
#!/bin/bash

echo "Table for $1 is:"
index=1
while [ $index -le 10 ]; do
    echo $(($1*$index))
    index=$(($index+1))
done

```

如果你对 `$1` 的使用感到困惑，它代表传递给脚本的第一个参数。更多的细节可以参考这个系列的 [第三章](https://itsfoss.com/bash-pass-arguments/)。

如果你运行这个脚本，它应该会显示以下的输出：

```
$ ./table.sh 2
Table for 2 is:
2
4
6
8
10
12
14
16
18
20

```

### Bash 中的 Until 循环

这是一个使用较少的循环格式。它的行为和 `while` 循环类似。这里的区别是，循环运行直到它检查的条件为真为止。意味着为了在循环中执行代码，`[ ]` 中的条件必须为假。

我马上会解释一下。让我们先看一下它的语法。

```
until [ condition ]; do
    commands
done

```

现在，如果我要使用相同的示例，即使用 `until` 循环打印从 1 到 10 的数字，它看起来会是这样：

```
#!/bin/bash

num=1
until [ $num -gt 10 ]; do
    echo $num
    num=$(($num+1))
done

```

区别在于条件；其余部分保持不变。

* 当变量 `num` 小于或等于 10 时，while 循环就会运行。`[ ]` 中的条件必须为真，循环才会执行。
* 知道变量 `num` 变得大于 10 时，until 循环才会运行。`[ ]` 中的条件必须为假，循环才会执行。

这都是做同样事情的两种不同方式。`while` 更受欢迎，因为你会在大多数编程语言中找到类似 `while` 的循环语法。

### ? 练习时间

那是有趣的。现在是做一些练习的时候了。

**练习 1**：编写一个脚本，该脚本接受一个数字作为参数并打印其表格。如果脚本在没有参数的情况下运行，你的脚本还应显示一个消息。

**预期输出**：

```
$: ./table.sh
You forgot to enter a number

$: ./table.sh 3
3
6
9
12
15
18
21
24
27
30

```

**练习 2** : 编写一个脚本，列出目录 `/var` 中的所有文件。

**提示** : 对于循环，使用 `/var/*` 作为 “列表”。

Bash 基础知识系列即将结束。作为该系列的最后一章，你将在下周学习在 Bash 脚本中使用函数。敬请期待。

*（题图：MJ/945241d6-6a73-432c-9bcd-e0948b3fadc0）*

---

via: <https://itsfoss.com/bash-loops/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[lujun9972](https://github.com/lujun9972) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1100 AlmaLinux 称红帽封闭 RHEL 源代码对他们是因祸得福

Summary:
? AlmaLinux 称红帽封闭 RHEL 源代码对他们是因祸得福
? 去世多年后，著名演员出演一部新电影
? 未来三年 40% 的工人将因人工智能而需要重新掌握技能
»
»

真狮子版的《狮子王》的技术用到了已经去世的人身上了。

来自36.129.58.172的 Firefox 115.0|GNU/Linux 用户

"每天投 5 美元的人数翻了两番多"?

就是那种逐月自动捐款的。

你们的文章要是能看到点击量就好了

![](/data/attachment/album/202308/21/113145gn4vmzpiiub0btun.jpg)

![](/data/attachment/album/202308/21/113155b5nkjp3jsrpzvn2n.jpg)

### AlmaLinux 称红帽封闭 RHEL 源代码对他们是因祸得福

面对红帽封闭了其 RHEL 源代码的访问的情况，AlmaLinux OS 基金会主席说，AlmaLinux 在过去一个月中采取的变通方法应该可以解决所有问题，但最离谱的情况除外。他们的策略已经从错误级的兼容转变为应用程序二进制接口（ABI）兼容，这并不能保证永远不会出现问题，但故障应该很少出现，而且通常可以通过重新编译源代码来解决。她说，事实上，红帽公司改变方向对 AlmaLinux 来说是因祸得福，“我们认为这将我们从一对一的束缚中解脱出来”，无需等待红帽公司的提示，就可以打补丁。此外，这件事还给他们带来了一些微薄的资金，“每天投 5 美元的人数翻了两番多”。

>
> **[消息来源：Silicon Angle](https://siliconangle.com/2023/08/18/almalinux-leader-says-red-hat-code-crackdown-isnt-threat/)**
>
>
>

>
> 老王点评：面对红帽的动作，几家下游采取的不同动作颇有意思。AlmaLinux 的这种接受现实、顺应变化的思路或许也是一条可以走通的路，除非红帽会继续设置各种不违反许可证但令人不舒服的障碍。
>
>
>

![](/data/attachment/album/202308/21/113207r4ls32glox4oruug.jpg)

### 去世多年后，著名演员出演一部新电影

据报道，James Dean 在去世 68 年后，“在一部即将上映的新电影《回到伊甸园》中担任主演”。电影中将使用类似于生成式深度伪造的人工智能技术，复制出一个数字版的 James Dean，他将在电影中行走、说话并与其他演员互动。这项技术远远超越了被动的数字重建或将一个人的脸覆盖在另一个人身体上的深度伪造技术。这是 Dean 的数字克隆人第二次被安排拍摄电影了。2019 年，有消息称他将在一部名为《寻找杰克》的电影中用 CGI 技术复活，但后来被取消了。Dean 的形象是 WRX 及其姊妹授权公司 CMG Worldwide 代理的数百个形象之一。

>
> **[消息来源：BBC](https://www.bbc.com/future/article/20230718-how-ai-is-bringing-film-stars-back-from-the-dead)**
>
>
>

>
> 老王点评：以一个不靠谱“未来学家”的角度来判断，以后的影视作品可能绝大多数都是虚拟演员，可能甚至根本没有原型演员。而真正以真人出演的，可能类似于在工业制品的货架中偶尔会出现的一些手工制品，稀少而猎奇。
>
>
>

![](/data/attachment/album/202308/21/113233wf4jwbcf9cvqn9w5.jpg)

### 未来三年 40% 的工人将因人工智能而需要重新掌握技能

IBM 的一项调查研究称，“与六个月前相比，工作世界已经发生了变化”。77% 的高管受访者表示，入门级职位已经感受到了生成式人工智能的影响，但它更有可能增强员工的能力，而不是取代他们。受访的高管说，未来三年内，由于人工智能和自动化的实施，40% 的员工需要重新掌握技能，这意味着全球 34 亿劳动力中有 14 亿人面临此变化。

>
> **[消息来源：IBM](https://www.ibm.com/blog/new-ibm-study-reveals-how-ai-is-changing-work-and-what-hr-leaders-should-do-about-it/)**
>
>
>

>
> 老王点评：那么普通程序员算入门级职位么？
>
>
>


Bash 基础知识系列 #9：Bash 中的函数

Summary: 在 Bash 基础系列的最后一章中学习函数的全部知识。

excellent！it useful!

在 Bash 基础系列的最后一章中学习函数的全部知识。

![](/data/attachment/album/202308/22/114259tsxsfzyuxw3vf7k0.jpg)

>
> 在 Bash 基础系列的最后一章中学习函数的全部知识。
>
>
>

大多数编程语言都支持函数的概念。

函数帮助你避免在同一个程序中反复编写同一段代码。你只需将代码写为一个函数，然后在需要特定代码片段的地方使用这个函数。

在 Bash 基础知识系列的最后一章中，你将学习在 Bash 脚本中使用函数。

### Bash 中的函数

下面是声明 Bash 函数的通用语法：

```
function_name() {
    commands
}

```

只有在 “调用函数” 的脚本中，函数内的命令才会被执行。

这里有一个伪代码来演示这个情况：

```
function_name() {
    commands
}

some_other_commands

# 函数调用
function_name argument;

```

>
> ? 函数定义必须在你调用函数之前。
>
>
>

让我们通过一个简单的例子来看看这个：

```
#!/bin/bash

fun() {
    echo "This is a function"
}

echo "This is a script"
fun

```

当你运行脚本时，你应该看到这样的输出：

```
This is a script
This is a function

```

函数是在没有任何参数的情况下被调用的。接下来，让我们看看在 bash 中如何处理函数的参数。

### 向函数传递参数

向函数传递参数和向 Bash 脚本传递参数是一样的。你在调用函数时，可以在函数名旁边写上参数。

```
function_name argument;

```

让我们用一个例子来看看这个：

```
#!/bin/bash

sum() {
    sum=$(($1+$2))
    echo "The sum of $1 and $2 is: $sum"
}

echo "Let's use the sum function"
sum 1 5

```

如果你运行这个脚本，你会看到以下输出：

```
Let's use the sum function
The sum of 1 and 5 is: 6

```

请记住，传递给脚本的参数和传递给函数的参数是不同的。

在下面的例子中，我在调用函数时交换了参数。

```
#!/bin/bash

arg() {
    echo "1st argument to function is $1 and 2nd is $2"
}

echo "1st argument to script is $1 and 2nd is $2"
arg $2 $1

```

当你运行这个脚本时，你会看到这样的交换：

```
$ ./function.sh abhi shek
1st argument to script is abhi and 2nd is shek
1st argument to function is shek and 2nd is abhi

```

### Bash 中的递归函数

一个递归函数会调用它自己。这就是递归的含义。这个梗图可能会帮助你理解它。

![](/data/attachment/album/202308/22/114354uy2914fjzf90q771.jpg)

递归功能非常强大，可以帮助你编写复杂的程序。

让我们用一个计算阶乘的样本脚本来看看它的应用。如果你忘记了，阶乘的定义是这样的。

n 的阶乘：

```
(n!) = 1 * 2 * 3 * 4 *...  * n

```

所以，5 的阶乘是 1 \* 2 \* 3 \* 4 \* 5，计算结果是 120。

这是我用递归计算给定数字的阶乘的脚本。

```
#!/bin/bash

factorial() {

    if [ $1 -gt 1 ]; then
        echo $(( $1 * $(factorial $(( $1 -1 ))) ))
    else
        echo 1
    fi

}

echo -n "Factorial of $1 is: "
factorial $1

```

注意到 `echo $(( $1 * $(factorial $(( $1 -1 ))) ))`，代码使用比输入值小 1 的值调用了函数自身。这个过程会一直持续到值变为 1。所以，如果你运行脚本并输入参数 5，它最终会返回 5 \* 4 \* 3 \* 2 \*1 的结果。

```
$ ./factorial.sh 5
Factorial of 5 is: 120

```

非常好。现在，让我们来做些练习吧。

### ? 练习时间

以下是一些示例编程挑战，用来帮助你实践你所学。

练习 1：写一个 Bash 脚本，使用一个名为 `is_even` 的函数来检查给定的数字是否是偶数。

练习 2：类似的练习，你需要编写一个脚本，该脚本具有一个名为 `is_prime` 的函数，并检查给定数字是否是质数。如果你还不知道，质数只能被 1 和它自身整除。

练习 3：编写一个生成给定数字的斐波那契序列的脚本。序列从 1 开始，脚本必须接受大于 3 的数字。

所以，如果你运行 `fibonacci.sh 5`，它应该输出 “1 1 2 3 5”。

就这些了，伙计们！这是 Bash 基础系列的最后一节。当然，你在这里学到的只是冰山一角；Bash 编程还有更多需要学习的内容。

但是现在，你应该对 Bash Shell 有了一定的理解。你应该能够理解大多数 Bash 脚本，并能编写简单的脚本，即便不能编写复杂的。

如果你想深入学习，没有什么比阅读 GNU Bash 手册更好的了。

>
> **[GNU Bash 手册](https://www.gnu.org/software/bash/manual/)**
>
>
>

? 希望你喜欢这个 Bash 基础知识系列。我们正在创建更多的教程系列，以给你提供更流畅的学习体验。请提供你的反馈，帮助我们帮助其他人学习 Linux。

*（题图：MJ/f0022a50-85fe-40cc-afdd-285d976ec98c）*

---

via: <https://itsfoss.com/bash-function/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[lujun9972](https://github.com/lujun9972) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Warp：一款可跨平台运行的开源安全文件共享应用

Summary: 在 Linux 和 Windows 之间安全共享文件的无缝方式？ 试试这个！

能内网穿透吗？

需要依托每三方集合服务器，而且需要翻才能用，没找到可以私有化部署中转服务器的方法，没法用

可惜不支持Mac

来自广东广州的 Chrome Mobile 116.0|Android 10 用户

在 Linux 和 Windows 之间安全共享文件的无缝方式？ 试试这个！

![](/data/attachment/album/202308/22/135809cbe2zex0cq2eevcf.png)

>
> 在 Linux 和 Windows 之间安全共享文件的无缝方式？ 试试这个！
>
>
>

在我们撰写《[First Look](https://news.itsfoss.com/tag/first-look/)》系列文章的过程中，我们找到了一种在 Linux 和 Windows 系统之间传输文件的安全且高效的方法。

一个名为 “**Warp**” 的工具，它是 [GNOME Circle](https://circle.gnome.org/) 的一部分，其中包含扩展 GNOME 生态系统的应用。Warp 有助于通过互联网或本地网络无缝传输文件。

我们来看一下。

### Warp：概述 ⭐

![](/data/attachment/album/202308/22/135810c2f1epdl11241z16.jpg)

Warp 主要用 **Rust 编程语言** 编写，是一个**基于 GTK** 的文件传输应用，它使用 “[Magic Wormhole](https://github.com/magic-wormhole/magic-wormhole#magic-wormhole)” 协议使通过互联网/本地网络的文件传输成为可能。

所有文件传输均经过加密，接收者必须 **使用基于单词的传输码来访问文件**，以防止任何滥用。

**请允许我向你展示它是如何工作的。**

当你第一次启动该应用时，你会看到欢迎屏幕和关于 Warp 的简短介绍。

![](/data/attachment/album/202308/22/135810lnhzq8gu8znpuqqp.jpg)

继续后，你将进入 “<ruby> 发送 <rt>  Send </rt></ruby>” 菜单，你可以在其中选择要发送的文件或文件夹。

>
> ? 你还可以将文件和文件夹拖放到应用中。
>
>
>

![](/data/attachment/album/202308/22/135811bkpcqjh9kghanrgq.jpg)

之后，屏幕上将显示文本和二维码形式的传输码。你必须将其安全地发送给接收者，他们才能开始下载文件。

>
> ? 由于 Warp 是一个**跨平台应用**，你可以在 Linux 和 Windows 系统之间发送文件。
>
>
>

![](/data/attachment/album/202308/22/135811u5dm4mrsddpdpqr3.jpg)

**那么，接收方看起来怎么样？**

好吧，他们必须进入 “<ruby> 接收 <rt>  Receive </rt></ruby>” 菜单并将传输码粘贴到文本框中。他们还可以扫描二维码，将准确的文本复制到他们的设备上。

![](/data/attachment/album/202308/22/135811w8zk7nnjinkfmi6k.jpg)

粘贴代码并单击 “<ruby> 接收文件 <rt>  Receive File </rt></ruby>” 后，Warp 将开始连接到发送者的设备。

![](/data/attachment/album/202308/22/135812y0j47z7yyjg7z6qj.jpg)

如果成功，将会显示 “<ruby> 已连接到对等点 <rt>  Connected to Peer </rt></ruby>” 状态。如果不是，则表明发送者或接收者的系统/网络出现问题。

![](/data/attachment/album/202308/22/135812nl6ugfv1z9kgl6qg.jpg)

连接成功后，接收者可以选择 “<ruby> 接受 <rt>  Accept </rt></ruby>” 将其保存到系统的“<ruby> 下载 <rt>  Downlaods </rt></ruby>” 文件夹中，也可以选择 “<ruby> 另存为 <rt>  Save As </rt></ruby>” 将其保存在他们选择的位置。

就是这样。文件传输完成后，接收方将显示以下页面：

![](/data/attachment/album/202308/22/135812ddg63b0fv0v0selg.jpg)

用户还可以进入菜单图标下的 “<ruby> 首选项 <rt>  Preferences </rt></ruby>” 菜单来访问高级设置，例如设置 “<ruby> 集合点/中转服务器 URL <rt>  Rendezvous/Transit Server URL </rt></ruby>” 或将 “<ruby> 传输码字数 <rt>  Code Word Count </rt></ruby>” 设置为更长的字数来增强安全性。

![](/data/attachment/album/202308/22/135812jsffhw3cwfcn3k30.jpg)

这就是 Warp 的全部内容。**它简单且工作良好**。

### ? 获取 Warp

Warp 可用于 **Linux** 和 **Windows**。你可以获取你选择的软件包或查看其 [GitLab 页面](https://gitlab.gnome.org/World/warp)上的源代码。

**对于 Linux 用户**，你可以从 [Flathub](https://flathub.org/apps/app.drey.Warp) 获取它。

>
> **[Warp (Flathub)](https://flathub.org/apps/app.drey.Warp)**
>
>
>

---

via: <https://news.itsfoss.com/warp-file-sharing/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[校对者ID](https://github.com/%E6%A0%A1%E5%AF%B9%E8%80%85ID)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1101 韩国 SK 电信称 5G 未能兑现承诺

Summary:
? 韩国 SK 电信称 5G 未能兑现承诺
? 最新的安卓运行时使安卓应用启动速度提高了 30%
? Chrome 会警告用户安装的恶意扩展
»
»

当初宣传5G时就觉得事有蹊跷，宣传的场景其实光纤，2G-4G和WIFI都足以应付，强上5G只是徒增成本，真正需要5G的场景少之又少，不过当时发表的任何异议都会被一群乌合之众攻击，事实证明当初看衰5G是对的。

上面为了保华为强上5g，即使成本高运营商也只能硬着头皮上，我家里上一辈的科技盲劝都劝不听，天天赢麻了，一定要去用5g

对于我来说5G的唯一优势是连接到运营商网络时比4G更低的延迟。100mbps的4G已经足够普通人使用了，可是实际速度根本达不到百兆，因为中国运营商用更高的覆盖率换取了更差的性能。

来自河南郑州的 Chrome Mobile 92.0|Android 10 用户

5G对个人没有用

![](/data/attachment/album/202308/22/173650cmsserym0e43t418.jpg)

![](/data/attachment/album/202308/22/173659fyq2c9la2qfye22a.jpg)

### 韩国 SK 电信称 5G 未能兑现承诺

韩国最大的移动电信公司 SK 电信在最近一份题为《5G 经验教训、6G 关键要求、6G 网络演进和 6G 频谱》的白皮书中说，5G 被过度炒作，交付不足，未能提供杀手级应用。白皮书中说，5G 被当作自动驾驶、无人机、扩展现实和数字孪生的推动者，但由于种种原因，这些应用并未取得成功。该白皮书认为 5G 网络的性能并不是问题所在。虽然如此，5G 还是取得了一些成功，与 LTE 相比，每千兆字节的数据成本降低了 70%，使用 5G 的客户比使用 4G 的客户多使用了 50% 的数据。白皮书认为，预计将于 2030 年推出的 6G 可以避免 5G 所犯的错误。

>
> **[消息来源：The Register](https://www.theregister.com/2023/08/21/sk_telecom_5g_disappointed)**
>
>
>

>
> 老王点评：事实就是，5G 并没有带来什么立竿见影的变化，很多人还觉得 5G 缩水了。
>
>
>

![](/data/attachment/album/202308/22/173710q12c3i1n1kffycd8.jpg)

### 最新的安卓运行时使安卓应用启动速度提高了 30%

安卓运行时（ART）负责在安卓系统上实际运行应用程序，Java 和 Kotlin 编写的应用都会编译为由 ART 执行的字节码。ART 自安卓 12 以来一直在更新以提升性能。谷歌表示，最新的 ART 13 可以让安卓应用的启动速度 “在某些设备上提高多达 30%”。此外，将在未来几个月内推出的 ART 14，其新的编译器和运行时优化功能不但又进一步提高了性能，同时减少了代码大小。

>
> **[消息来源：9to5google](https://9to5google.com/2023/08/21/android-runtime-13-14-updates/)**
>
>
>

>
> 老王点评：毋庸置疑，安卓的技术在不断进步，而目前，除了 iOS 之外，所有其它的移动操作系统均无法与之匹敌。
>
>
>

![](/data/attachment/album/202308/22/173726dyawyodyaoz5kdgw.jpg)

### Chrome 会警告用户安装的恶意扩展

在 Chrome 浏览器网络商店中，有源源不断的不受欢迎的浏览器扩展发布，这些扩展程序会注入广告、跟踪你的搜索历史、将你重定向到联盟网页，或者在更严重的情况下窃取你的 Gmail 电子邮件和 Facebook 账户。当这些扩展程序被谷歌从 Chrome 网上商城删除，通常表明它们要么是开发者未发布的，要么是违反了相关政策或被检测为恶意软件。但这些被谷歌删除的扩展，不会在已经安装了它们的用户的浏览器上自动删除。谷歌宣布，在最新的 Chrome 117 中，它会发出警告通知用户，提醒他们从浏览器中卸载这些扩展程序。

>
> **[消息来源：Bleeping Computer](https://www.bleepingcomputer.com/news/google/google-chrome-to-warn-when-installed-extensions-are-malware/)**
>
>
>

>
> 老王点评：这确实是一种好的机制，唯一不好的只是推出的太晚了。
>
>
>


UbuntuDDE Remix 23.04 登场！

Summary: UbuntuDDE Remix 23.04 带着最新的深度桌面环境登场。

把校对开了吧 deepin直接翻译成深度？

打扰了看错了

>
> UbuntuDDE Remix 23.04 带着最新的深度桌面环境登场。
>
>
>

![](/data/attachment/album/202308/23/110222e9l7rijre98eced7.png)

我们在 [去年](/article-15076-1.html) 介绍过 UbuntuDDE Remix，当时他们发布了一个新的 LTS 版本。现在，大约一年后，我们有了一款新的 **非 LTS 发行版**，名为 **UbuntuDDE Remix 23.04**，**它基于最近发布的 Ubuntu 23.04**。

如果你还不知道，Ubuntu DDE Remix 是一个上面运行 [深度](https://www.deepin.org/index/en?ref=news.itsfoss.com) 桌面环境（DDE）的 Ubuntu 发行版，旨在提供独特的用户体验。

对于那些因为其缓慢的服务器和其源于中国而产生的其他担忧，从而不喜欢深度操作系统（但喜欢他们的桌面体验）的用户来说，UbuntuDDE 是一个不错的替代品。

让我们来看看他们在这个版本中提供了什么。

### ? UbuntuDDE Remix 23.04：都有些什么新东西？

![](/data/attachment/album/202308/23/110222qhf44844k5htsnfm.jpg)

除了配备了 [Linux 内核 6.2](https://news.itsfoss.com/linux-kernel-6-2-release/)，这个版本的 UbuntuDDE Remix 提供了一些不错的改进。

这个版本最明显的亮点包括：

* 深度桌面 23
* 更新的软件套件
* 新的壁纸

### 最新的深度桌面环境

![](/data/attachment/album/202308/23/110223b3w96x699dp0hpfx.jpg)

UbuntuDDE Remix 23.04 **采用了最新的深度操作系统 23 的桌面环境（2023 年 5 月更新）**，使其能够利用所有对用户界面、控制中心、设置以及你可能预期的即将发布的 [深度操作系统发行版 23](https://news.itsfoss.com/deepin-23/) 的改进。

如果你有兴趣，UbuntuDDE 与上游和 [深度桌面环境](https://github.com/linuxdeepin/dde?ref=news.itsfoss.com) 的贡献者合作，使你能够完全领略改该桌面。

### 更新的软件套件

![](/data/attachment/album/202308/23/110223gvxhggsn8jffssqn.jpg)

然后是更新的软件套件，它 **具有之前安装的，基于 DDE 的原生应用程序的升级版本**，例如：

* 深度音乐
* 深度影院
* 深度计算器
* 深度日志查看器
* 深度文本编辑器
* 等等

### 新的壁纸

![](/data/attachment/album/202308/23/110223vj8hl0xbrltssh2e.jpg)

最后，我们得到了来自 UbuntuDDE Remix 团队和深度操作系统的 **新壁纸和素材**。这些壁纸看起来非常不错，尤其是在使用浅色显示模式时。

开发者在 [官方公告](https://ubuntudde.com/blog/ubuntudde-remix-23-04-lunar-release-note/?ref=news.itsfoss.com) 博客中也提到，将在不久的将来通过 OTA 更新 **推送更多的软件更新**，进一步增强了整体的包装。

### ? 下载 UbuntuDDE Remix 23.04

你可以去 [官方网站](https://ubuntudde.com/download/?ref=news.itsfoss.com) 下载 UbuntuDDE Remix 23.04。你可以从 **官方仓库**、**SourceForge 镜像**，或以 **种子下载方式** 获取。

>
> **[UbuntuDDE Remix 23.04](https://ubuntudde.com/download/?ref=news.itsfoss.com)**
>
>
>

---

via: <https://news.itsfoss.com/ubuntudde-remix-23-04-release/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lujun9972](https://github.com/lujun9972) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Bash 脚本编程入门

Summary: 初学者们，让我们在这个大型的教程中来认识一下 Bash 脚本编程。

初学者们，让我们在这个大型的教程中来认识一下 Bash 脚本编程。

![](/data/attachment/album/202308/23/113613l034n4fu2zt8m40q.jpg)

>
> 初学者们，让我们在这个大型的教程中来认识一下 Bash 脚本编程。
>
>
>

Shell 是 Linux 的核心部分，它允许你使用各种诸如 `cd`、`ls`、`cat` 等的命令与 Linux 内核进行交互。

Bash 是 Linux 上众多可用的 Shell 中的一个。这些 Shell 主要的语法基本相同，但并非完全一样。Bash 是目前最受欢迎的 Shell，并在大多数 Linux 发行版中被设为默认 Shell。

当你打开一个终端或 SSH 会话时，即使你无法真切地看到它，你其实已经在运行着一个 Shell。

![](/data/attachment/album/202308/23/113725wortgc6h5ccf1e4s.png)

当你输入一个命令，它会被 Shell 解释。如果命令和语法是正确的，它就会被执行，否则你会看到一个错误。

### 当你可以直接运行 Linux 命令时，为什么还需要 Bash 脚本？

你可以直接在终端输入命令，它们就会被执行。

```
$ echo "hello world"
hello world

```

并且，同样的操作也可以在脚本中进行：

```
$ cat >> script.sh
#!/bin/bash

echo "hello world"
$ bash script.sh
hello world

```

那么，为什么我们需要 Shell 脚本呢？因为你不必一遍又一遍地输入同一个命令，你只需运行 Shell 脚本即可。

此外，如果你的脚本中有复杂的逻辑，把所有的命令都输入到终端中可能并不是一个好主意。

例如，如果你输入下面的命令，它会奏效，但这并不容易理解。不断地输入相同的命令（甚至要在 Bash 历史记录中搜索）会造成困扰。

```
if [ $(whoami) = 'root' ]; then echo "root"; else echo "not root"; fi

```

相反，你可以把命令放进 shell 脚本中，这样就更容易理解并且可以轻松运行了：

```
#!/bin/bash

if [ $(whoami) = 'root' ]; then
    echo "You are root"
else
    echo "You are not root"
fi

```

这还是比较简单的情况。尝试想象一下，一个复杂的脚本可能有五十行或一百行！

### 你将会学到什么？

在这个 Bash 脚本教程中，有九个部分。你将会学到：

* 创建并运行你的第一个 Bash Shell 脚本
* 使用变量
* 在你的 Bash 脚本中传递参数和接受用户输入
* 进行数学计算
* 操作字符串
* 使用条件语句，例如 `if-else`
* 使用 `for`、`while` 和 `until` 循环
* 创建函数

>
> ? 所有的部分都会给你一个简单的例子。如果你愿意，你可以通过访问每个部分的详细章节来更深入地学习。这些章节也都包含了实践练习。
>
>
>

### 这个教程的目标读者是谁？

这个教程适合任何想要开始学习 Bash Shell 脚本的人。

如果你是一名学生，而你的课程里包括了 Shell 脚本，那么这个系列就是为你准备的。

如果你是一个常规的桌面 Linux 用户，这个系列将会帮助你理解在探索各种软件和修复问题时遇到的大多数 Shell 脚本。你也可以使用它来自动化一些常见的、重复的任务。

在这个 Bash 脚本教程结束时，你应该可以编写简单的 Bash 脚本。

>
> ? 希望你已经拥有 Linux 命令行和编程语言的基础知识。
>
>
>

如果你对 Linux 命令行完全不熟悉，我建议你先掌握基础知识。

>
> **[19 个你应该知道的基础而重要的 Linux 终端技巧](https://itsfoss.com/basic-terminal-tips-ubuntu/)**
>
>
>

你应该了解如何在命令行中进入特定的位置。为了做到这一点，你需要理解 Linux 文件系统中的路径是如何工作的。

>
> **[Linux 中的绝对路径和相对路径有什么不同](https://linuxhandbook.com/absolute-vs-relative-path/)**
>
>
>

接下来，这个教程系列会给你介绍目录导航和文件操作的基本知识。

>
> **[终端基础：Linux 终端入门](/article-16104-1.html)**
>
>
>

### 1、编写你的第一个 Bash Shell 脚本

创建一个名为 `hello.sh` 的新文件：

```
nano hello.sh

```

这将在终端中打开 nano 编辑器。在其中输入以下几行代码：

```
#!/bin/bash
echo "Hello World"

```

通过按 `Ctrl+X` 键可以保存并退出 nano 编辑器。

现在，你可以以以下方式运行 Bash Shell 脚本：

```
bash hello.sh

```

你应该可以看到以下的输出：

```
Hello World

```

另一种方式是首先赋予脚本执行权限：

```
chmod u+x hello.sh

```

然后这样运行它：

```
./hello.sh

```

>
> ? 你也可以使用基于图形用户界面的文本编辑器来编写脚本。这可能更适合编写较长的脚本。然而，你需要切换到保存脚本的目录中才能运行它。
>
>
>

恭喜！你刚刚运行了你的第一个 Bash 脚本。

>
> **[Bash 基础知识系列 #1：创建并运行你的第一个 Bash Shell 脚本](/article-15921-1.html)**
>
>
>

### 2、在 Bash 脚本中使用变量

变量的声明方式如下：

```
var=some_value

```

然后可以像这样访问变量：

```
$var

```

>
> ? 在声明变量时，等号（`=`）前后不能有空格。
>
>
>

我们通过添加一个变量来修改前面的脚本。

```
#!/bin/bash
message="Hello World"
echo $message

```

如果运行这个脚本，输出仍然会保持不变。

```
Hello World

```

>
> **[Bash 基础知识系列 #2：在 Bash 中使用变量](/article-15991-1.html)**
>
>
>

### 3、向 Bash 脚本传递参数

你可以在运行 Bash 脚本时以以下方式传递参数：

```
./my_script.sh arg1 arg2

```

在脚本中，你可以使用 `$1` 来代表第 1 个参数，用 `$2` 来代表第 2 个参数，以此类推。`$0` 是一个特殊变量，它代表正在运行的脚本的名字。

现在，创建一个新的 shell 脚本，命名为 `arguments.sh`，并向其中添加以下几行代码：

```
#!/bin/bash

echo "Script name is: $0"
echo "First argument is: $1"
echo "Second argument is: $2"

```

使其可执行并像这样运行它：

```
$ ./argument.sh abhishek prakash
Script name is: ./argument.sh
First argument is: abhishek
Second argument is: prakash

```

让我们快速看一下特殊变量：

| 特殊变量 | 描述 |
| --- | --- |
| `$0` | 脚本名称 |
| `$1`、`$2`...`$9` | 脚本参数 |
| `${n}` | 10 到 255 的脚本参数 |
| `$#` | 参数数量 |
| `$@` | 所有参数一起 |
| `$$` | 当前 shell 的进程 id |
| `$!` | 最后执行命令的进程 id |
| `$?` | 最后执行命令的退出状态 |

你也可以通过接受键盘输入使你的 Bash 脚本变得交互式。

为此，你必须使用 `read` 命令。你还可以使用 `read -p` 命令提示用户进行键盘输入，而不需要 `echo` 命令。

```
#!/bin/bash

echo "What is your name, stranger?"
read name
read -p "What's your full name, $name? " full_name
echo "Welcome, $full_name"

```

现在，如果你运行这个脚本，当系统提示你输入“参数”时，你必须输入。

```
$ ./argument.sh
What is your name, stranger?
abhishek
What's your full name, abhishek? abhishek prakash
Welcome, abhishek prakash

```

>
> **[Bash 基础知识系列 #3：传递参数和接受用户输入](/article-16001-1.html)**
>
>
>

### 4、执行算术运算

在 Bash Shell 中执行算术运算的语法是这样的：

```
$((arithmetic_operation))

```

下面是你可以在 Bash 中执行的算术运算的列表：

| 操作符 | 描述 |
| --- | --- |
| `+` | 加法 |
| `-` | 减法 |
| `*` | 乘法 |
| `/` | 整数除法（没有小数） |
| `%` | 模运算（只余） |
| `**` | 指数（a 的 b 次方） |

以下是在 Bash 脚本中进行加法和减法的示例：

```
#!/bin/bash

read -p "Enter first number: " num1
read -p "Enter second number: " num2

sum=$(($num1+$num2))
sub=$(($num1-$num2))
echo "The summation of $num1 and $num2 is $sum"
echo "The substraction of $num2 from $num1 is $sub"

```

你可以执行 Shell 脚本，使用你选择的任意数字作为参数。

![](/data/attachment/album/202308/23/113725b531151fr0va46dq.png)

如果你尝试除法，会出现一个大问题。Bash 只使用整数。默认情况下，它没有小数的概念。因此，你会得到 10/3 的结果为3，而不是 3.333。

对于浮点数运算，你需要这样使用 `bc` 命令：

```
#!/bin/bash

num1=50
num2=6

result=$(echo "$num1/$num2" | bc -l)

echo "The result is $result"

```

这个时候，你将看到准确的结果。

```
    The result is 8.33333333333333333333

```

>
> **[Bash 基础知识系列 #4：算术运算](/article-16006-1.html)**
>
>
>

### 5、在 Bash 脚本中使用数组

你可以使用 Bash 中的数组来存储同一类别的值，而不是使用多个变量。

你可以像这样声明一个数组：

```
distros=(Ubuntu Fedora SUSE "Arch Linux" Nix)

```

要访问一个元素，使用：

```
${array_name[N]}

```

像大多数其他的编程语言一样，数组的索引从 0 开始。

你可以像这样显示数组的所有元素：

```
${array[*]}

```

这样获取数组长度：

```
${#array_name[@]}

```

>
> **[Bash 基础知识系列 #5：在 Bash 中使用数组](/article-16016-1.html)**
>
>
>

### 6、Bash 中的基础字符串操作

Bash 能够执行许多字符串操作。

你可以使用这种方式获取字符串长度：

```
${#string}

```

连接两个字符串：

```
str3=$str1$str2

```

提供子字符串的起始位置和长度来提取子字符串：

```
${string:$pos:$len}

```

这里有一个例子：

![](/data/attachment/album/202308/23/113726w0rf2l9lb38mm24t.png)

你也可以替换给定字符串的一部分：

```
${string/substr1/substr2}

```

并且你也可以从给定字符串中删除一个子字符串：

```
    ${string/substring}

```

>
> **[Bash 基础知识系列 #6：处理字符串操作](/article-16047-1.html)**
>
>
>

### 7、在 Bash 中使用条件语句

你可以通过使用 `if` 或 `if-else` 语句为你的 Bash 脚本添加条件逻辑。这些语句以 `fi` 结束。

单个 `if` 语句的语法是：

```
if [ condition ]; then
  your code
fi

```

注意使用 `[ ... ];` 和 `then` 。

`if-else` 语句的语法是：

```
if [ expression ]; then
    ## execute this block if condition is true else go to next
elif [ expression ]; then
    ## execute this block if condition is true else go to next
else
    ## if none of the above conditions are true, execute this block
fi

```

这里有一个使用 `if-else` 语句的 Bash 脚本示例：

```
#!/bin/bash

read -p "Enter the number: " num
mod=$(($num%2))

if [ $mod -eq 0 ]; then
    echo "Number $num is even"
else
    echo "Number $num is odd"
fi

```

运行它，你应该能看到这样的结果：

![](/data/attachment/album/202308/23/113726q2008j8aw9tjw02n.png)

`-eq` 被称为测试条件或条件操作符。有许多这样的操作符可以给你不同类型的比较：

这些是你可以用来进行数值比较的测试条件操作符：

| 条件 | 当...时，等同于 true |
| --- | --- |
| `$a -lt $b` | `$a < $b` （`$a` 是小于 `$b`） |
| `$a -gt $b` | `$a > $b` （`$a` 是大于 `$b`） |
| `$a -le $b` | `$a <= $b` （`$a` 是小于或等于 `$b`） |
| `$a -ge $b` | `$a >= $b` （`$a` 是大于或等于 `$b`） |
| `$a -eq $b` | `$a == $b` （`$a` 等于 `$b`） |
| `$a -ne $b` | `$a != $b` （`$a` 不等于 `$b`） |

如果你在进行字符串比较，你可以使用以下这些测试条件：

| 条件 | 当...时，等同于 true |
| --- | --- |
| `"$a" = "$b"` | `$a` 等同于 `$b` |
| `"$a" == "$b"` | `$a` 等同于 `$b` |
| `"$a" != "$b"` | `$a` 不同于 `$b` |
| `-z "$a"` | `$a` 是空的 |

还有些条件用于检查文件类型：

| 条件 | 当...时，等同于 true |
| --- | --- |
| `-f $a` | `$a` 是一个文件 |
| `-d $a` | `$a` 是一个目录 |
| `-L $a` | `$a` 是一个链接 |

>
> ? 要特别注意空格。开括号和闭括号、条件之间必须有空格。同样地，条件操作符（`-le`、`==` 等）之前和之后必须有空格。
>
>
>

>
> **[Bash 基础知识系列 #7：If-Else 语句](/article-16083-1.html)**
>
>
>

### 8、使用 Bash 脚本中的循环

Bash 支持三种类型的循环：`for`、`while` 和 `until`。

这是 `for` 循环的一个例子：

```
#!/bin/bash

for num in {1..10}; do
    echo $num
done

```

运行它，你将看到以下输出：

```
1
2
3
4
5
6
7
8
9
10

```

如果你选择使用上面的示例，可以使用 `while` 循环这样重写：

```
#!/bin/bash

num=1
while [ $num -le 10 ]; do
    echo $num
    num=$(($num+1))
done

```

同样，可以使用 `until` 循环来重写：

```
#!/bin/bash

num=1
until [ $num -gt 10 ]; do
    echo $num
    num=$(($num+1))
done

```

>
> ? `while` 循环和 `until` 循环非常相似。区别在于：`while` 循环在条件为真时运行，而 `until` 循环在条件为假时运行。
>
>
>

>
> **[Bash 基础知识系列 #8：For、While 和 Until 循环](/article-16114-1.html)**
>
>
>

### 9、在 Bash 脚本中使用函数

Bash Shell 支持使用函数，这样你不必反复编写相同的代码片段。

这是声明 Bash 函数的通用语法：

```
function_name() {
  commands
}

```

这是一个使用带参数的函数的 Bash 脚本样例：

```
#!/bin/bash

sum() {
    sum=$(($1+$2))
    echo "The sum of $1 and $2 is: $sum"
}

echo "Let's use the sum function"
sum 1 5

```

如果你运行该脚本，你将看到以下输出：

```
Let's use the sum function
The sum of 1 and 5 is: 6

```

>
> **[Bash 基础知识系列 #9：Bash 中的函数](/article-16116-1.html)**
>
>
>

### 接下来呢？

这只是一个初窥。这个 Bash 脚本教程只是一篇引言。Bash 脚本的内容还有很多，你可以慢慢地、逐渐地探索。

GNU Bash 参考是一份优秀的在线资源，可以解答你的 Bash 疑问。

>
> **[GNU Bash 参考](https://www.gnu.org/software/bash/manual/bash.html)**
>
>
>

除此之外，你可以下载这本免费书籍来学习更多在此未涵盖的 Bash 内容：

>
> **[下载 Bash 初学者指南](https://tldp.org/LDP/Bash-Beginners-Guide/Bash-Beginners-Guide.pdf)**
>
>
>

一旦你具有足够的 Bash 基础知识，你可以通过这本免费书籍来学习高级 Bash 脚本：

>
> **[下载高级 Bash 编程指南](https://tldp.org/LDP/abs/abs-guide.pdf)**
>
>
>

这两本书至少都有十年的历史，但你仍然可以使用它们来学习 Bash。

? 希望你喜欢这个作为学习 Bash 脚本起点的教程。请在评论区提供你的反馈。

*（题图：MJ/98f47121-7426-4297-9242-8683ccf0496d）*

---

via: <https://itsfoss.com/bash-scripting-tutorial/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[lujun9972](https://github.com/lujun9972) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1102 英伟达显卡 BIOS 签名锁被破解

Summary:
? 英伟达显卡 BIOS 签名锁被破解
? 现在可以在 Excel 中使用 Python
? 用人工智能工具将旧的 COBOL 代码转换为 Java
»
»

IT界的圣经：只要能运行就别折腾。

COBOL、VBA这些古董玩意儿早就该扔了

来自广东广州的 Chrome Mobile 90.0|Android 11 用户

![](/data/attachment/album/202308/23/161428vttymfilt90z2o79.jpg)

![](/data/attachment/album/202308/23/161439bsxwfzekr1hcl1l2.jpg)

### 英伟达显卡 BIOS 签名锁被破解

十年来，英伟达一直利用其显卡的 BIOS 签名检查来提高其设备 vBIOS 和固件的安全性。但这导致开源的 Nouveau 驱动程序受到限制，只能以较低的启动时钟频率运行。以至于 GeForce GTX 700 系列仍然是开源 Nouveau 驱动程序支持最好的系列。现在，TechPowerUP 发布的运行在 Windows 上的工具破解了英伟达 BIOS 签名锁，可以支持 vBIOS 修改和与新一代 GPU 的交叉刷新。这个签名锁的破解是否会对 Nouveau 开发人员产生有意义的影响还不确定，但有可能不会，因为存在法律灰色地带。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/NVIDIA-Lock-Broken)**
>
>
>

>
> 老王点评：如果签名锁的机制被进一步披露，或许开源的英伟达显卡驱动会有质的变化。
>
>
>

![](/data/attachment/album/202308/23/161457cldsmyrrldtznmxg.jpg)

### 现在可以在 Excel 中使用 Python

微软发布了 Python in Excel 的公开预览版，无需任何设置就可以在同一工作簿中结合 Python 和 Excel 分析。使用新的 `PY()` 函数，用户可以直接在单元格中输入 Python 代码，Python 计算在微软云中运行，计算结果会返回到工作表中。用户也可以利用 Python 图表库创建各种专业可视化图表，进行机器学习、预测分析、数据清理等工作。Python 之父退休后在微软任职，他帮助定义了 Python in Excel 的架构。他说，“当我三年前加入微软时，我做梦也想不到会有这种可能。”

>
> **[消息来源：微软](https://techcommunity.microsoft.com/t5/excel-blog/announcing-python-in-excel-combining-the-power-of-python-and-the/ba-p/3893439)**
>
>
>

>
> 老王点评：这确实是一种奇妙的组合，两种最常用的数据分析方式结合在一起了。只是，VBA 以后怎么办？
>
>
>

![](/data/attachment/album/202308/23/161513ln2xx2bnllvnbcfb.jpg)

### 用人工智能工具将旧的 COBOL 代码转换为 Java

IBM 称，有数十亿行 COBOL 代码可能需要进行现代化处理，这包括重构 COBOL 中的业务服务，将代码转换为 Java 代码，然后借助自动测试验证结果。IBM 将于 2023 年推出一个生成式人工智能工具，以加快 IBM Z 大型机上 COBOL 到 Java 的翻译速度。它生成的 Java 代码是面向对象的，但仍可以与 COBOL 应用程序的其余部分以及 CICS、IMS、DB2 等关键服务和其他 z/OS 运行时进行互操作。

>
> **[消息来源：The Register](https://www.theregister.com/2023/08/22/ibm_says_genai_can_convert/)**
>
>
>

>
> 老王点评：这样的话，就不用担心当那些 COBOL 程序员逐渐老了甚至去世，没人维护那些几十年前的银行基础设施了。
>
>
>


如何在 GitLab 执行器中使用 Podman

![](/data/attachment/album/202308/24/093145pkr5rd2qqkmch6xv.jpg)

>
> 使用 Podman 启动 GitLab 执行器有多种方法，我在本文中概述了其中两种。
>
>
>

GitLab <ruby> 执行器 <rt>  Runner </rt></ruby> 是一个与 GitLab CI/CD 配合使用的应用，可在 GitLab 基础设施上的流水线中运行作业。它们通常用于在提交代码后自动编译应用或在代码库上运行测试。你可以将它们视为基于云的 [Git 钩子](https://www.redhat.com/sysadmin/git-hooks?intcmp=7013a000002qLH8AAM)。

主要的公共 [GitLab 实例](https://gitlab.com) 提供了许多易于访问的共享执行器，可供你在 CI 流水线中使用。你可以在 GitLab 上仓库的 <ruby> 设置 <rt>  Settings </rt></ruby> -> CI/CD -> <ruby> 执行器 <rt>  Runners </rt></ruby> 中找到共享执行器的列表。

![Display available GitLab runners in your repository's settings](/data/attachment/album/202308/24/093215hkkwcwx0ws4hcc6n.png)

你可能不想依赖共享执行器，而是选择自己的执行器，原因有很多。例如，控制执行器运行的基础设施以实现额外的安全性和/或隐私、灵活的执行器配置或分配给你的 GitLab 用户帐户的有限 CI 分钟数。

GitLab 执行器依赖于 <ruby> <a href="https://docs.gitlab.com/runner/executors/">  执行环境 </a> <rt>  executor </rt></ruby> 工具来运行 CI 作业。执行环境有许多选项可用：Docker、Kubernetes、VirtualBox 等。

那么，Podman 作为执行环境呢？

自 [v4.2.0](https://github.com/containers/podman/releases/tag/v4.2.0) 起，Podman 对 GitLab 执行器提供了原生支持。以下是使用 Podman 作为 GitLab 执行器的 [执行环境](https://docs.gitlab.com/runner/executors/docker.html) 的两种方法的快速浏览。

### Docker 执行环境

你可以在 GitLab 执行器中使用 Podman 作为 Docker 的直接替代品。就是这样：

本示例使用 2023 年 2 月的 CentOS Stream 9 环境，使用 Podman v4.4.0。它应该可以在任何具有足够新的 Podman 的 RHEL/CentOS Stream/Fedora 环境中正常工作。查看 [GitLab 文档](https://docs.gitlab.com/runner/executors/docker.html#use-podman-to-run-docker-commands) 了解先决条件。

首先，安装 Podman：

```
$ sudo dnf -y install podman

```

接下来安装 **gitlab-runner** 包：

```
# 添加 GitLab 执行器仓库
$ curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash

# 安装 gitlab-runner 包
$ sudo dnf -y install gitlab-runner

```

最后，允许用户在注销后执行任务：

```
$ sudo loginctl enable-linger gitlab-runner

```

#### 配置并注册执行器

使用以下步骤配置 Docker 运行环境。

安装 **gitlab-runner** 包会创建一个 **gitlab-runner** 用户帐户，但你需要 root 访问权限才能操作该用户帐户。**gitlab-runner** 可以在用户模式下运行，但需要一些手动干预来进行构建处理。在此示例中，我使用 `sudo` 在系统模式下运行它。它看起来是这样的：

```
$ sudo gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=7978 revision=d540b510 version=15.9.1
Running in system-mode.

Enter the GitLab instance URL (for example, https://gitlab.com/):
https://gitlab.com
Enter the registration token:
xxxxxxxxxxxxxxxxx
Enter a description for the runner:
[lmandvek-c9s-gitlab-runner]:
Enter tags for the runner (comma-separated):

Enter optional maintenance note for the runner:

WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://gitlab.com/gitlab-org/gitlab/-/issues/380872
Registering runner... succeeded                     runner=GR13489419oEPYcJ8
Enter an executor: custom, docker, ssh, docker-ssh+machine, docker-ssh, parallels, shell, virtualbox, docker+machine, instance, kubernetes:
docker
Enter the default Docker image (for example, ruby:2.7):
registry.gitlab.com/rhcontainerbot/pkg-builder
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"

```

你将需要一些额外的配置才能使用 Podman。配置执行器为每个作业创建一个网络。有关更多信息，请参阅 [GitLab 文档](https://docs.gitlab.com/runner/executors/docker.html#create-a-network-for-each-job)。

首先，启用 Podman 系统服务并修改 `/etc/gitlab-runner/config.toml` 中的环境：

```
[[runners]]
    environment = ["FF_NETWORK_PER_BUILD=1"]
    [runners.docker]
        host = "unix:///run/user/1001/podman/podman.sock"

```

重启执行器以实施更改：

```
$ sudo gitlab-runner restart

```

验证新的执行器在 GitLab 项目的 <ruby> 设置 <rt>  Settings </rt></ruby> -> CI/CD -> <ruby> 执行器 <rt>  Runners </rt></ruby> 中可见：

![Restart the GitLab runner](/data/attachment/album/202308/24/093216z65zpupklzejukeu.png)

接下来，验证你的 CI 流水线正在使用执行器。你的 CI 任务日志将提及正在使用的执行器的名称以及任何其他配置信息，例如 执行器的执行环境的功能标志和容器镜像。

![View CI tasklogs to display the runner](/data/attachment/album/202308/24/093216cmjd453j75aj4c7a.png)

### Podman-in-Podman（pipglr）

[Chris Evich](https://gitlab.com/cevich) 创建了 [pipglr](https://gitlab.com/qontainers/pipglr)，这是一个 Podman-in-Podman 设置，用于使用免 root 的 Podman 来支持你自己的免 root 的 GitLab 执行器。此方法不需要对 `.gitlab-ci.yaml` 配置进行任何更改，因此你可以继续按原样使用现有设置。

以下是帮助你运行此程序的快速设置指南。

#### 配置步骤

容器镜像是从 [pipglr Containerfile](https://gitlab.com/qontainers/pipglr) 自动构建的，因此将镜像设置为该仓库：

```
$ IMAGE="registry.gitlab.com/qontainers/pipglr:latest"

```

接下来，使用你的 GitLab 注册令牌创建 Podman 密钥：

```
$ echo '<actual registration token>' | podman secret create REGISTRATION_TOKEN -

```

创建一个空白的 `config.toml`，稍后将包含你的所有执行器设置。你必须执行此步骤才能使以下 `podman container register runlabel $IMAGE` 步骤成功：

```
$ touch ./config.toml  # 重要:文件必须存在，即使是空的。

```

注册你的执行器。你可以重复此步骤来注册多个执行器。如果你想使用可能不同的标签或配置选项集并行运行多个 CI 任务，这非常有用。

```
$ podman container runlabel register $IMAGE

```

使用你选择的编辑器编辑 `config.toml`。这是可选的，但通常需要更改用于实际 CI 任务的容器镜像。默认情况下，镜像设置为：`registry.fedoraproject.org/fedora:latest`。

```
$ $EDITOR ./config.toml  # if desired

```

最后，配置对卷的访问。容器卷内使用多个用户，因此你必须专门配置它们以允许访问。再次使用 `runlabel` 来完成：

```
$ podman container runlabel setupstorage $IMAGE

$ podman container runlabel setupcache $IMAGE

```

#### 测试执行器

是时候检查配置了。首先启动 GitLab 执行器容器：

```
$ podman container runlabel run $IMAGE

```

允许执行器用户在注销后运行服务：

```
$ sudo loginctl enable-linger $(id -u)

```

验证你的新执行器在 GitLab 项目的 <ruby> 设置 <rt>  Settings </rt></ruby> -> CI/CD -> <ruby> 执行器 <rt>  Runners </rt></ruby> 中可见：

![Verify the new runner is visible](/data/attachment/album/202308/24/093216nhrhr3538h4o2omm.png)

最后，验证你的 CI 流水线正在使用你的执行器：

![Verify the CI pipeline](/data/attachment/album/202308/24/093216gqhuse4qsilepl64.png)

### 总结

使用 Podman 启动 GitLab 执行器有多种方法，我在此处概述了其中两种。尝试一下，然后让我知道哪一个最适合你。如果 Docker 执行环境方法有任何问题，请登录并通过 [Podman 上游](https://github.com/containers/podman/issues/new/choose) 或 [GitLab 支持](https://about.gitlab.com/support/#contact-support) 提交问题。如果 pipglr 方法出现问题，请在 pipglr 上游 [提交问题](https://gitlab.com/qontainers/pipglr/-/issues/new)。

GitLab 与 Podman 一起运行愉快 ?

*（题图：MJ/97e0ff4d-b769-4e20-990f-8c1e89e48434）*

---

via: <https://opensource.com/article/23/3/podman-gitlab-runners>

作者：[Lokesh Mandvekar](https://opensource.com/users/lsm5) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


LibreOffice 7.6 发布，下一个版本 24.2

![](/data/attachment/album/202308/24/115300zf7jjse8k7hjdbm8.jpg)

>
> LibreOffice 7.6 版本已经到来，这个版本为我们带来了众多优秀的改进。
>
>
>

LibreOffice 7.6 是这款优秀的开源办公套件的最新重要升级。

在其上一次的 [LibreOffice 7.5 版本发布](https://news.itsfoss.com/libreoffice-7-5-release/) 中，开发者们发布了新的应用图标和一系列的功能提升。而这一次，它为我们带来了一套全新的功能组合。

>
> ? 从 **2024** 年开始，文档基金会将实行基于日历的版本编号，意即，计划于 2024 年 2 月发布的下一个版本将以 **LibreOffice 24.2** 的形式呈现给大家。
>
>
>

让我们看一下这次发布的新版本有哪些新添的亮点。

### LibreOffice 7.6：有哪些亮点？

保持一贯的预期，所有工具都带来了显著的改良，对 Writer、Calc 和 Impress 的改进更是明显，包括以下几点：

* 对文档主题的全面支持
* 对帮助功能的升级改进
* 在兼容性上进行的改善
* 新的页码向导功能（Writer）
* 幻灯片的导航面板功能（Impress）
* 色彩排序的自动过滤器支持（Calc）

#### 对于 Writer 的优化

此次更新中的主要亮点是提供了对文档主题的支持。简单来说，当需要的时候，你可以为你的文档标题、正文和副标题挑选一套预设的颜色搭配。

![](/data/attachment/album/202308/24/115415wizbyqzvufqq8efx.png)

你可以通过菜单 “<ruby> 格式 <rt>  Format </rt></ruby> → <ruby> 主题 <rt>  Themes </rt></ruby>” 来找到这项功能。

一个细微但重大的改进是在 “<ruby> 插入 <rt>  Insert </rt></ruby>” 菜单中新增了一个向导，可以使用它在页眉/页脚添加页码。

新增了一个选项，使你能够通过聚光灯功能在文本中高亮显示段落样式或直接格式。

![](/data/attachment/album/202308/24/115415zlrwwl0l20q0qkl0.png)

在面向用户体验的改进方面，你在编辑文档时可以从侧边栏方便快捷地找 到 “<ruby> 无障碍检查 <rt>  Accesbility Check </rt></ruby>” 选项。

![](/data/attachment/album/202308/24/115415i9icnn2n2m92mjlk.jpg)

其他改动包括：

* 依靠段落样式，现可以更加灵活地创建图表了
* 现在能够直接在关联表格中编辑参考文献条目了
* 如果你无意间试图删除文档中的隐藏部分，Writer 会发出警告提醒
* Writer 现在接受用于短语检查的自定义词典了

#### Calc 的改进

![](/data/attachment/album/202308/24/115416h2ytb711y97h1bhv.png)

新的颜色排序功能使得排序变得更为容易。

除此之外，还有一个用于数据透视表的紧凑的新布局。其他细微和技术层面的改进包括：

* 复制到另一个文件的电子表格保留了用户定义的打印范围
* 可以自定义新注释的默认外观
* 会保存求解器设置
* 如果表格为空，则在删除时不会显示确认
* 超链接格式已经进行改善，使其看起来更为醒目

#### Impress 与 Draw 的改进

现在，当你播放一个演示文稿时，会出现便于快速浏览的导航按钮。这是个小改动，但是应该可以帮助你轻松地在幻灯片之间进行导航。

其他的改进包括：

* 增加了对多图片 tiff 文件的支持
* 可以在导航器中按照从前到后的顺序列出对象

#### 其他变化

![](/data/attachment/album/202308/24/115416t6wznountnwwapwk.png)

除了之前的亮点，你还可以得到一个已有所改进的 “<ruby> 帮助 <rt>  Help </rt></ruby>” 部分。这里将展示关于改变布局或快速完成许多任务所需的命令/快捷键信息。

如果你想深入了解, 可以查阅 [LibreOffice 7.6 发行备注](https://wiki.documentfoundation.org/ReleaseNotes/7.6)。

### 如何升级/安装？

对于大部分用户来说，LibreOffice 可能已经预安装好了。如果是这样的话，你应该等待来自你的系统仓库、LibreOffice 的 PPA，或者 Flathub 的更新。这通常需要几天时间。

>
> ? 你也可以选择从你的系统中卸载 LibreOffice，并通过以下步骤获取新版本。但如果你能等待，我们建议你等待。
>
>
>

如果你还没有安装它并想要获取新版本，只需要根据你的需求（DEB/RPM）简单地 [下载 tar 包](https://www.libreoffice.org/download/download-libreoffice/)。

![](/data/attachment/album/202308/24/115417mazq6wty4g6q6m66.png)

接下来，解压这个包，并在 `DEBS` 或 `RPMS` 文件夹下找到所有 .deb/.rpm 文件。

![](/data/attachment/album/202308/24/115417fvhpbw1p9rd129yr.png)

当你进入这个文件夹，在终端中使用右键菜单打开它（如图所示）并根据你的包输入以下命令之一（适用于 Fedora 和基于 Debian 的发行版）：

![](/data/attachment/album/202308/24/115417ye3e219ttt24twwt.png)

```
sudo dnf install *.rpm
sudo dpkg -i *.deb

```

? 你对最新的 LibreOffice 发行版本有什么想法？请在下方的评论区分享你的看法。

*（题图：MJ/1afe80f6-a7dd-4e9e-ac77-f8581492b08a）*

---

via: <https://news.itsfoss.com/libreoffice-7-6/>

作者：[Ankush Das](https://news.itsfoss.com/author/ankush/) 选题：[lujun9972](https://github.com/lujun9972) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1103 谷歌工程师日常：一日一小时工作制

Summary:
? 谷歌工程师日常：一日一小时工作制
? Meta 推出全能 AI 翻译模型：100 种语言，声音和文字互译
? AI 策划的剧本，好莱坞说不
»
»

![](/data/attachment/album/202308/24/185104w07bbil7uf97uflf.jpg)

![](/data/attachment/album/202308/24/185119z6kr33prom4kto3p.jpg)

### 谷歌工程师日常：一日一小时工作制

化名为 Devon 的谷歌工程师在接受《财富》杂志采访时透露，他的工作制度独树一帜：每天仅需为谷歌工作一小时。他通常在每天 9 点左右起床，完成洗漱和早餐后工作至 11 点，之后他会将精力转向自己的创业公司。尽管工作时长短，但他的年薪却高达 15 万美元。他认为，谷歌更希望能保留这些强大的人才，避免他们向竞争对手转投。在业界，这种被称为“penning”的情况并非罕见。

>
> **[消息来源：《财富》](https://fortune.com/2023/08/20/gen-z-google-one-hour-workday-2/)**
>
>
>

>
> 老王点评：虽然嫉妒让人热泪盈眶，但无论如何，只有那些能被雇主“金屋藏娇”的人才，才能享受如此待遇。
>
>
>

![](/data/attachment/album/202308/24/185131u0io3ml470e4p4dy.jpg)

### Meta 推出全能 AI 翻译模型：100 种语言，声音和文字互译

Meta 在大型语言模型与多模态技术领域一直走在前列。过去，Meta 已发布过处理[语音](/article-15839-1.html)、[图像、音乐](/article-15906-1.html)的 AI 模型，还有一款因安全风险过大而无法公开代码的[语音生成](/article-15927-1.html) AI 模型。近日，Meta 又推出一款名为 SeamlessM4T 的全功能多模态 AI 翻译模型。此模型不仅能处理文本和音频翻译，还具备声音和文字的互译能力，并且覆盖近 100 种语言。

>
> **[消息来源：Facebook](https://about.fb.com/news/2023/08/seamlessm4t-ai-translation-model/)**
>
>
>

>
> 老王点评：基于大型语言模型的驱动，加上多模态模型的基础，我们似乎可以预见，在不远的未来或许会出现无法区分人与 AI 的情况。这会让人想起互联网早期的名言：'在网上，无人知道你是不是一只狗。'
>
>
>

![](/data/attachment/album/202308/24/185145arl5qnuodu4zvzj3.jpg)

### AI 策划的剧本，好莱坞说不

因抵制 AI 带来的威胁，数万名美国编剧工会成员在近几个月发起了罢工，以寻求更高的薪资和更长的合同。代表了 350 多家电影和电视制作公司的美国电影电视制片人联盟为了尽快结束罢工，作出了承诺：他们决不会把 AI 生成的剧本、对话或情节视为文学或原始材料，排除了 AI 获得任何写作荣誉的可能。也就是说，如果编剧对 AI 生成的材料进行修改，这些工作不会被认为是重写，他们可以获得全额报酬和荣誉。

>
> **[消息来源：The Register](https://www.theregister.com/2023/08/24/hollywood_tv_and_film_studios/)**
>
>
>

>
> 老王点评：一旦全篇剧本由 AI 创作，编剧的薪酬便可省下。进一步想象，AI 生成的面部、身体和嗓音可能会取代部分乃至全部演员的角色。看起来，被 AI 完全替代只是时间问题，也许比我们预期的要快。
>
>
>


TransFLAC：将 FLAC 转换为有损格式

![](/data/attachment/album/202308/25/142504tpt99jjz99o955v2.jpg)

### FLAC：无损音频压缩格式

自由无损音频编解码器（[FLAC](https://xiph.org/flac/)）是一种无损音频压缩格式，可保留所有原始音频数据。这意味着 FLAC 文件可以解码成与原始音频文件完全相同的副本，而不会有任何质量上的损失。不过，无损压缩通常会比有损压缩的文件大小更大，这就是为什么需要一种将 FLAC 转为有损格式的方法。而这就是 TransFLAC 可以提供帮助的地方。

FLAC 是一种流行的数字音频文件存档格式，也可用于在家用电脑上存储音乐收藏。音乐流媒体服务也越来越普遍地提供 FLAC 作为高品质音频的一种选择。

对于存储空间有限的便携设备，通常使用 MP3、AAC 和 OGG Vorbis 等有损音频格式。这些格式的文件大小比无损格式小得多，但音质仍然很好。

一般来说，FLAC 是对无损音频质量要求较高的应用（如存档、母带制作和 <ruby> 鉴定聆听 <rt>  critical listening </rt></ruby>）的不错选择。对于文件大小更为重要的应用，如在便携设备上存储音乐或通过互联网串流音乐，有损格式是不错的选择。

### TransFLAC：将 FLAC 转换为有损格式

[TransFLAC](https://bitbucket.org/gbcox/transflac/wiki/Home) 是一款命令行应用，可将 FLAC 音频文件转换为指定质量级别的有损格式。它能使 FLAC 和存储有损格式的音乐库保持部分或完全同步。TransFLAC 还能同步目录结构中存储的专辑封面、专辑封底和文件夹文件。你可以在终端窗口中交互式运行 TransFLAC，也可以使用 cron 或 systemd 等应用安排其自动运行。

必须指定以下四个参数：

1. **输入 FLAC 目录**：要递归搜索 FLAC 音频文件的目录。目录名大小写敏感。TransFLAC 会将目录树中的所有 FLAC 音频文件转换为指定的有损编解码格式。程序将解决遇到的任何符号链接，并显示物理路径。
2. **输出有损目录**：有损音频文件的存储目录。目录名大小写敏感。程序将解析遇到的任何符号链接并显示物理路径。
3. **有损编解码器**：用于转换 FLAC 音频文件的编解码器。编解码器名称的大小写并不重要。对于给定的文件大小或比特率，OPUS 通常能提供最佳音质，是推荐的编解码器。有效值为 [opus](https://opus-codec.org/) | [ogg](https://xiph.org/vorbis/) | [aac](https://en.wikipedia.org/wiki/Fraunhofer_FDK_AAC) | [mp3](https://lame.sourceforge.io/)
4. **编解码器质量**： 用于编码有损音频文件的质量预设。质量名称的大小写并不重要。**OPUS STANDARD** 质量提供全带宽、立体声音乐、良好的音频质量和透明度，是推荐的设置。有效值为 低 | 中 | 标准 | 高 | 优质

**TransFLAC** 允许对配置中的某些项目进行 [自定义](https://bitbucket.org/gbcox/transflac/wiki/src-tf-conf-override.sh)。项目 [维基](https://bitbucket.org/gbcox/transflac/wiki/TransFLAC) 提供了更多信息。

在 [Fedora Linux](https://fedoraproject.org/) 上安装：

```
$ sudo dnf install transflac

```

![](/data/attachment/album/202308/25/142505xfepju080dn8r5z8.svg)

---

via: <https://fedoramagazine.org/transflac-convert-flac-to-lossy-formats/>

作者：[Gerald B. Cox](https://fedoramagazine.org/author/gbcox/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1104 Firefox 实现 Chrome 扩展的无缝接入

Summary:
? Firefox 实现 Chrome 扩展的无缝接入
? 人工智能的训练利用了众多作家的盗版作品
? 瘫痪女性通过 AI 技术“重获语言”，全球首例
»
»

第一个的接入，看支持的扩展，好像本来就是firefox有的，是能真的安装chrome的扩展，还是只是提供了一个在firefox搜索下载的快捷方式，下载的还是firefox版本啊？

安装的对应版本，其实他们的重点在于“导入”。

![](/data/attachment/album/202308/25/143652grtxl75rrlrv0rlr.jpg)

![](/data/attachment/album/202308/25/143701w66frk6k66q1qgty.jpg)

### Firefox 实现 Chrome 扩展的无缝接入

Mozilla 的 Firefox 浏览器引入了 WebExtensions 系统，使得用户可以从 Chrome 等其他浏览器导入所选的扩展程序。用户现在可以在初次启动 Firefox 或随时在设置页面中使用这项集成到浏览器的导入功能。不过，此功能目前只支持 Chrome 浏览器和一部分扩展程序。需要注意的是，Firefox 不会直接导入 Chrome 的扩展，而是会在 Mozilla 自己的扩展商店中安装相应的 Firefox 版本，目前已经支持 73 个扩展。

>
> **[消息来源：ghacks](https://www.ghacks.net/2023/08/23/firefox-users-may-import-chrome-extensions-now/)**
>
>
>

>
> 老王点评：这不失为一个大进步，如果能实现真正无缝的跨扩展商店安装，那就更赞了。
>
>
>

![](/data/attachment/album/202308/25/143715fnct4vczop1bjibx.jpg)

### 人工智能的训练利用了众多作家的盗版作品

Books3 是一个用于构建人工智能工具的数据集，被 Meta、彭博社等公司用来训练他们的大型语言模型。根据对 Books3 的分析，其包含的超过 17 万本书籍中，大部分都是在过去 20 年内出版的，其中约三分之一是小说，约三分之二是非小说类书籍。诸如斯蒂芬·金、扎迪·史密斯、玛格丽特·阿特伍德、村上春树等大量知名作家的版权受保护的作品也在其中。虽然创建 Books3 的独立 AI 开发者 Shawn Presser 对作者们的担忧表示理解，但他强调，他创建这个数据库的目的是让所有人都能够开发生成式人工智能工具，并担心大公司控制这项技术会带来风险。

>
> **[消息来源：卫报](https://www.theguardian.com/books/2023/aug/22/zadie-smith-stephen-king-and-rachel-cusks-pirated-works-used-to-train-ai)**
>
>
>

>
> 老王点评：AI 的诞生，是不是披着窃取人类知识的原罪？或者，我们应该为新生的 AI 打开知识的闸门？这样的困境需要我们共同探索。
>
>
>

![](/data/attachment/album/202308/25/143730gdqa19boppqybp9k.jpg)

### 瘫痪女性通过 AI 技术“重获语言”，全球首例

一名严重瘫痪的女性成功使用一种能将其大脑信号转化为语音和面部表情的技术，实现了通过数字形象进行表达。47 岁的女患者 Ann，因 18 年前的脑干中风失去基本的活动能力，无法进行语言或打字交流。借助这项全新的 AI 技术，她在未来有望从事咨询工作。不过，这一技术还需进步。在一次涉及 500 个短语的试验中，正确率为 72%，脑信号转化为文字的速度为每分钟 78 个单词，与自然对话中约 110-150 个单词的速度相比相对较慢。

>
> **[消息来源：卫报](https://www.theguardian.com/society/2023/aug/23/paralysed-woman-able-to-speak-through-digital-avatar-for-first-time)**
>
>
>

>
> 老王点评：科技的迅进让 “沉默” 的意识终于找到出口，要是霍金在世时就有这样的技术多好。
>
>
>


Roblox 返回 Linux，携手 Wine，欢迎玩家们！

Summary: 现在，所有人都能再次享受 Roblox 了！

现在，所有人都能再次享受 Roblox 了！

![](/data/attachment/album/202308/25/145035y6f30f2zp38dymf6.png)

>
> 现在，所有人都能再次享受 Roblox 了！
>
>
>

Roblox 即将重新登陆 Linux 平台。

不久前，我们曾 [报道](https://news.itsfoss.com/roblox-linux-end/) Roblox 的新反作弊软件 Hyperion 将默认阻断 [Wine](https://www.winehq.org/?ref=news.itsfoss.com) 的使用，这无疑让人失望。

然而，随着最近的开发进展，这一状况将有所改观。以下是整个情况的介绍。

发生了什么: 你看，早在 5 月，Roblox 推出了新的反作弊软件，成为了默认阻止 Wine 使用的工具，然而 **这一变化并非失误，而是故意为之**。

那时，一名 Roblox 员工在论坛中彻底否定了在 Linux 原生支持或找到变通方法运行 Roblox 的可能。

然而，事情并没有因此结束。

几天前，Roblox 的一名员工回复了论坛上的一篇帖子，称：

>
> 向 Grapejuice 社区大声疾呼 - 这是特别为你们准备的。
>
>
>

随后，他展示了一张截图，揭示了 **Roblox 在 Manjaro Linux 上运行** 的信息。

![来源：Roblox 员工 / 论坛](/data/attachment/album/202308/25/145036kaj0e4usi6j38jyb.jpg)

如果你还不知道，[Grapejuice](https://gitlab.com/brinkervii/grapejuice?ref=news.itsfoss.com) 是一个管理应用程序，可以帮助你在 Linux 上正确设置 Wine 和 Roblox。

尽管新的反作弊软件已经发布，但这显示了 Roblox 也能重新在 Linux 上运行。对我来说，这听起来很棒！

期待何时: 目前来看，这项整合工作仍在进行中，同样的，上文提到的员工表示:

>
> 我们将发布关于 Wine 的非官方支持的正式声明。至于何时，就说在不久之后™。
>
>
>

没错，Linux 上的 Roblox 玩家可能还需要稍作等待。

然而，玩家们现在应该会感到高兴，认识到至少 **Roblox 在 Linux 上的非官方支持即将到来**。

![](/data/attachment/album/202308/25/145036tm051kp03aba3053.jpg)

你可以查看 [这里](https://devforum.roblox.com/t/why-did-roblox-stop-supporting-linux-users/2444335/61?u=sirsquiddybob&ref=news.itsfoss.com) 的讨论以获取关于这个实施情况的更多详细信息。（需要登录）。

参考来源：[GamingOnLinux](https://www.gamingonlinux.com/2023/08/roblox-support-is-coming-back-to-wine-on-linux/?ref=news.itsfoss.com)

---

via: <https://news.itsfoss.com/roblox-wine-support-linux/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lujun9972](https://github.com/lujun9972) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Bodhi 7.0 版发布，基于 Ubuntu 22.04 LTS

好多Linux发行版的审美怪怪的，配色、图标根本不实用。

图标花里胡稍，外形大小各异。缩小了以后糊成一块。

界面/终端追求颜色统一，结果字一多根本分不清重点。

![](/data/attachment/album/202308/25/151230vhje4klje2z82tz8.jpg)

>
> Bodhi Linux 7.0 版终于发布! 此版本包含了一系列重要的升级和增强措施。
>
>
>

Bodhi Linux 是一款受大众喜爱的 [轻量级发行版](https://itsfoss.com/lightweight-linux-beginners/?ref=news.itsfoss.com)，其特色在于采用了 [Moksha](https://itsfoss.com/bodhi-linux-introduces-moksha-desktop/?ref=news.itsfoss.com) 桌面环境，为用户提供了独一无二的体验。（“Bodhi” 的意思是菩提树。）

其上一个主要版本 [Bodhi Linux 6.0](https://news.itsfoss.com/bodhi-linux-6-release/) 已经是两年多前的事情了，它带来了显著的改进。

Bodhi Linux 7.0 版已经计划很久了，但是因为创建者出现了一些健康问题，开发工作暂时停滞。我们希望开发人员现在情况好转；让我们一起来关注其下一个升级版。

### ? Bodhi Linux 7.0：新功能有哪些？

![](/data/attachment/album/202308/25/151300bbwwh77wc7wh7h8c.jpg)

本次发布的 Bodhi Linux 是基于 [Ubuntu 22.04](https://news.itsfoss.com/ubuntu-22-04-release/) LTS，这提供了一个非常稳定的基础。因此，无论是在硬件支持，还是在性能和安全性增强方面，都有着良好的表现。

Bodhi Linux 7.0 版现在引入了一款全新的默认主题，叫做 MokshaGreen。它包含了一款 **动态背景**、**全新的 Plymouth 引导屏幕**，以及 **全新的登录屏幕主题**。

![](/data/attachment/album/202308/25/151300atqm34tt3zqtfif3.jpg)

所以，就算可能不是很多，我们还是可以期待一些视觉上的新鲜体验。

在桌面环境方面，也进行了几次重大的更新。**Moksha 0.4.0** 带来了一系列的改进，包括：

* 重构了一些模块，移除了对一些已经弃用的库的依赖。
* 添加了一个通过 `Super + F1` 访问的 Moksha 基础快捷方式查看器。
* 解决了“应用”语言设置的按钮问题。
* 增加了对贴边窗口的支持。
* 为 MokshaGreen 主题提供了 GTK 主题和图标集。

此外，在**模块**方面，添加了一系列改进，包括：

* 对电池模块的改进带来了更好的充电状态弹窗。
* 修复了浮动菜单段错误。
* 在时钟模块中添加了日期/时间设置。
* 在 iBar 模块中添加了一个应用程序实例菜单。

除此之外，Bodhi Linux 的软件栈也进行了更新，采用了非 Snap 版本的 **Chromium 115**、**Terminology 1.13.1** 以及 **Slick-greeter 1.8.1**。

你可以查阅 [发布备注](https://www.bodhilinux.com/release/7-0-0/?ref=news.itsfoss.com) 和 [公告博客](https://www.bodhilinux.com/2023/08/21/introducing-bodhi-linux-7-0-a-landmark-release/?ref=news.itsfoss.com)，以对这个版本有更详细的了解。

### ? 获取 Bodhi Linux 7.0

对于这个发布版本，可选择三个不同的内核版本：

* 标准 ISO 版本包含 Linux 内核 5.15 LTS，
* 更新增强版的 HWE ISO 提供更近期的 Linux 内核 6.2，
* S76 ISO 版使用 System76 的 6.2.6 版本的 Linux 内核。

你可以从 Bodhi Linux 的 [官方网站](https://www.bodhilinux.com/download/?ref=news.itsfoss.com) 下载。

>
> **[Bodhi 7.0版](https://www.bodhilinux.com/download/?ref=news.itsfoss.com)**
>
>
>

（题图：[freeimages](https://www.freeimages.com/photo/bodhi-leaf-1392651)）

---

via: <https://news.itsfoss.com/bodhi-7-0-0-release/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lujun9972](https://github.com/lujun9972) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


如何使用 VLC 媒体播放器旋转视频

非常好文章，使我视频旋转

smplayer以前有视频旋转功能，现在已经没有了，vlc还是有的

![](/data/attachment/album/202308/26/110201gf37d3djvis66seu.jpg)

>
> 这个多功能的 VLC 媒体播放器还可以旋转视频方向。在桌面上观看智能手机录制的视频相当方便。
>
>
>

有时，你会遇到以显示方向错误的视频。使用智能手机摄像头拍摄的视频很可能会以这种方式出现。

如果你可以将其旋转到方便的方向，那么效果会更好。

功能丰富的 VLC 媒体播放器提供了一种旋转视频的方法。你可以：

* 暂时旋转视频（下次播放时需要再次旋转）
* 永久旋转视频（视频将始终以新方向播放）

让我们看看如何实现这两者之一。

### 在 VLC 中暂时旋转视频

让我们看看如何在 VLC 中临时旋转视频。也就是说，完成该过程后，它不会反映在实际文件上。这对于查看文件或测试文件很有用。

#### 使用预设值旋转视频

在此方法中，你可以将视频旋转 90 度、180 度和 270 度。这是你大多数时候所需要的。

打开 VLC 并选择要旋转的视频。

![Open File in VLC](/data/attachment/album/202308/26/110235cz6j63qf66lfbzmf.png)

单击主菜单上的 “<ruby> 工具 <rt>  Tools </rt></ruby>”，然后转到 “<ruby> 效果和滤镜 <rt>  Effects and Filters </rt></ruby>”。你也可以按快捷键 `CTRL + E`。

![Tools > Effects and Filters](/data/attachment/album/202308/26/110235g9b40ux4ukvia0r8.png)

在 “效果和滤镜” 页面上，选择 “<ruby> 视频效果 <rt>  Video Effects </rt></ruby>” 选项卡，然后进入 “<ruby> 几何 <rt>  Geometry </rt></ruby>”。现在，选中 “<ruby> 变换 <rt>  Transform </rt></ruby>” 复选框。

![Set the Rotation](/data/attachment/album/202308/26/110236gmn5ou2ijwg56z5x.png)

这将激活一个下拉菜单。从那里，选择你需要的适当旋转，如 90 度、180 度、水平翻转等。你可以在 VLC 窗口中查看变化。

对更改感到满意后，按 “<ruby> 保存 <rt>  Save </rt></ruby>” 按钮以所选方向保存配置。

#### 使用自定义值旋转视频

需要将视频旋转到可用预设以外的方向？ VLC 也有一个选项。

首先，像上一步一样，打开媒体，然后转到 “工具 > 效果和滤镜 > 视频效果 > 几何”。

现在，单击 “<ruby> 旋转 <rt>  Rotate </rt></ruby>” 复选框，你可以看到交互式圆形滑块现已激活。

>
> ? 对于不规则的旋转值（例如 230 度等），某些部分都会从视频中删除。
>
>
>

![Irregular rotation](/data/attachment/album/202308/26/110236m3yrf8fz909mq8zn.png)

移动滑块以获得正确的旋转。你可以在 VLC 窗口中看到视频出现的变化。确定更改后，请按 “保存” 按钮保存该配置。

>
> ? 请记住，此配置在此阶段不会永久应用于视频。但是，如果你按 “保存”，方向也会暂时应用于 VLC 中播放的其他视频。
>
>
>

### 永久旋转视频

你知道了如何临时旋转文件。永久保存视频文件更改也需要该步骤。

#### 第 1 步：转换视频

这是前一部分。打开视频文件，然后进行所需的旋转。确认特定视频所需的旋转后，按照上一步中的说明保存该配置。

#### 第 2 步：保存视频

现在，打开 VLC 并单击 “<ruby> 媒体 <rt>  Media </rt></ruby> > <ruby> 转换/保存 <rt>  Convert/Save </rt></ruby>”。这可以在没有打开任何视频文件的情况下进行，因为无论如何我们都不会处理当前打开的视频。

![Click on Convert/Save](/data/attachment/album/202308/26/110237mei08jg4408g3kz4.png)

在下一个对话框中，使用 “添加Add” 按钮选择要旋转的文件（在上一步中测试以确认所需旋转的文件）。然后按 “<ruby> 转换并保存 <rt>  Convert and Save </rt></ruby>”。

![Add Files to convert](/data/attachment/album/202308/26/110237bd17y0fbfpy717rb.png)

接下来，选择所需的视频输出，然后单击相邻的设置按钮，如下所示。

![Click on Configuration button](/data/attachment/album/202308/26/110237i9qzrjs39frebyj3.png)

出现了配置文件设置窗口。在其上，进入 “<ruby> 视频编解码器 <rt>  Video Codec </rt></ruby>”，然后转到 “<ruby> 过滤器 <rt>  Filters </rt></ruby>” 选项卡。在这里，你必须根据需要应用过滤器。一个是 “<ruby> 旋转视频过滤器 <rt>  Rotate Video Filter </rt></ruby>”，另一个是 “<ruby> 视频转换过滤器 <rt>  Video transformation Filter </rt></ruby>”。

如果你已使用 “变换” 按钮对视频应用固定变换，请选择 “<ruby> 视频变换过滤器 <rt>  Video transformation Filter </rt></ruby>”。另一方面，如果你对视频进行了一些不规则的旋转，请选择 “旋转视频过滤器”。

![Apply the Filters](/data/attachment/album/202308/26/110238ijd1fjqbear00b94.png)

检查后，按 “保存”按钮。

现在，选择输出文件位置，我们要在其中保存转换后的文件。

![Select Output file location](/data/attachment/album/202308/26/110238bgxpigo2ne1coe4r.png)

应给出一个新的文件名，这可以通过进入你选择的目录并只需在顶部栏上输入你选择的名称来完成。

>
> ? 建议提供一个新的唯一名称，以避免文件覆盖和数据丢失。
>
>
>

![Give file name](/data/attachment/album/202308/26/110239tkswfog3wsk2kg9j.png)

按 “<ruby> 开始 <rt>  Start </rt></ruby>” 开始转换。

转换将需要一些时间，具体取决于你的视频。完成后，你将获得旋转的视频，可以在任何视频播放器上查看。

>
> ? 转换视频后（无论是永久的还是临时的），最好在 “工具 > 效果和滤镜 > 视频效果 > 几何” 中关闭应用的旋转。否则，以后使用 VLC 播放的视频将出现旋转。
>
>
>

我希望你喜欢这个 VLC 技巧。欢迎你提出建议和反馈。

同时，你还可以学习这个很酷的 VLC 自动下载字幕的技巧。

>
> **[在 VLC 中自动下载字幕](https://itsfoss.com/download-subtitles-automatically-vlc-media-player-ubuntu/)**
>
>
>

*（题图：MJ/b604f181-660a-4f05-bdd2-49b5b6da0bae）*

---

via: <https://itsfoss.com/rotate-video-vlc/>

作者：[Sreenath](https://itsfoss.com/author/sreenath/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


更好地利用 Xfce 的 Thunar 文件管理器的 7 个技巧

使用习惯：pcmanfm > thunar > caja > konqueror ,nautilus3.6之后坚决不用，没有左侧树形列表

spacefm试过么如何

你需要nemo

![](/data/attachment/album/202308/26/165038pu8c3b8ct42i2jt3.jpg)

>
> Thunar 是 Xfce 提供的一款优秀文件管理器，通过这些技巧和调整，你的使用体验可以得到提升。
>
>
>

Thunar 是 Xfce 桌面环境的默认文件管理器，它实现了轻量级与优秀的用户体验的完美平衡。

但是，像其他任何尚未深入探索的工具一样，你对 Thunar 的掌握会在你深入了解它之后变得更多。

我大胆地说，一系列的特性将会改善你的 Linux 体验。

在这个指南中，我会分享可以让 Thunar 体验更上一层楼的以下技巧：

* Thunar 的通用快捷键
* 添加 Thunar 插件
* 从你上次离开的地方继续
* 使用图标进行更好的识别
* 高亮显示文件/文件夹
* 在双窗口模式下轻松复制或移动文件
* 自定义操作

那就让我们从第一条开始吧。

### 1、利用键盘快捷键

毫无疑问，利用键盘快捷键可以提升你的工作效率。

以下是一些在 Thunar 中使用的简单快捷键，可以帮助减少鼠标点击操作：

| 快捷键 | 描述 |
| --- | --- |
| `Ctrl + T` | 新加标签页 |
| `Ctrl + N` | 新建窗口 |
| `F3` | 切换至双窗格模式 |
| `Alt + ←` | 后退 |
| `Alt + →` | 前进 |
| `Ctrl + F` | 搜索文件 |
| `Ctrl + S` | 按模式选取文件 |
| `Ctrl + H` | 显示隐藏文件 |
| `Ctrl + E` | 侧边栏启用树视图 |
| `Alt + ↑` | 打开父目录 |
| `Alt + Home` | 前往主目录 |

虽然看似简单，但请相信我，这些快捷键一旦融入你的日常工作流，你就会离不开它。

### 2、从你离开的地方重新打开 Thunar

>
> ? 此功能只在 Thunar 4.18 或更高版本中可用。
>
>
>

打开文件管理器时，默认打开上次关闭时的所有标签页，这是一个令人振奋的功能。

我就是那种喜欢深入 Linux 目录进行探索的人，所以从我离开的地方重新打开 Thunar 是一项重要功能。

若要启用此功能，只需遵循以下三个简单的步骤：

* 点击 “<ruby> 编辑 <rt>  Edit </rt></ruby>” 菜单并选择 “<ruby> 偏好设定 <rt>  Preferences </rt></ruby>”
* 切换至 “<ruby> 行为 <rt>  Behavior </rt></ruby>” 标签页
* 勾选 “<ruby> 启动时还原标签 <rt>  Restore tabs on startup </rt></ruby>” 选项

![](/data/attachment/album/202308/26/165217vzjyof8k136y1ofi.png)

### 3、为文件或文件夹添加徽章

你可以把徽章看作是一个特殊标记，它可以帮助你更快地识别出特定的文件或文件夹。

另外，你也可以通过添加徽章使目录名更加直观。例如，将一个 “▶” 徽章添加到“视频”目录上。

要添加徽章，遵循下面的步骤：

* 右键点击需要添加徽章的文件/文件夹，从上下文菜单中选择 “<ruby> 属性 <rt>  Properties </rt></ruby>”
* 进入 “<ruby> 徽章 <rt>  Emblem </rt></ruby>” 标签页，为选定项选择一个或多个徽章

![](/data/attachment/album/202308/26/165218sonwqujnjqu4w4uy.png)

我添加徽章后的样子就像这样：

![](/data/attachment/album/202308/26/165218qgbzlbrdgqjl5gl7.png)

### 4、使用突出颜色高亮文件/文件夹

>
> ? 这项功能只在 Thunar 4.18 及更高版本中可用。
>
>
>

如果仅通过添加徽章仍无法使文件/文件夹在众多文件中突显出来，你可以改变它的背景或前景颜色。

**注意：改变前景颜色只会改变选定项目的字体颜色。**

要突出高亮一个文件或文件夹，你需要按照以下步骤操作：

* 将鼠标悬停在需要高亮的项目上，右键并选择 “属性”。
* 进入 “<ruby> 高亮 <rt>  Highlight </rt></ruby>” 部分，选择改变前景或背景（或两者都选，但要一次进行一项操作）。
* 接着，选择你想要的颜色，它会展示结果。如果满意，点击 “<ruby> 应用 <rt>  Apply </rt></ruby>” 按钮，不满意就通过 “<ruby> 重置 <rt>  Reset </rt></ruby>” 按钮恢复默认设置。

![](/data/attachment/album/202308/26/165219qqsklq9l1wgdt9f4.png)

### 5、探索 Thunar 插件

不同于那些知名的文件管理器，Thunar 的插件相对较少，因为很多操作都可以通过自定义动作实现，其他的功能如内置一样与生俱来。

但是，也有一些实用的插件供你选择。

如要了解更多，你可以 [访问官方网站](https://goodies.xfce.org/projects/thunar-plugins/start?ref=itsfoss.com) 查看详情。

在这里，我将向你展示如何添加一个归档插件，让你可直接在右键菜单中创建和解压归档文件：

![](/data/attachment/album/202308/26/165220be01sx00ygeg0159.png)

在 Ubuntu 中安装 Thunar 归档插件，可以使用以下命令：

```
sudo apt install thunar-archive-plugin

```

在 Fedora 中安装：

```
sudo dnf install thunar-archive-plugin

```

在 Arch Linux 中安装：

```
sudo pacman -S thunar-archive-plugin

```

### 6、利用双窗格特性进行文件传输

这是几乎所有的文件管理器都具备、而又被大多数人所忽视的一个重要特性。

那为什么我要将此特性列为 Thunar 的优化建议呢？答案很简单。因为 Thunar 的双窗格特性非常好用，它使得文件的复制和移动变得轻而易举。

#### 移动文件

接下来我们看一下如何将文件从一个目录动态一个目录：

* 首先，按下 `F3` 键开启双窗格模式。
* 打开两边窗格中的目录。一边导航到需要被移动的文件所在，另一边则打开目标位置。
* 接着，选中需要移动的项目。
* 移动文件很简单，只需选中它们，并拖动到另一侧窗格中（即你已打开的目标位置）。

![移动文件](/data/attachment/album/202308/26/165129bnmm9fwsd34vpqmv.gif)

#### 复制文件

复制文件的操作非常类似移动文件，只是在拖曳并释放文件时需要按下 `Ctrl` 键。

* 使用 `F3` 键切换到双窗格模式。
* 打开两边窗格中的源文件和目标位置。
* 选中需要复制的文件，然后按下 `Ctrl` 键，将它们拖到第二窗格中，释放鼠标后再放开 `Ctrl` 键。

![复制文件](/data/attachment/album/202308/26/165140dnt2t8uftprufttx.gif)

如果你仔细看，会发现在移动文件时，鼠标指针呈现一个箭头 “↗”，而在复制文件时，它会显示一个加号 “➕”。

### 7、在 Thunar 中使用自定义操作（针对进阶用户）

到现在为止，Thunar 中最实用的功能无疑是你能创建属于自己的行为，比如使选定的文件变为可执行文件，以 root 用户身份打开 Thunar 等等。

因此，这也意味着这将是本教程中最详细的一节！

首先，点击 “编辑” 菜单，你会找到一个 “<ruby> 配置自定义操作 <rt>  configure custom actions </rt></ruby>” 的选项，这是倒数第二个：

![](/data/attachment/album/202308/26/165220azz7d7wuwjluowp7.png)

如你所见，所有可用的操作都在列表中显示。

要添加操作，点击加号 “➕” 按钮，你会看到多个选项：

![](/data/attachment/album/202308/26/165220iwg5llnlhl66a3ll.png)

这些选项包括：

* “<ruby> 名称 <rt>  Name </rt></ruby>”：为自定义操作命名。
* “<ruby> 描述 <rt>  Description </rt></ruby>”：该操作的信息说明（以帮助用户理解该操作的功能）。
* “<ruby> 子菜单 <rt>  Submenu </rt></ruby>”：用于将多个操作整合到一起。
* “<ruby> 命令 <rt>  Command </rt></ruby>”：关键的一步，你需要为这个操作分配一条命令使其可以工作。

如果你仔细看，你会发现还有另一个名为 “<ruby> 出现条件 <rt>  Appearance Conditions </rt></ruby>” 的选项卡，在这里你可以指定在哪些文件（以及目录）类型的右键菜单中这个动作会出现。

例如，如果一个动作只应在所选文件是文本文件时才显示，那么你就需要勾选 “文本文件Text Files” 选项：

![](/data/attachment/album/202308/26/165221yql0xn7zzskzquws.png)

接下来，我要向你展示如何设置一个以 root 身份打开 Thunar 的自定义动作。

#### 创建自定义操作以 root 身份打开 Thunar

你一定经历过这种情况：你想操作一个文件，但是只有 root 用户能够访问。于是你打开终端，执行命令以 root 身份启动文件管理器。

但如果用这个自定义操作，只需轻点一下鼠标就可以了。

具体方法是，在 “<ruby> 基本 <rt>  Basic </rt></ruby>” 选项卡的数据区域输入以下内容：

* 名称：以 root 身份打开 Thunar
* 命令：`pkexec thunar %F`

你能选择任何相关的图标，我在这里选择了一个简单的终端图标。

接着，在 “出现条件” 区域，输入如下内容：

* 如果所选内容包含：<ruby> 目录 <rt>  Directories </rt></ruby>

完成后，数据区域会如下所示：

![](/data/attachment/album/202308/26/165222d1zv17gmx1pvjqvi.png)

看一下最后的结果：

![以 root 身份打开 Thunar](/data/attachment/album/202308/26/165201w7essk1i417i77ua.gif)

看起来很酷，对吧？

以下是一些其他可能有用的自定义操作：

#### 创建创建符号链接的自定义操作

[创建符号链接](https://linuxhandbook.com/symbolic-link-linux/?ref=itsfoss.com) 是访问深度嵌套在文件系统中的文件的一种简便手段。它同时也被用来重定向到特定的包的路径。

要创建一个创建符号链接的自定义操作，你可以输入以下指令：

* 名称：创建链接
* 描述：创建一个符号链接
* 命令：`ln -s %f 'Link to %n'`
* 若选择包含：框全部都要勾选

![](/data/attachment/album/202308/26/165222ixj4zah66141jt4h.png)

#### 直接查找文件

点击一个目录，选择搜索，输入你想要查找的内容。

这是在目录内搜索文件最为手边的方式了。

首先，在你的系统中安装 `catfish`，如果你是 Ubuntu/Debian 系的用户，可以使用如下命令：

```
sudo apt install catfish

```

然后，创建一个自定义操作，输入以下信息：

* 名称：在该目录中查找文件
* 描述：在选中的目录中搜索文件
* 命令：`catfish %f`
* 若选择包含：仅勾选 “目录”。

![](/data/attachment/album/202308/26/165222tzucn88tt7gt8a87.png)

#### 一键安装多个图像转换的自定义操作

在我写作的过程中，我找到了一款令人惊艳的包，着包中包含了以下几种自定义操作：

* 旋转图像
* 缩小图像
* 图像灰度处理
* 将图像转换为 PDF
* 将图像转换为任意格式
* [合并 PDF 文件](https://itsfoss.com/merge-pdf-linux/)
* 缩小 PDF 文件的大小
* 创建符号链接
* 显示校验和
* 往图像的透明区域填充颜色
* 加密/解密文件

首先，在你的系统中安装以下软件包：

```
sudo apt install make imagemagick gnupg2 m4 build-essential pandoc gettext python3-lxml ubuntu-dev-tools git

```

接着，克隆这个库并切换到这个新的目录：

```
git clone https://gitlab.com/nobodyinperson/thunar-custom-actions.git && cd thunar-custom-actions

```

然后，运行以下命令来确认所有的依赖项都已就绪：

```
./configure --prefix=$HOME/.local PASSWDFILE=/etc/passwd

```

如果提示你缺少某个包，那你可能需要手动安装它（但大部分情况下不需要）。

接着，运行以下命令从源代码建立这个包：

```
make

```

然后，运行以下命令安装这个包：

```
sudo make install

```

要将更改合并进 Thunar，使用以下命令：

```
uca-apply update

```

完成以上操作后，**记得登出并重新登录以使改变生效。**

这样你就会看到系统中增加了多种新的自定义操作：

![](/data/attachment/album/202308/26/165222ubn8873rxbs7fbbd.jpg)

如果你觉得这些太多了，你也可以通过选择它并点击减号按钮来去除不需要的操作。

只要你有足够的想象力，你就可以创造出无数的自定义操作。欢迎你分享你最喜欢的（和命令），这样新用户也能受益。

### 进一步自定义 Xfce

有人可能觉得 Xfce 显示得有些传统。实际上，你完全可以为它带来现代化的感受。

>
> **[使 Xfce 看起来现代化和漂亮的四种方法](https://itsfoss.com/customize-xfce/)**
>
>
>

进行主题设计是最主要的自定义方式。这里有一些 [Xfce 主题建议](https://itsfoss.com/best-xfce-themes/) 你可以参考。

>
> **[使 Xfce 看起来现代化和漂亮的 11 个主题](https://itsfoss.com/best-xfce-themes/)**
>
>
>

我希望你觉得这些关于 Thunar 的改进很有用。

你能在 Linux 桌面上尝试到更多的乐趣，不妨开始你的探索之旅吧 ?

*（题图：MJ/0bd19051-a95f-41f8-839a-47c1ce84ac83）*

---

via: <https://itsfoss.com/thunar-tweaks/>

作者：[Sagar Sharma](https://itsfoss.com/author/sagar/) 选题：[lujun9972](https://github.com/lujun9972) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1105 Ubuntu 桌面用户已超 600 万

Summary:
? Ubuntu 桌面用户已超 600 万
? Gitlab 将支持跨实例订阅和合并请求
? 开放游戏《星际公民》众筹突破六亿美元
»
»

作为一名ubuntu用户，就是各个大厂没有经行linux战略。看看微软的edge发展，说实话，该软件在linux性能和体验，是看得见的改善。

来自江西南昌的 Chrome Mobile 115.0|Android 10 用户

自从ubuntu强制使用snap软件包，已经有一部分用户从ubuntu转向debian

微软在Linux、mac的开发都很上心，除了自家的Windows

如果一个用户完全使用Linux，那巨硬无法获得这个用户的数据/隐私。

![](/data/attachment/album/202308/26/193347zc6ue9w2eg6z9yww.jpg)

![](/data/attachment/album/202308/26/193400igftagdtzdfzvtje.jpg)

### Ubuntu 桌面用户已超 600 万

Canonical 公布了一系列 Ubuntu 桌面数据：其桌面用户已超过 600 万。这一数字基于检查桌面更新的设备，不包括安装了企业防火墙或代理服务器的设备。另外，根据 Stack Overflow 的调查，Ubuntu 桌面占到 Linux 开发者桌面市场的 27%，是迄今为止最受开发者欢迎的 Linux 发行版；在 Steam 平台的 Linux 玩家中，Ubuntu 是游戏用户使用最多的桌面 Linux 发行版。

>
> **[消息来源：Ubuntu](https://ubuntu.com/blog/ubuntu-desktop-charting-a-course-for-the-future)**
>
>
>

>
> 老王点评：Ubuntu 是最流行的发行版，这一点应该没有争议吧。但是 600 万这个数据还是让我第一次有了直观感受。
>
>
>

![](/data/attachment/album/202308/26/193411k3izpyqqowpblfuy.jpg)

### Gitlab 将支持跨实例订阅和合并请求

ActivityPub 是一个 W3C 标准，其最知名的实现是 Mastodon 以及 Lemmy。Gitlab 称它将逐步实现 ActivityPub 的功能。Gitlab 允许用户创建各自的实例，通过支持 ActivityPub 可以跨 Gitlab 实例进行订阅、搜索、创建分支、递交合并请求，以及展开讨论和合并代码。

>
> **[消息来源：gitlab](https://gitlab.com/groups/gitlab-org/-/epics/11247)**
>
>
>

>
> 老王点评：这真是一种非常好的结合，既发挥了 Gitlab 多实例、去中心化的特点，又能形成像 GitHub 那样的广泛的代码库社区。我觉得这才是真正补上了分布式版本控制系统 Git 的最后一块砖头。
>
>
>

![](/data/attachment/album/202308/26/193425wkdjds6bkkmvdskj.jpg)

### 开放游戏《星际公民》众筹突破六亿美元

《星际公民》是一款太空模拟飞行游戏，它允许玩家在宇宙空间内探险、交易和战斗。它于 2012 年在 Kickstarter 上成功众筹，原计划在 2014 年交付。但众筹成功后，其开发团队继续以销售游戏内的虚拟物品（如各种型号的飞船）的方式进行募资。到 2018 年它筹集到了 2 亿美元，并继去年突破 [5 亿美元](/article-15059-1.html) 后，今年再次募资 1 亿。它是至今为止开发费用最昂贵的游戏，远超《赛博朋克 2077》、《侠盗猎车 V》等游戏。但这款游戏何时才能正式发布仍然是未知数。

>
> **[消息来源：Player Auctions](https://blog.playerauctions.com/star-citizen/star-citizen-has-passed-600-million-in-backer-funding/)**
>
>
>

>
> 老王点评：我看它是不会有正式发布的那一天了，这或许就是我们所期待的“无尽的”游戏。?
>
>
>


如何解决服务器存储 inode 耗尽的问题

Summary: 明明硬盘只用了 30% 左右的空间，但是却无法写入文件。

我推荐换xfs

我有一块1T固态，用了F2FS，放了几套安卓ROM源码，用着用着inode耗光了

运行 df -i 简直要跪，这么大一块硬盘，inode数竟然比110多G的F2FS主分区还小！关键是，还没办法调整（F2FS的管理工具压根不支持调节inode容量）！

代码树庞大的存储，还是老老实实用Ext4、XFS吧。为了性能而硬上F2FS，得不偿失

来自111.55.10.201的 Chrome Mobile 115.0|Android 10 用户

明明硬盘只用了 30% 左右的空间，但是却无法写入文件。

![](/data/attachment/album/202308/27/113344y7f14v4gvbd014g0.jpg)

今天群里一朋友遇到这样一个问题，明明硬盘只用了 30% 左右的空间，但是却无法写入文件。使用 `df -iT` 命令查看文件系统使用情况时，发现根目录的 inode 使用率竟然是 100%。后来通过聊天得知，原来他的服务器主要用于存储 1KB 左右的小文件，这一下就破案了。

inode 主要用来记录文件的属性，及此文件的数据所在的块编号。每一个文件会占用一个 inode，因此如果都是小文件的话，那么就会出现 inode 已经耗尽，但文件系统还有很大的空闲空间，从而无法写入新文件。

### 如何获得更多的 inode

其实在创建 ext4 文件系统时，我们可以使用 `-T small` 参数来获得更多的 inode，从而优化对小文件的存储。接下来我们通过一个示例来看看效果。

这是两块相同大小的硬盘：

```
root@debian:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sdb      8:16   0    1G  0 disk
└─sdb1   8:17   0 1023M  0 part
sdc      8:32   0    1G  0 disk
└─sdc1   8:33   0 1023M  0 part

```

首先使用默认参数给 `/dev/sdb1` 创建文件系统：

```
root@debian:~# /sbin/mkfs.ext4 /dev/sdb1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 261888 4k blocks and 65536 inodes
Filesystem UUID: 8935c902-df71-4808-b547-c85b6fd37a46
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

```

从输出中可见，该文件系统有 261888 个 4KB 大小的块和 65536 个 inode。

然后使用 `-T` 参数对 `/dev/sdc1` 创建文件系统：

```
root@debian:~# /sbin/mkfs.ext4 -T small /dev/sdc1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 1047552 1k blocks and 262144 inodes
Filesystem UUID: f521096d-a5a1-41c9-bbf7-e6102e74e87a
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553,
        1024001

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

```

从输出中可见，该文件系统有 1047552 个 1KB 大小的块和 262144 个 inode。

也可以通过以下方式对比两个文件系统的 inode 数量：

```
root@debian:~# mkdir default small
root@debian:~# mount /dev/sdb1 default/
root@debian:~# mount /dev/sdc1 small/
root@debian:~# df -iT
Filesystem     Type      Inodes IUsed   IFree IUse% Mounted on
/dev/sdb1      ext4       65536    11   65525    1% /root/default
/dev/sdc1      ext4      262144    11  262133    1% /root/small

```

从以上示例中我们可以看出，在使用 `-T small` 参数后，inode 数量多了近 20 万个！

**注意：** 这样做也是有代价的。在使用默认参数创建 ext4 文件系统时，默认数据块大小为 4KB，而使用 `-T small` 参数后，数据块大小为 1KB。这就意味着我们存储一个同样大小的文件，使用 `-T small` 参数创建的文件系统存储该数据时，占用的数据块更多，数据更分散，如果文件较大，会直接影响文件的读取速度

>
> `mke2fs`（`mkfs.ext4`）的 `-T` 参数指定了如何使用该文件系统，以便 `mke2fs` 可以为该用途选择最佳的文件系统参数，其支持的使用类型在配置文件 `/etc/mke2fs.conf` 中定义，可以使用逗号分隔指定一个或多个使用类型
>
>
>

### inode 不足的解决方法

当你已有的文件系统上出现 inode 不足的问题时，除了备份数据、重建分区并恢复分区数据外，还有两种临时解决方案：

1、删除文件大小为 0 的空文件，可以使用如下命令查找：

```
find PATH -name "*" -type f -size 0c

```

**注意：** 使用 `-size` 参数时，不要用 `-size 1k`，这个表示占用空间为 1KB，而不是文件大小为 1KB，应该使用 `-size 1024c` 才表示文件大小为 1KB。

2、可以定期对历史小文件进行打包、归档，以减少文件数量。

---

作者简介：一个喜欢瞎折腾的 IT 技术人员，懂得不多，但是喜欢和有共同兴趣爱好的朋友交流、学习

*（题图：MJ/9a66155a-772e-41f1-b29d-c3d4161f7853）*

---

via: <http://www.yanjun.pro/?p=128> 作者：[老颜随笔](http://www.yanjun.pro) 编辑：[wxy](https://github.com/wxy)

本文由贡献者投稿至 [Linux 中国公开投稿计划](https://github.com/LCTT/Articles/)，采用 [CC-BY-SA 协议](https://creativecommons.org/licenses/by-sa/4.0/deed.zh) 发布，[Linux中国](https://linux.cn/) 荣誉推出


如何在 Linux 中注释 PDF

![](/data/attachment/album/202308/27/141000pelw8wgggqlenwx8.jpg)

>
> 你不需要专门的 PDF 编辑器来添加注释和高亮文本。下面介绍如何在 Linux 中使用 GNOME 的文档查看器来注释 PDF。
>
>
>

阅读一些 PDF 格式的有趣内容，并觉得需要添加评论或高亮显示某些文本？也许你在 PDF 文档上留一些反馈？

[Linux 用户可以使用多种 PDF 编辑器](https://itsfoss.com/pdf-editors-linux/)。但你不需要专门的 PDF 编辑器来完成这个简单的任务。

大多数 PDF 阅读器都具有内置注释功能，你可以使用它来快速轻松地高亮显示文本并添加注释。

我最近在审阅 O'Reilly 即将出版的第四版 [《Linux Pocket Guide》一书](https://www.oreilly.com/library/view/linux-pocket-guide/9780596806347/?ref=itsfoss.com)时“发现”了它。出版商请求对 PDF 文件本身提出建议。

让我分享一下如何在 Linux 中使用 Evince（GNOME 中的默认 PDF 阅读器）对 PDF 进行注释。使用 Okular（KDE 中默认的 PDF 阅读器）也可以实现同样的效果。

大多数 Linux 发行版都应该附带上述工具之一。如果没有，你可以轻松安装它们。我不会介绍安装过程。请在你的发行版的软件管理器中查找它们。

### 使用 Evince 文档查看器注释 PDF

使用 Evince（在 GNOME 中也称为“<ruby> 文档查看器 <rt>  Document Viewer </rt></ruby>”）打开所需的 PDF 文件。

你将在文档查看器的左上角看到一个“编辑”选项。点击它会出现以下两个选项：

* 备注文本（用于添加评论）
* 高亮显示文本（用于高亮显示选定的文本）

![](/data/attachment/album/202308/27/141027tjjkk1ubqpejv1tj.png)

让我详细介绍这是如何工作的。

#### 在 PDF 中添加注释

要添加评论，单击 “<ruby> 注释文本 <rt>  Note text </rt></ruby>” 选项。

你会注意到光标变成了 “+” 号。你可以单击文档中的任意位置，它会立即添加注释图标并打开另一个窗口以添加注释。

![](/data/attachment/album/202308/27/141027r3m5m3qcr7craza0.png)

我建议单击该行的末尾，以便注释图标位于空白区域，并且不会遮挡文件的实际文本。

添加所需注释后，你可以 **单击注释区域的 “X” 按钮来关闭** 注释文本窗口。

>
> ? 你可以通过在屏幕上拖动注释图标来移动注释图标。
>
>
>

#### 在 PDF 中高亮显示文本

同样，你可以选择 “<ruby> 高亮显示文本 <rt>  Highlight text </rt></ruby>” 选项来高亮显示 PDF 文件中的特定文本。

之后，只需选择要高亮显示的文本即可。当你开始移动光标，它就会开始高亮显示。

![](/data/attachment/album/202308/27/141028lz6pp6u66enx6prw.png)

>
> ? 你还可以在高亮显示的文本上添加注释，以提供有关高亮显示的一些上下文。要添加文本，请单击高亮显示的文本（现在它可点击了）。
>
>
>

#### 保存带注释的文件

你可能已在 PDF 上添加注释，但更改尚未保存。

保存更改很简单。按 `Ctrl+S` 键，你可以选择保存文件的位置。

你可以覆盖现有 PDF 文件或将其另存为新文件。

![](/data/attachment/album/202308/27/141029v4xsqizsjuu2swlj.png)

>
> ? 注释、评论和高亮被附加到 PDF 文件中，即使你使用其他可以读取注释的工具打开 PDF 文件，它们也应该可以看到。
>
>
>

#### 阅读注释

要阅读文本注释或评论，只需将鼠标悬停在注释图标或高亮显示的文本上即可。它将立即显示注释。

![](/data/attachment/album/202308/27/141029cjct8xhy49y8qcju.png)

不要单击图标来阅读文本。单击将打开它进行编辑。

#### 编辑现有注释

假设你注意到需要向现有笔记添加更多详细信息。你所要做的就是单击“注释”图标。

它将打开添加的文本。你可以阅读它，如果你愿意，也可以编辑它。对于高亮显示的文本部分中的注释也是如此。

但是，编辑高亮显示的文本时它不是很完善。如果你认为必须高亮显示现有文本周围的更多文本，那么它会起作用。但如果你想缩短高亮显示的文本，那就不行了。

为此，你必须删除高亮显示并再次添加。

#### 删除现有注释

删除注释非常简单，只需右键单击注释并选择 “<ruby> 删除注释 <rt>  Remove Annotation </rt></ruby>” 选项即可。

![](/data/attachment/album/202308/27/141029qw2w962y9wlwzp8g.png)

这对于高亮显示的文本也同样有效。

#### 修改注释的外观

不喜欢默认的黄色或注释图标？这一切都是可以改变的。

右键单击现有注释并选择 “<ruby> 注释属性 <rt>  Annotation Properties... </rt></ruby>” 选项。

![](/data/attachment/album/202308/27/141030hna22cazlblp896a.png)

你可以更改评论的作者、注释的颜色和不透明度。你还可以更改注释的图标和高亮显示的标记类型（删除线、下划线等）。

![](/data/attachment/album/202308/27/141030yppjiwprk3pmj6um.png)

这仅适用于现有注释。我找不到一种方法来更改所有未来注释的默认属性。

### 更多 PDF 编辑选项

如果你需要的不仅仅是简单的文本注释和高亮显示，可以使用专门的 PDF 编辑器。

>
> **[11 最好的 Linux 上的 PDF 编辑器](https://itsfoss.com/pdf-editors-linux/)**
>
>
>

这些工具可能允许你重新排列或合并 PDF 文件。

>
> **[如何在 Linux 上合并 PDF 文件](https://itsfoss.com/merge-pdf-linux/)**
>
>
>

如果需要，你还可以 [压缩 PDF 文件](https://itsfoss.com/compress-pdf-linux/)。

>
> **[如何在 Linux 上压缩 PDF 文件](https://itsfoss.com/compress-pdf-linux/)**
>
>
>

PDF 编辑永无止境。我希望你喜欢这篇有关 Linux 中 PDF 注释的初学者技巧。

KDE 的 Okular 还提供 PDF 注释选项。也许我可以写一篇关于 Okul 的类似文章。

请在评论栏留下你的反馈。

*（题图：MJ/a5318540-0b82-4ef6-a0bb-532505a17458）*

---

via: <https://itsfoss.com/annotate-pdf-linux/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1106 Amazon Linux 2023 仍然没有交付虚拟机镜像

Summary:
? Amazon Linux 2023 仍然没有交付虚拟机镜像
? 科学家发现让人不睡觉的机制
? Chrome 无用的阅读模式将有朗读功能
»
»

![](/data/attachment/album/202308/27/160043keeegfh38beeb0pg.jpg)

![](/data/attachment/album/202308/27/160053fl5x2s5dl5ddqvnd.jpg)

### Amazon Linux 2023 仍然没有交付虚拟机镜像

Amazon Linux 2023 于 3 月 15 日发布时，本应以虚拟机镜像的形式提供，让企业可以在自己的服务器上运行。这是 Amazon 曾经承诺过的，但后来它删除了这一承诺，并且没有给出任何理由。从去年发布的功能请求开始，到一年后的类似请求，在过去的 18 个月里，用户一直希望 Amazon 澄清该情况，但没有任何解释。上周，Amazon 标记了该功能请求，并将其添加到 Amazon Linux 2023 功能积压列表中，但也没有给出具体的承诺或时间表。

>
> **[消息来源：The Register](https://www.theregister.com/2023/08/25/amazon_linux_2023_vm/)**
>
>
>

>
> 老王点评：就这样的 Amazon Linux，怎么和其它的企业级 Linux 竞争啊？是已经躺平了么？
>
>
>

![](/data/attachment/album/202308/27/160106yym0vcrulbf0crlh.jpg)

### 科学家发现让人不睡觉的机制

华盛顿州立大学的研究人员发表论文，他们使用遗传和化学技术可逆的改变小鼠基底前脑中星形胶质细胞的活性，能让小鼠连续几个小时保持清醒，没有表现出任何睡意的迹象。研究人员表示，这项研究或有助于创造出能长时间让人保持清醒的药物，比如轮班工人不会昏昏欲睡，宇航员、飞行员、士兵、医疗人员、急救人员可以在较长时间内无需睡眠。

>
> **[消息来源：medicalxpress](https://medicalxpress.com/news/2023-08-astrocytes-basal-forebrain-mice-sleepiness.html)**
>
>
>

>
> 老王点评：我看到这一条时，第一反应就是程序员们可以 7X24 了……
>
>
>

![](/data/attachment/album/202308/27/160120vyei17nnwsz2w2e1.jpg)

### Chrome 无用的阅读模式将有朗读功能

谷歌正在积极为其 Chrome 浏览器的阅读模式增加新的功能，在 Canary 频道开始测试朗读选项。该功能可以将整篇文章朗读出来，就像你在听有声读物一样。一些主流浏览器和应用程序（如 Pocket）已经具备了这项功能，但谷歌 Chrome 浏览器现在才开始测试，并且，语音输出听起来非常机械，就像早期的 TTS 转换一样。这对于拥有一些听起来最自然的语音模型的谷歌来说尤其讽刺。

>
> **[消息来源：Android Police](https://www.androidpolice.com/google-chrome-canary-read-aloud/)**
>
>
>

>
> 老王点评：最近，微信公众号也开始有朗读模式了，但是似乎很快就没啥人用了。
>
>
>


Kali Linux 2023.3 版本：技术革新与新工具的全新结合

![](/data/attachment/album/202308/28/112031h0eou0fbvozqo2l6.jpg)

>
> 最新发行的 Kali Linux 版本，注重于底层技术更迭和部分全新工具的推出。
>
>
>

作为全球渗透测试人员的优选，Kali Linux 作为 [注重于渗透测试的](https://itsfoss.com/linux-hacking-penetration-testing/) 发行版，为各种使用情景提供了丰富的工具库。

就在 [几个月之前](https://news.itsfoss.com/kali-linux-2023-2-release/)，我们介绍过 Kali Linux 2023.2 版本，该版本中包含一系列显著改进。

现如今，我们迎来了 **Kali Linux 2023.3** 的更新发布，这一版本在更大程度上 **关注了后端技术**。

让我们详细探索此次更新中的新亮点。

? Kali Linux 2023.3：有哪些新鲜事？
---------------------------

![](/data/attachment/album/202308/28/112100bf9p9g3f820ii32p.png)

借助 [Linux 内核 6.3](https://news.itsfoss.com/linux-kernel-6-3/)，Kali Linux 2023.3 版本作为一次高度专注的发布，聚焦于几项关键更新。主要亮点包括：

* 全新的打包工具
* 内部基础设施优化
* 新增加网络工具

### 全新的打包工具

Kali Linux 已经添加了新功能、各项生活质量改良以及新脚本，全面扩充了他们开放的 [自制脚本库](https://gitlab.com/kalilinux/tools/packaging)。

打包工具中包含：

* [Britney2](http://repo.kali.org/britney)
* [Build-Logs](http://repo.kali.org/build-logs/)
* [Package Tracker](https://pkg.kali.org/)
* [AutoPkgTest](https://autopkgtest.kali.org/)
* 以及其他工具。

### 内部基础设施优化

得益于最近发布的 Debian 12，Kali Linux 的开发者得以全面改造、重新设计自己的基础设施。

这是一项宏大的工程，通过采用单一的软件处理 Kali Linux 的重要组成部分，**使得他们得以简化自己的软件栈**。

因此，**以 Debian 12 为基础**，使用 [Cloudflare](https://www.cloudflare.com/) 作为 CDN / WAF，Web 服务器服务采用 [Nginx](https://www.nginx.com/)，并且选用了 [Ansible](https://www.ansible.com/) 作为 <ruby> 基础设施即代码 <rt>  Infrastructure as Code </rt></ruby>的工具。

更多的优化将会在即将推出的更新中进行。

### 新增网络工具

伴随着 **Linux 内核的升级至 6.3.7**，Kali Linux 2023.3 版本 **推出了一系列专门针对网络操作的新工具**，这些新工具已经在网络仓库中对用户开放。

新工具包括：

* [kustomize](https://www.kali.org/tools/kustomize/) - Kubernetes YAML 配置的定制工具。
* [Rekono](https://www.kali.org/tools/rekono-kbx/) - 完整的渗透测试过程自动化平台。
* [rz-ghidra](https://www.kali.org/tools/rz-ghidra/) - 用于 rizin 的深度 ghidra 反编译器以及 sleigh 反汇编器的集成工具。
* [Calico](https://www.kali.org/tools/calico/) - 云原生网络和网络安全解决方案。
* [ImHex](https://www.kali.org/tools/imhex/) - 适应各种使用场景的 Hex 编辑器。
* [Villain](https://www.kali.org/tools/villain/) - 可以处理多个反向 Shell 的 C2 框架。

### ? 其它变动与提升

除了以上提及的要点，还有一些显著的变动值得注意：

* 两个包 [king-phisher](https://www.kali.org/tools/king-phisher/) 和 [plecost](https://www.kali.org/tools/plecost/) 已经舍弃，转而选择其他代替方案。
* 当在增强会话模式下使用 Hyper-V 时，引入了 PipeWire 的支持。
* 对 Kali Purple 进行了多项改进。

你可以阅读 [官方发布说明](https://www.kali.org/blog/kali-linux-2023-3-release/) 以获取这次版本更新的更细致信息。

? 获取 Kali Linux 2023.3
----------------------

你可以在官方网站获取 Kali Linux 的最新发布版本。

>
> **[Kali Linux 2023.3](https://www.kali.org/get-kali/)**
>
>
>

对于现有用户，你可以运行以下命令进行更新到最新版本：

```
sudo apt update && sudo apt full-upgrade

```

? 你是否打算在新版本中尝试新的工具？欢迎在评论区中分享你的想法。

*（题图：MJ/6539fac3-8d3d-47b8-8566-a9ce376b53d3）*

---

via: <https://news.itsfoss.com/kali-linux-2023-3-release/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[译者ID](https://github.com/%E8%AF%91%E8%80%85ID) 校对：[校对者ID](https://github.com/%E6%A0%A1%E5%AF%B9%E8%80%85ID)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


在 RHEL 上配置网络绑定（成组）

Summary: 它让我们可以将多个网络接口聚合为一个专有的虚拟网络接口

它让我们可以将多个网络接口聚合为一个专有的虚拟网络接口

![](/data/attachment/album/202308/28/122437eaiz28h2y0a594z9.jpg)

网络 <ruby> <a href="https://www.kernel.org/doc/Documentation/networking/bonding.txt">  绑定 </a> <rt>  Bonding </rt></ruby>（<ruby> 成组 <rt>  Teaming </rt></ruby>） 是 Linux 的一项内核特性，它让我们可以将多个网络接口（例如 `ens192`、`ens224`）聚合为一个专有的虚拟网络接口，被称为通道绑定（`bond0`）。这样做能够提升吞吐量并增加冗余备份。

网络绑定一共支持 7 种模式，你可以根据实际需求进行设置。<ruby> 链接聚合控制协议 <rt>  Link Aggregation Control Protocol </rt></ruby>（LACP）， 即模式 4（802.3ad）因其支持链接聚合与冗余而被广泛应用。

在本篇文章中，我们将引导你学习如何在 RHEL 系统中配置网卡（网络）绑定。

### LACP 绑定的前置条件

* 网络团队需要在网络交换机的端口上开启 LACP（802.3ad）来实现链接的聚合。
* 一个 Linux 系统应该配备至少两个网络接口。
* 对于物理服务器，我们推荐在板载接口与 PCI 接口间进行绑定配置，以避免在主机端的网络卡出现单点故障。

### Bonding 模块

你可以使用 `lsmod` 命令来确认你的 Linux 系统是否已经加载了 `bonding` 模块。

```
lsmod | grep -i bonding
bonding               12451  0

```

系统应该默认已加载。如果未看到，可以运用 `modprobe` 命令进行加载。

```
modprobe bonding

```

### 创建绑定接口

在 `/etc/sysconfig/network-scripts/` 路径下，创建一个名为 `ifcfg-bond0` 的绑定接口文件。依据你的网络情况，你可能需要修改诸如 `IP`、`MASK` 以及 `GATEWAY` 等值。

```
vi /etc/sysconfig/network-scripts/ifcfg-bond0

```

```
TYPE=Bond
DEVICE=bond0
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
BONDING_OPTS="mode=4 miimon=100 lacp_rate=1"

```

| 参数 | 描述 |
| --- | --- |
| `BONDING_MASTER=yes` | 表示设备是一个绑定主设备。 |
| `mode=4` | 绑定模式是 IEEE 802.3ad 动态链接聚合（LACP）。 |
| `miimon=100` | 定义以毫秒单位的 MII 链路监测频率，这决定了多久检查每个从属链路的状态一次以寻找失败的链路。`0` 值将禁用 MII 链路监测。`100` 是个不错的初始值。 |
| `lacp_rate=1` | 一个设置项，规定我们将以何种频率要求我们的链路伙伴每秒钟发送 LACPDU。默认为慢，即 `0`。 |

### 配置第一个子接口

修改你希望添加到绑定中的第一个子接口。请根据你的实际环境使用合适的接口名。

```
vi /etc/sysconfig/network-scripts/ifcfg-ens192

```

```
TYPE=Ethernet
BOOTPROTO=none
DEVICE=ens192
ONBOOT=yes
MASTER=bond0
SLAVE=yes

```

### 配置第二个子接口

修改你希望添加到绑定中的第二个子接口。请根据你的实际环境使用合适的接口名。

```
vi /etc/sysconfig/network-scripts/ifcfg-ens224

```

```
TYPE=Ethernet
BOOTPROTO=none
DEVICE=ens224
ONBOOT=yes
MASTER=bond0
SLAVE=yes

```

### 重启网络服务

重启网络服务以激活绑定接口。

```
systemctl restart network

```

### 验证绑定配置

你可以借助 [ip 命令](https://www.2daygeek.com/linux-ip-command-configure-network-interface/) 来查看绑定接口以及其子接口的情况。可以看到，`bond0` 现在已启动并在运行。

![](/data/attachment/album/202308/28/122534n6x1zuo88zwn69sn.jpg)

### 查阅绑定接口状态

检查以下文件，你可以看到绑定接口及其子接口的详细信息。输出结果应该看起来很不错，我们能看到诸如绑定模式，MII 状态，MII 轮询间隔，LACP 速率，端口数量等信息。

```
cat /proc/net/bonding/bond0

```

```
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: fast
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: c8:5b:76:4d:d4:5c
Active Aggregator Info:
        Aggregator ID: 1
        Number of ports: 2
        Actor Key: 15
        Partner Key: 32773
        Partner Mac Address: e4:a7:a0:32:fc:e9

Slave Interface: ens192
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: c8:5b:76:4d:d4:5c
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
Actor Churned State: 0
Partner Churned State: 0
details actor lacp pdu:
    system priority: 65535
    system mac address: c8:5b:76:4d:d4:5c
    port key: 15
    port priority: 255
    port number: 1
    port state: 63
details Partner lacp pdu:
    system priority: 32667
    system mac address: e4:a7:a0:32:fc:e9
    oper key: 32773
    port priority: 32768
    port number: 290
    port state: 61

Slave Interface: ens224
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: e4:a7:a0:32:fc:e9
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
Actor Churned State: 0
Partner Churned State: 0
details actor lacp pdu:
    system priority: 65535
    system mac address: e4:a7:a0:32:fc:e9
    port key: 15
    port priority: 255
    port number: 2
    port state: 63
details Partner lacp pdu:
    system priority: 32667
    system mac address: c8:5b:76:4d:d4:5c
    oper key: 32773
    port priority: 32768
    port number: 16674
    port state: 61

```

### 容错/冗余测试

为了验证容错性和连接速度，你可以逐个断开接口，然后检查服务器是否仍旧可达。

* 测试用例-1：当两个子接口都启动并运行时，使用 [ethtool 命令](https://www.2daygeek.com/view-change-ethernet-adapter-settings-nic-card-linux/) 检查链路速度。
* 测试用例-2：断开第一个子接口，然后尝试访问系统。
* 测试用例-3：断开第二个子接口，然后尝试访问系统。

#### 测试用例-1：

如果你想检测下连接速度：没错，我在 `bond0` 上看到了 `20 Gbps` 的速度，因为每个子接口支持 10 Gbps。

```
ethtool bond0

```

```
Settings for bond0:
        Supported ports: [ ]
        Supported link modes:   Not reported
        Supported pause frame use: No
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 20000Mb/s
        Duplex: Full
        Port: Other
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: off
        Link detected: yes

```

#### 测试用例-2：

现在我们将关闭第一个子接口。

```
ifdown ens192

```

```
Device 'ens192' successfully disconnected.

```

通过 `ssh` 尝试访问系统。没问题，系统现在是可以访问的。

```
ssh [email protected]

```

由于已经有一个子接口关闭，你现在在 `bond0` 上只能看到 10 Gbps 的速度。

```
ethtool bond0 | grep -i speed

```

```
            Speed: 10000Mb/s

```

现在，我们再次查看绑定接口的状态。可以看出，只有一个子接口处于活跃状态。

```
cat /proc/net/bonding/bond0

```

#### 测试用例-3：

我们来关闭第二个子接口，并进行类似测试用例-2 的测试：

```
ifdown ens224

```

```
Device 'ens224' successfully disconnected.

```

### 结语

我希望你已经掌握了在 RHEL 上配置 LACP 绑定的方法。

在本教程中，我们为你展示了在 RHEL 系统配置网络绑定或网卡聚合的最简单方式。

如果你有任何疑问或者反馈，欢迎在下面留言。

*（题图：MJ/939f6ba6-eb46-480d-8879-3a422c7425d2）*

---

via: <https://www.2daygeek.com/configure-network-bonding-nic-teaming-rhel/>

作者：[Jayabal Thiyagarajan](https://www.2daygeek.com/author/jayabal/) 选题：[lujun9972](https://github.com/lujun9972) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1107 埃隆·马斯克的 Twitter/X 关注者水分严重

Summary:
? 埃隆·马斯克的 Twitter/X 关注者水分严重
? OpenTF 宣布创建 Terraform 分支
? 调查发现业界对 Rust 应用的担忧减少了 21%
»
»

![](/data/attachment/album/202308/28/154140lkliy8qr13q2k2hh.jpg)

![](/data/attachment/album/202308/28/154149tj972vw9j7qb2vv7.jpg)

### 埃隆·马斯克的 Twitter/X 关注者水分严重

埃隆·马斯克是 Twitter/X 上关注者最多的用户，高达 1.53 亿。有研究对他的关注者进行了分析，发现其中，

* 42%（约 6530 万）的用户没有任何关注者；
* 72%（1.12 亿）的用户其关注数量不足 10 人，全部 1.53 亿用户的关注者数量的中位数仅为 1 个；
* 超过 40%（6250 万）的关注者没有发过任何推文或删除了全部推文，超过 1 亿的关注者发表的推文不足 10 条；
* 超过 25%（3890 万）的关注者是在他收购 Twitter 后才创建的账号；
* 而他的关注者中仅仅只有 0.3%（45 万）的用户是每月 8 美元的付费订阅用户（付费订阅用户总数据估计约为 83 万）。

>
> **[消息来源：Mashable](https://mashable.com/article/elon-musk-x-twitter-follower-data)**
>
>
>

>
> 老王点评：如果说，马斯克给自己弄了很多假粉，那这是自己演给自己玩吗？
>
>
>

![](/data/attachment/album/202308/28/154202l60o656as5ht02n2.jpg)

### OpenTF 宣布创建 Terraform 分支

HashiCorp 公司创建的基础设施即代码软件 Terraform 最初于 2014 年在 MPL 2.0 许可证下开源。但在 8 月 10 日，HashiCorp 突然将 Terraform 的许可证从 MPL 切换到了非开源的商业源代码许可证（BSL）。为了保持 Terraform 的开源性，Terraform 社区发布了 OpenTF 宣言，宣布创建 Terraform 的分支，并成立了 OpenTF 基金会。OpenTF 基金会表示，已经有四家公司承诺为该项目提供 14 名全职工程师，并预计未来几周将至少增加一倍。而且，它指出过去两年 HashiCorp 公司只提供了大约 5 名全职工程师去维护 Terraform。

>
> **[消息来源：OpenTF](https://opentf.org/announcement)**
>
>
>

>
> 老王点评：当企业需要时它开源，当企业不满时它闭源。当开源时社区来了，当闭源时社区分叉了。这样的戏码我们已经见过很多次了，难道这是企业开源的宿命吗？
>
>
>

![](/data/attachment/album/202308/28/154216ffjzk3mf3fz87jh7.jpg)

### 调查发现业界对 Rust 应用的担忧减少了 21%

Rust 项目连续第六年对 Rust 编程语言进行了调查，共有 9,433 人完成了调查。根据调查数据，

* 超过 90% 的调查对象认为自己是 Rust 用户，其中 47% 的人每天都在使用 Rust；
* 27% 的受访者可以编写可投入生产的代码；
* 在放弃 Rust 用户中，30% 认为困难是放弃的主要原因；
* 29.7% 的受访者表示，他们在工作场所的大部分编码工作都使用 Rust，这比上一年增加了 51.8%；
* 使用 Rust 的最主要原因包括编写无错误软件的能力（86%）、Rust 的性能特点（84%）以及 Rust 的安全保障（69%）；
* 39% 的受访者表示学习过程具有挑战性，9% 的受访者表示在工作中采用 Rust 拖慢了他们团队的速度；不过，60% 的生产型用户认为，总体而言，采用 Rust 的成本是值得的；
* 26% 的人担心 Rust 背后的开发者和维护者得不到适当的支持，这比去年的调查结果减少了 30% 以上。

>
> **[消息来源：Rust](https://blog.rust-lang.org/2023/08/07/Rust-Survey-2023-Results.html)**
>
>
>

>
> 老王点评：Rust 是颇受追捧，但是我其实认为 Rust 的最大风险可能是项目方瞎折腾。
>
>
>