2023年1月

这是一份关于如何理解 Linux 和 BSD 中 whereis 命令的初学者指南,还包括几个例子。

这篇文章是 Linux 命令 学习系列的一部分。

whereis 命令

whereis 命令是一个命令行程序,可以帮助你找出任何二进制可执行文件、源文件或手册页的路径或位置。

在告诉你如何使用 whereis 命令之前,让我们先看看其语法。

语法

以下是 whereis 命令的语法:

whereis [OPTIONS] FILE_NAME

whereis 命令的参数是你要搜索的程序名或文件名。该参数是必须的。

默认情况下,它在环境变量(如 HOME、USER、SHELL 等)中定义的路径中搜索程序。

让我们看下一些例子。

Linux 和 BSD 中 whereis 命令的例子

下面是 whereis 命令的一个简单例子,我试图搜索 firefox。在下面的输出中,你可以看到包含 firefox 文件或可执行文件的路径列表。

$ whereis firefox

firefox: /usr/bin/firefox /usr/lib64/firefox /etc/firefox /usr/share/man/man1/firefox.1.gz

Linux 中 whereis 命令的简单例子

带有选项 -l 的命令会显示其搜索的路径列表。比如:

$ whereis -l

bin: /usr/bin
bin: /usr/sbin
bin: /usr/lib
bin: /usr/lib64
bin: /etc
bin: /usr/games
bin: /usr/local/bin
bin: /usr/local/sbin
bin: /usr/local/etc
bin: /usr/local/lib
bin: /usr/local/games

如果 whereis 命令没有找到任何东西,它只显示参数的名称。例如,如果我在 Linux 中搜索 nano,它没有安装,它的输出如下:

$ whereis nano
nano:

如果你想搜索更多的参数,你可以随时添加多个参数。例如,下面的命令同时搜索 bash 和 nano,输出结果是这样的:

$ whereis bash nano

bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz /usr/share/info/bash.info.gz
nano: /usr/bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz

你也可以使用 -b 选项搜索特定的文件类型,比如二进制文件。下面的命令只告诉你 nano 的二进制路径。

$ whereis -b nano

nano: /usr/bin/nano /usr/share/nano

同样,-s 选项可以搜索源文件,而 -m 选项可以搜索手册页。

$ whereis -m nano

nano: /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz

你也可以结合上面的选项来进行更广泛的搜索。例如,下面的命令可以搜索 nano 和 firefox 的二进制、手册页;而对于 bash,只搜索手册页。

$ whereis -bm nano firefox -m bash

nano: /usr/bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz
firefox-m:
bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz /usr/share/info/bash.info.gz

下面是选项的摘要:

选项描述
-b只搜索二进制文件。
-m只搜索手册页部分。
-s只搜索源码。
-u搜索不寻常的条目。如果一个文件没有所要求的每种类型的条目,就被称为不寻常。因此,whereis -m -u * 会查询当前目录中没有文档的那些文件。
-B改变或限制 whereis 搜索二进制文件的地方。
-M更改或限制 whereis 搜索手册的位置。
-S更改或以其他方式限制 whereis 搜索源码的位置。
-f终止上一个目录列表并指示文件名的开始,并且必须在使用任何 -B、-M 或 -S 选项时使用。

总结

我希望这篇文章能够帮助你理解 whereis 命令及其基本原理。你也可以阅读 whereis 手册页 来了解更多。如果你有任何问题,请告诉我。


via: https://www.debugpoint.com/whereis-command-linux/

作者:Arindam 选题:lkxed 译者:geekpi 校对:wxy

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

Mastodon 的又一次胜利!Medium 为其用户推出了一个 Mastodon 实例。

Mastodon 在最近一段时间的增长是巨大的;越来越多的人正在转向这个 Twitter 的替代品。

如果你不熟悉 Mastodon,它是目前 最好的主流社交媒体替代品 之一,有可能成为 Twitter 的替代品,它是 完全开源和去中心化的。

随着 Twitter 的不断发生变化和去年埃隆·马斯克对它的收购,更多的用户开始对 Mastodon 这个平台产生了浓厚的兴趣。

