标签 命令 下的文章

在这篇基本命令行教程中,你将学习在 Linux 终端重命名文件和目录的各种方法。

如何在 Linux 终端中重命名文件和目录?你可以使用 mv 命令。

是的,与用于将文件和文件夹从一个位置“移动”到另一个位置的 mv 命令相同。

你可以在“移动文件和目录”时简单地指定文件和目录的新名称。

要重命名文件,请使用:

mv old_file new_file

同样,要重命名目录,请使用:

mv old_dir new_dir

听起来很容易,对吧? 但我将在这里详细讨论文件重命名:

  • 向你展示重命名的实际示例
  • 显示通过结合 findexec 命令批量重命名多个文件的示例
  • 讨论用于批量重命名文件的专用程序

我们来一一看看。

使用 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 命令的结果执行命令。

使用 findexecmv 命令没有固定标准的结构。你可以根据需要组合它们。

假设你想通过在名称中添加 _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 命令:

使用 ls 命令列出工作目录的内容

如你所见,它列出了当前工作目录中所有可用的目录和文件。但你可以做的远不止于在当前工作目录中获取名称和文件。

接下来让我给你展示一下。

1、列出带有所有权的文件和目录

ls 命令的重要用途之一就是查出具体的文件或目录的权限以及所有权信息。

这就需要你在使用 ls 命令时,带上 -l 选项(这也被称为长列表格式):

ls -l

执行该命令后,你会看到类似的输出:

$ ls -lh
-rwxrw-r-- 1 sagar sagar 666M Dec 10 18:16 Fedora.iso

注意到我是同时使用了 –h 选项吗?我们稍后会详细说明这个。

如果目前为止的输出结果看起来太复杂,那就让我来帮你简化一下:

利用 ls 命令在 Linux 中解读文件权限和所有权

如你所见,每个文本块都有特定的含义,它们分别对应文件拥有者、组和其他用户的各项权限。

对于想对文件权限有更深入理解的朋友,我推荐你阅读 我们关于 Linux 文件权限的详尽指南

2、获取以人类可读的方式显示的信息

默认状态下,文件大小以字节为单位显示,显然不是最佳的查阅方式。那如果想以更易读的方式来得知相同的信息,我们怎么做呢?

其实很简单。你只需使用 -h 选项与 ls 命令配合:

ls -l -h

接下来,我们比较下默认显示状态和可读性更强的显示方式的区别:

以人类可读的方式通过 ls 命令列出文件

明显更好了,对吧?

? 尽管 ls 命令很好地展示了文件大小,但它并不能告诉你文件夹的大小,普遍情况都会显示为 4K(LCTT 译注:这其实是“目录”这个文件所占用的大小,而不是该目录下文件的总计大小。)。如果需要了解文件夹的大小,那么你可以尝试使用 du 命令。

3、列出隐藏文件

和其他所有文件管理器一样,ls 命令在默认情况下并不会显示隐藏文件(这正是隐藏文件的意义所在,对吧?)。

那么,如果你期望在常规文件之外,一并 列出隐藏文件 呢?只需在使用 ls 命令时带上 -a 选项就行:

ls -a

你会注意到,以 . 开头的文件名就是所谓的隐藏文件。

用 ls 命令在 Linux 终端列出隐藏文件

? 你还可以使用 ls -A,它的功能与 ls -a 类似,但它不包括 ... 这两个目录。

4、递归列出文件

事实上,有 多种方法可以递归列出文件,使用 ls 命令就是其中之一。

如果你还不清楚,递归列出文件就是指展示所有子目录中的文件,直到每个子目录的最深层次。

你可以通过使用 -R 参数来递归列出文件:

ls -R

在 Linux 中使用 ls 命令递归列出文件

这种方式实际上为你展示了当前目录的结构,我个人非常喜欢这种方式,但你需要先进行安装。

? 其实你并不需要进入某个目录才能查看其内容,你可以直接通过提供它的绝对路径或相对路径来列出目录内容,比如:ls /var/log

5、在使用 ls 时对文件和目录做区分

通常,不同的颜色就足以区分文件和目录。但是如果你基于某种原因需要给文件和目录添加符号标识,这就有一个办法。

ls 命令中,使用 -F 选项,它会在每个目录名末尾添加一个正斜杠 /

ls -F

使用 ls 命令在文件和目录间做区分

6、列出指定扩展名的文件

