Sreenath 发布的文章

像 fzf 和 fzy 这样的现代工具将 Linux 终端中的文件搜索提升到了一个新的水平。

在 Linux 命令行中,如何 搜索文件?你可以使用 find 命令。这是标准答案,没有问题。

通常,你键入带有搜索参数的命令,按回车键,然后它会显示搜索结果。

你可以通过模糊搜索来提升终端中的文件搜索体验。

模糊搜索是一种近似搜索算法或技术。在这种搜索中,通过名称搜索指定位置的文件,并实时显示结果给用户。

模糊搜索在网络搜索引擎中很受欢迎,用户开始输入术语后,它会开始显示与该术语相关的结果。

在本文中,我将讨论两个命令行工具,它们可以让你在 Linux 中执行模糊搜索:

  • fzf:模糊查找工具
  • fzy:模糊选择工具

fzf:Linux 中的模糊查找工具

fzf 是一款可用于 Linux 的模糊搜索工具,你可以通过它进行交互式文件搜索。

在 Ubuntu 中安装 fzf,打开终端并运行以下命令:

sudo apt install fzf

虽然 fzf 本身可以正常工作,但最好与其他工具配合使用,以充分发挥其功能。

使用 fzf

打开终端并运行:

fzf

这将打开一个 fzf 提示符,在当前工作目录中搜索文件。

在终端中运行 fzf 命令

为 fzf 应用边框

你可以使用 --border 选项为 fzf 应用边框,有多种边框可用,如 rounded(圆角)、sharp(尖角)等。

fzf --border=rounded

运行带有边框选项设置为 rounded 和 sharp 的 fzf 命令

应用背景和前景颜色

使用颜色属性,你可以为 fzf 设置 ANSI 颜色,可以作为背景、前景或两者都设置。

为 fzf 应用颜色,用户指定了颜色

fzf --color="bg:black,fg:yellow"

你可以串联这些选项,使 fzf 在视觉上更加美观。

现在,让我展示一些 fzf 模糊搜索的实际用法。

使用 fzf 在 Bash 历史中进行搜索

当然,Bash 历史记录中有 CTRL+R 的反向搜索功能。但如果你想使用 fzf 来获得更好的外观,可以运行以下命令:

history | fzf

使用 fzf 模糊搜索在 bash 历史中进行搜索

使用 fzf 结合 tree 命令

tree 命令 会列出文件和目录,并显示它们的层级关系。

使用 fzf 结合 tree 命令可以帮助你找到特定文件的绝对路径。

tree -afR /home/$USER | fzf

运行 Tree 命令并将输出传递给模糊搜索

? 上述命令会调用 tree 并以递归方式列出包括隐藏文件在内的所有文件(-a)。同时,-f 选项告诉 tree 列出完整路径。

在 fzf 中预览文件

有时,如果你可以获得你搜索的文件的小型预览,那会很有帮助。

幸运的是,fzf 提供了一个预览选项。你可以使用 --preview 来访问它。我在这里使用 find 命令使其更加有用。

find /home/$USER -type f | fzf --preview 'less {}'

在这里,当你滚动浏览结果时,它将使用 less 显示文本文件。

? 如果你使用其他命令如 ls 等,请不要使用 -l 等选项,因为这将显示额外的详细信息(文件权限)。这些额外的详细信息会破坏 fzf 预览所需的格式。在使用预览功能时,输入到 fzf 的应该只是文件名。

如果你已安装了 bat,也可以使用它来预览文件。

find /home/$USER -type f | fzf --preview 'bat --color always {}'

使用 bat 作为 FZF 预览功能的文本查看器

对于 Ubuntu 用户,可以使用 batcat 来调用 bat。因此运行:

find /home/$USER -type f | fzf --preview 'batcat --color always {}'
? 为这些命令创建别名,这样你就不需要反复输入它们。

从任何地方使用 fzf 进入任何目录(高级技巧)

这比以前要复杂一些。在这里,你不能直接将 fzfcd 连接在一起,因为它们是不同的进程。

你可以创建一个别名并使用以下命令:

cd $(find /home/$USER -type d | fzf)

或者,你可以按照下面解释的方法进行操作。

为此,你可能需要在 bashrc 中添加一个函数。让我将这个函数称为 finder。现在请添加以下行到你的 bashrc 中。

finder() {
  local dir
  dir=$(find required/location/to/search/and/enter -type d | fzf)
  if [[ -n "$dir" ]]; then
    cd "$dir" || return
  fi
}

现在,你应该 输入路径,其中包含你要搜索并进入的目录。

例如,我已经使用 /home/$USER 替换了该部分,表示我要从任何位置进入我的主目录中的任何目录。

保存你的 bashrc 文件后,要么重启终端,要么运行以下命令:

source ~/.bashrc

之后,你可以在终端上运行 finder 命令,一旦找到要进入的目录,按回车键即可。

使用 fzf 命令结合 cd 命令进入任意目录

将选择内容复制到剪贴板

到目前为止,你已经了解了如何使用 fzf,它提供了搜索结果或预览。

现在,如果你想要复制某个项目的位置,你不必手动执行此操作。也有相应的解决方案。

首先,确保你已经安装了 xclip

sudo apt install xclip

然后像这样将其传递给 xclip

fzf | xclip -selection clipboard

这将复制你按下回车键的那些行到剪贴板上。

