2023年3月

如何在你的 Bash 终端使用这些秘密代码,请下载我们新的 Linux 元字符速查表。

我最近在读一篇 Don watkins 关于 Shell 元字符的文章。他的文章让我想到了你可以用 shell 输入做的所有的奇怪事情。虽然我可能还没有发现极端的情况,但是我经常发现 shell 转义序列,比如 \b\t\f 非常有用。

转义序列是一种特殊类型的终端输入。它们旨在让你能够输入物理键盘上没有的字符或触发事件。下面是我最喜欢的 Bash shell 的转义序列。

1、退格符

你可以在命令中输入若干退格符,以便在命令执行时触发。例如这个命令,你可能会认为它的输出是ab,但是看一下真正的输出:

$ echo a$'\b'b
b

从技术上来说,Shell 确实输出了 ab(你可以通过在命令后面附加 | wc -m 来确认这一点),但是全部输出的一部分是 \b 退格事件。退格键在输出 b 字符之前删除了 a 字符,因此输出只有 b 字符。

2、换行符

换行符是一个让你的 Shell 转到下一行的第 0 列的信号。这一点很重要,当使用像 printf 这样的命令时,它不会像 echo 那样在输出的末尾自动添加换行符。看看不带 \n 换行符的 printf 语句和带换行符的 printf 语句之间的区别:

$ printf "%03d.txt" 1
001.txt$
$ printf "%03d.txt\n" 1
001.txt
$

3、换页符

\f 换页信号就像换行符,但是却并不是返回到第 0 列。下面是一个使用换页符而不是换行符的 printf 命令:

$ printf "%s\f" hello
hello
     $

你的 Shell 提示符出现在下一行,但不是在下一行的行首。

4、制表符

有两种制表符转义序列:水平制表符 \t 和垂直制表符 \v。水平制表符如下所示:

$ echo a$'\t'b
a     b

理论上,垂直制表符是相同的原理,但是在垂直空间中。然而,在大多数控制台上,一行的垂直间距是不可变的,所以它通常看起来很像一个换页符:

$ echo a$'\v'b
a
 b

5、Unicode

Unicode 标准中有很多可用的字符,而你的键盘只有大约 100 个键。在 Linux 上有几种方法可以输入 特殊字符,但是将它们输入到终端的一种方法是使用 Unicode 转义序列。这个转义序列以 \u 开头,后跟一个十六进制值。你可以在文件 /usr/share/X11/locale/en_US.UTF-8/Compose 中找到许多 Unicode 值。你也可以在 https://www.Unicode.org/charts/ 查看 Unicode 规范。

这对于输入像圆周率 π(圆的周长与直径之比)等常见符号非常有用:

$ echo $'\u03C0'
π

还有许多其他的符号和字符:

$ echo $'\u270B'
✋
$ echo $'\u2658'
♘
$ echo $'\u2B67'
⭧

有盲文符号、音乐符号、字母、电气符号、数学符号、表情符号、游戏符号等等。事实上,有如此多的可用符号,有时你需要 \U(注意大写字母)Unicode 转义序列来访问高区的 Unicode。例如,这张红心 5 的扑克牌只出现在 \U 转义序列中:

$ echo $'\U1F0B5'
?

浏览一下 Unicode 规范,找到适合你的位置,并使用 \u\U 来访问你需要的所有特殊符号。

除此之外

Bash Shell 的手册页中列出了 18 个转义序列,我发现其中一些更有用。我已经在本文中介绍了我最爱的几个,Don Watkins 也谈到了他在文章中最常用的元字符,但是还有更多待发现。有很多方法可以对字母和数字、子 Shell、数学方程等进行编码。为了更好地了解 Shell 可用的元字符,可以下载我们的 元字符速查表,你可以在使用计算机上最强大的应用程序 —— Linux 终端时将它放在手边。


via: https://opensource.com/article/23/2/escape-sequences-linux-shell

作者:Seth Kenlon 选题:lkxed 译者:zepoch 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

开源多媒体框架 FFmpeg 6.0 现已发布,带来了更新和改进。