有些情况下,你可能只希望列出具有特定扩展名的文件,实际上,这是最简单的操作之一。

做到这一点,你无需使用任何选项。只需在星号 * 后附上文件扩展名,如 *.png*.txt 等:

ls *.extension

例如,如果我只想列出 ISO 文件,那么我将使用以下命令:

ls *.iso

列出特定扩展名的文件

7、基于大小对输出内容排序

若希望基于文件大小来对输出内容排序,你需要使用 -S 选项,它会以从大到小的方式(降序)列出文件:

ls -lhS

使用 ls 命令基于文件大小排序

相反,如果你想颠倒这个顺序,使得最小的文件首先被列出,你可以利用 -r 选项来实现反向排序:

ls -lhSr

使用 ls 命令从小到大排序文件

8、根据日期和时间排序文件

ls 命令在列出的内容中包括文件的修改时间。

如果你希望最新的文件最先被列出,可以使用 -t 选项,如下所示:

ls -lht

使用 ls 命令最先列出最新文件

你也可以像我前面提到的那样,在这里使用 -r 选项进行反转排序。

ls -lrt

这会使得最近修改的文件在列表的底部显示,当目录中存在大量文件,而你希望查看最近被修改过的文件时,这一命令会特别有用。我在解决我的软件项目问题时就经常用到它。

使用 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 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中国 荣誉推出

哪些是最基本的 Linux 的命令?

经常有读者问我这个问题,我一直试图避免回答这个问题。

为什么呢?我不知道 Linux 命令吗?不是的。这不是原因。而是因为很难对它们进行分类。对我来说必不可少的东西对你来说可能并不重要。

但我想这适用于所有的东西,我们网站上的每一个这样的推荐应用程序列表也都是这样。

这就是为什么我最终放弃了,并创建了这个基本但重要的 Linux 命令列表,它应该对作为 Linux 用户的你有所帮助。这更多的是针对 Ubuntu 这样的桌面用户,但如果你把 Ubuntu 作为服务器使用,它们也应该对你有所帮助。

Linux 的基本命令

我在这里列出的每个命令都有多个选项和多种用途。如果我尝试给出每个命令的最常见的例子,它将很容易变成一本超过一万字的口袋书。

我不会详述这些命令中的任何一个。我将列出每个命令的目的及其基本语法。你可以从这些命令的链接教程中阅读更多关于使用这些命令的信息。

在你开始阅读列表之前推荐阅读:

还有一件事。我在这里更多地使用了文件夹这个术语,而不是目录

在 Linux 中文件夹被称为目录,有些人可能不喜欢这样。然而,我相信对于初学者来说,这更容易掌握。

1、ls 命令:列出一个文件夹的内容

这是一个新的 Linux 用户最先学会的几个命令之一。这个命令可以让你看到当前文件夹里有哪些文件和文件夹。

ls

你可以使用长列表选项 ls -l 来查看细节,如文件大小、权限、修改时间等。如果你想,你可以对这些选项进行排序和控制。

ls -l

ls 命令

推荐阅读:

ls 命令示例

2、cd 命令:改变目录

默认情况下,你从你的主目录下开始。你经常需要改变目录并移动到另一个目录。

例如,你下载了一个 deb 文件或脚本。现在你想运行它。你可以通过提供完整的路径从你现在的工作目录运行它,但是切换到下载的位置会让事情更简单。

cd 命令代表“ 改变目录 change directory ”,你可以改变你的位置,移动到另一个目录。

cd 命令示例

在这一点上,我强烈建议阅读关于 Linux 中路径的概念,这样在 Linux 命令行中浏览目录时,事情就容易理解了。

推荐阅读:

cd 命令示例

3、cat 命令:读取一个文本文件

如果你想在 Linux 中快速查看一个文本文件的内容,cat 是你需要使用的命令。它在屏幕上显示内容。

cat filename

cat 命令示例

你也可以使用 cat 命令来创建新的文件或给现有文件添加更多的文本。

推荐阅读:

cat 命令的例子

4、less 命令:读取一个大的文本文件

cat 命令对于查看小的文本文件已经足够了。但是,如果你有一个有数百行的巨大文本文件,我不建议使用 cat。它将用所有的文本淹没你的屏幕,而你将很难处理它。

这就是 less 命令有用的地方。当你用 less 打开一个文件时,它会分页打开文件。你可以向上/向下滚动,寻找文本等等。

用 less 命令阅读大文件

