Seth Kenlon 发布的文章

19 年前,Mozilla Firefox 发布了 0.1 版。

 title=

开源朗读者 | 淮晋阳

Mozilla Firefox 是一个让我对开源大开眼界应用程序。这肯定不是转折点,而是几个开源应用程序逐渐吸引我注意力,这是累积效应的的一小部分。并且这最终导致我转向 Linux,并且从未回头。自从切换到 Firefox(这发生在我有意识地转向开源之前)以来,我一直是一个狂热的 Firefox 用户。我的手机一直是 Firefox OS 的手机,直到这个项目被放弃。不过,有趣的是,我并不特别地认为自己是 Firefox 的 粉丝 。我从那时到现在一直在使用 Firefox,是因为从许多方面来说它都是最佳的浏览器。接下来是我认为应该马上 改用 Firefox 的五个原因。

1、Firefox 专注隐私

Firefox 的维护者是 Mozilla 基金会,这是一个完全不以你的个人数据为动机的非营利组织。Mozilla 不关心你搜索的内容、访问的网站或你网站上使用的时间。这不是 Mozilla 的商业模式,但它显然是许多其他流行浏览器的商业模式。

即使你不反对浏览器以隐私为由跟踪你的活动,你可能也曾有过这样的经历:只是一次性购买过某件不寻常的礼物,就导致你访问的每个网站都试图向你出售该物品。互联网很大,所以有时根据用户的兴趣来重组它似乎是一个好主意。我承认,如果我所有的搜索都可以“开源”给它们,可能会提供更相关的结果。但话又说回来,我宁愿主动选择这种优化,而不是让它以及许多其他未知因素一起,在我的控制之外为我做出决定。

Firefox 中的隐私 (Seth Kenlon, CC BY-SA 4.0)

Mozilla 的数据政策是这样的: 尽量少拿、保持安全、毫无隐藏。

不止如此,Firefox 还提供了帐户 监控,这是 Mozilla 的一项可选服务,如果你的任何在线帐户因大规模数据泄露而受到损害,它就会提醒你。另外,Mozilla 使用开源的 Wireguard 提供付费 VPN 服务,因此无论何时何地你都可以安全浏览。

2、Firefox 可以使用容器

很难相信的是,曾经有一段时间,当时领先的网页浏览器没有标签页功能。在上世纪 90 年代末和本世纪 00 年代初,当你想同时访问两个网页时,你必须打开两个单独的浏览器窗口。Firefox(以及之前的 Mozilla 浏览器)是标签页界面的早期使用者。

标签页是现在浏览器的标配,但是通过 Firefox 的扩展,标签页界面的功能有了有趣的新变化。由 Mozilla 自己开发的 Firefox 多帐户容器插件 可以将每个标签页变成浏览器中的一个隔离的“容器”。

Firefox 中的容器化标签页 (Seth Kenlon, CC BY-SA 4.0)

例如,假设你的雇主使用谷歌应用,但你信不过谷歌接触你的个人信息。你可以使用多账户容器插件来隔离你的工作活动,以便谷歌仅触及你的职业生活,而无法访问你日常生活的任何部分。

你甚至可以使用两个不同的帐户打开同一个网站,此外由于标签页是用颜色标识的,因此无论你是要隔离网站还是只是在浏览器中添加新的视觉提示,这都很有帮助。

3、Firefox 的用户界面设计

尽管我们人类可能对新事物更感兴趣,但在熟悉又可靠的东西中我们能找到更多的舒适感。多年以来,Firefox 不断更新其界面,并且拥有了相当多的创新,而这些创新现在已经成为非官方的行业标准。但就总体来说,它一直保持不变。Firefox 的用户界面保留了你认为理所当然的所有标准惯例。

当你下载文件时,系统会提示你选择让 Firefox 如何处理该文件。根据你的选择,你可以在适当的应用程序中打开文件或将其保存到硬盘驱动器。你可以选择让 Firefox 记住你的选择并作为你将来的选择,或者让它继续提示你。

Firefox用户界面设计 (Seth Kenlon, CC BY-SA 4.0)

当你需要应用程序菜单时,可以在现代的“汉堡包式”的菜单中找到它,或者你可以按 Alt 键在 Firefox 的窗口顶部显示传统菜单。

无论你是否是 Firefox 的长期用户,Firefox 中的一切都看起来很熟悉,因为它建立在多年的用户界面设计经验之上。在它可以创新的地方,它就会去创新,但是如果这些创新会违反直觉,它就会废弃这种创新。