流行的开源多媒体框架 FFmpeg 6.0 现已发布。这个主要的版本现在已可下载,并在多媒体项目中使用。其亮点变化包括两个新的图像格式支持,许多编解码器和其他增强功能。

下面是一个快速回顾。

FFmpeg 6.0 新增内容

主要变化

这个版本的主要亮点是对两种新图像格式的支持。Radiance HDR 图像(RGBE)为用户在图像处理中提供了更好的色彩深度和动态范围。FFmpeg 6.0 现在包括对 WBMP(无线应用协议位图) 图像格式的支持,这在移动设备和网络应用中是常用的图像格式。

在 FFmpeg 6.0 中,新的 -shortest_buf_duration 选项允许用户为音频和视频缓冲区设置一个最小的持续时间,这可以确保在输出文件中使用最短的缓冲区时间。

从 FFmpeg 6.0 开始,线程必须被内置到软件中才能运行。在这个版本中,每个复用器都在一个单独的线程中运行。这提高了性能,使同时处理多个流的效率更高。

FFmpeg 6.0 中的 cropdetect(裁剪检测)过滤器现在包括一个新的模式,可以根据运动向量和边缘检测裁剪区域,为用户提供更精确的视频裁剪控制。

过滤器

在这个版本中,大量的过滤器得到了更新,这将通过新的功能简化你的多媒体项目和工作流程。下面是一个快速的变化列表:

  • ddagrab 过滤器现在支持桌面复制视频捕获,允许用户直接从他们的桌面上捕获视频。
  • a3dscope 过滤器为用户提供了音频信号的 3D 范围显示,允许更精确的音频编辑和处理。
  • backgroundkey 过滤器允许用户删除或替换视频片段中的背景,为视频编辑提供更大的灵活性。
  • showcwt 多媒体过滤器允许用户将连续小波变换系数可视化,提供对信号和图像处理的洞察力。
  • corr 视频过滤器对视频帧进行二维交叉关联,提供更精确的运动估计和稳定。
  • ssim360 视频过滤器计算两个视频帧之间的 结构相似度指数(SSIM),为衡量 360 度视频的视频质量提供了一个指标。

编解码器

在这个版本中,编解码器的更新是非常多的。

首先,FFmpeg 6.0 现在支持 NVENC AV1 编码,允许用户使用英伟达最新的压缩技术对视频进行编码。MediaCodec 解码器现在支持 NDKMediaCodec,为安卓设备提供更好的兼容性。其次,增加了一个新的 MediaCodec 编码器,允许在安卓设备上进行视频编码时进行硬件加速。

在此基础上,该版本包括了对 QSV(快速同步视频)的 oneVPL 支持,在英特尔 CPU 上进行视频编码时提供了更好的性能和质量。QSV AV1 编码器允许用户在英特尔 CPU 上使用硬件加速对 AV1 视频进行编码。

这个版本引入了对 10/12 位 422、10/12 位 444 HEVC 和 VP9 的 QSV 编解码支持,为用户提供更好的视频质量和性能。WADY DPCM 解码器和解复用器允许用户使用 WADY DPCM(差分脉冲编码调制)格式对音频进行解码和解复用,这种格式通常用于视频游戏配乐。

此外,现在还有一个 CBD2 DPCM 解码器,它允许用户使用 CBD2(共轭结构代数编码簿差分脉冲编码调制)格式解码音频。这种格式通常用于电信和语音编码应用。

其他变化

这个变化清单很庞大,其中还包括 FFmpeg 程序的新 CLI 选项和其他错误修复。你可以在 GitHub 上阅读详细的 变更日志

下载和安装

对于 Debian、Ubuntu 和相关的发行版,这个版本应该在几天内到达。请在 Debian 跟踪页 中留意。

对于 Fedora、RHEL、CentOS,你可以通过 RPM Fusion 仓库获得这个版本。如果你已经设置了 RPM Fusion,请更新你的系统以获得它。

源代码和其他下载都可以在 这里 下载。