一旦你读完了文件,你可以按 Q 键退出 less 视图。你会注意到,屏幕上什么都没有显示。你的屏幕是干净的。

推荐阅读:

less 命令示例

5、touch 命令:创建新文件

在 Linux 终端中,有多种创建新文件的方法。你在上面看到的 cat 命令也可以创建新文件。

然而,我更喜欢用 touch 命令来实现这一目的。

touch new_file_name

touch command ubuntu

如果你对现有的文件使用它,它们的时间戳会被修改。

推荐阅读:

touch 命令示例

6、mkdir 命令:创建新的文件夹

虽然没有创建新文件的特定命令,但有一个专门的命令用于创建新的文件夹(或目录,我们在 Linux 中称之为“目录”)。

mkdir new_dir

mkdir 命令示例

推荐阅读:

mkdir 命令示例

7、cp 命令:复制文件和文件夹

在命令行中复制文件和文件夹也是你会遇到的常见任务之一。cp 命令是“ 复制 Copy ”的简称,用于这一目的。

想象一下,你必须修改一个配置文件。一个聪明的做法是用另一个名字复制该文件。这样一来,你就有了一个文件的备份。

cp existing_file.txt existing_file.back

你也可以使用同样的 cp 命令来复制目录。为此,你必须指定递归选项 -r

cp -r dir another_location

cp 命令示例

推荐阅读:

cp 命令示例

8、mv 命令:剪贴或重命名文件和文件夹

mv 命令是 “ 移动 Move ” 的意思。当你把一个文件复制到另一个地方时,它仍然保留在原来的地方。

mv 命令将文件和文件夹移动到另一个位置。你可以把它看作是一个剪切-粘贴的操作。

mv file.txt /another/location

你也可以使用 mv 命令来重命名文件。

mv file.txt new_file.txt

同样的 mv 命令也可以移动或重命名文件夹,不需要任何特殊的选项。

mv 命令示例

推荐阅读:

mv 命令示例

9、rm 命令:删除文件和文件夹

要在 Linux 终端中删除文件,你可以使用 rm(“ 删除 Remove ”的缩写)命令。

rm filename

在命令行中删除文件后,没有撤销选项。这就是为什么你在删除文件时要非常小心。如果你害怕删除错误的文件,可以使用选项 -i 的交互式模式,它给你一个额外的提示来确认操作。

rm -i filename

使用递归选项 -r,你也可以使用相同的 rm 命令来删除文件夹。

rm 命令示例

推荐阅读:

rm 命令示例

10、nano 命令:编辑文件

迟早有一天,你会被要求对一个文件的内容进行修改。想象一下,你必须改变 SSH、Grub 或其他一些应用程序的配置文件。

有一些 基于命令行的 文本编辑器可以达到这个目的。Ubuntu 预装了 Nano 编辑器,它比 Vim、Emacs 等更容易使用。

如果你好奇它们有什么不同,请阅读我们的 Nano vs. Vim 对比 文章。

更容易使用并不意味着和基于 GUI 的文本编辑器一样舒适。你将不得不使用键盘快捷键来移动、修改、保存和退出文件。

要用 nano 打开一个新的、未命名的文件,请使用:

nano

要在 nano 中编辑一个现有的文件,请使用:

nano filename

在这两种情况下,你都应该看到一个类似这样的界面。

nano 命令示例

要保存(或放弃修改)并退出编辑器界面,请使用 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:进程 ID
  • TTY:与进程相关的控制终端(现在已经不那么重要了)
  • TIME:总的 CPU 使用时间
  • CMD:运行该进程的命令名称

但一个系统不可能只运行两到三个进程,不是吗?要查看所有用户运行的所有进程,请使用:

ps aux

这将给出一个庞大的进程列表和关于它们的更多细节。如果你运行这个命令,现在将是使用 clear 命令的绝佳时机。

进程列表

推荐阅读:

ps 命令示例

13、top 命令:系统监控

ps 命令给你提供了所有正在运行的进程,而 top 命令给你提供了进程和系统资源消耗的实时视图。

top

把它看作是 Linux 中任务管理器的终端版本。通过 top 命令,你会看到很多有趣的细节。

我主要使用 top 命令来检查哪个进程占用了太多的 CPU 或内存。如果你有兴趣做实验,还有 更好的 top 替代品

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 与 execxargs 结合起来,对 find 命令的结果采取行动。例如,你可以寻找所有的 .txt 文件并选择删除它们。

