分类 技术 下的文章

了解 watch 命令如何让你知道任务已完成或命令已执行。

 title=

有很多时候,你需要等待一些事情的完成,比如:

  • 一个文件的下载。
  • 创建或解压一个 tar 文件。
  • 一个 Ansible 作业。

其中一些进程有进度指示,但有时进程是通过一层抽象运行的,衡量进度的唯一方法是通过其副作用。其中一些可能是:

  • 一个正在下载的文件不断增长。
  • 一个从 tarball 中提取的目录被文件填满了。
  • Ansible 作业构建了一个容器

你可以用这样的命令查询所有这些:

$ ls -l downloaded-file
$ find . | wc -l
$ podman ps
$ docker ps

但是反复运行这些命令,即使是利用 Bash 历史向上箭头的便利,也是很乏味的。

另一种方法是写一个小的 Bash 脚本来为你自动执行这些命令:

while :
do
 docker ps
 sleep 2
done

但这样的脚本写起来也会很繁琐。你可以写一个小的通用脚本,并将其打包,这样它就可以一直被你使用。幸运的是,其他开源的开发者已经有了这样的经验和做法。

那就是 watch 这个命令。

安装 watch

watch 命令是 procps-ng 包的一部分,所以如果你是在 Linux 上,你已经安装了它。

在 macOS 上,使用 MacPortsHomebrew 安装 watch。在 Windows 上,使用 Chocolatey

使用 watch

watch 命令定期运行一个命令并显示其输出。它有一些文本终端的特性,所以只有最新的输出才会出现在屏幕上。

最简单的用法是:watch <command>

例如,在 docker ps 命令前加上 watch,就可以这样操作:

$ watch docker ps

watch 命令,以及一些创造性的 Unix 命令行技巧,可以生成临时的仪表盘。例如,要计算审计事件:

$ watch 'grep audit: /var/log/kern.log |wc -l'

在最后一个例子中,如果有一个可视化的指示,表明审计事件的数量发生了变化,这可能是有用的。如果变化是预期的,但你想让一些东西看起来“不同”,watch --differences 就很好用。它可以高亮显示与上次运行的任何差异。如果你在多个文件中搜索,这一点尤其有效,所以你可以很容易地看到哪个文件发生了变化。

如果没有预期的变化,你可以使用 watch --differences=permanent 要求它们被“永久”高亮显示,以便知道哪些变化需要调查。这通常是更有用的。

控制频率

最后,有时该命令可能是资源密集型的,不应运行得太频繁。-n 参数控制频率。watch 默认使用 2 秒间隔,但是 watch -n 10 可能适合于资源密集型的情况,比如在子目录的任何文件中搜索一个模式:

$ watch -n 10 'find . -type f | xargs grep suspicious-pattern'

用 watch 观察一个命令

watch 命令对于许多临时性的系统管理任务非常有用,在这些任务中,你需要在没有进度条的情况下等待一些耗时的步骤,然后再进入下一个步骤。尽管这种情况并不理想,但 watch 可以使情况稍微好转。它让你有时间为工作做回顾性笔记!"。下载 备忘录,让有用的语法和选项触手可及。。


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

作者:Moshe Zadka 选题:lujun9972 译者:geekpi 校对:wxy

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

用你喜欢的 sed 版本去除“智能”引号。

 title=

在排版学中,一对引号传统上是朝向彼此的。它们看起来像这样:

“智能引号”

随着计算机在二十世纪中期的普及,这种朝向往往被放弃了。计算机的原始字符集没有太多的空间,所以在 ASCII 规范中,两个双引号和两个单引号被缩减为各一个是合理的。如今,通用的字符集是 Unicode,有足够的空间容纳许多花哨的引号和撇号,但许多人已经习惯了开头和结尾引号都只有一个字符的极简主义。此外,计算机实际上将不同种类的引号和撇号视为不同的字符。换句话说,对计算机来说,右双引号与左双引号或直引号是不同的。

用 sed 替换智能引号