其他用途

正如我之前所说,你可以使用任何涉及大量文本,并希望交互式搜索特定内容的命令。

  • cat ~/.bashrc | fzf - 在 Bashrc 文件中搜索
  • lsblk | fzf - 在锁定设备列表中搜索
  • ps -aux | fzf - 在进程列表中搜索

另一个选择:Fzy,模糊选择器

fzf 不同,fzy 是一个模糊选择器,它会根据输入提供一个菜单供你选择。

例如,如果你将 fzyls 命令一起使用,它将给你提供一个类似菜单的界面。

使用 ls 命令的 fzy 命令

默认情况下,它会显示十个条目。

使用 fzy 进入目录

fzf 类似,你也可以使用 fzy 进入当前工作目录中的目录:

cd $(find -type d | fzy)

使用任何编辑器打开文件

或者使用你喜欢的编辑器打开文件:

nano $(find -type f | fzy)

附加内容:自定义文件和图像预览

下面的命令将在 Ubuntu 中打开一个专门的自定义提示符,用于模糊搜索,你可以通过滚动来预览文本文件。

find /home/$USER -type f | fzf --color="bg:black,fg:yellow" --preview 'batcat --color always {}' --preview-window=bottom

为了方便访问,可以在你的 bashrc 文件中为此创建一个别名。

或者在使用 timg 命令行图像查看器时,在 fzf 中进行图像预览并滚动。使用以下命令进行安装:

sudo apt install timg
? 请注意,图像查看器无法正确显示图像,因为这不是 fzf 预览的主要目的。
fzf --preview 'timg -g 200x100 {}' --preview-window=right:90

对于那些喜欢折腾的人,可以尝试对此部分进行优化。

现代化的替代方案

大多数 Linux 命令都是从 UNIX 时代继承下来的。它们虽然老旧,但功能如预期。但这并不意味着它们不能改进。

我的意思是,你不需要重新发明轮子,但你总是可以努力改进轮子。

fzffzy 这样的现代化工具将 Linux 终端中的文件搜索提升到了一个新的水平。以下是一些其他有趣的命令行工具。

我尝试给出了这些模糊搜索工具的一些实际示例。希望你对它们感到足够有启发性。如果你打算使用它们,请在评论中告诉我。

(题图:MJ/d25e71fa-f24e-49be-9579-e0520a8f6e18)


via: https://itsfoss.com/fuzzy-file-search-linux/

作者:Sreenath 选题:lkxed 译者:ChatGPT 校对:wxy

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

你可能已经知道像 Bash 和 Zsh 这样的流行 Shell。让我们来探索一些有趣和独特的 Shell。

Shell 通过解释命令为 Linux 和类 Unix 系统提供了一个接口,充当用户与操作系统的核心工作之间的中介。

毫无疑问,Bash Shell 是最受欢迎的 Shell 之一,但有些用户喜欢其他 Shell,比如在 macOS 上的默认 Shell——ZSH。但是除了这些流行的 Shell 之外,还存在许多 Shell,具有不同的功能和用途。

在本文中,我们将介绍一些被积极维护并提供不同用户体验的不太常见的 Shell。

1、Fish Shell

谈到除了 Bash、Zsh 之外的 Shell,第一个想到的就是 Fish Shell。

Fish 是一个智能的、用户友好的命令行 Shell,主要适用于类 Unix 操作系统。

Fish Shell

Fish Shell 的特点:

  • 根据历史记录提供命令自动建议和补全。
  • 支持 24 位真彩。
  • 支持语法高亮,所有特性都可以开箱即用。

安装 Fish:

Fish 可在几乎所有 Linux 发行版的官方仓库中获得。在 Ubuntu 中,你可以通过以下命令来安装:

sudo apt install fish

Ubuntu 仓库中的版本有点旧。如果你想安装最新版本,可以使用该团队提供的官方 PPA。

sudo apt-add-repository ppa:fish-shell/release-3
sudo apt update
sudo apt install fish
Fish Shell

2、Nushell

Nushell(Nu)是一种新型的 Shell,可以在 Linux、macOS、Windows、BSD 等系统上使用。它的哲学和灵感来自于类似于 PowerShell、函数式编程语言和现代 CLI 工具等项目。

Nushell

Nushell 的特点:

  • 一切皆数据:Nu 管道使用结构化数据,因此你每次都可以使用同样的方式安全地选择、过滤和排序。
  • 强大的插件:可以使用强大的插件系统轻松扩展 Nu。
  • 易读的错误消息:Nu 操作的是类型化的数据,因此它能够检测其他 Shell 无法检测到的错误。当出现问题时,Nu 会准确指出问题所在和原因。
  • 干净的 IDE 支持。

安装 Nushell:

如果你使用的是 Ubuntu,是无法找到一个 Apt 存储库来安装 Nushell 的。但是,根据其在 GitHub 上的说明,你可以通过安装所需的依赖项来构建它。

幸运的是,还有一种方法可以使用 Homebrew 在任何发行版上安装它。你可以参考我们的教程 在 Linux 上安装并使用 Homebrew 软件包管理器,成功在 Linux 上安装后,你需要输入以下命令来安装 Nushell:

brew install nushell

请访问其官方网站以查看更多安装方式。

Nushell

3、Dune