推荐阅读:

find 命令示例

17、grep 命令:在文件内容中搜索

find 命令根据文件的名称和类型来搜索文件。如果你想根据文件的内容进行搜索,你可以使用 grep命令。

因此,与其寻找所有以 .txt 结尾的文件,不如用 grep 寻找所有包含文本 foss 的文件。

grep -ri search_term

grep 命令示例

想学习更多吗?这里有一些更多的 grep 命令示例。方便的 grep 速查表 应该可以帮助你。

18、kill 命令:终止进程

暴力不是答案......它是解决方案。

开个玩笑!

如果你有一个行为不端的进程,占用了太多的系统资源,你可以 找到它,然后终止 它,使用 kill 命令 就行。

sudo kill -9 process_ID_or_Name

正如你在上面的命令中看到的,你需要知道进程 ID(PID)或进程名称来终止它。你可以使用 pstop 命令来获得 PID或确切的进程名称。

ps aux | grep -i “name of your desired program”

你注意到 grep 命令的使用了吗?你已经在利用这个列表中提到的命令了。

find kill process

我不知道你怎么想的,但是当我寻找流氓进程来终止时,我觉得自己就像 《飓风营救》中的连姆·尼森

Taken meme find you kill you

19、history 命令:回头看看你过去运行了哪些命令

比如,你在几天前使用了一个特定的 Linux 命令。现在你需要再次运行它,但你不能正确地想起它。

你可以按上下方向键。

这对许多 Linux 用户来说是一个熟悉的场景:这就是 history 命令的作用。

在 Ubuntu 中,你的 Shell 会保存你所运行的命令的历史。在终端输入 history,你会看到你过去运行的命令的历史。

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

lshw 命令示例

22、sudo 命令:以 root 权限运行命令

你一定注意到,我在之前讨论的一些命令中使用了 sudo 作为前缀。

默认情况下,在 Ubuntu 中,sudo 的配置方式是,它允许你(默认的管理用户)以 root 权限运行任何命令。

你被要求输入一个密码,而且是你的用户账户密码。当你输入密码时,屏幕上没有任何显示。新用户对此感到困惑,但这是 UNIX/Linux 的预期行为。你输入密码并按回车键。

使用 sudo 的例子

推荐阅读:

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

ip 地址检查

27、ping 命令:检查远程系统是否可达

ping 是另一个你应该知道的 Linux 网络命令。要检查一个远程系统是否可用,把它的 IP 地址给 ping 命令:

ping ip_address

你也可以用它来检查一个网站是否关闭,尽管现在它不是很准确。

ping command ubuntu

使用 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 JourneyLinux 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 系统为文件删除提供了 rmshred 命令。要删除文件 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 发行版自带安装了大量命令,但是不会在系统中预装 所有的 命令行工具。如果你尝试运行的命令不是一个流行的常用命令,那么你需要先安装它。

你可以使用发行版的软件包管理器来安装命令。

You may have to install the missing command

有时候,某一常用命令可能也不再能使用了,甚至你也不能够安装这个命令了。这种情况下,你需要找到一个替代的命令,来得到结果。

以现已弃用的 ifconfig 命令为例。网络上的旧教程依旧会让你使用 ifconfig 命令,来 获取本机的 IP 地址 和网络接口信息,但是,在较新的 Linux 版本中,你已经无法使用 ifconfig 了。ifconfig 命令已被 ip 命令所取代。

Some popular commands get discontinued over the time

有时候,你的系统可能甚至找不到一些非常常见的命令。当你在 Docker 容器中运行 Linux 发行版时,就通常如此。Docker 容器为了缩小操作系统镜像的大小,容器中通常不包含那些常见的 Linux 命令。

这就是为什么使用 Docker 的用户会碰到 ping 命令未找到 等报错的原因。

Docker containers often have only a few commands installed

因此,这种情况下的解决方案是安装缺失的命令,或者是找到一个与缺失命令有同等功能的工具。

方法 3:确保命令是真实的,而不是一个别名

我希望你知道 Linux 中的别名概念。你可以配置你自己的较短的命令来代替一个较长命令的输入。

一些发行版,如 Ubuntu,会自动提供 llls -l 的别名)、lals -a 的别名)等命令。

想象一下,你习惯于在你的个人系统上输入 llla,而你登录到另一个 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中国 荣誉推出