蚊章汇 - 命令
type: channel
link: https://linuxcn.bwsl.wang/tag/%E5%91%BD%E4%BB%A4/
items: 终端基础：在 Linux 中重命名文件和目录
items: Linux 中的 ls 命令使用教程
items: 使用 ChatGPT AI 从英文文本生成 Linux 命令
items: 每个 Linux 用户都应该知道的 31 条命令
items: 12 个对新手最重要的 Linux 命令
items: 解决 Linux 中的 “Bash
items: 10 大可以摧毁你的 Linux 的命令
items: 一些经典 Linux 命令的现代替代品
items: 7 个好玩的 Linux 命令
items: 用户必会的 20 个 Linux 基础命令

终端基础：在 Linux 中重命名文件和目录
type: item
date: 2023-11-25T05:55:00+08:00
description: 在这篇基本命令行教程中，你将学习在 Linux 终端重命名文件和目录的各种方法。如何在 Linux 终端中重命名文件和目录？你可以使用 mv 命令。是的，与用于将文件和文件夹从一个位置“移动”到另一个位置的 mv 命令相同。你可以在“移动文件和目录”时简单地指定文件和目录的新名称。要重命名文件，请使用：mv old_file new_file 同样，要重命名目录，请使用：mv old_dir new_dir 听起来很容易，对吧？ 但我将在这里详细讨论文件重命名：向你展示重命名的实际示例显示通过结合 find 和 exec 命令批量重命名多个文件的示例讨论用于批量重命名文件的专用程序我们来一一看看。使用 mv 命令重命名文件和目录使用 mv 命令重命名同一目录中的文件：mv file1.txt file2.txt 同样，你可以重命名同一位置的目录：mv dir1 dir2 这是我重命名文件和目录的示例：如你所见，与 cp 命令 不同，你不必使用递归选项来通过 mv 命令 处理目录。? 如果你尝试使用相同的名称重命名该文件，你会看到一个错误（显然）。你还可以在将文件移动到另一个位置时重命名它：mv old-file-name another_dir/new-file-name 在下面的示例中，我将名为 firefox-quiz.txt 的文件移动到示例目录。在这样做的同时，我将其重命名为 quiz.txt。我将其视为剪切粘贴操作。? 虽然你可以将多个文件移动到另一个位置（mv file1 file2 file2 dir），但你不能使用 mv 重命名多个文件。为此，你必须采用我在以下部分中讨论的其他策略。通过组合 mv、find 和 exec 命令重命名与某个模式匹配的多个文件? 批量重命名此类文件时要格外小心。一步错误的举动就会导致无法挽回的不良结果。find 命令用于根据文件名、类型、修改时间和其他参数在给定目录中查找文件。exec 命令与 find 结合使用，对 find 命令的结果执行命令。使用 find、exec 和 mv 命令没有固定标准的结构。你可以根据需要组合它们。假设你想通过在名称中添加 _old 来重命名当前目录中以 .txt 结尾的所有文件。所以 file_1.txt 变成 file_1.txt_old 等等。find . -type f -name "*.txt" -exec mv {} {}_old ; 这只是一个示例，你的重命名要求可能会有所不同。另外，以上仅适用于不带空格的文件名。专业提示：在处理这样的批量操作时，你可以巧妙地使用 echo 命令来查看将执行什么操作，而不是实际执行它。如果看起来不错，那就采取实际行动吧。例如，首先查看哪些文件将被重命名：find . -type f -name "*.txt" -exec echo mv {} {}_old \; 如你所见，实际上没有重命名任何文件。但是，如果你在没有使用回显（echo）命令的情况下运行上述命令，你将看到将执行什么命令。如果你觉得没问题，请删除 echo 命令并继续进行实际的重命名。find . -type f -name "*.txt" -exec mv {} {}_old \; 我在 《Efficient Linux 命令行》一书中学到了这个技巧。一本充满了这样的小宝石的优秀书。难怪它已成为 我最喜欢的 Linux 书籍之一。使用 rename 命令轻松重命名多个文件有一个名为 rename 的便捷命令行程序，可用于根据给定的 Perl 正则表达式模式批量重命名文件。该实用程序不是 GNU 工具链的一部分，也不是预安装的。因此，你必须首先使用发行版的包管理器来安装它。对于 Debian/Ubuntu，命令为：sudo apt install rename 你可以通过以下方式使用它：rename [options] perl_regex [files] 选项有：-v : 详细模式-n ：无操作，显示将被重命名的文件，但不重命名它们-o : 不覆盖-f : 强制覆盖现有文件-s : 不重命名软链接，只重命名其目标现在，让我们采用你在上一节中看到的相同示例。将 *.txt 重命名为 .txt_old。rename 's/\.txt$/.txt_old/' ** 我不打算在这里解释正则表达式。** 表示查看所有子目录中的所有文件。正如你所看到的，它按预期工作。总结我希望你喜欢这个技巧，它可以帮助你学习在 Linux 命令行中执行基本任务。当然是针对那些想学习和使用命令行的人。桌面用户始终拥有用于此类任务的 GUI 工具。如果你对 Linux 命令完全陌生，本系列将对你有很大帮助。终端基础：Linux 终端入门如果你有疑问或建议，请告诉我。vi…