4、Firefox 的开发者工具

回溯万维网的早期,你可以浏览到任何网站并查看其源代码。仅仅这样做几次就很有可能学习到 HTML 的知识。一切都是公开的、透明的、显而易见的,而且相对简单的。

互联网已经逐渐演变成为一个强大的 基于云的超级计算机,现在从网站中提取有意义的上下文有时需要的不仅仅是其底层标记的文本转储。为了确保每个人都可以对网站的功能进行逆向工程(和正向工程),Firefox 在浏览器中集成了一套功能强大的开发工具。

开发者工具 (Seth Kenlon, CC BY-SA 4.0)

虽然这最初是基于 Firefox 的创新(在 2006 年推出的 Firebug),但现在许多浏览器都有开发者工具功能。然而,并非所有的开发者工具都一样,正是 Firefox 的开发者面板使 Firefox 成为我进行网页设计和用户体验测试的首选浏览器。

5、Firefox 是开源的

最为重要的是,Firefox 是完全开源的。这是一个优秀的浏览器,并且对你毫无隐藏。除了保持互联网开放,教育人们了解互联网,并推广日常工作的开源解决方案之外,它没有别有用心的动机。

Firefox 是开源的 (Seth Kenlon, CC BY-SA 4.0)

你可以为 Firefox 做出贡献。你可以对你不喜欢的部分提交报告。你可以看到与互联网交互时运行的代码。几十年来,Firefox 一直在支持开放互联网。它忠于其自身的原则,并且可以说已经迫使几个竞争对手走向开源。如果 Firefox 没有抬高公众的期望,它们可能不会选择开源。

Firefox 是现代互联网上的具有影响力的力量,它是一款优秀的浏览器。Firefox 可以在你的桌面和移动设备上运行,因此想让自己轻松一点,就安装个 Firefox 吧


via: https://opensource.com/article/21/9/switch-to-firefox

作者:Seth Kenlon 选题:lujun9972 译者:leo314159 校对:wxy

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

使用 lpr 命令在终端中打印文件。

 title=

在 Linux 上打印很容易,但有时感觉要做很多工作,比如启动应用程序、打开文件、在菜单中找到打印选项,单击确认按钮等等。当你是一个终端用户时,通常希望使用简单的触发器执行复杂的操作。打印很复杂,但没有什么比 lpr 命令更简单了。

使用 lpr 命令打印

使用 lpr 命令在终端打印文件:

$ lpr myfile.odt

如果失败的话,你需要设置默认打印机或手动指定打印机。

设置默认打印机

根据我在 1984 年印刷的 Berkeley 4.2 手册的旧版本中找到的资料,lpr 命令会分页并将文件发送到打印机池,后者将数据传输到称为 行式打印机 line printer 的东西。

显示 LPR 命令信息的页面

现在,最初的 lpr 命令已经无法满足,因为现代计算机可以访问多台打印机,而且是那些比点阵行式打印机复杂得多的打印机。现在有一个称为 通用 Unix 打印系统 Common Unix Printing System (CUPS)子系统,可以跟踪你的计算机可以访问的所有打印机,计算机应该使用哪个驱动程序与每台打印机通信,默认使用哪台打印机等等。 CUPS 捆绑提供的 lpr.cupslpr-cups 命令通常以符号链接到 lpr,允许你首先借助 CUPS 配置从终端打印。

使用 lpr 打印文件,你应该首先设置默认打印机。你可以在系统的打印机设置中设置:

设置默认打印机对话框

或者,你也可以使用 lpadmin 命令设置:

$ sudo lpadmin -d HP_LaserJet_P2015_Series
$ lpstat -v
device for HP_LaserJet_P2015_Series: ipp://10.0.1.222:631/printers/HP_LaserJet_P2015_Series

使用环境变量设置

你不能在没有管理员账户的系统上设置默认打印机,因为更改打印机默认设置是一项特权任务。在 lpr 借助 CUPS 找到目标打印机前,它会在系统中查询 PRINTER 环境变量

在本例中,HP_LaserJet_P2015_Series 是打印机的名称。将 PRINTER 设置为该值:

$ PRINTER=HP_LaserJet_P2015_Series
$ export PRINTER

一旦设置了 PRINTER 变量,你就可以打印了:

$ lpr myfile.pdf