另外,你可以在这里查看我们的独家文章中如何安装FFmpeg和基本使用方法。

如何在 Ubuntu 和其他 Linux 中安装 FFmpeg

总结

有了 Radiance HDR 图像支持等新功能,以及对各种编解码的改进支持,FFmpeg 6.0 为用户提供了强大的音频和视频处理工具。

新的过滤器变化提供了先进的音频和视频处理能力,从去除或替换视频中的背景到执行运动估计和稳定。

总的来说,这是一个重要的里程碑式的更新,为音频和视频处理工作负载提供了更好的性能和更大的灵活性。


via: https://debugpointnews.com/ffmpeg-6-0/

作者:arindam 选题:lkxed 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

TypeScript 5.0 即将完成,抢跑装饰器功能

TypeScript 团队已经推出了 5.0 RC,完整版本计划于 3 月 14 日发布。它最大的新功能是 ECMAScript 装饰器,这个功能可以通过名为装饰器表达式的注解来扩展类,允许以可重复使用的方式定制类及其成员。但装饰器目前不是 ECMAScript 2023 年草案的一部分。这意味着 TypeScript 的开发者将比 ECMAScript 规范更早获得这一功能。此外,TypeScript 5.0 编译器比以前快了约 10%。

消息来源:Dev Class
老王点评:我觉得 TypeScript 更好、更严谨。

GNOME Shell 和 Mutter 合成器已经脱离了 GTK3

GNOME Shell 现在将只依赖于 GNOME-Desktop-4 / GTK4,X11 显示代码已经脱离了 GTK3,并且 GTK3 也不再作为 Mutter 库/执行程序的依赖关系。GNOME-Shell 对 GTK3 的强制依赖已被放弃,而现在只有一个对 GTK4 运行环境的软链接。当然,仍然有一些依赖 GTK3 的应用,比如 GIMP 现在还在努力往 GTK3 上迁移,甚至还有一些依赖 GTK2 的应用。

消息来源:Phoronix
老王点评:很高兴能看到 GNOME 44 发布时摆脱了 GTK3。

欧洲推动设立月球时区

这个想法是去年年底在荷兰举行的一次会议上提出的,世界各地的航天组织同意迫切需要建立 “共同的月球参考时间”。目前,月球任务是按照操作航天器的国家的时间运行,一个国际公认的月球时区将使大家都方便。目前正在辩论是否应该由一个单一的组织来设定和维持月球上的时间。每个月球日的时间长达 29.5 个地球日,而且每天增加约 56 微秒。

消息来源:AP News
老王点评:或许以后每个星星都需要自己的时区。

在终端基础系列的 上一章 中,你学到了在 Linux 命令行中改变文件夹的知识。

我在最后给出了一个练习,简单地提到了创建目录。

在本系列的这一部分,我将讨论如何使用 mkdir 命令在 Linux 命令行中建立新的文件夹。

mkdir dir_name

mkdir 是 “ 创建目录 make directories ” 的简称。让我们来看看这个命令的使用情况。

? 如果你不知道,文件夹在 Linux 中被称为目录。

在 Linux 中创建一个新目录

你现在应该已经熟悉了 Linux 中绝对路径和相对路径的概念。如果没有,请参考 本教程

如果你的系统还没有打开终端,请打开它。通常情况下,你从主目录(/home/username)开始。但为了本教程和回忆一些事情,我假定你不在你的主目录中。

所以,先换到你的主目录:

cd

是的,如果你简单地输入 cd,没有任何选项和参数,它就会把你带到你的主目录。你也可以使用 cd ~ 等方法。

在这里,建立一个新的目录,叫做 practice

mkdir practice

你能切换到这个新建立的 practice 目录吗?

cd practice

很好!现在你有了一个专门的文件夹,你将在这里练习本系列中的 Linux 命令行教程。

Example of making new directory in Linux

创建多个新目录

你刚刚创建了一个新的目录。如果你要创建不止一个呢?比方说,有三个。

你可以对每个目录连续使用三次 mkdir 命令。这将会起作用。然而,这并不是真的需要。你可以像这样同时创建多个目录来节省时间和精力:

mkdir dir1 dir2 dir3

请继续这样做吧。你可以列出 practice 目录的内容,查看所有新创建的目录。以后会有更多关于 ls 命令的内容。

Create multiple new directories in Linux with mkdir command

? 你不能在同一地方有两个同名的文件夹或文件。

创建多个嵌套的子目录

你现在知道了一次创建多个目录的方法。

但是,如果你要创建一个嵌套的目录结构呢?比方说,你需要在 dir1 里面的 subdir1 里面创建一个目录 subdir2

dir1/subdir1/subdir2

这里的问题是 subdir1 并不存在。所以如果你尝试 mkdir dir1/subdir1/subdir32,你会得到一个错误:

abhishek@itsfoss:~/practice$ mkdir dir1/subdir1/subdir2
mkdir: cannot create directory ‘dir1/subdir1/subdir2’: No such file or directory

如果你不知道的话,你会选择 mkdir dir1/subdir1,然后运行 mkdir dir1/subdir2。这将会起作用。然而,有一个更好的方法。

你使用 -p 选项,它会在需要时创建父目录。如果你运行下面的命令:

mkdir -p dir1/subdir1/subdir2

它将创建 subdir1,然后在 subdir1 里面创建 subdir2

? 不是命名惯例,但最好在文件和目录名中避免空格。使用下划线或破折号代替,因为处理文件/目录名中的空格需要额外精力。

测试你的知识

这是一个相当简短的教程,因为 mkdir 命令只有几个选项。