Linux 中的 ls 命令使用教程
type: item
date: 2023-10-09T04:02:41+08:00
description: ls 属于 Linux 中那些简单又常用的命令之一。在本教程里，你将学到如何高效使用它。对我个人而言，ls 无疑是 最常被使用的 Linux 命令，因为我们总是借助它 列出目录内的内容 来检验上一步操作的结果。ls 命令是 “ 列表 List ” 的缩写，其功能就是列出你指定目录下的所有内容。我将在本教程中，通过一系列的实例，带你一步步掌握 ls 命令的使用。另外也会给出一些练习题，以检验你的学习成果。如何运用 ls 命令要使用 ls 命令，你只需遵循以下简单的命令格式：ls [OPTIONS] Targeted_Directory 这里，[OPTIONS]：用来改变 ls 命令的默认行为。Targeted_Directory：在这里输入目录名或目录的绝对路径。你可能会想，如果没有任何选项地使用 ls 命令会发生什么。为了回答这个问题，我在当前工作目录中使用了 ls 命令：如你所见，它列出了当前工作目录中所有可用的目录和文件。但你可以做的远不止于在当前工作目录中获取名称和文件。接下来让我给你展示一下。1、列出带有所有权的文件和目录ls 命令的重要用途之一就是查出具体的文件或目录的权限以及所有权信息。这就需要你在使用 ls 命令时，带上 -l 选项（这也被称为长列表格式）：ls -l 执行该命令后，你会看到类似的输出：$ ls -lh -rwxrw-r-- 1 sagar sagar 666M Dec 10 18:16 Fedora.iso 注意到我是同时使用了 –h 选项吗？我们稍后会详细说明这个。如果目前为止的输出结果看起来太复杂，那就让我来帮你简化一下：如你所见，每个文本块都有特定的含义，它们分别对应文件拥有者、组和其他用户的各项权限。对于想对文件权限有更深入理解的朋友，我推荐你阅读 我们关于 Linux 文件权限的详尽指南。2、获取以人类可读的方式显示的信息默认状态下，文件大小以字节为单位显示，显然不是最佳的查阅方式。那如果想以更易读的方式来得知相同的信息，我们怎么做呢？其实很简单。你只需使用 -h 选项与 ls 命令配合：ls -l -h 接下来，我们比较下默认显示状态和可读性更强的显示方式的区别：明显更好了，对吧？? 尽管 ls 命令很好地展示了文件大小，但它并不能告诉你文件夹的大小，普遍情况都会显示为 4K（LCTT 译注：这其实是“目录”这个文件所占用的大小，而不是该目录下文件的总计大小。）。如果需要了解文件夹的大小，那么你可以尝试使用 du 命令。3、列出隐藏文件和其他所有文件管理器一样，ls 命令在默认情况下并不会显示隐藏文件（这正是隐藏文件的意义所在，对吧？）。那么，如果你期望在常规文件之外，一并 列出隐藏文件 呢？只需在使用 ls 命令时带上 -a 选项就行：ls -a 你会注意到，以 . 开头的文件名就是所谓的隐藏文件。? 你还可以使用 ls -A，它的功能与 ls -a 类似，但它不包括 . 和 .. 这两个目录。4、递归列出文件事实上，有 多种方法可以递归列出文件，使用 ls 命令就是其中之一。如果你还不清楚，递归列出文件就是指展示所有子目录中的文件，直到每个子目录的最深层次。你可以通过使用 -R 参数来递归列出文件：ls -R 这种方式实际上为你展示了当前目录的结构，我个人非常喜欢这种方式，但你需要先进行安装。? 其实你并不需要进入某个目录才能查看其内容，你可以直接通过提供它的绝对路径或相对路径来列出目录内容，比如：ls /var/log。5、在使用 ls 时对文件和目录做区分通常，不同的颜色就足以区分文件和目录。但是如果你基于某种原因需要给文件和目录添加符号标识，这就有一个办法。在 ls 命令中，使用 -F 选项，它会在每个目录名末尾添加一个正斜杠 /：ls -F 6、列出指定扩展名的文件有些情况下，你可能只希望列出具有特定扩展名的文件，实际上，这是最简单的操作之一。做到这一点，你无需使用任何选项。只需在星号 * 后附上文件扩展名，如 *.png，*.txt 等：ls *.extension 例如，如果我只想列出 ISO 文件，那么我将使用以下命令：ls *.iso 7、基于大小对输出内容排序若希望基于文件大小来对输出内容排序，你需要使用 -S 选项，它会以从大到小的方式（降序）列出文件：ls -lhS 相反，如果你想颠倒这个顺序，使得最小的文件首先被列出，你可以利用 -r 选项来实现反向排序：ls -lhSr 8、根据日期和时间排序文件ls 命令在列出的内容中包括文件的修改时间。如果你希望最新的文件最先被列出，可以使用 -t 选项，如下所示：ls -lht 你也可以像我前面提到的那样，在这里使用 -r 选项进行反转排序。ls -lrt 这会使得最近修改的文件在列表的底部显示，当目录中存在大量文…