计算机并不是打字机。当你按下键盘上的一个键时,你不是在按一个带有印章的控制杆。你只是按下一个按钮,向你的计算机发送一个信号,计算机将其解释为一个显示特定预定义字符的请求。这个请求取决于你的键盘映射。作为一个 Dvorak 打字员,我目睹了人们在发现我的键盘上的 “asdf” 在屏幕上产生 “aoeu” 时脸上的困惑。你也可能按了一些特殊的组合键来产生字符,如 ™ 或 ß 或 ≠,这甚至没有印在你的键盘上。

每个字母或字符,不管它是否印在你的键盘上,都有一个编码。字符编码可以用不同的方式表达,但对计算机来说,Unicode 序列 u2018 和 u2019 产生 ,而代码 u201c 和 u201d 产生 字符。知道这些“秘密”代码意味着你可以使用 sed 这样的命令以编程方式替换它们。任何版本的 sed 都可以,所以你可以使用 GNU sed 或 BSD sed,甚至是 Busybox sed。

下面是我使用的简单的 shell 脚本:

#!/bin/sh
# GNU All-Permissive License

SDQUO=$(echo -ne '\u2018\u2019')
RDQUO=$(echo -ne '\u201C\u201D')
$SED -i -e "s/[$SDQUO]/\'/g" -e "s/[$RDQUO]/\"/g" "${1}"

将此脚本保存为 fixquotes.sh,然后创建一个包含智能引号的单独测试文件:

‘Single quote’
“Double quote”

运行该脚本,然后使用 cat 命令查看结果:

$ sh ./fixquotes.sh test.txt
$ cat test.txt
'Single quote'
"Double quote"

安装 sed

如果你使用的是 Linux、BSD 或 macOS,那么你已经安装了 GNU 或 BSD 的 sed。这是原始 sed 命令的两个独特的重新实现,对于本文中的脚本来说,它们在功能上是一样的(不过并不是所有的脚本都是这样)。

在 Windows 上,你可以用 Chocolatey 安装 GNU sed


via: https://opensource.com/article/21/9/sed-replace-smart-quotes

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

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

Kali Linux 是 用于学习和练习黑客攻击和渗透测试的 Linux 发行版 的不二之选。

而且,如果你经常捣鼓 Linux 发行版,出于好奇心,你可能已经尝试过它。

警告!

本文介绍的内容仅供学习 Kali Linux 的安装,请勿使用 Kali Linux 进行任何非授权的行为。Kali Linux 应该用于在授权的情况下,对授权的目标进行合理的渗透测试,以了解其脆弱性并加以防范。本文作译者和本站均不对非授权和非法的使用及其造成的后果负责。

然而,无论你用它做什么,它都不能替代正规成熟的桌面 Linux 操作系统。因此,(至少对于初学者来说)建议使用虚拟机程序(如 VMware)来安装 Kali Linux。

通过虚拟机,你可以把 Kali Linux 作为你的 Windows 或 Linux 系统中的一个常规应用程序来使用,就像在你的系统中运行 VLC 或 Skype 一样。

有一些免费的虚拟化工具可供使用。你可以 在 Oracle VirtualBox 上安装 Kali Linux ,也可以使用 VMWare Workstation。

本教程重点介绍 VMWare。

在 Windows 和 Linux 的 VMware 上安装 Kali Linux

非 FOSS 警报!

VMWare 不是开源软件。

对于本教程,我假定你使用的是 Windows,是考虑到大多数 VMware 用户喜欢使用 Windows 10/11。

然而,除了在 Windows 上安装 VMWare 的部分,本 教程对 Linux 也是有效的。你可以 轻松地在 Ubuntu 和其他 Linux 发行版上安装 VMWare

步骤 1:安装 VMWare Workstation Player(在 Windows 上)

如果你的系统上已经安装了 VMware,你可以跳到安装 Kali Linux 的步骤。

前往 VMWare 的 Workstation Player 官方网页,然后点击 “Download For Free” 按钮。