Vivaldi 最近推出了 其由 Mastodon 驱动的社区,Mozilla 基金会 也在考虑类似的东西。

现在,Medium 已经向前迈出了一步,推出了它们的 Mastodon 实例。

Medium 启动了一个由 Mastodon 驱动的社区

在 最近的公告 中,Medium 在 me.dm 推出了其 Mastodon 实例,专注于 “帮助他们的作者、出版物和读者在 联盟宇宙 Fediverse 中找到一个家”。

该网站(即 Mastodon 实例)旨在成为 Medium 的用户的专属空间。

换句话说,它将成为 Medium 用户的专属社交网络平台。

有了这个网络平台,他们也可以开始进行 500 字以内的短文写作了。

Medium 的 CEO 提到:

相比之下,Mastodon 主要是为 500 字以内的短文写作服务的。用一个不太双关的说法:今天,我们正在借助 Mastodon 上的实例(me.dm)将我们用于发表长文的 Medium 扩展到短文 medium(小写 m)。除了更简短的形式外,Mastodon 还带来了围绕联盟概念的重要创新。

因此,看起来 Medium 正在试水和尝试新的东西。

对于那些喜欢一目了然的内容而不是冗长信息的用户来说,可能是一件好事。

如果操作得当,这对他们来说会有很好的效果。

**那么,你怎样才能加入 Medium 的 Mastodon 平台?

? 你看,最初,只有选定的作者和出版物 才能进入这个 Mastodon 实例。现有的 Medium 用户可以尝试发送一个 注册请求,但要经过他们的批准。

因此,如果你发送一个注册请求,你得等待批准。

他们还计划作为付费会员的额外服务来邀请作家和读者。

他们已经在为他们的 Mastodon 实例开发一个 “用 Medium 注册” 的选项,这应该是为了让你更容易开始使用。

关于这一点,他们提到:

有这么多的 Mastodon 实例可供选择,我们计划让 me.dm 一开始就有几个重要的好处:可靠的基础设施和审核,一个短域名让你更容易分享你的用户名,为新用户提供更好的入门培训,以及一个有趣的本地信息源。

去中心化和开源平台的步伐加快了

去中心化的平台正在变得比人们十年前预期的更加流行。

最大的促成因素是大型科技公司越来越多的不稳定的变化和决定,迫使用户不断调整他们在社交媒体平台上的互动方式和理由。

有了开源和去中心化的平台,用户得到了透明度,更多的数据控制,以及更多的自由。

我们可能没有想到,Mastodon 作为一个平台,逐渐成为各种组织的社区建设的一个重要组成部分。因此,我们非常期待在不久的将来看到更多变化。

? 欢迎在下面的评论中分享你的想法。


via: https://news.itsfoss.com/medium-mastodon/

作者:Sourav Rudra 选题:lkxed 译者:wxy 校对:wxy

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

流媒体应用可以伪造你的眼睛看向摄像头

英伟达的流媒体软件 Broadcast 现在有一个选项,可以通过深度伪造让你看起来像在与摄像头进行眼神交流,即使你在现实生活中看着别的地方。该功能可以让“内容创作者拍摄自己时可以阅读他们的笔记或剧本”,而不必直接看向摄像机。

消息来源:The Verge
老王点评:这就是我所需要的功能啊,感觉人工智能有时候也能做一些很有趣的事情。

网售的安卓电视盒被预装了恶意软件

安全专家发现,从亚马逊购买的一个安卓电视盒被预装了持久的、复杂的恶意软件,并被植入其固件。该安卓电视盒配备了全志 T616 处理器,通过亚马逊等网络平台销售。不幸的是,这些基于安卓系统的廉价电视盒设备从制造到全球市场的供应都遵循一条模糊的路线。在许多情况下,这些设备以多个品牌和设备名称出售,没有明确说明它们的来源地。

消息来源:Bleeping Computer
老王点评:就如我们之前报道的,智能电视卖的是用户数据,这些廉价电视盒也是一样的生意。

诺顿密码管理器账户被攻破