获取连接的打印机列表

你可以使用 lpstat 命令查看所有连接到系统接受打印任务的打印机:

$ lpstat -a
HP_LaserJet_P2015_Series accepting requests since Sun 1 Aug 2021 10:11:02 PM NZST
r1060 accepting requests since Wed 18 Aug 2021 04:43:57 PM NZST

打印到任意一台打印机

将打印机添加到系统后,并且现在你知道如何识别它们了,你可以打印到其中任何一台,无论你是否设置了默认打印机:

$ lpr -P HP_LaserJet_P2015_Series myfile.txt

如何定义打印机

CUPS 有一个友好的前端页面,可通过 Web 浏览器如 Firefox 访问。虽然它使用 Web 浏览器作为用户界面,但它实际上是在本机(一个称为 localhost 的位置)的 631 端口上提供服务。CUPS 管理连接到计算机的打印机,并将其配置存储在 /etc/cups/priters.conf 中。

printers.conf 文件包含详细描述计算机可以访问的打印设备的定义。不要直接编辑它,但如果你想这样做,你必须先停止 cupsd 守护进程。

一个典型的文件定义如下所示:

<Printer r1060>
  Info Ricoh 1060
  Location Downstairs
  MakeModel Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.6
  DeviceURI lpd://192.168.4.8
  State Idle
  StateTime 1316011347
  Type 12308
  Filter application/vnd.cups-raw 0 -
  Filter application/vnd.cups-raster 100 rastertogutenprint.5.2
  Accepting Yes
  Shared No
  JobSheets none none
  QuotaPeriod 0
  PageLimit 0
  KLimit 0
  OpPolicy default
  ErrorPolicy stop-printer
</Printer>

在本例中,打印机的名称是 r1060,即 “Ricoh Aficio 1060”。

MakeModel 属性是从 lpinfo 命令中提取的,该命令列出了系统上所有可用的打印机驱动程序。假设你知道要打印到 Ricoh Aficio 1060,那么你会发出以下命令:

$ lpinfo -m | grep 1060
gutenprint.5.2://brother-hl-1060/expert Brother HL-1060 - CUPS+Gutenprint v5.2.11
gutenprint.5.2://ricoh-afc_1060/expert Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.11

它会列出已安装的相关驱动程序。

MakeModel 属性是结果的后半部分。在本例中为 Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.11

DeviceURI 属性标识打印机在网络上的位置(或物理位置,例如 USB 端口)。在本例中,它是 lpd://192.168.4.8,因为我使用 lpd 协议将数据发送到一台网络打印机。在我的另一个系统上,我有一个通过 USB 连接的 HP LaserJect 打印机,因此 DeviceURIhp:/usb/HP_LaserJet_P2015_Series?serial=00CNCJM26429

在终端中打印

将作业发送到打印机是一个简单的过程,只要你了解连接到系统的设备以及如何识别它们。在终端打印非常快速、高效,并且易于编写脚本或作为批处理作业完成。试试看!


via: https://opensource.com/article/21/9/print-files-linux

作者:Seth Kenlon 选题:lujun9972 译者:MjSeven 校对:wxy

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

使用 Goxel 构建模型很有趣,就像没有锋利边缘的乐高、没有“爬行者”的 Minecraft 一样。

 title=

我喜欢乐高,这不是什么秘密,但我的乐高收藏现在离我很远,而且把满满一柜子的经典乐高套装在世界各地搬来搬去看起来也不太可行。为了解决这个问题,从 在乐高 CAD 中建立模型在 Blender 中用乐高纹理对模型进行造型,我做了很多虚拟化的工作。最近我发现了 Goxel。这个简单得令人震惊的 3D 建模应用并没有自称是基于乐高的,也没提和乐高有什么关系。然而,用 3D 像素建立模型的感觉与用乐高积木建立模型的满足感惊人地相似。你可以把 Goxel 看作是一个像素绘画程序,但却是 3D 的。

Goxel 采取了一种独特的 3D 建模方法,它专门针对 低模 low polygon 建模。如果你想雕刻出栩栩如生的模型,就不应该使用这个程序。但是,如果你喜欢 Minecraft 和其他低模艺术的美感,那么你应该试试 Goxel。

在 Linux 上安装 Goxel

你可以从 Flathub 将 Goxel 作为 Flatpak 安装在 Linux 上。

对于 Android、Windows macOS 和 iOS,请到 Goxel 网站 下载安装程序。