该项目的创建者将 Dune 描述为海滩上的一个 “贝壳”。Dune 是一个快速、实用且美观的 Shell,提供了一些特殊的元编程功能,比如引用。

Dune Shell

Dune Shell 的特点:

  • 在进入交互模式之前,Dune 执行存储在主目录中的“预载”启动文件。
  • Dune 的 REPL 是完全可定制的。
  • 可以通过将变量分配给程序名称来定义别名。
  • 使用宏来编写修改 Shell 环境的函数,就像命令或程序一样。
  • Dune 提供了丰富的标准库,并提供漂亮的界面来查看每个模块中可用的所有函数。

安装 Dune Shell:

Dune shell 可在 Arch Linux 存储库中以 dunesh 的名字获得。

对于其他用户,Dune shell 可以通过 cargo 安装。所以,首先需要 安装最新版本的 Rust。如果已经安装了 Rust,请确保你有最新的版本,然后继续安装 Dune。

cargo install -f dune

安装完成后,可以通过输入以下命令访问 Shell:

dunesh
Dune Shell

4、Xonsh

Xonsh 是一个用 Python 编写的,跨平台 Shell 和命令提示符。它结合了 Python 和 Bash Shell,用户可以直接在 Shell 中运行 Python 命令。甚至可以结合使用 Python 和 Shell 命令。

Xonsh shell

如果你想了解更多,请阅读我们的 Xonsh 文章:

Xonsh Shell:结合 Bash Shell 和 Python 最佳特点的 Shell

Xonsh Shell 的特点:

  • Xonsh 语言具有 Bash 中常用的 Shell 原语。
  • 在 Python 中准备环境变量和参数,然后在 Shell 命令中使用它们。
  • 第三方扩展系统 Xontribs。
  • 可自定义的标签补全、键绑定、颜色样式。
  • 丰富的界面,方便查看历史记录。

安装 Xonsh Shell:

Xonsh 可在许多 Linux 发行版的仓库中获得,如 Ubuntu、Fedora 等。因此,要在 Ubuntu 上安装它,请运行:

sudo apt install xonsh

Xonsh 还提供了一个 AppImage 包,可以从它们的下载页面下载。如果你不熟悉这种文件格式,请参考我们的 AppImage 指南

Xonsh

5、Hilbish

Hilbish 是一个可扩展 Shell,可通过 Lua 编程语言进行定制。该 Shell 面向普通用户和高级用户。

Hilbish shell

Hilbish 的特点:

  • 简单易用的脚本编写。
  • 历史和补全菜单:为用户提供正确的补全和历史搜索菜单。
  • 通过 Lua API 可以进行语法高亮和提示。
  • 它可以在 Unix 系统和 Windows 上运行,但在 Windows 上可能会遇到问题。

安装 Hilbish:

Hilbish 在 Ubuntu 的包仓库中不可用。因此,需要从源代码构建安装。

要安装它,需要安装 Gotask

sudo apt install golang-go
sudo snap install task --classic

安装完依赖项后,运行以下命令来安装 Hilbish shell:

git clone --recursive https://github.com/Rosettea/Hilbish
cd Hilbish
go get -d ./...

如果要使用稳定版,请运行以下命令:

git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
task build
sudo task install
Hilbish

6、Elvish

Elvish 是一种丰富的编程语言和多功能交互式 Shell。它可以在 Linux、Mac 和 Windows 上运行。即使版本 v1.0 尚未发布,它已经适合大多数日常交互使用。

Elvish shell

Elvish 的特点:

  • 强大的管道:Elvish 中的管道可以携带结构化数据,而不仅仅是文本。你可以通过管道传输列表、映射甚至函数。
  • 直观的控制结构。
  • 目录历史:Elvish 记住了你访问过的所有目录。你可以通过按 CTRL+L 访问它。
  • 命令历史。
  • 内置文件管理器:通过按 CTRL + N 访问。

安装 Elvish:

Elvish Shell 可在 Ubuntu 和 Arch Linux 的包管理器中获得。因此,要安装它,请打开终端并键入:

sudo apt install elvish

或者

sudo pacman -S elvish

要了解有关 Elvish 的更多信息,请访问 Elvish 的官方网站。

Elvish

7、Oh

据其开发者称,Oh 是 Unix shell 的重新设计。

它旨在成为现代 Shell 的更强大、更稳健的替代品,同时尊重 Unix shell 在过去半个世纪中建立的惯例。

Oh Shell 的特点:

  • 一流的频道、管道、环境和函数。
  • 适用于标准 Shell 构造的丰富返回值。
  • 支持模块化。
  • 简化的评估和引用规则。
  • 语法尽可能少地偏离已有的惯例。

安装 Oh:

Oh 提供了一个预编译的二进制文件。你需要从它们的 官方 GitHub 页面 下载它。

你需要使用以下命令为文件授予执行权限:

chmod +x oh

运行以下命令以在你的系统上安装它:

sudo mv oh /usr/local/bin/

现在,你可以通过以下命令启动 Oh:

oh

要了解有关 Oh 的详细信息,请查阅其文档。

Oh

8、Solidity

Solidity 是一个带有轻量级会话记录和远程编译器支持的交互式 Shell。当你更改指示/语言时,它会自动获取匹配的远程编译器。