使用 ChatGPT AI 从英文文本生成 Linux 命令
type: item
date: 2023-04-29T19:18:20+08:00
description: 即使是专家级的 Linux 用户也不记得所有的 Linux 命令和它们的选项。这对我们人类来说是不可能的。但是机器呢？尤其是人工智能驱动的机器？想象一下，如果你可以“命令”你的终端“显示过去 12 小时内修改过的所有小于 100 MB 的文件”。当然，你可以使用 Linux 命令“命令”它，但是用普通的英语进行交互呢？由于人工智能的进步，这实际上是可能的。下面是自动生成 Linux 命令以显示当前目录中所有小于 10 KB 的文件的示例。我使用的工具叫做 Shell Genie。它是一个命令行工具，可让你以普通的英语与终端进行交互。它可以生成命令、运行命令（如果需要），还可以向你解释生成的命令。Shell-Genie 的特点将普通英语转换为 Linux 命令。提供了一个需要 openAI 的 API 密钥的 openAI gpt3 后端，和一个可以免费使用的 free-genie 后端。提示一个选项以运行你要求的命令。解释生成的命令。安装 Shell GenieShell-genie 在任何发行版的默认仓库中都不可用。你可以使用 pipx 安装它。要安装它，你需要安装 Python 3.10+ 和 Pip。你可以参考我们关于 如何在 Ubuntu 和其他 Linux 发行版中安装 pip 的文章。安装 pip 后，使用以下命令安装 pipx：python3 -m pip install --user pipx python3 -m pipx ensurepath 现在，重启终端并运行以下命令安装 shell-genie：pipx install shell-genie 这可能显示错误或需要依赖项。运行提示的命令来安装所需的依赖。在我的例子中：sudo apt install python3.10-venv 之后，再次运行 shell-genie 安装命令，就可以安装了。安装完成后，运行以下命令：shell-genie init 这将要求你选择后端，openAI 或 free-genie。如果你有 openAI API，你可以选择它或继续使用 free-genie。? free-genie 后端可能并不总是工作，因为它是由开发者托管的，他警告说可能会出现中断。然后它将请求允许报告反馈。用 y/n 来决定。现在就可以使用了。使用 Shell-genie? 如果你要进行实验，请尽量不要使用带有 sudo 或删除文件的命令。不要将你的机器交到机器手中。如上所述，shell-genie 提供了两种工作模式：从普通的英语获取命令获取命令解释从普通英语中获取 Linux 命令你可以使用 shell-genie 的 ask 选项从普通的英语中获取命令。例如：shell-genie ask "Display only the folders of this directory" 这将显示正确的命令，并提示我们是否运行该命令。获取带解释的 Linux 命令你可以使用 shell genie 来解释你要运行的一些命令。shell-genie ask "display all files smaller than 10kb in here" --explain 上面的命令首先会显示需要的命令并进行解释，然后提示用户是否执行。总结有像 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中国 荣誉推出

每个 Linux 用户都应该知道的 31 条命令
type: item
date: 2022-11-25T02:49:00+08:00
description: 哪些是最基本的 Linux 的命令？经常有读者问我这个问题，我一直试图避免回答这个问题。为什么呢？我不知道 Linux 命令吗？不是的。这不是原因。而是因为很难对它们进行分类。对我来说必不可少的东西对你来说可能并不重要。但我想这适用于所有的东西，我们网站上的每一个这样的推荐应用程序列表也都是这样。这就是为什么我最终放弃了，并创建了这个基本但重要的 Linux 命令列表，它应该对作为 Linux 用户的你有所帮助。这更多的是针对 Ubuntu 这样的桌面用户，但如果你把 Ubuntu 作为服务器使用，它们也应该对你有所帮助。Linux 的基本命令我在这里列出的每个命令都有多个选项和多种用途。如果我尝试给出每个命令的最常见的例子，它将很容易变成一本超过一万字的口袋书。我不会详述这些命令中的任何一个。我将列出每个命令的目的及其基本语法。你可以从这些命令的链接教程中阅读更多关于使用这些命令的信息。在你开始阅读列表之前推荐阅读：Linux 中路径的概念文件权限的概念了解 Linux 终端的行话还有一件事。我在这里更多地使用了文件夹这个术语，而不是目录。在 Linux 中文件夹被称为目录，有些人可能不喜欢这样。然而，我相信对于初学者来说，这更容易掌握。1、ls 命令：列出一个文件夹的内容这是一个新的 Linux 用户最先学会的几个命令之一。这个命令可以让你看到当前文件夹里有哪些文件和文件夹。ls 你可以使用长列表选项 ls -l 来查看细节，如文件大小、权限、修改时间等。如果你想，你可以对这些选项进行排序和控制。ls -l 推荐阅读：ls 命令示例2、cd 命令：改变目录默认情况下，你从你的主目录下开始。你经常需要改变目录并移动到另一个目录。例如，你下载了一个 deb 文件或脚本。现在你想运行它。你可以通过提供完整的路径从你现在的工作目录运行它，但是切换到下载的位置会让事情更简单。cd 命令代表“ 改变目录 change directory ”，你可以改变你的位置，移动到另一个目录。在这一点上，我强烈建议阅读关于 Linux 中路径的概念，这样在 Linux 命令行中浏览目录时，事情就容易理解了。推荐阅读：cd 命令示例3、cat 命令：读取一个文本文件如果你想在 Linux 中快速查看一个文本文件的内容，cat 是你需要使用的命令。它在屏幕上显示内容。cat filename 你也可以使用 cat 命令来创建新的文件或给现有文件添加更多的文本。推荐阅读：cat 命令的例子4、less 命令：读取一个大的文本文件cat 命令对于查看小的文本文件已经足够了。但是，如果你有一个有数百行的巨大文本文件，我不建议使用 cat。它将用所有的文本淹没你的屏幕，而你将很难处理它。这就是 less 命令有用的地方。当你用 less 打开一个文件时，它会分页打开文件。你可以向上/向下滚动，寻找文本等等。一旦你读完了文件，你可以按 Q 键退出 less 视图。你会注意到，屏幕上什么都没有显示。你的屏幕是干净的。推荐阅读：less 命令示例5、touch 命令：创建新文件在 Linux 终端中，有多种创建新文件的方法。你在上面看到的 cat 命令也可以创建新文件。然而，我更喜欢用 touch 命令来实现这一目的。touch new_file_name 如果你对现有的文件使用它，它们的时间戳会被修改。推荐阅读：touch 命令示例6、mkdir 命令：创建新的文件夹虽然没有创建新文件的特定命令，但有一个专门的命令用于创建新的文件夹（或目录，我们在 Linux 中称之为“目录”）。mkdir new_dir 推荐阅读：mkdir 命令示例7、cp 命令：复制文件和文件夹在命令行中复制文件和文件夹也是你会遇到的常见任务之一。cp 命令是“ 复制 Copy ”的简称，用于这一目的。想象一下，你必须修改一个配置文件。一个聪明的做法是用另一个名字复制该文件。这样一来，你就有了一个文件的备份。cp existing_file.txt existing_file.back 你也可以使用同样的 cp 命令来复制目录。为此，你必须指定递归选项 -r。cp -r dir another_location 推荐阅读：cp 命令示例8、mv 命令：剪贴或重命名文件和文件夹mv 命令是 “ 移动 Move ” 的意思。当你把一个文件复制到另一个地方时，它仍然保留在原来的地方。mv 命令将文件和文件夹移动到另一个位置。你可以把它看作是一个剪切-粘贴的操作。mv file.txt /another/location 你也可以使用 mv 命令来重命名文件。mv file.txt new_file.txt 同样的 mv 命令也可以移动或重命名文件夹，不需要任何特殊的选项。推荐阅读：mv 命令示例…