Goxel 是开源的,在 GPLv3 许可下发布。

使用体素绘画

当你第一次启动 Goxel 时,在 Goxel 窗口的中间会有一个空的“空间”或容器。这就是你的画布。

 title=

正是在这个容器中,且只有在这个容器中,你才能建立你的模型。在大多数三维建模应用中, 深度感知 depth perception 是一种努力才能得到的技能,所以 Goxel 限制了你工作的空间,以防止你最终出现模型和模型部件彼此相距甚远的情况。Goxel 还限制你在一个严格的网格中移动。你可以沿 Y 轴上下移动,沿 X 轴左右移动,沿 Z 轴前后移动,但只能在一个三维像素(或称为 体素 voxel )的片段中移动。不管用于什么意图和目的,Goxel 的体素就是用来建立模型的虚拟乐高砖块。

Goxel 中没有太多工具,这对一个三维建模应用来说是一个真正的特点。默认情况下,你已经激活了铅笔工具,所以你可以通过点击鼠标在体素容器内的任何地方立即开始建造。

 title=

试着点击容器周围,以查看添加体素的位置。Goxel 让你比较容易地看到你的铅笔即将添加体素的地方,可以把体素当作砖块,它假设当你靠近一个现有的体素时是准备把你的下一个体素连接到它。即便如此,在二维屏幕上实现三维也很困难。有时,体素会被添加到一个你没有意识到的地方。确保你的体素被添加到你想添加的地方的最好方法是经常旋转容器。你可以用键盘上的方向键来旋转容器,或者你可以点击并拖动鼠标中键。右击并拖动容器可在 Goxel 工作区中移动,而鼠标的滚轮可以放大和缩小。

平面标记

Goxel 还提供了另一个对齐体素的技巧,那就是以半透明和临时平面的形式提供指导。当你在你的容器中添加一个平面时,它会创建一种力场,使你的铅笔无法通过。

 title=

其结果是,你只能沿着两个轴线安全地作画,而不能沿着第三个轴线作画。你可以沿着网格轻推平面,这样你就可以分片添加体素,就像 3D 打印机向物理模型添加一样。

禁用平面控制中的 “ 可见 Visible ” 选项可以移除平面。

 title=

Goxel 工具栏

顶部的工具栏包含七个按钮。从左到右:

  • 撤销 Undo
  • 重做 Redo
  • 删除所有的东西,且无需确认 Delete everything without confirmation
  • 添加一个体素 Add a voxel
  • 减去(删除)一个体素 Subtract (remove) a voxel
  • 画一个体素 Paint a voxel
  • 设置油漆颜色 Set the paint color

你可以在单个体素上作画,也可以使用铅笔左边的形状工具,一次性添加体素区域。

除了用铅笔删除体素外,你还可以使用激光工具在体素出现在作为计算机显示器的 2D 屏幕上时对其进行调整。在形状工具的右边,把你的光标变成一个十字准线。把它指向你看到的体素,然后点击它来擦除。

极简主义的宁静

Goxel 追求简单,不仅在于它生产的内容,还在于它的生产方式。我在本文中只讨论了 Goxel 的绘图工具。虽然还有其他功能,例如控制光线的俯仰角和偏航角的能力、阴影的强度以及虚拟摄像机的位置,但该应用力求以最佳方式使事情变得简单自然。使用 Goxel 构建模型非常有趣,就像没有锋利边缘的乐高玩具,或者没有“爬行者”的 Minecraft。去使用 Goxel,并构建一些模型吧!


via: https://opensource.com/article/21/12/3d-pixel-art-goxel

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

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

如果你拍摄的照片值得处理,那么你可以看看 Darktable 为你提供了什么。

 title=

很难说好照片是如何产生的。你必须在正确的时间出现在正确的地点。你必须准备好相机和构图的观察力。而这只是发生在相机里的部分。好的摄影还有另一个阶段,许多人都没有想到这一点。它曾经需要在 暗房 中的灯光和化学品,但在今天的数字工具中,后期制作发生在暗房软件中。最好的照片处理器之一是 Darktable,我在 2016 年写了一篇 介绍 Darktable 的文章。那篇文章已经过去五年了,所以我想我应该重新审视一下这个应用,写一写它的一个高级功能:蒙版。