现在,让我给你一些实践练习,以利用你先前创建的 practice 目录。

  • 不进入 dir2 目录,在其中创建两个新的子目录。
  • 不进入 dir3 目录,创建两级嵌套子目录(subdir1/subdir2
  • 进入 dir2 目录。在这里,在你的主目录下创建一个名为 temp_stuff 的目录。不要担心,我们将在本系列教程的后面删除它。
  • 回到父目录 practice,尝试创建一个名为 dir3 的目录。你看到一个错误。你能用 -p 选项使它消失吗?

你可以 在社区论坛讨论这个练习

在终端基础系列的下一章中,你将学习如何用 ls 命令列出一个目录的内容。

如果你有问题或建议,请告诉我。


via: https://itsfoss.com/make-directories/

作者:Abhishek Prakash 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这是一个困扰 Linux 用户的常见问题。这也是考试和面试中经常问到的一个问题。下面是你需要了解的所有内容。

开源朗读者 | 徐斯佳

你可能在网络上的各种论坛以及讨论区听过这句话:

Linux 只是一个内核。

这让你感到好奇。它是个内核?还是个操作系统?两者之间有什么区别?

我将在本文中回答这些问题。

Linux 是操作系统还是内核?

好吧,从技术上讲,Linux 只是一个内核,而不是一个操作系统。但是,术语 “Linux” 通常是指一个完整的操作系统,它包括一个 交互界面 Shell (例如:bash)和命令行和/或 GUI 工具来控制系统。这个完整的操作系统的正确叫法是 “Linux 发行版”。流行的 Linux 发行版有 Ubuntu、Red Hat 和 Debian。

早在 1991 年,Linus Torvalds 创建的只是一个内核。直到今天,他也在为 Linux 内核工作。他不再编写代码,而是监督哪些代码进入内核。

内核?什么东西?

内核是每个操作系统的中心。不仅仅是 Linux,Windows 和 macOS 也有内核。

将内核想象成操作系统的心脏。没有心脏,你就无法生存。没有内核,操作系统就无法存在。

但是,就像心脏需要一个身体来生存一样,内核需要其他人们可以在计算机上使用的程序和工具来构成一个完整的操作系统。

这是一个操作系统的典型架构:

在中心的内核与硬件交互。在它之上是与内核交互的 交互界面 Shell 。然后你有应用程序、命令行和图形界面,为你提供使用系统的各种方式。

内核是引擎,操作系统是汽车

一个更好的类比是将内核想象成汽车的引擎,而操作系统则是汽车。

你不可能驾驶一个引擎,但是如果没有引擎,你也不能驾驶一辆汽车。你需要轮胎、转向机和其他组件才能将其变成一辆可以驾驶的汽车。

相似地,你不能直接使用内核。你需要 交互界面 Shell ,其他工具和组件才能使用操作系统。

Linux 对比 GNU/Linux

在类似的地方,你也会看到例如 “Linux 只是一个内核,你所说的 Linux 实际上是 GNU/Linux” 的陈述。

在 Linus Torvalds 在 1991 年创建 Linux 之前,Richard Stallman 就创建了 自由软件运动 Free Software movement 和 GNU 项目。GNU 项目包括对流行的 UNIX 工具和命令的重新实现,例如 lsgrepsed 等。

通常,你的 Linux 发行版会在 Linux 内核之上包含所有这些 GNU 工具。

这就是为什么纯粹主义者坚持称之为 GNU/Linux,以便人们不要忘记 GNU 对 Linux 成功的贡献和重要性。

最后……

所以,如果你在面试或者考试中被问到这个问题,回答 “Linux 是一个内核,而不是一个操作系统”。这是你的老师或面试官在大多数情况下想要的答案。

但是更深入一点,理解内核和操作系统之间的区别。

如果有人说:“我使用 Linux”,你就会明白这个人是指 Linux 发行版,而不仅仅是内核。诚然,没有必要用 “Linux 只是一个内核,而不是一个操作系统” 来纠正别人。


via: https://itsfoss.com/linux-kernel-os/

作者:Abhishek Prakash 选题:lkxed 译者:Cubik65536 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

专利局称人工智能不比你的猫更适合作为发明人

有人对他的专利申请被拒绝提出质疑,他将其人工智能机器 DABUS 命名为某种饮料容器和闪光灯的发明人。此前,他试图在几个国家注册以人工智能为发明人的专利,但只在澳大利亚和南非获得成功。英国专利局称,如果法官作出有利于人工智能的裁决,允许人工智能机器被命名为发明人,发明人可能包括 “我的猫 Felix” 或 “宇宙力量” 等 “明显荒谬的主张”。英国最高法院将对此进行裁决,决定人工智能机器是否可以被命名为发明人以及谁可以拥有专利。

消息来源:彭博社
老王点评:猫真的没法发明什么。

苹果阻止更新由 ChatGPT 驱动的应用程序

由于担心电子邮件应用程序 BlueMail 的一项新的人工智能功能会显示不恰当的内容,苹果上周采取措施阻止了 BlueMail 的更新。BlueMail 的新人工智能功能使用 OpenAI 最新的 ChatGPT 聊天机器人,利用以前的电子邮件和日历事件的内容帮助自动撰写电子邮件。苹果驳回称,“你的应用程序包括人工智能生成的内容,但目前似乎不包括内容过滤”,要求 BlueMail 将其年龄限制提高到 17 岁以上,或包括内容过滤功能。该应用程序的限制目前设定为 4 岁及以上的用户。苹果对 17 岁及以上的年龄限制是针对那些可能包括从冒犯性语言到性内容和提及毒品的应用程序类别。

消息来源:华尔街日报
老王点评:AI 的发展太快,一系列的规则和法律都需要与之适应。但如果互联网在发展之初也带这么多条条框框,可能也发展不起来。

英特尔发布量子计算开发工具包

在去年发布测试版后,英特尔发布了量子计算开发工具包 Quantum SDK 1.0,以帮助发展量子计算的开发者生态系统。它可以帮助开发者在英特尔 Horse Ridge II 控制芯片和量子自旋量子比特芯片硬件上市之前,在模拟环境中开发量子算法。它的后端是英特尔量子模拟器(IQS),它能够在单个节点上实现 32 个量子比特,或在多个节点上实现 40 个量子比特。

消息来源:Phoronix
老王点评:可能相比人工智能能看到的发展,人们对量子计算没有那么直接的感受,但是一旦突破,带来的颠覆性影响更大。