Solidity 的特点:

  • pragma solidity <version> 会尝试动态加载所选的编译器版本。
  • 可以使用 .session 命令保存和恢复会话。
  • 设置在退出时保存(在运行并发 shell 时不安全)。
  • $_ 是上一个已知结果的占位符。
  • 特殊命令是具有点前缀。其他所有都将被视为 Solidity 代码进行评估。

安装 Solidity:

你可以通过 npm 安装 Solidity shell。

确保你安装了最新版本的 nodejsnpm,然后输入以下命令:

npm install -g solidity-shell

安装完成后,运行 solidity-shell 来开始会话。

Solidity Shell

9、Yash

Yash(Yet another shell)是一个遵循 POSIX 标准的命令行 Shell,使用 C99(ISO/IEC 9899:1999)编写。它具有适用于日常交互和脚本使用的功能。

Yash Shell 的特点:

  • 全局别名。
  • 套接字重定向、管道重定向和进程重定向。
  • 提示符命令和未找到命令的处理程序。
  • 带有预定义补全脚本的命令行补全,覆盖了 100 多个命令。
  • 基于命令历史记录的命令行预测。

安装 Yash Shell:

要安装该 Shell,你需要转到它们的 GitHub 发布 页面下载 tar 文件。解压 tar 文件;在其中,你将找到一个包含安装说明的 INSTALL 文件。

通常,你应该在提取的文件夹中执行以下命令:

./configure
make
sudo make install

要了解有关 Yash Shell 的详细信息,请查看其手册页面。

Yash

顺便提及

  • Ion:Ion Shell 是用 Rust 编写的一种现代系统 Shell,主要用于 RedoxOS。它仍然是一个正在开发中的工作,用户应该对语法会变化有所预料。
  • Closh:Closh 是一种类似 Bash 的 Shell,将传统的 UNIX Shell 与 Clojure 的强大功能相结合。它旨在成为 Bash 的现代替代品。它也是在开发的早期阶段。
  • Dash:Dash 是来自 Debian 的符合 POSIX 标准、快速轻量级的 Shell。

? 你对这些列出的 Shell 有何看法?你是否会尝试将默认 Shell 更改为这里的某些选项?你最喜欢的是哪一个?在下面的评论框中分享你的想法。

(题图:MJ/a84a1625-4dd1-4589-aabb-ce3f37090f32)


via: https://itsfoss.com/shells-linux/

作者:Sreenath 选题:lkxed 译者:ChatGPT 校对:wxy

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

即使是专家级的 Linux 用户也不记得所有的 Linux 命令和它们的选项。这对我们人类来说是不可能的。

但是机器呢?尤其是人工智能驱动的机器?

想象一下,如果你可以“命令”你的终端“显示过去 12 小时内修改过的所有小于 100 MB 的文件”。当然,你可以使用 Linux 命令“命令”它,但是用普通的英语进行交互呢?

由于人工智能的进步,这实际上是可能的。下面是自动生成 Linux 命令以显示当前目录中所有小于 10 KB 的文件的示例。

Shell Genie AI assistent in Linux terminal

我使用的工具叫做 Shell Genie。它是一个命令行工具,可让你以普通的英语与终端进行交互。

它可以生成命令、运行命令(如果需要),还可以向你解释生成的命令。

Shell Genie explain commands

Shell-Genie 的特点

  • 将普通英语转换为 Linux 命令。
  • 提供了一个需要 openAI 的 API 密钥的 openAI gpt3 后端,和一个可以免费使用的 free-genie 后端。
  • 提示一个选项以运行你要求的命令。
  • 解释生成的命令。

安装 Shell Genie

Shell-genie 在任何发行版的默认仓库中都不可用。你可以使用 pipx 安装它。

要安装它,你需要安装 Python 3.10+ 和 Pip。你可以参考我们关于 如何在 Ubuntu 和其他 Linux 发行版中安装 pip 的文章。

安装 pip 后,使用以下命令安装 pipx

python3 -m pip install --user pipx
python3 -m pipx ensurepath

An SVG animation showing pipx Installation steps

现在,重启终端并运行以下命令安装 shell-genie:

pipx install shell-genie

这可能显示错误或需要依赖项。

A dependency installation to install the shell-geie properly

运行提示的命令来安装所需的依赖。在我的例子中:

sudo apt install python3.10-venv

之后,再次运行 shell-genie 安装命令,就可以安装了。

The steps showing the installation of shell-genie

安装完成后,运行以下命令:

shell-genie init

这将要求你选择后端,openAI 或 free-genie。如果你有 openAI API,你可以选择它或继续使用 free-genie。

? free-genie 后端可能并不总是工作,因为它是由开发者托管的,他警告说可能会出现中断。

然后它将请求允许报告反馈。用 y/n 来决定。

Run shell-genie init commad to set up the shell-genie properly

现在就可以使用了。

使用 Shell-genie

? 如果你要进行实验,请尽量不要使用带有 sudo 或删除文件的命令。不要将你的机器交到机器手中。

如上所述,shell-genie 提供了两种工作模式:

  • 从普通的英语获取命令
  • 获取命令解释

从普通英语中获取 Linux 命令

你可以使用 shell-genie 的 ask 选项从普通的英语中获取命令。例如:

shell-genie ask "Display only the folders of this directory"

这将显示正确的命令,并提示我们是否运行该命令。

The working of shell-genie, that will print the required command from the provided plain text description. Also propt the user to execute the same or not

获取带解释的 Linux 命令