12 个对新手最重要的 Linux 命令
type: item
date: 2022-11-05T17:23:10+08:00
description: 我向所有的 Linux 初学者推荐以下这些命令。在使用 Linux 命令行时，很容易就会迷失方向，这可能会导致灾难性的后果：我有一次使用删除命令 rm 删除文件，然而删除之后我才意识到我刚刚是删除了计算机的引导目录。后来，我学会了使用 pwd 命令，来知道当前在文件系统的哪个目录下；并且我使用了 trashy 和 trash-cli 这一命令行回收站工具（LCTT 译注：在删除文件时 trash-cli 会充当中间人，将文件先“删除”到桌面上的垃圾箱中，能够通过垃圾箱或通过终端的 trash 命令，来恢复垃圾箱中已删除的文件。）当我刚开始使用 Linux 时，我有一个放在桌子上的“速查表”，它就是《101 条你应该知道的 Linux 命令》，我在管理 Linux 服务器时能参考速查表上面的这些命令。随着我越来越熟悉这些命令，我越来越精通服务器管理了。以下是我认为最有用的 12 个 Linux 命令。1、打印工作目录（pwd）pwd 命令会打印出你的工作目录。换句话来说，它输出你当前所在目录的路径。pwd 命令有两种选项：-L 或 --logical（即逻辑路径）用来打印当前的目录路径（不解析符号链接），-P 或 --physial（即物理路径）会打印出解析符号链接后的物理目录。（LCTT 译注：你可以进一步阅读我们翻译的 另一篇文章。）2、创建目录（mkdir）使用 mkdir 命令来创建一个新目录，是非常容易的。以下命令，创建了一个名为 example 目录（若 example 已存在，则无法创建）：$ mkdir example 你也可以在嵌套地创建目录及其子目录：$ mkdir -p example/one/two 如果目录 example 和目录 one 都已存在，则仅会创建目录 two。如果上述目录都不存在，则会创建这三个嵌套的目录。3、列出文件（ls）我最早使用的是 MS-DOS（微软磁盘操作系统），因此我习惯于使用 dir 命令，来列出文件。我不记得当时是否能在 Linux 上使用 dir 命令，但是如今 dir 命令已经包含在 GNU 核心实用程序包 GNU Core Utilities package 中了。大多数人会使用 ls 命令，来显示目录中的文件及其所有的属性。ls 命令有许多选项，包括 -l 查看文件的长列表，显示文件所有者和权限等信息。4、更改当前工作目录（cd）在 Linux 中经常要更改当前工作目录，这就是 cd 命令的功能。例如，以下的示例将让你从 主目录 home 进入 Documents 目录：$ cd Documents 你可以使用 cd ~ 或者 cd，来快速转换到你的主目录。你可以使用 cd .. 来返回到上一级目录。5、删除文件（rm）删除文件是很危险的，因为在 Linux 终端上用 rm 命令会彻底地删除文件，并没有像桌面的垃圾桶那样依旧保存着删除的文件。许多终端用户有一个坏习惯，他们会永久地删除他们认为不再需要的文件。然而，因为没有“取消删除”命令，这个坏习惯可能会导致严重的问题：你会不小心删除了包含重要数据的目录。Linux 系统为文件删除提供了 rm 和 shred 命令。要删除文件 example.txt，请输入以下内容：$ rm example.txt 然而，使用 trash 命令要安全得多，例如 trashy 或者 trash-cli，它会将文件先“删除”到桌面上的垃圾箱中：$ trash example.txt （LCTT 译注：关于 Trash-Cli 的更多信息可以参考我们翻译的 另一篇文章。）6、复制文件（cp）使用 cp 命令，来复制文件。cp 的语法是从旧文件复制到新文件。这里有一个例子：$ cp file1.txt newfile1.txt 你也可以复制整个目录：$ cp -r dir1 newdirectory 7、移动并重命名文件（mv）重命名和移动文件在功能上是相同的过程。当你移动文件时，从一个目录中取出一个文件，并将其放入一个新目录中；当你重命名文件时，将一个目录中的文件更改为新名称，并放回到同一目录或另一个目录下。无论是重命名还是移动文件，你都可以使用 mv 命令：$ mv file1.txt file_001.txt 8、创建一个空文件（touch）使用 touch 命令可以简单地创建一个空文件：$ touch one.txt $ touch two.txt $ touch three.md 9、更改权限（chmod）使用 chmod 命令，来更改文件的权限。chmod 最常见的用途是让文件能够执行：$ chmod +x myfile 以下的示例展示了如何用 chmod 命令给文件赋予权限，这对于脚本来说特别方便。尝试一下这个简单的练习吧：…