自从我最初写下这篇文章以来,Darktable 并没有什么变化,在我看来,这是一个真正好的应用的标志之一。一个稳定的界面和持续的优秀性能是人们对软件的所有要求,而 Darktable 依旧熟悉而强大。如果你是 Darktable 的新手,请阅读我的 介绍性文章,了解基础知识。

什么是蒙版?

在照片处理中,蒙版被用来限制你对图像的调整,使其只限于图像的一个区域。

直观地说, 蒙版 mask 是视觉艺术中的一种技术,用一种材料来遮挡另一种材料。如果你曾经在你的公寓或房子里画过一面墙,你可能使用过 遮蔽胶带(也叫油漆工胶带)来保护相邻的墙壁或造型不受杂乱笔触的影响。完成后,你剥去遮蔽胶带,你就有了漂亮的油漆直线。

模板 stencil 也是遮蔽的一种形式。

 title=

(Seth Kenlon, CC BY-SA 4.0

这是一种在摄影中使用了一个世纪的技术,因此,数字摄影工具有一个类似的技术也是合理的。

在 Darktable 中使用蒙版

在这个例子中,我使用了 Flickr 用户 bcnewdemocrats 的创作共用照片。这是一张很好的照片,因为它有迷人的主题(两个孩子在他们非常耐心的父亲脸上涂抹 Holi 粉)。因为它是关于印度的五彩节,所以它在整个过程中都有色彩飞溅。

 title=

(bcnewdemocrats, CC BY-SA 4.0

这是一张不需要改进的照片,但并不是所有的调整都需要剧烈变化才能产生显著效果。

色彩校正滤镜提供了一个特别明显的调整。在彩色摄影中,尤其是人物摄影中,一个常见的修正是添加 琥珀色(一种偏红的橙色)。人类肤色受益于琥珀色,因为我们把这种颜色与温暖和生命联系起来。

点击 “ 开启 On ” 按钮,激活 Darktable 窗口右侧的色彩校正调整面板。将中心点向上和向右拖动,给照片增加琥珀色。

 title=

(Seth Kenlon, CC BY-SA 4.0

这样做之后,整张照片就会浸透在琥珀色里。

 title=

(Seth Kenlon, CC BY-SA 4.0

在色彩校正面板的底部,点击 “ drawn & parametric mask 绘制和参数化蒙版 ” 按钮。

 title=

(Seth Kenlon, CC BY-SA 4.0

在显示出来的工具栏中,你有几种蒙版形状可以选择。有圆、椭圆、路径、画笔、梯度,还有一个编辑现有蒙版的选项。为了简单起见,选择圆形,然后点击你的对象的脸。

 title=

(Seth Kenlon, CC BY-SA 4.0

你的色彩校正滤镜立即被限制在你的圆形蒙版的区域内,给你的主要对象一个令人愉快的琥珀色调,同时避开背景。

 title=

(Seth Kenlon, CC BY-SA 4.0

你可以通过切换色彩校正滤镜的关闭和开启来看到区别。

复用蒙版

如果你想只对被摄者的脸部应用另一个滤镜,你不必为那个新的滤镜再创建一个蒙版。当你创建一个蒙版时,它会被添加到位于 Darktable 界面左边的 “ 蒙版管理器 mask manager ” 面板上。默认的名字是非常通用的,但你可以双击每个蒙版的名字来重命名它。

 title=

(Seth Kenlon, CC BY-SA 4.0

当你应用一个新的滤镜时,不是选择一个新的蒙版形状来创建,而是点击 “ 不使用蒙版 no mask used ” 下拉菜单来查看现有的蒙版列表,以及之前在同一个滤镜上一起使用过的自动分组的蒙版。选择你想用于新滤镜的蒙版或蒙版组。

 title=

(Seth Kenlon, CC BY-SA 4.0

更多蒙版

在 Darktable 中还有很多其他类型的蒙版和蒙版功能可以探索。你可以用路径和画笔工具创建复杂的形状。你也可以完全放弃使用形状,并根据色度和亮度值将过滤器限制在图像的某个区域。你可以调整蒙版的模糊度和扩散度等。在 Darktable 中进行的所有调整中,最好的一点是它们都是动态的、非破坏性的。如果你改变主意,你可以随时关闭它们,而且你实际上从未影响过图像数据本身。这并不奇怪,因为 Darktable 确实是一个强大的摄影工具,如果你拍摄的照片值得处理,你就应该看看 Darktable 为你提供了什么。


via: https://opensource.com/article/21/12/open-source-photo-processing-darktable

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

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

SoundConverter 是一个有用的应用,它不仅能做到它的名字所说的那样,而且它是分批和并行地做的。

 title=

有许多用于存储数字音频的文件格式,它们适用于不同的目的。当然,数字音频只是声音的一种表现形式,是一种声波的呈现,它由解码器和一组扬声器转化为声音。一些音频格式,一般被称为 无损 lossless 格式,旨在将音频编码为接近其原始模拟形式。然而,在现实世界中有大量的数据,而迄今为止,数字形式只能对其进行近似处理,而且需要非常大的文件。其他的音频格式,被称 有损 lossy 格式,可以在文件大小与声音的合理表现之间取得平衡。

有很多很好的终端命令可以用于音频转换:有 soxffmpeg,以及一些特定格式的编码器,如 opusencflacoggencfdkaacwavpack 和无数的其他编码器。

在 Linux 上安装 SoundConverter

SoundConverter 在大多数 Linux 发行版上都可以通过你的包管理器获得。在 Fedora、Mageia 和类似的发行版上:

$ sudo dnf install kdenlive

在 Elementary、Mint 和其他基于 Debian 的发行版上:

$ sudo apt install kdenlive

然而,我使用使用 Flatpak 安装 SoundConverter。

转换音频

一旦你把音频编码成有损格式,你就丢失了数据。这些数据是否重要取决于其听众的耳朵。有些人听不出低比特率的 MP3 和全质量的 FLAC 文件之间的区别,即使那些能听出来的人,也常常注意不到 320kbps 的 Ogg Vorbis 播客和 128kbps 的 Ogg Vorbis 播客之间的区别。将音频从压缩格式转换为非压缩格式并不能恢复丢失的数据,但需要将音频从一种格式转换为另一种格式的情况并不少见。你可能想把文件上传到只接受特定格式的网站,或者你的移动设备可能只能播放特定的格式,或者用电子邮件发送一个对你的邮件主机来说太大的文件,或者你可能只是想节省硬盘上的空间。

SoundConverter 可以让你轻松地分批转换音频。要用 SoundConverter 转换音频:

  1. 从你的应用或活动菜单中启动 SoundConverter。
  2. 点击 SoundConverter 窗口左上角的“ 添加文件 Add Files ”按钮,并选择你要转换的文件。
  3. 添加了文件后,点击窗口右上角的“ 偏好 Preferences ”按钮(齿轮图标),并选择你想转换的格式。你还可以设置文件命名规则、目标文件夹和其他选项。
  4. 当你准备好了,点击左上角的“ 转换 Convert ”按钮。

 title=

并行处理

SoundConverter 是一个有用的应用,它不仅完全做了它的名字所说的事情,而且它是分批和并行地做的。因为现代计算机不仅仅有一个 CPU 核心,把每个文件放在一个队列中逐一编码,是对能源和时间的浪费。SoundConverter 可以同时处理几个文件,并对它们进行编码,这意味着转换 12 个文件所需的时间和通常一个接一个地转换两个文件所需的时间是一样的。你可以用一个好的终端命令做同样的事情,但前提是你要了解如何 启动并行进程

 title=

你也可以将立体声音频转换为单声道文件。这对播客和有声读物特别有用。这些通常由一个人从一个单一的位置(麦克风)说话组成,不需要空间位置感。事实上,将立体声文件减少到单声道,如果你只有一个耳塞,就能更容易听到音频,并将文件大小减半。

SoundConverter 的优势

为音频提供不同的文件格式是一个很好的功能,但似乎每当我以一种格式保存音频时,我都不可避免地需要另一种格式。有几个很棒的 Linux 命令可以 转换音频文件,但有时你可能想要一个可以在桌面上打开并拖放文件的应用,这就是 SoundConverter 的用场。SoundConverter 是一个简单的而用途单一的应用程序,它的作用和它的名字一样:把声音从一种格式转换为另一种格式。


via: https://opensource.com/article/21/12/soundconverter-linux

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

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

学习 find 命令的原因有很多。

不管我决心如何组织文件,似乎总有无法找到文件的时候。有时是因为我不记得最初的文件名,其他时候,我知道名字,但我不记得在哪里保存它了。甚至有时我需要一个我最初就没有创建的文件。但是,无论遇到什么困难,我知道在 POSIX 系统 上,总是有 find 命令可以帮助我。

安装 find

find 命令由 POSIX 规范 定义,它创建了一个用于衡量 POSIX 系统的开放标准,这包括 Linux、BSD 和 macOS。简而言之,只要你运行的是 Linux、BSD 或 macOS,那么 find 已经安装了。

但是,并非所有的 find 命令都完全相同。例如,GNU 的 find 命令有一些 BSD、Busybox 或 Solaris 上 find 命令可能没有或有但实现方式不同的功能。本文使用 findutils 包中的 GNU find,因为它很容易获得且非常流行。本文演示的大多数命令都适用于 find 的其他实现,但是如果你在 Linux 以外的平台上尝试命令并得到非预期结果,尝试下载并安装 GNU 版本。

按名称查找文件

你可以借助正则表达式使用完整或部分的文件名来定位文件。find 命令需要你给出想搜索的目录;指定搜索属性选项,例如,-name 用于指定区分大小写的文件名;然后是搜索字符串。默认情况下,搜索字符串按字面意思处理:除非你使用正则表达式语法,否则 find 命令搜索的文件名正是你在引号之间输入的字符串。

假设你的 Documents 目录包含四个文件:Foofoofoobar.txtfoo.xml。以下是对 foo 的字面搜索:

$ find ~ -name "foo"
/home/tux/Documents/examples/foo

你可以使用 -iname 选项使其不区分大小写来扩大搜索范围:

$ find ~ -iname "foo"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo

通配符

你可以使用基本的 shell 通配符来扩展搜索。例如,* 表示任意数量的字符:

$ find ~ -iname "foo*"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt

? 表示单个字符:

$ find ~ -iname "foo*.???"
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt

这不是正则表达式语法,因此 . 在示例中只表示字母“点”。

正则表达式

你还可以使用正则表达式。与 -iname-name 一样,也有区分大小写和不区分大小写的选项。但不一样的是,-regex-iregex 搜索应用于整个路径,而不仅仅是文件名。这意味着,如果你搜索 foo,你不会得到任何结果,因为 foo/home/tux/Documents/foo 不匹配。相反,你必须要么搜索整个路径,要么在字符串的开头使用通配符:

$ find ~ -iregex ".*foo"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo

查找近一周修改过的文件

要查找近一周修改的文件,使用 -mtime 选项以及过去的天数(负数):

$ find ~ -mtime -7
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt

查找近几天修改的文件

你可以结合使用 -mtime 选项来查找近几天范围内修改的文件。对于第一个 -mtime 参数,表示上一次修改文件的最近天数。第二个参数表示最大天数。例如,搜索修改时间超过 1 天但不超过 7 天的文件:

$ find ~ -mtime +1 -mtime -7

按文件类型限制搜索

指定查找文件的类型来优化 find 的结果是很常见的。如果你不确定要查找的内容,则不应该使用此选项。但如果你知道要查找的是文件而不是目录,或者是目录而不是文件,那么这可能是一个很好的过滤器。选项是 -type,它的参数是代表不同类型数据的字母代码。最常见的是:

  • d - 目录
  • f - 文件
  • l - 链接文件
  • s - 套接字
  • p - 命名管道(用于 FIFO)
  • b - 块设备(通常是硬盘)

下面是一些例子:

$ find ~ -type d -name "Doc*"
/home/tux/Documents
$ find ~ -type f -name "Doc*"
/home/tux/Downloads/10th-Doctor.gif
$ find /dev -type b -name "sda*"
/dev/sda
/dev/sda1

调整范围

find 命令默认是递归的,这意味着它会在指定的目录中层层搜索结果。这在大型文件系统中可能会变得不堪重负,但你可以使用 -maxdepth 选项来控制搜索深度:

$ find /usr -iname "*xml" | wc -l
15588
$ find /usr -maxdepth 2 -iname "*xml" | wc -l
15

也可以使用 -mindepth 设置最小递归深度:

$ find /usr -mindepth 8 -iname "*xml" | wc -l
9255

下载速查表

本文仅介绍 find 的基本功能,它是一个很好的搜索工具,但对于强大的 Parallel 命令来说,它也是一个非常有用的前端。学习 find 的原因有很多,所以 下载我们免费的 find 速查表 吧,它可以帮助你了解有关该命令的更多信息。


via: https://opensource.com/article/21/9/linux-find-command

作者:Seth Kenlon 选题:lujun9972 译者:MjSeven 校对:wxy

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