你可以使用 shell genie 来解释你要运行的一些命令。

shell-genie ask "display all files smaller than 10kb in here" --explain

上面的命令首先会显示需要的命令并进行解释,然后提示用户是否执行。

The explain mode in shell-genie, where it will explain the command that was asked in the form of plain english and then prompts the user to execute it or not

总结

有像 Explain Shell 这样的工具(试图)解释 Linux 命令。但是这个 Shell genie 通过从普通的英语生成命令将它提升到一个新的水平。

当然,不能一味依赖人工智能。如果你对 Linux 命令有一定的了解,可以使用 Shell Genie 生成适合你的命令。你不必为手册页或各种网站而苦恼。

它可以帮助你在终端中更快地做事,也可以减少你的知识储备。为什么? 因为你越依赖它,你自己学的就越少。

这就是我所想的。 无论你同意或不同意我的观点,都可以在评论中发表你的看法。

(题图:MJ/chatgpt commands linux cli illustration in high resolution, very detailed, 8k)


via: https://itsfoss.com/linux-terminal-ai/

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

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

什么是代理?

代理是充当客户端和另一台服务器之间的中介的服务器或软件应用。它充当客户端和互联网之间的网关,允许用户访问在线资源,同时隐藏他们的身份、位置和其他个人信息。

代理通常用于增强安全性和隐私,并为你的网络添加过滤器/防火墙。

有几种类型的代理,如 HTTP 代理、SOCKS 代理、透明代理等。

除非你在透明代理后面,否则检查起来毫不费力。在这里,我将讨论检测透明代理和常用代理的方法。

如何检查你是否在透明代理后面

虽然每种类型的代理都有其特性和功能,但如果它是透明代理,你将无法在客户端的 PC 上检测到它。这是因为透明代理在后台静默运行,拦截所有流量而不修改它。

有时,可能是你的互联网服务提供商和内容交付网络使用它们来缓存资源的副本以节省带宽或只是为了监视/过滤网络。

有几种方法可以检查你是否在透明代理后面:

  • 通过某些在线 IP 检测/检查网站获得的 IP 地址可能与你的计算机或设备的 IP 地址不匹配。因为代理服务器正在拦截你的流量并将其与 IP 地址一起发送出去。
  • 检查你的网络设置以查看是否配置了代理服务器。
  • 借助一些在线代理检测工具。
  • 连接到你知道不存在的服务器。 如果网页上显示的错误看起来与平时不同,你可能使用了代理。

无论你喜欢与否,你始终可以使用 VPN 服务 绕过透明代理。

如何检查你是否在 Ubuntu 上使用代理

Ubuntu 或任何其他 Linux 发行版提供了多种检查方法。此处使用运行 GNOME 的 Ubuntu 22.10。

使用 GNOME 设置

这是直接的 GUI 方式。打开 GNOME 设置 Settings 并转到 “ 网络 Networks ” 选项卡,然后按旁边的齿轮图标。

Select the gear icon adjacent to the Network proxy section

它应该默认 禁用 Disabled

如果你在代理后面,你可以在这里看到不同的状态。在代理设置中,你可以看到,我在这里使用了代理(手动配置)。

Proxy details in GNOME Settings

可以使用 GNOME 桌面中的 gsettings 命令更改相同的代理状态。

gsettings set org.gnome.system.proxy mode 'none'

你可以将 none 替换为 automanual。请记住,此设置是临时的,仅适用于当前用户。

使用命令行

你可以通过命令行以多种方式获取代理的状态。

通过列出关联的环境变量获取代理的状态

打开终端并运行以下任一命令:

env | grep -i proxy
cat /etc/environment | grep -i proxy
set | grep -i proxy

Using set command to check Proxy variables

空输出意味着没有配置代理。否则,它将打印相关的环境变量。

? 请注意,如果你将代理设置为环境变量,这将起作用。

或者,你可以回显每个代理变量以检查是否设置了特定的代理变量。

以下是你可以在终端中输入的内容:

echo $http_proxy
使用 nmcli 命令检查

打开终端并输入:

nmcli connection show

List all the connections using nmcli command

这将列出你的连接和关联的 UUID 编号。记下要检查的连接的 UUID 编号。然后使用命令:

nmcli connection show <UUID or name> | grep -i "proxy"

这将列出变量,你可以在其中记下代理服务器和端口。

Proxy details using nmcli command

总结

我希望本指南可以帮助你了解你是否在使用代理。

我必须提一下,并非所有代理配置都是恶意的。

但是,了解你的系统是否配置了代理很重要。


via: https://itsfoss.com/check-proxy-server/

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

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

你可能已经了解过轻量级标记语言 Markdown。如果你是第一次接触这个概念,请参考我们的 Markdown 指南。概括来讲,它是一种用于创建纯文本文档的简单又高效的语言。

然而,Markdown 在制作详细的报告或技术文件方面可能还不够完善。

受益于 knitr 和 Pandoc 等软件包,交互式文件格式 R Markdown 早在 2014 年就出现了。它将纯文本与内嵌的 R 代码相结合,可以制作动态文件。

你可以使用 各种 IDE 和扩展来创建 R Markdown 文档,官方 IDE 为 RStudio。因此,在这篇文章中,我们将重点介绍使用 RStudio 学习 R Markdown 语法

?(假如你没有了解过,)R 编程语言 是一种用于统计计算、图形表示和报告的语言。