接下来,你可以选择版本(如果你想要特定的版本或遇到最新版本的 bug),然后点击 “Go to Downloads”。

然后你就会看到 Windows 和 Linux 版本的下载按钮。你需要点击 “Windows 64-bit” 的按钮,因为这就是我们在这里需要的。

顺便提一句,它不支持 32 位系统。

最后,当你得到下载的 .exe 文件时,启动它以开始安装过程。你需要点击 “Next” 来开始安装 VMware。

接下来,你需要同意这些政策和条件才能继续。

现在,你可以选择安装的路径。理想情况下,保持默认设置。但是,如果你在虚拟机中需要更好的键盘响应/屏幕上的键盘性能,你可能想启用 “ 增强型键盘驱动程序 Enhanced Keyboard Driver ”。

进入下一步,你可以选择禁用每次启动程序时的更新检查(可能很烦人),并禁用向 VMware 发送数据,这是其用户体验改进计划的一部分。

如果你想使用桌面和开始菜单的快捷方式进行快速访问,你可以勾选这些设置,或像我一样将其取消。

现在,继续以开始安装。

这可能需要一些时间,完成后,你会看到另一个窗口,让你完成这个过程,并让你选择输入一个许可证密钥。如果你想获得商业许可,你需要 VMware Workstation 专业版,否则,该 Player 版本对个人使用是免费的。

注意!

请确保你的系统已经启用了虚拟化功能。最近的 VMWare 的 Windows 版本要求你明确启用虚拟化以使用虚拟机。

步骤 2:在 VMware 上安装 Kali Linux

开始时,你需要下载 Kali Linux 的镜像文件。而且,如果你打算在虚拟机上使用它,Kali Linux 会提供一个单独的 ISO 文件。

前往其 官方下载页面,下载可用的预构建的 VMware 镜像。

你可以直接下载 .7z 文件或利用 Torrent(一般来说速度更快)。在这两种情况下,你也可以用提供的 SHA256 值检查文件的完整性。

下载完成,你需要将文件解压到你选择的任何路径。

打开 VMware Workstation Player,然后点击 “ 打开一个虚拟机 Open a Virtual Machine ”。现在,寻找你提取的文件夹。然后浏览它,直到你找到一个扩展名为 .vmx 的文件。

比如说,Kali-Linux-2021.3-vmware-amd64.vmx

选择 .vmx 文件来打开该虚拟机。它应该直接出现在你的 VMware Player 中。

你可以选择以默认设置启动虚拟机。或者,如果你想调整分配给虚拟机的硬件,可以在启动前随意改变设置。

根据你的计算机硬件,你应该分配更多的内存和至少一半的处理器核心,以获得流畅的性能。

在这种情况下,我有 16GB 的内存和一个四核处理器。因此,为这个虚拟机分配近 7GB 的内存和两个内核是安全的。

虽然你可以分配更多的资源,但它可能会影响你的宿主机操作系统在工作时的性能。所以,建议在这两者之间保持平衡。

现在,保存设置并点击 “ 播放虚拟机 Play virtual machine ” 来启动 Kali Linux on VMware。

当它开始加载时,你可能会看到一些提示,告诉你可以通过调整一些虚拟机设置来提高性能。

你不用必须这样做,但如果你注意到性能问题,你可以禁用 侧通道缓解措施 side-channel mitigations (用于增强安全性)来提高虚拟机的性能。

另外,你可能会被提示下载并 安装 VMware tools for Linux;你需要这样做以获得良好的虚拟机体验。

完成之后,你就会看到 Kali Linux 的登录界面。

考虑到你启动了一个预先建立的 VMware 虚拟机,你需要输入默认的登录名和密码来继续。

  • 用户名:kali
  • 密码: kali

就是这样!你已经完成了在 VMware 上安装 Kali Linux。现在,你所要做的就是开始探索了!

接下来呢?

这里有一些你可以利用的提示:

如果你觉得这个教程有帮助,欢迎分享你的想法。你是否喜欢在不使用 VMware 镜像的情况下安装 Kali Linux?请在下面的评论中告诉我。


via: https://itsfoss.com/install-kali-linux-vmware/

作者:Ankush Das 选题:lujun9972 译者:wxy 校对:wxy

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

这篇文章将教你如何使用 rpm-ostree 数据库及其子命令检查更新、检查更改的软件包和阅读更新日志。

这些命令将在 Fedora Silverblue 上进行演示,并且应该在任何使用 rpm-ostree 的操作系统上工作。

简介

假设你对不可更改的系统感兴趣。在基于容器技术构建用例时使用只读的基本系统听起来非常有吸引力,它会说服你选择使用 rpm-ostree 的发行版。

你现在发现自己在 Fedora Silverblue(或其他类似的发行版)上,你想检查更新。但你遇到了一个问题。虽然你可以通过 GNOME Software 找到 Fedora Silverblue 上的更新包,但你实际上无法阅读它们的更新日志。你也不能 使用 dnf updateinfo 在命令行上读取它们,因为主机系统上没有 DNF。

那么,你应该怎么做呢?嗯,rpm-ostree 有一些子命令可以在这种情况下提供帮助。

检查更新

第一步是检查更新。只需运行:

$ rpm-ostree upgrade --check
...
AvailableUpdate:
        Version: 34.20210905.0 (2021-09-05T20:59:47Z)
         Commit: d8bab818f5abcfb58d2c038614965bf26426d55667e52018fcd295b9bfbc88b4
   GPGSignature: Valid signature by 8C5BA6990BDB26E19F2A1A801161AE6945719A39
  SecAdvisories: 1 moderate
           Diff: 4 upgraded

请注意,虽然它没有在输出中告诉更新的软件包,但它显示了更新的提交为 d8bab818f5abcfb58d2c038614965bf26426d55667e52018fcd295b9bfbc88b4。这在后面会很有用。

接下来你需要做的是找到你正在运行的当前部署的提交。运行 rpm-ostree status 以获得当前部署的 基提交 BaseCommit

$ rpm-ostree status
State: idle
Deployments:
● fedora:fedora/34/x86_64/silverblue
                   Version: 34.20210904.0 (2021-09-04T19:16:37Z)
                BaseCommit: e279286dcd8b5e231cff15c4130a4b1f5a03b6735327b213ee474332b311dd1e
              GPGSignature: Valid signature by 8C5BA6990BDB26E19F2A1A801161AE6945719A39
       RemovedBasePackages: ...
           LayeredPackages: ...
...

对于这个例子,基提交是e279286dcd8b5e231cff15c4130a4b1f5a03b6735327b213ee474332b311dd1e

现在你可以用 rpm-ostree db diff [commit1] [commit2] 找到这两个提交的差异。在这个命令中,[commit1] 将是当前部署的基提交,[commit2] 将是升级检查命令中的提交。

$ rpm-ostree db diff e279286dcd8b5e231cff15c4130a4b1f5a03b6735327b213ee474332b311dd1e d8bab818f5abcfb58d2c038614965bf26426d55667e52018fcd295b9bfbc88b4
ostree diff commit from: e279286dcd8b5e231cff15c4130a4b1f5a03b6735327b213ee474332b311dd1e
ostree diff commit to:   d8bab818f5abcfb58d2c038614965bf26426d55667e52018fcd295b9bfbc88b4
Upgraded:
  soundtouch 2.1.1-6.fc34 -> 2.1.2-1.fc34

diff 输出显示 soundtouch 被更新了,并指出了版本号。通过在前面的命令中加入 -changelogs 来查看更新日志:

$ rpm-ostree db diff e279286dcd8b5e231cff15c4130a4b1f5a03b6735327b213ee474332b311dd1e d8bab818f5abcfb58d2c038614965bf26426d55667e52018fcd295b9bfbc88b4 --changelogs
ostree diff commit from: e279286dcd8b5e231cff15c4130a4b1f5a03b6735327b213ee474332b311dd1e
ostree diff commit to:   d8bab818f5abcfb58d2c038614965bf26426d55667e52018fcd295b9bfbc88b4
Upgraded:
  soundtouch 2.1.1-6.fc34.x86_64 -> 2.1.2-1.fc34.x86_64
    * dom ago 29 2021 Uwe Klotz <[email protected]> - 2.1.2-1
    - Update to new upstream version 2.1.2
      Bump version to 2.1.2 to correct incorrect version info in configure.ac

    * sex jul 23 2021 Fedora Release Engineering <[email protected]> - 2.1.1-7
    - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild

这个输出显示了提交说明以及版本号。

总结

使用 rpm-ostree db,你现在可以拥有相当于 dnf check-updatednf updateinfo 的功能。

如果你想检查你所安装的更新的详细信息,这将非常有用。


via: https://fedoramagazine.org/how-to-check-for-update-info-and-changelogs-with-rpm-ostree-db/

作者:Mateus Rodrigues Costa 选题:lujun9972 译者:geekpi 校对:wxy

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

大量可用于 Linux 的屏幕录像机。但是当涉及到支持 Wayland 时,几乎所有的都不能用。

这是个问题,因为许多新发布的版本都再次默认切换到 Wayland 显示管理器。而如果像屏幕录像机这样基本的东西不能工作,就会给人留下不好的体验。

GNOME 的内置屏幕录像机 可以工作,但它是隐藏的,没有 GUI,也没有办法配置和控制记录内容。此外,还有一个叫 Kooha 的工具,但它一直在屏幕上显示一个计时器。

只是为了录制屏幕而 在 Xorg 和 Wayland 之间切换,这不是很方便。

这种情况下,我很高兴地得知,由于 Pipewire 的帮助,在 OBS Studio v27 中支持了 Wayland。但即使是这样,也不是很简单,因此我将向你展示使用 OBS Studio 在 Wayland 上录制屏幕的步骤。

使用 OBS 在 Wayland 上进行屏幕录制

让我们来看看它是如何完成的。

第一步:安装 OBS Studio

你应该先安装 OBS Studio v27。它已经包含在 Ubuntu 21.10 中,我会在本教程中使用它。

要在 Ubuntu 18.04、20.04、Linux Mint 20 等系统上安装 OBS Studio 27,请使用 官方的 OBS Studio PPA

打开终端,逐一使用以下命令:

sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt update
sudo apt install obs-studio

如果已经安装了 OBS Studio 的旧版本,它将被升级到较新的版本。

对于 Fedora、Arch 和其他发行版,请检查你的包管理器或非官方仓库以安装最新版本的 OBS Studio。

第二步:检查 Wayland 捕获是否工作

请确认你正在使用 Wayland。现在启动 OBS Studio,查看它在第一次运行时显示的所有内容。我不打算展示这些。

主要步骤是添加 Pipewire 作为屏幕捕捉源。点击 “Sources” 列表下的 “+” 符号。

Add screen capture source in OBS Studio

你有没有看到 “Screen Capture (PipeWire)” 的字样?

Do you see PipeWire option in the screen sources?

如果没看到,请退出 OBS Studio。这很正常。至少在 Ubuntu 下,OBS Studio 不会自动切换到使用 Wayland。对此有一个修复方法。

打开一个终端,使用以下命令:

export QT_QPA_PLATFORM=wayland

在同一个终端,运行以下命令,启动 OBS Studio:

obs

它将在终端上显示一些信息。不要理会它们。你的注意力应该放在 OBS Studio GUI 上。再次尝试添加屏幕捕捉。你现在应该看到 PipeWire 选项了。

你这次用 QT_QPA_PLATFORM 变量明确要求 OBS Studio 使用 Wayland。

选择 PipeWire 作为源,然后它要求你选择一个显示屏幕。选择它并点击分享按钮。