解决 Linux 中的 “Bash
type: item
date: 2022-10-22T19:59:00+08:00
description: 本新手教程展示了在 Debian、Ubuntu 和其他的 Linux 发行版上如何解决 “Bash: command not found” 这一报错。当你在 Linux 中使用命令时，你希望得到终端输出的结果。但有时候，你会遇到终端显示“ 命令未找到 command not found ”这一报错。对于这个问题，并没有直截了当且单一的解决方案。你必须自己做一些故障排除来解决这个报错。老实说，要解决它并不难。该报错信息已经给出了一些提示：“命令未找到”，这说明你的 shell（或者 Linux 系统）找不到你输入的那条命令。shell（或 Linux 系统）找不到命令，有三个可能的原因：你将命令的名称拼错了该命令还没有安装该命令是一个可执行脚本，但其位置未知接下来，我们会详细介绍“命令未找到”这一报错的每一个原因。解决“命令未找到”报错方法 1：再次检查命令名称有没有写错每个人都会犯错误，尤其是在打字的时候。你输入的命令可能存在错别字（也就是你写错啦）。你应该特别注意：是否拼对了正确的命令名称是否在命令与其选项之间加上了空格是否在拼写中混淆了 1（数字 1）、I（大写的 i）和 l（小写的 L）是否正确使用了大写字母或者小写字母看看下面的示例，因为我写错了 ls 命令，所以会导致“command not found”报错。所以，请再次仔细确认你输入得对不对。方法 2：确保命令已安装在你的系统上这是“命令未找到”错误的另一个常见原因。如果命令尚未安装，则无法运行该命令。虽然在默认情况下，你的 Linux 发行版自带安装了大量命令，但是不会在系统中预装 所有的 命令行工具。如果你尝试运行的命令不是一个流行的常用命令，那么你需要先安装它。你可以使用发行版的软件包管理器来安装命令。有时候，某一常用命令可能也不再能使用了，甚至你也不能够安装这个命令了。这种情况下，你需要找到一个替代的命令，来得到结果。以现已弃用的 ifconfig 命令为例。网络上的旧教程依旧会让你使用 ifconfig 命令，来 获取本机的 IP 地址 和网络接口信息，但是，在较新的 Linux 版本中，你已经无法使用 ifconfig 了。ifconfig 命令已被 ip 命令所取代。有时候，你的系统可能甚至找不到一些非常常见的命令。当你在 Docker 容器中运行 Linux 发行版时，就通常如此。Docker 容器为了缩小操作系统镜像的大小，容器中通常不包含那些常见的 Linux 命令。这就是为什么使用 Docker 的用户会碰到 ping 命令未找到 等报错的原因。因此，这种情况下的解决方案是安装缺失的命令，或者是找到一个与缺失命令有同等功能的工具。方法 3：确保命令是真实的，而不是一个别名我希望你知道 Linux 中的别名概念。你可以配置你自己的较短的命令来代替一个较长命令的输入。一些发行版，如 Ubuntu，会自动提供 ll（ls -l 的别名）、la（ls -a 的别名）等命令。想象一下，你习惯于在你的个人系统上输入 ll 和 la，而你登录到另一个 Linux 系统，发现 ll 命令并不存在。你甚至不能安装 ll 命令，因为它不是一个真正的命令。所以，如果你找不到一个命令，甚至不能安装，你应该尝试在互联网上搜索该命令是否存在。如果不存在，可能是其他系统上的一个别名。方法 4：检查命令是否是一个路径正确的可执行脚本这是 Linux 新手在 运行 shell 脚本 时常犯的错误。即使你在同一目录下，仅用可执行脚本的名称，来运行可执行脚本，也会显示错误。[email protected]:~/scripts# sample -bash: sample: command not found 因为你需要显式指定 shell 解释器或可执行脚本的路径！如果你在其他目录下，在未提供文件正确路径的情况下，运行 shell 脚本，则会有“ 找不到文件 no such file or directory ”的报错。把可执行文件的路径加到 PATH 变量中有时候，你下载了一个软件的压缩文件（tar 格式），解压这个 tar 文件，然后找到一个可执行文件和其他程序文件。你需要运行可执行文件，来运行那个软件。但是，你需要在可执行文件的同一目录下或指定可执行文件的整个路径，才能运行那个可执行文件。这很令人烦扰。你可以使用 PATH 变量来解决这个问题。PATH 变量包含了有各种 Linux 命令的二进制（可执行）文件的目录集合。当你运行一个命令时，你的 Linux 系统会检查 PATH 变量中的上述目录，以查找该命令的可执行文件。你可以使用 which 命令，来检查某一命令的二进制文件的位置：如果你想从系统上的任何地方都能运行可执行文件或脚本，你需要将可执行文件的位置添加到 PAT…