配置 RStudio

通过合适的配置,你可以很轻松地用 RStudio 来编写 R Markdown。只需要安装一个软件包,就已经完成了大部分的工作!

安装 RStudio 后,在 “ 工具 Tools ” 菜单中选择 “ 安装软件包 Install Packages ” 选项。

在 RStudio 的工具菜单下选择安装软件包选项

在弹出的对话框中,搜索 “rmarkdown” 并安装。

通过搜索并在新的软件包安装对话框中按下安装按钮来安装 Rmarkdown 软件包

? 如果你想使用类似 Python 的代码块,你需要安装额外的包。当你想在你的文档中包含这些包时,RStudio 会提示你安装所需的包。

安装完成后,你可以通过选择 “ 文件 File > 新建文件 New File > R Markdown” 来新建一个 R Markdown 文档。

从文件菜单中创建一个新的 RMarkdown 文档

之后会提示你添加一些关于文件的信息(文件的元数据),把这些填上就可以了。

用 R Markdown 语法写出标题和其他细节

或者你可以创建一个空的文件从零开始。

RMarkdown 语法

由于它是 “加强版的 Markdown”,因此大多数语法与 Markdown 是一样的。

它还有一些 Markdown 支持不完善的东西,比如表格、数学方程式、代码块等等

下面是我们要介绍的内容的概括:

RMarkdown 块名语法
标题# 一级标题`## 二级标题### 三级标题一级标题=======二级标题`-------
着重*斜体*`_斜体_**加粗**__加粗__`
列表无序列表:* 列表项`* 列表项+ 子项+ 子项有序列表:1. 列表项2. 列表项+ 子项`+ 子项
代码块普通代码块:这里写代码R 代码块:{r}``R 代码`你也可以用其他的语言行内 代码`
链接普通链接:粘贴 URL带标题的链接:[显示的文本](URL_地址)跳转到锚点: [显示的文本](#锚点)
表格`列名列名列名``------------------``项内容项内容项内容``项内容项内容项内容`
方程式行内方程式 $Equations$展示方程式: $$Equations$$
图片无标题: ![](图片链接)有标题:![可选标题](图片地址)
引用块> 输入你引用的内容
其他上角标:文本内容^上角标^章或页水平分割线=========----------行尾输入两个以上空格,即可添加人工行分割

YAML 头

在一个 R Markdown 文档的顶部,有一个 YAML 头,被两行 --- 包围。这个块定义了文档的最终样式,通常包含一个标题、作者、日期和你想输出的文件类型。

支持的文件格式有三种:HTML、PDF 和 Word

---
title: "Sample"
author: "It's FOSS"
date: "2023-02-08"
output: pdf_document
---

这可以在 RStudio 中设置新文件时添加,如上节所示。

标题

在 R Markdown 中,有两种方法指定标题。我们可以使用 # 字符来表示不同级别的标题,比如:

# Heading Level 1
## Heading Level 2
### Heading Level 3
#### Heading Level 4
##### Heading Level 5
###### Heading Level 6

也可以用 =- 分别表示一级和二级标题。

一级标题
===============

二级标题
---------------

rmarkdown 文件中不同等级的标题

列表

有两种列表,一种是无序列表,用点句符来表示:

* Item 1
* Item 2
        + Sub 1
        + Sub 2
* Item 3

另一种是有序列表,用数字来排序:

1. Item 1
2. Item 2
        + Sub 1
        + Sub 2
3. Item 3

有序和无序列表示例

段落中的文本格式

格式化文本有几种方式。

你可以使用斜体或加粗来着重表示文本:

  • 斜体:在文本前后各输入一个星号或下划线
  • 加粗:在文本前后各输入两个星号或下划线
*这里是斜体内容*
_这里是斜体内容_

**这里是加粗内容**
__这里是加粗内容__
? 你可以阅读我们的文章 Markdown 中怎么让内容变成加粗和斜体 来了解更多内容。

如果你想使用上角标,在想变成上角标的内容前后加上 ^ 符号。

普通文本内容^上角标^

如果你想对文本内容加删除线,在文本前后加 ~~ 符号。

~~被删除的内容~~

添加代码块

内嵌代码是 R Markdown 最主要的设计目的。我们有几种添加代码的方式。

添加普通代码块

如果你想添加一个代码块来与其他的文本进行区分,可以使用下面的语法:

这里输入你的代码

你也可以尝试 对添加的代码进行高亮显示

如果你想添加代码并将其输出嵌入到文档中,你可以在后面加上语言,并用大括号包裹:

这里输入你的代码

你可以用 ` 符号来添加行内代码。

这里是 `行内代码`

它看起来是这样的:

链接

如果想添加普通文本链接,把它粘贴到行内就可以了。

https://itsfoss.com

添加超链接,使用下面的语法:

[文本内容](URL 地址)

当你想链接到本页内的某个锚点时,使用下面的语法:

[文本内容](#锚点名称)

表格

表格的语法与 Markdown 相似:

| 列表 | 列表 | 列表 |
| --- | --- | --- |
|表格项|表格项|表格项|
|表格项|表格项|表格项|

? 还想了解更多?请阅读我们的 用 Markdown 创建表格 指南。

图片

添加图片使用下面的语法:

![](http://example.com/logo.png)

![可选显示文本](figures/img.png)

块引用

RMarkdown 可以添加块引用。在被引用的行或段落前添加 >(大于号)。

这里是普通文本内容。

> 这里是块引用

? 如果你想了解更多块引用的内容,请阅读我们的 Markdown 引用 指南。

方程式

你可以用 RMarkdown 来添加方程式和展示复杂的 LaTex 方程式。

例如:

行内方程式:$Equation$

展示方程式:$$Equation$$

在 R Markdown 文档中添加方程式

章或页水平分割线

使用三个以上星号或减号来添加章或页水平分割线。

************

------------

你可以在行尾添加两个以上的空格来添加人工行分割。

R Markdown 非常有用(备忘录)

R Markdown 备忘录.pdf 下载文档

? 你还知道其他关于 R Markdown 的内容吗?请在下面的评论区告诉我们。


via: https://itsfoss.com/r-markdown/

作者:Sreenath 选题:lkxed 译者:lxbwolf 校对:wxy

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

时至今日,世界上已经有成百上千种不同的 Linux 发行版。

它们中的大多数都可以被划归为三个大类 : Debian、Red Hat(Fedora)以及 Arch Linux。

使用基于 Debian/Ubuntu、Red Hat/SUSE 或者 Arch 的 Linux 发行版自然有它们的优势。它们很受大众欢迎,因此它们的包管理器能够提供大量的软件包。

然而,有一些用户更倾向于使用从头开始构建、独立于 DEB/RPM 这类包管理系统之外的发行版。

在这篇文章当中,我们将列出一些优秀的独立 Linux 发行版。

注意 : 显然,下面的列表显然不会包括一些广受欢迎,通常作为创建新发行版的基础的发行版,如 Debian、Ubuntu 和 Fedora 等。此外,列表顺序不分先后,没有特定的排名。

1、NixOS

Image Credits: Distrowatch

NixOS 最初发布于 2003 年,NixOS 建立在 Nix 包管理器之上。它每年发布两个版本,通常是在 5 月和 11 月。

NixOS 可能不是一个直接面向新用户或普通用户的发行版。然而,其独特的 包管理 方法吸引了各种用户。

此外,它仍然支持 32 位系统。

其他特性:

  • 构建隔离的包
  • 可靠的升级,并且具有回滚功能
  • 可重现的系统配置
NixOS

2、Gentoo Linux

Image Credits: Distrowatch

Geetoo Linux 是一个主要针对操作系统专家的独立 Linux 发行版。它是为那些希望自由定制、微调和优化操作系统以满足其要求的用户而构建。

Gentoo 使用 Portage 包管理器 来创建和安装软件包,通常还允许你针对你的硬件来优化它们。Chrome 的开源版本 Chromium OS 便是使用 Gentoo 作为其核心的。

不要忘记,Gentoo 是 仍然支持 32 位架构的发行版 之一。

其他特性:

  • 增量更新
  • 基于源码的软件管理方法
  • 支持 GURU(Gentoo 用户仓库)的 层叠 Overlay 仓库的概念,允许用户添加 Gentoo 尚未提供的软件包
Gentoo Linux

3、Void Linux

Image Credits: Distrowatch

Void Linux 是一个 滚动发布的发行版,使用 X 二进制软件包系统(XBPS)来安装和删除软件。它由前 NetBSD 开发者 Juan Romero Pardines 创建。

它使用 runit 而不是 systemd 作为其初始化系统。此外,它还让你可以选择使用多个 桌面环境

其他特性:

  • 最小化的系统要求
  • 官方库也提供非自由软件包
  • 支持树莓派
  • 集成 OpenBSD 的 LibreSSL
  • 支持 musl C 库
  • 支持 32 位系统
Void Linux

4、Solus Linux

solus budgie 2022

Solus 的前身是 EvolveOS,它从头开始构建并提供了一些令人兴奋的特性。Solus 的旗舰版本使用自己打造的 Budgie 作为桌面环境。

与本篇文章介绍的其他系统相比,Solus 对于新手较为友好。它设法成为 最好的 Linux 发行版 之一。

它使用 eopkg 作为其包管理系统,支持版滚动发布模型。按照开发人员的说法,开发 Solus 的目标是用于个人电脑。

其他特性:

  • 支持 Budgie、Gnome、MATE 和 KDE Plasma
  • 各种开箱即用的软件,从而减少设置工作
Solus Linux

5、Mageia

Image Credits: Distrowatch

Mageia 始于 2010 年,它是 Mandriva Linux 的一个分支。它的目标是成为稳定且安全的桌面和服务器操作系统。

Mageia 是一个社区驱动的项目,由非营利组织和贡献者支持。每年会发布一个大版本。

其他特性:

  • 支持 32 位系统
  • 支持 KDE Plasma、Gnome 和 XFCE
  • 最低的系统要求
Mageia

6、Clear Linux

Image Credits: Distrowatch

Clear Linux 是一个由英特尔发布的发行版,主要设计考虑是性能和云服务的使用。

有趣的是,Clear Linux 升级时是作为一个整体而非去升级单个的软件包。所以,即使你不小心弄乱了系统设置,它也可以正确的启动,执行恢复出厂设置,并让用户重新设置。

它不太适合个人用户使用。但可以作为一个独特的选择而尝试一下。

其他特性:

  • 针对英特尔平台的高度调优
  • 用户和系统文件之间严格分离
  • 持续的漏洞扫描
Clear Linux OS

7、PCLinuxOS

Image Credits: Distrowatch

PCLinuxOS 是一个 x86\_64 的 Linux 发行版,使用 APT/RPM 包管理。你可以使用 KDE Plasma、Mate 以及 XFCE 桌面,它同时还提供了更多特性的社区版本的桌面。

得益于 Synaptic 包管理器,本地安装的 PCLinuxOS 采用了 APT 包管理系统。但你也可以从它的仓库中找到 RPM 包。

其他特性:

  • mylivecd 脚本允许用户去生成一个当前已安装的硬件驱动的“快照”(所有的配置、应用、文档等)并且将它压缩为 ISO CD/DVD/USB 镜像
  • 额外支持超过 85 种语言
PCLinuxOS

8、4MLinux

4m linux 2022

4MLinux 是一个通用的 Linux 发行版,重点聚焦于下面四个 “M”

  • 维护 Maintenance (系统救援 Live CD)
  • 多媒体 Multimedia (支持大量的图形、音频和视频格式)
  • 微服务器 Miniserver (支持 DNS、FTP、HTTP、MySQL、NFS、Proxy、SMTP、SSH 和 Telnet)
  • 神秘 Mystery (包含了经典 Linux 游戏的集合)

它具有最低的系统要求,可作为桌面和服务器版本使用.

其他特性:

  • 支持大量的图形、音频和视频格式
  • 是小型并且通用的 Linux 发行版
4MLinux

9、Tiny Core Linux

Image Credits: Distrowatch

Tiny Core Linux 专注于使用 BusyBox 和 FLTK 提供一个基础的系统。它不是一个完备的桌面,所以,并不能保证它可以运行于任何系统。

它只是一个启动到非常精简的 X 桌面所需的核心,通常带有有线互联网访问权限。

用户可以很好的控制一切,但对于新 Linux 用户来说,它并不是一个轻松的开箱即用的系统。

其他特性:

  • 旨在从启动时创建的内存副本中运行
  • 默认情况下,其操作就像像云端 / 互联网客户端一样
  • 用户可以使用 appbrowser 来游览库以及下载应用
Tiny Core Linux

10、Linux From Scratch(LFS)

Image Credit: Reddit

Linux From Scratch(LFS)并不是一个系统,而是通过手动构建所有组件来安装 Linux 的一种方法。一旦完成,它提供了一个紧凑、灵活和安全的系统,并且可以很好的理解一个基于 Linux 的操作系统内部是如何工作的。

如果你希望去深入理解 Linux 是如何工作的并且探寻其具体细节,那么 Linux From Scratch(LFS) 是你一定要去尝试,不能错过的一个项目。

其他特性

  • 完全从头开始,定制化的构建 Linux 系统
  • 极度的灵活性
  • 由于从源码开始编译,提供了额外的安全性
Linux From Scratch

11、Slackware

Image Credits: Distrowatch

Slackware 是现今还在维护的最古老的发行版。最初创建于 1993 年,以 Softlanding Linux 系统为基础,随后,许多的 Linux 发行版都是基于 Slackware。

Slackware 目标是称为最类似于 UNIX 的 Linux 发行版,同时保持简单和稳定。

其他特性:

  • 支持 32 位和 64 位系统
  • 大量的在线文档
  • 从奔腾处理器到最新的机器,它都可以运行
Slackware

12、Alpine Linux

alpine linux xfce 2022

Alpine Linux 是一个社区开发的操作系统,专为路由器、防火墙、VPN、VoIP 盒子和服务器而设计。它是 LEAF 项目的一个分支。

Alpine Linux 使用 apk-tools 包管理器,最初由 shell 脚本编写,而后使用 c 语言重构。它是最小的 Linux 发行版之一,仍然支持 32 位系统,并且是一个可以完全从电脑内存运行的操作系统。

其他特性:

  • 提供大小仅为 5MB 的最小容器镜像
  • 对于主库,提供 2 年的支持;对于社区库,在下一个稳定版本发布前提供支持
  • 使用 musl libc 制作,Busybox 使用资源效率高的容器
Alpine Linux

13、KaOS

Image Credits: Distrowatch

KaOS 是一个受到 Arch 启发,从头开始构建的 Linux 发行版。它使用 pacman 包管理器。它是按照"一个桌面环境(KDE Plasma),一个工具包(Qt),一个架构(X86\_64)"的理念构建的。

它的软件库比较有限,但依然为普通用户提供了许多工具。

其他特性:

  • 最新的 Plasma 桌面
  • 紧密集成的滚动和透明的现代桌面发行版
KaOS

总结

如果你需要一些独特的体验,那么这些独立 Linux 发行版应该能很好的满足你。

然而,如果你想要用其来替换如 Ubuntu 这样主流的 Linux 发行版作为你的桌面系统……你也许需要三思而后行,上面大多数的发行版(并不代表所有)都不是一个日常使用的桌面系统的理想的选项。

但是话又说回来,如果你对 Linux 发行版充满了经验,那么毫无疑问,你会享受这项冒险的任务的。

如果你想尝试这些独立发行版的其中一种,哪一个会是你的优先选择呢 ? 请在评论中与我们分享。


via: https://itsfoss.com/independent-linux-distros/

作者:sreenath 选题:lkxed 译者:MuggleWei 校对:wxy

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