现在它应该无限次递归地显示你的屏幕。如果你看到了,你现在就可以开始在 Wayland 中录制屏幕了。

第三步:让改变成为永久性的

这很好。你刚刚验证了你可以在 Wayland 上录制屏幕。但每次设置环境变量并从终端启动 OBS 并不方便。

你可以做的是把这个变量导出到你的 ~/.bash_profile(对你而言)或 /etc/profile(对系统中的所有用户而言)。

export QT_QPA_PLATFORM=wayland

退出并重新登录。现在 OBS 会自动开始使用这个参数,你可以用它来录制 Wayland 的屏幕。

我希望这个快速技巧对你有帮助。如果你还有问题或建议,请在评论区告诉我。


via: https://itsfoss.com/screen-record-obs-wayland/

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

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

树莓派十年前凭借 25 美元的迷你电脑掀起了一场革命。随着时间的推移,树莓派发布了许多变种。有些是对以前的型号进行升级,有些是为特定目的而制作的。

在所有的树莓派模块中,Pi Zero 和 Pi Zero W 是最便宜的型号,旨在用于小规模项目和 IoT 项目。这两种设备几乎是相同的,但是它们之间有一些微妙而重要的区别。

那么,树莓派 Zero 和 Zero W 之间的区别是什么?Zero W 中的 W 代表的是 无线 Wireless ,它表示的是 Zero W 模块拥有无线功能。这是这两个相似模块之间的最大差异。

让我们来详细了解一下。

Pi Zero 与 Pi Zero W 之间的主要不同点

树莓派 Zero 是以在只有 A+ 板一半的大小上提供尽可能多的功能为目标。

而树莓派 Zero W 是为了支持无线在后来推出的,在不需要任何附加的组件和模块的情况下就可以使用蓝牙和 Wi-Fi。

这是两者之间的关键区别,其他的规格保持一致。

所以,如果你需要以下功能:

  • 802.11 b/g/n 无线网口
  • 蓝牙 4.1
  • 低功耗蓝牙(BLE)

树莓派 Zero W 将是你的不二之选。

此外,树莓派 Zero W 还提供了一种带引脚的版本,叫做 “树莓派 Pi Zero WH”

树莓派 Zero 和 Zero W 的规格

Raspberry Pi Zero W

树莓派 Zero 和 Zero W 的规格 几乎是一样的。

它们都具有 1 GHz 的单核 CPU 和 512 MB 的 RAM。至于接口方面,一个 mini HDMI 接口,支持 micro USB OTG、micro USB 供电和一个 CSI 摄像头接口(用于插入一个相机模块)。

这些板子会提供一种叫 HAT 顶部附加硬件 Hardware Attached on Top )兼容的 40 个引脚。但一般情况下,没有这些可以让你轻松插入接口的引脚。

你可以根据自己的功能需要选择使用 各种树莓派兼容的系统,但无论哪种情况,我还是推荐你使用树莓派 OS。

树莓派 Zero 系列值不值得买?

Raspberry Pi Zero

树莓派 Zero 是一种很受人们喜欢的单片机形式,即使你有很多树莓派 Zero 的替代品,树莓派 Zero 仍然是最推荐的选择。

当然,除非你有特殊需求。

除了板子的尺寸之外,定价、功率要求、运算能力也是这款 20 美元以下的板子的主要亮点。

因此,如果你正在寻找预算内满足基本功能的单片机,树莓派 Zero 就是专门为你打造的。

树莓派 Zero 系列价格怎么样?

树莓派 Zero 售价 5 美元 ,Zero W 售价 10 美元左右,当然,根据其供应情况和地区,定价规则会不一样,如果你选择带引脚的版本树莓派 Zero WH ,售价大概是 14 美元 左右。

还有 其他的设备可以代替树莓派 Zero,它们价格也相差不大。


via: https://itsfoss.com/raspberry-pi-zero-vs-zero-w/

作者:Ankush Das 选题:lujun9972 译者:anine09 校对:wxy

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