Gen Digital 公司正在向客户发送数据泄露通知,告知他们黑客已经成功地在凭证填充攻击中攻破了 Norton 密码管理器账户。该公司称自己的系统没有被破坏,而是用户在其它地方泄露的账户信息遭到了利用。该公司发现攻击者使用他们从暗网购买的用户名和密码对,试图登录诺顿客户账户。调查显示,凭证填充攻击已经成功侵入了数量不详的客户账户,这可能导致其他在线账户的泄露,数字资产的损失,秘密的暴露等等。

消息来源:Bleeping Computer
老王点评:密码管理器账户的主密码采用其它地方使用的账户,你说这是怎么想的?

本文列出了 Linux 上的五大流媒体直播应用,包括了它们的功能、亮点、下载详情和对比。

现在是为你的业务纳入在线视频内容的最佳时机。为什么?因为研究表明,全球在线视频市场正以每年约 20% 的速度增长。

而且,由于开发者们提供的一些优秀软件,任何人都可以轻松地创建视频内容,并在 YouTube 和 Twitch 等几个流行的平台上传播。如果你仔细想想,你会发现如今你在网上观看的视频内容比基于文本的内容更多。

因此,在这篇文章中,我们将列出一些适用于 Ubuntu 和其他 Linux 的免费软件,这些软件很容易用于为你和你的企业创建超级有趣的流媒体内容。

Linux 的五大流媒体直播应用

OBS Studio

本列表中的第一个免费应用程序是 OBS Studio(即 Open Broadcaster Software)。它是一个具有屏幕广播功能的流媒体直播应用程序,可用于 Linux、Windows 和 macOS。

出于几个原因,OBS Studio 是这个名单上最好的一个。它内置了编码,支持 RTMP 广播、多源、网络摄像头、绿屏、捕捉卡和你的应用程序窗口。

其用户界面相当简单明了,功能丰富。你可以从第三方开发的插件中获得帮助,以扩展其功能,例如,在直播时将 Twitter 上的实时推文混入你的流媒体。不过,OBS 不支持多比特率流媒体。

OBS Studio - 适用于Linux的直播应用程序

如何安装:

OBS Studio 可以在所有 Linux 发行版的官方软件库中找到。详细的安装说明见下面的链接。

下载 OBS Studio

更多信息:

VokoscreenNG

我们将在这个列表中介绍的第二个应用程序是 VokoscreenNG。它复刻了已停止的 Vokoscreen 项目。这个新的应用程序完全用 Qt 和 GStreamer 库编写。它可以记录你的屏幕,并接受多个音频源和视频源。VokoscreenNG 的工具箱也相当引人注目。它包括一个放大镜、计时器、系统托盘插件,可以简化你的工作流程。

它可以免费用于 Linux 和 Windows。

vokoscreenNG - 适用于Linux的流媒体直播应用程序

如何安装:

你可以从下面的链接下载用于 Linux 系统的压缩可执行文件。下载后,将其解压,然后执行二进制文件来启动该应用程序。

记住,这个应用程序需要在你的 Linux 系统中安装 X11、PulseAudio 和 GStreamer 插件才能工作。如果你使用的是带有 Wayland 和 Pipewire 声音服务器的现代 Linux 系统(例如 Fedora),这个应用程序可能无法工作。

下载 VokoscreenNG

更多信息:

Restreamer

Restreamer 应用程序可以让你直接在你的网站上直播视频和截屏,而无需任何流媒体服务商。也可以用这个应用程序使用流行的流媒体解决方案,如 YouTube、Twitch等。

这个应用程序功能丰富,有一个不错的功能列表。下面是对其功能的快速介绍:

  • 支持 H.264 流媒体
  • 内置 HTML5 视频播放
  • 可用于 Linux、macOS、Windows 和 Docker 镜像
  • 支持你自己的网站和 YouTube、Twitchm、Facebook、Vimeo、Wowza 等。
  • 支持多个视频源:网络摄像机、USB 摄像机或任何 H.2645 流媒体
  • 编码和音频源支持
  • 支持 JPEG 形式的定期快照
  • 通过 JSON HTTP API 访问流状态,以便进行额外的编程

Restreamer

如何安装:

安装 Restreamer 有点麻烦,因为它是通过 Docker 镜像发布的。你可以在下面的链接中找到在 Linux、Windows 和 MacOS 安装的说明。

下载 Restreamer

更多信息:

ffscreencast

ffscreencast 是一个使用 ffmpeg 库的命令行流媒体应用程序。它利用了 ffmpeg 的强大功能,并作为它的一个封装器。尽管它是以命令行的形式出现的,但你可以直接通过终端使用其强大的功能,如多源和录音设备。它也支持多种显示设置。你还可以在你的桌面截屏上叠加你的摄像机画面。

如何安装:

要安装这个应用程序,你需要克隆它的 Git 代码库,然后将其内容复制到 /bin目录,以便全局执行 ffscreencast 命令。

git clone https://github.com/cytopia/ffscreencast
cd ffscreencastsudo
cp bin/ffscreencast /usr/local/bin

你可以在终端用 ffscreencast 命令来运行这个应用程序。

源代码和主页

Open Streaming Platforms

本列表中的最后一个应用是 Open Streaming Platforms(OSP),这是一个开源的 RTMP 流媒体软件,可以作为 YouTube LIVE、Twitch.tv 等的自托管替代品。

Open Streaming Platforms

如果使用得当,这个应用程序功能丰富且强大。因为它有以下的基本功能:

  • 从 Open Broadcast Software(OBS)等输入源进行 RTMP 直播。
  • 每个用户有多个频道,允许一个用户同时广播多个流,而不需要多个账户。
  • 视频流记录和按需播放。
  • 手动上传来源于 OSP 之外的 MP4 视频。
  • 视频剪辑,为值得注意的时刻创建更短的视频。
  • 频道所有者的实时聊天管理(禁止/解禁)。
  • 管理员控制的自适应流媒体。
  • 受保护的频道,只允许你想要的观众访问。
  • 实时频道,当流媒体没有直播时,继续聊天和闲逛。
  • Webhooks:通过完全可定制的 HTTP 请求将 OSP 连接到其他服务,这可以传递信息。
  • 将你的流媒体或视频直接嵌入到另一个网页中,很容易。
  • 通过 Facebook 或 Twitter 快速分享频道或视频。
  • 能够将用户界面定制为你自己的个人外观的主题

如何安装:

要安装 Open Streaming Platform,请按照以下页面的详细说明进行。

下载 Open Streaming Platform

更多信息:

总结

可用于 Linux 的自由开源的流媒体应用程序不多。然而,有几个商业性的流媒体应用程序,它们可能会给你更多的选择、质量和支持。但正如我所说,它们可能要花费你一些钱。所以,如果你是流媒体世界的新手,你可能想从上面列出的用于 Linux 系统的免费流媒体应用程序开始。我希望这篇文章能给你一些想法,让你根据自己的需要使用,并让你开始使用。

请在下面的评论栏里告诉我你最喜欢的流媒体软件。

加油。


via: https://www.debugpoint.com/live-streaming-applications-linux-2022/

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

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

跟随这个演示,学习如何在 Rust 中使用文件系统模块。

知道如何读写文件对各种用途都很有用。在 Rust 中,这项任务是通过标准库中的文件系统模块(std::fs)完成的。在这篇文章中,我将向你介绍如何使用这个模块。

为了演示这项任务,我准备了一些示例代码,也可以在 GitHub 上找到。

准备工作

在使用 Rust 时,失败的函数会返回 Result 类型。尤其是文件系统模块会返回专门的类型 std::io::Result<T, Error>。有了这些知识,你可以从 main() 函数中返回相同的类型:

fn  main() ->  std::io::Result<()> {
/* ...code comes here... */

Rust 文件写入

在 Rust 中执行文件的 I/O 操作是相对容易的。写入文件可以简化为一行:

use  std::fs;
fs::write("favorite_websites.txt", b"opensource.com")?;
Ok(())

使用错误传播操作符 (?),错误信息被传递到调用函数中,随后可以处理错误。由于 main() 是调用栈中唯一的其他函数,如果写操作失败,错误信息将被传递到控制台输出。

fs::write 函数的语法是非常先进的。第一个参数是文件路径,它必须是 std::path::Path 类型。第二个参数是内容,它实际上是一个字节切片([u8])。Rust 将传递的参数转换为正确的类型。幸运的是,这些类型基本上是下面的例子中所处理的唯一类型。

使用文件描述符类型 std::fs::File 可以实现对写操作更简洁的访问:

let mut file = fs::File::create("favorite_websites.txt")?;
file.write_all(b"opensource.com\n")?;
Ok(())

由于文件类型实现了 Write 特性,所以可以使用相关的方法来写入文件。然而,create 方法可以覆盖一个已经存在的文件。

为了获得对文件描述符的更多控制,必须使用 std::fs::OpenOptions 类型。这提供了类似于其他语言中的打开模式:

let mut file = fs::OpenOptions::new()
                            .append(true)
                            .open("favorite_websites.txt")?;
                            
file.write_all(b"sourceforge.net\n")?;

Rust 文件读取

适用于写的东西也适用于读。读取也可以通过简单的一行代码来完成:

let websites = fs::read_to_string("favorite_websites.txt")?;

以上一行读取文件的内容并返回一个字符串。除了读取字符串,还有 std::fs::read 函数,如果文件包含二进制数据,该函数会将数据读成一个字节向量。

下一个例子显示了如何将文件的内容读入内存,随后逐行打印到控制台:

let file = fs::File::open("favorite_websites.txt")?;
let lines = io::BufReader::new(file).lines();

for line in lines {
    if let Ok(_line) = line {
        println!(">>> {}", _line);
    }
}

总结

如果你已经熟悉了其他编程语言,你可能已经注意到没有 close- 函数(或类似的)来释放文件句柄。在 Rust 中,当相关变量超出作用域,文件句柄就会被释放。为了定义关闭行为,可以在文件表示的周围应用作用域 ({ })。我建议你熟悉 Read 和 Write 特性,因为你可以在许多其他类型中找到这个特性的实现。


via: https://opensource.com/article/23/1/read-write-files-rust

作者:Stephan Avenwedde 选题:lkxed 译者:geekpi 校对:wxy

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

数据库损坏导致全美停飞航班

周三,美国联邦航空局(FAA)的空中任务通知系统发生严重故障,一度导致全美停飞航班。FAA 初步判断问题根源是一个数据库文件受损,而没有证据表明这是一次网络攻击。周二晚间 FAA 的计算机系统就出现了问题,于是他们在周三凌晨航班最少的时候重启了系统。但在经过 90 分钟的重启之后,该系统的功能没有完全恢复,而备份系统也同样发现存在问题。FAA 于是下达了全美的停飞令,导致了大规模航班延误和机场瘫痪。

消息来源:CNN
老王点评:你真想不到一些非常重要的系统有多破旧。

因员工监控软件显示摸鱼,被勒令向公司返回工资

一名加拿大女子以远程方式从事会计工作,她最初声称自己去年被无故解雇,并要求获得赔偿。但该公司告诉法庭,该员工有 50 多个小时没有从事工作有关的任务。该公司说,在发现该员工分配的工作超出预算和进度后,该公司在其工作笔记本上安装了名为 TimeCampon 的员工追踪软件。该软件可以跟踪文件打开的时间,员工如何使用该文件,并将时间记录为工作时间。该软件可以将工作时间记录与使用笔记本电脑播放电影和电视节目等活动分开。法官因此判决该女子败诉并向公司返回部分工资。

消息来源:《卫报》
老王点评:真是,都不能愉快的摸鱼了。

谷歌将在 Chrome 开发中使用 Rust

谷歌今天宣布,他们将允许 Rust 代码进入 Chromium 代码库。谷歌正在努力将 Rust 工具链引入他们的 Chromium 构建系统,并将允许在 Chrome/Chromium 中使用 Rust 库。在 Chromium 中使用 Rust 可以避免内存安全错误,这将有助于加快开发速度,提高 Chrome/Chromium 浏览器的整体安全性。

消息来源:Phoronix
老王点评:继安卓之后,谷歌又将 Rust 加入到 Chrome 开发中,这将对改善浏览器安全有很大的意义。