10 大可以摧毁你的 Linux 的命令
type: item
date: 2022-09-13T02:47:24+08:00
description: 什么是最危险的 Linux 命令？有人无数次问我这个问题，我一直避免回答，因为没有一个明确的危险的 Linux 命令清单。你拥有的工具使你能够控制和修改你的操作系统的每一个方面。我不是想吓唬你，但如果你不熟悉这些命令和工具，你可以很容易地把你的系统摧毁。想象一下家庭中的小孩子的情景。孩子有许多方法可以伤害自己。但这是否意味着不应允许孩子离开婴儿床？那会对她的成长造成损害。这就是父母设定界限和引导孩子的地方。不要靠近火堆，不要把手指戳到电源插座上……随着孩子的成长和经验的积累，她可以把炉子打开，在壁炉里生火，插上电源线。同样，如果你知道一些已知的风险命令，你可能会避免落入巨魔的陷阱，他们试图欺骗你运行命令，扰乱你的系统。当你积累了经验，知道了这些命令和工具的含义和用法，用愚蠢和棘手的命令破坏你的系统的机会就会减少。我的同事 Sreenath 收集了一些流行的危险 Linux 命令。让我们看看它们是如何干掉你的 Linux 系统的。免责警告：如果你不清楚你在做什么，请勿尝试本文提及的这些命令，否则后果自负。1、rm -rf /*这个可能是在各种社交媒体上盘旋的最臭名昭著的命令。你会经常发现巨魔们在各种讨论中提及这个。rm 命令用来删除文件/目录。标志 -r 和 -f 表示递归地删除指定目录内的所有文件。现在，如果没有 root 权限，这个命令不会造成任何伤害。运行 sudo rm -rf / 命令也不会产生任何问题，因为大多数发行版提供了一个故障安全选项。你需要指定 --no-preserve-root 才能实际运行它。sudo rm -rf / --no-preserve-root 然而，一个更简单的版本可以是这样的：sudo rm -rf /* 它将开始递归地删除根目录下的所有文件，在一段时间后，你的系统会冻结，并显示“删除文件错误”。一旦重新启动，你将被送到 grub-rescue 提示符下。2、覆盖你的分区如果你熟悉文件系统，你可能知道 /dev/sda 是什么。它（通常）是你的磁盘驱动器分区。> 操作符用于将其前面的命令的输出写到所提供的指定位置。一旦你运行任何命令并把它写到 /dev/sda，比如说：echo "Hello" > /dev/sda 这将用 Hello 字符串替换你的包含启动系统所需的所有数据的分区。3、把所有的东西都移到黑洞每个 Linux 系统内都有一个黑洞。而这个黑洞就是 /dev/null。无论你把什么东西扔进这个区域都会永远丢失。而且，它在丢弃数据后会将写入过程报告为成功，这是其破坏性的主要原因。mv /home/user/* /dev/null mv 命令 用来移动或重命名文件/目录。在上面的命令中，你把家目录内的所有文件都移到了黑洞中。虽然根系统没有被破坏，但你所有的个人数据都会丢失。4、格式化你的硬盘mkfs 是一个命令行工具，用于格式化磁盘和分区。它是一个超级方便的工具，可以为安装的操作系统创建分区。但同样的命令也可以格式化你的硬盘。格式化你的驱动器意味着删除系统启动所需的所有文件。mkfs.ext3 /dev/sda 这个命令完成了它的工作，而你最终得到了一个无法恢复的混乱的系统。5、fork 炸弹这个看起来很可爱的特殊字符和符号的随机组合，足以通过耗尽系统资源来冻结一个正在运行的系统。:(){ :|:& };: & - Shell 后台操作符。它通知 Shell 将命令放在后台。在这里，它定义了一个叫做 : 的函数，它调用自己两次，一次在前台，一次在后台。这个过程不断地重复执行，直到系统冻结。顾名思义，它自己分叉，最终成为一个连锁炸弹，吃掉了所有的系统资源。你将被迫重启系统，这并不像本列表中的其他命令那样糟糕。6、覆盖重要的配置文件虽然这本身不是一个命令，但它更像是一个预防性的东西。如上所述，> 操作符是用来向文件写入的。它丢弃文件中已经存在的东西，并将提供的新数据写入文件中。command > config_filename 现在，如果你将一些重要的配置文件作为写数据的地方，它将被取代内容，留下一个损坏的系统。7、用垃圾数据替换分区/dev/random 是 Linux 中的一个命令，它可以创建垃圾数据。把它和 dd 命令 以及你的分区结合起来，你就得到了一个可以让你的分区着火的燃烧弹。dd if=/dev/random of=/dev/sda dd 命令被用作一个低级别的复制工具。这里，它从 /dev/random 中获取随机数据，并用这些垃圾替换 /dev/sda 分区。一个类似的效果是通过以下方式获得的：cat /dev/urandom > filename 这里，它从 /dev/urandom（LCTT 译注：在 Linux 上，/dev/urandom 现在和 /dev/…

一些经典 Linux 命令的现代替代品
type: item
date: 2022-01-12T23:52:28+08:00
description: 当你 开始学习 Linux 时，最初学习的是一套标准的 Linux 命令，这些命令从 UNIX 时代就已经存在了。随着你作为一个 Linux 用户的年龄增长，你会不断地掌握这套标准命令。但是，这些标准的、传统的命令是几十年前创建的，虽然它们完成了预定的工作，但是它们的功能还可以改进，结构还可以简化。这就是为什么存在 “替代” 工具，以加强传统的 UNIX/Linux 命令。在这篇文章中，我将列出一些新的命令行工具，你可以用这些工具来代替旧式的经典 Linux 命令。请注意，你不应该过分依赖这些替代品，特别是如果你管理（或计划管理）许多 Linux 服务器时。传统的 Linux 命令在所有的 Linux 发行版和 Linux 服务器上都可以找到。这些现代的替代方案很有可能在远程服务器上无法使用。在你的个人能力范围内，你可以学习了解这些新的工具，以帮助你更有效率。听起来不错？让我们看看你是否能在这里找到你下一个最喜欢的命令行工具。HTTPie: wget 和 curl 的替代品在终端下载文件 时，wget 和 curl 是两个最常用的工具。有趣的是，并不是所有的发行版都默认安装了 curl 和 wget。HTTPie（http）以一种更人性化的方式做同样的工作。你会看到彩色的、格式化的输出，这使得它更容易理解和调试。蝙蝠：猫的替代品cat 命令可能是你最先学会的命令之一。它可以完成查看小型文本文件内容的工作。但 bat 命令 更上一层楼，添加了语法高亮和 Git 集成等功能，并且还提供了分页选项。ncdu: du 命令的替代品Linux 中的 du 命令 用来检查一个目录的大小。这不是一个非常直观的命令，当然它的默认输出也不算非常好。与此相比，ncdu 要好得多，它能及时提供相关信息。它还有其他一些功能，比如用图表显示磁盘使用情况，对显示进行排序，甚至可以交互式地删除目录。它是基于 ncurses 的，因此 “nc” 这个前缀被加到 du 中。此外，还有一个类似的 CLI 工具：gdu，也是一个 du 的替代品，因为是使用 Go 编写的，这使得它的性能得到了提升。htop: top 命令的替代品top 命令是 Linux 终端中的任务管理器。它是一个查看运行进程和资源消耗的好工具，但是 理解和使用 top 命令 可能很复杂。另一方面，htop 有一个漂亮的彩色输出，并且界面比 top 命令更直观。你可以垂直和水平滚动，以图形方式配置显示的信息。你可以在 htop 的输出屏幕上交互式地杀死进程。fd：find 命令的替代品find 命令是最强大和最常用的 Linux 命令之一。不能想象一个系统管理员可以不使用 find 命令就能生存下去。但是，find 命令的结构奇怪，如果你进行大量的查找操作，它可能会很慢。一个更好、更快的替代方案是 fd 命令。fd 是用 Rust 编写的，它比其传统的竞争对手更简单、更快速。exa：ls 命令的替代品exa 命令行工具不止可以列出目录内容。它的默认设置更好，使用颜色来区分文件类型和元数据。exa 还可以显示一个文件的扩展属性，以及标准的文件系统信息，如 inode、块数，以及文件的各种日期和时间。你可以使用树状视图来查看目录结构。它也有内置的 Git 支持，可以看到哪些文件被修改、提交和暂存等。duf：df 命令的替代品Linux 中的 df 命令 用来检查磁盘空间。虽然它在大多数情况下都不错，但一个更简单、更好的替代方法是 duf，这是一个用 Go 编写的工具。它提供了一个所有挂载设备的概览，这很容易理解。你还可以指定一个目录/文件名并检查该挂载点的可用空间。通过 duf，你可以对输出进行排序、列出 indoe 信息，甚至将输出保存为 JSON 格式。太长不读：男人的替代品我知道对于纯粹主义者来说，Linux 中的手册页 是不二之选。但是，手册页有时会过于详细和复杂，难以阅读和理解。这就是 tldr 登场的时机。“TLDR” 是流行的互联网行话，意思是“ 太长不读 to long didn't read ”。这就是他们创建 tldr 的想法。如果你觉得手册页太长而不想阅读，tldr 通过提供命令的实际例子而将其简化了。Neovim：Vim 的替代品我希望我在这里没有冒犯谁，但更好的 Vim 不是 Emacs，而是 Neovim。几年前，作为对传统的 Vi 编辑器的改进，Vim 出现了。又是几年过去了，Neovim 提出了将 Vim 扩展为一个 IDE 的想法。它增加了现代终端的功能，如光标样式、焦点事件、括号内粘贴等，并内置了一个终端模拟器。最重要的是，你不需要忘却 Vim 的习惯就可以开始使用 Neovim。你的选择呢？再次强调，这些替代命令还不能完全替代原来的命令，特别是如果你管理许多 L…

7 个好玩的 Linux 命令
type: item
date: 2021-11-17T00:48:44+08:00
description: 这些好玩的 Linux 命令也有它的用处。Linux 的命令行可以说是资深用户和系统管理员的小窝。然而，Linux 不仅仅是大量的枯燥工作。Linux 是由爱玩的人开发的，他们还创造了一系列搞笑的命令。当你想轻松一下的时候，就可以自己试着这些。蒸汽机车随便什么时候，你可以使用 sl 命令使一辆 蒸汽机车 Steam Locomotive 在你的终端上跑过。可以用你的软件包管理器安装这辆蒸汽机车。例如，在 Fedora 上可以这样：$ sudo dnf install sl 实际用途据我所知，sl 命令确实只是为了好玩。你对 sl 有什么有趣的用途吗？请在评论中告诉我。（LCTT 译注：sl 的实际用途就是提醒你 ls 打错了。?）壁炉点燃一座壁炉来温暖你的心和你的终端吧，aafire 命令会播放一段壁炉的动画。你可以用你的软件包管理器安装 aafire。在 Debian、Mint、 Elementary 之类的发行版上：$ sudo apt install libaa-bin 在 Fedora、CentOS 之类的发行版：$ sudo dnf install aalib 实际用途这个动画是向你的团队或老板传达一切即将化为乌有的微妙方式。是的你可以使用 yes 命令打印出一串文字，直到用 Ctrl+C 强行停止。例如，我是一个 Buffalo Bills 的球迷，所以我选择用 yes 命令打印出一串无尽的 “Buffalo Bills”：$ yes Buffalo Bills 实际用途你可以用这个命令来向脚本输送确认信息，这样，当脚本停顿下来要求确认时，它就会自动收到 yes。例如，想象一下，你运行的一个脚本经常停下来问你确认：$ foo Are you sure you want to do this? Y/n Y Are you really sure? y/N Y But are you really? y/N 你可以通过向命令传递 yes 来自动接受这些信息：$ yes | foo 另外，你也可以用 yes 来自动拒绝信息：$ yes no | foo 命运通过安装 fortune 命令，你可以就可以得到命运的指点。fortune 会打印出一段随机的、可能有意义的话语（LCTT 译注：来自命运的指点）。用你的软件包管理器安装 fortune：$ sudo apt install fortune 在 Fedora 上：$ sudo dnf install fortune-mod 命运命令有许多数据集，它可以从中提取各种话语。例如，你可以从文学作品或科幻电视节目 《Firefly》中获得名人名言，或者从笑话、关于 Linux 的技巧等中选择。在你的资源库中搜索 fortune，看看你的发行版提供了哪些数据集。$ fortune Johnson's law: Systems resemble the organizations that create them. 实际用途你可以用命运来生成一个伪随机数。没有足够的熵来使它在密码学上安全，但当你需要一个意外的数字时，你可以用来计算字符或单词：$ fortune | wc --chars 38 $ fortune | wc --words 8 $ fortune | wc --chars 169 彩虹猫彩虹猫（lolcat）是一个将文件或标准输入连接到标准输出的程序（就像一般的 cat 命令），并在其中加入彩虹色。你可以用管道将其他命令的输出连接到 lolcat，这样就可以为结果加上彩虹色。下面是 lolcat -h 的帮助输出的结果。（LCTT 译注：我知道 cat 是 catch。）“FIG 来信”和横幅“FIG 来信”（FIGlet）来源于 Frank、Ian 和 Glenn 信件中的签名艺术。这个命令（figlet）和横幅命令（banner）可以帮你创建简单的 ASCII 文本横幅。下面是一个 CentOS 系统的文本横幅：$ figlet centos.com 将 figlet 连接到 lolcat，可以得到一个彩色的横幅：$ figlet centos.com | lolcat $ banner Hello World 实际用途figlet 和 banner 都是提醒用户他们正在登录的系统的简单方法。就像许多系统管理员、网页设计师和云开发人员一样，当你和几十台服务器一起工作时，这很有帮助。电子语音你可以通过安装电子语音（espeak）来为你的命令行添加语音功能。一旦 espeak 安装完毕，调高你的电脑的音量，听你的机器和你说话，会有一些乐趣。电子语音是一个软件语音合成器，有几个不同的语音库可用：$ espeak "Linux is the best operating…

用户必会的 20 个 Linux 基础命令
type: item
date: 2021-09-07T16:25:33+08:00
description: 无论新手老手，这 20 个 Linux 命令都能让你的操作更轻松。在黝黑的终端窗口中输入命令，这样的方式对某些人群来说可能好像过时了，但对许多专业计算机人员来说，这几乎是计算机完成能够执行的所有任务的最有效、最简便和最清晰的方式。如今，一些项目将开源命令引入了 macOS 和 Windows 等非开放平台，因此终端命令不仅仅是针对 Linux 和 BSD 用户，更是与每个人都息息相关。你可能会惊讶地发现，在一台普通的 POSIX 计算机上安装了数千个命令，当然，其中很多命令并不是真的有用，至少不是直接或经常性被使用。而其中的一部分命令虽然不是有效终端必须使用的命令，但相比其他命令而言使用频率较高，值得大家学习一下。以下是终端用户最可能会使用的前 20 个命令：cd在终端外，你可以单击图标从一个文件夹移动到另一个文件夹，但在终端中，你需要使用 cd。cd 命令代表 变更目录 change directory ，是用户在 Linux 系统中移动的方式。这是 Linux 中从一个地方到另一个地方最快、最直接的路线。例如，在桌面上，当你想从你的主目录（你保存所有文件夹的地方）移动到一个名为 presentations 的文件夹时，你首先要打开你的 Documents 文件夹，然后打开一个名叫 work 的文件夹，然后是 projects 文件夹，然后是 conference 文件夹，最后是 presentations 文件夹，里面存放的是 LibreOffice Impress 幻灯片。这个过程包含了很多次的双击操作。同时屏幕上还需要许多鼠标移动动作，这取决于新窗口出现的位置，以及大脑需要跟踪的许多路径点。许多人通过将 所有文件 都放在桌面上来避免这个看似微不足道的任务。而终端用户只需键入以下内容即可避免此问题：$ cd ~/Documents/work/projects/conference/presentations 一些有经验的终端用户甚至都懒得输入所有这些，而是使用 Tab 键自动完成单词填充。更甚者，有时你都不必依赖自动完成，而是改用通配符：$ cd ~/Doc*/work/*/conf*/p* pwd用 Buckaroo Banzai 的话来说：“无论你走到哪里，你就在那里。”当你想弄清楚确切位置时，就可以使用 pwd 命令。pwd 代表 打印工作目录 print working directory ，这正是它的作用。--physical（在某些情况时缩写为 -P）显示解析所有符号链接后的确切位置。$ pwd /home/tux/presentation $ pwd --physical /home/tux/Documents/work/projects/conference/presentations sed流编辑器 sed 更广为人知的是一个强大的批量 查找和替换 命令，但它同时也是一个正当合理的文本编辑器。你可以通过阅读我的 介绍性文章 来学习使用它，然后通过我的 高级教程和备忘录 成为老手。grepgrep 命令使用很普遍，以至于经常被用作动词（例如 “我会对一些文件进行 grep”）和动名词（例如 “grep 一些输出”）。无论是查看日志文件还是解析其他命令的输出，它都是在 shell 中解析文本时的关键组件。这是忙碌的用户专注于特定信息的一种方式。考虑一下计算世界中的数据量，grep 命令的流行就见怪不怪了。你可以通过阅读我的 介绍性文章 了解 grep，然后下载 备忘录 学习。file当你需要知道文件包含什么类型的数据时，请使用 file 命令：$ file example.foo example.foo: RIFF (little-endian) data, Web/P image [...] $ file example.bar example.bar: ELF 64-bit LSB executable, x86-64 [...] 当然，file 命令并不神奇。它只不过是根据文件如何标识自身而进行输出的，并且文件可能是错误的、损坏的或伪装的。使用 hexdump 进行严格检查的方式确定性更强，但对于日常使用而言，file 命令非常方便。awkawk 不仅仅是一个命令，它还是一种字面意义上的 编程语言。点此下载我们的免费 Awk 电子书 进行学习，你可能会写出远超你想象的脚本。curlcurl 命令是用于终端的 非交互式 Web 浏览器。它是面向 Web 和 API 开发人员的 开发工具。它是一个复杂灵活的命令，但如果你想从你的终端顺利地与 Web 服务交互，该命令是很值得学习的。下载我们免费的 curl 备忘录，你可以从中学会 curl 的许多选项。ps管理系统资源主要由内核负责，当你更喜欢或更需要手动…