[已添加书签] Bash 初学者:21 个有用的命令

我们今天发布的该材料的翻译版是为那些想要掌握 Linux 命令行的人准备的。 有效使用此工具的能力可以节省大量时间。 我们将在这里特别讨论 Bash shell 和 21 个有用的命令。 我们还将讨论如何使用命令标志和 Bash 别名来加速长指令的输入。

[已添加书签] Bash 初学者:21 个有用的命令

另请阅读我们的博客中有关 bash 脚本的一系列出版物

术语

当您学习使用 Linux 命令行时,您将遇到许多有助于导航的概念。 其中一些术语,例如“Linux”和“Unix”,或者“shell”和“终端”,有时会被混淆。 让我们来谈谈这些和其他重要术语。

Unix的 是贝尔实验室在 1970 世纪 XNUMX 年代开发的流行操作系统。 她的代码已关闭。

Linux 是最流行的类 Unix 操作系统。 它现在被用于许多设备,包括计算机。

终端 (终端)或终端仿真器是一种可以访问操作系统的程序。 您可以同时打开多个终端窗口。

(shell)是一个程序,允许您将用特殊语言编写的命令发送到操作系统。

代表 Bourne Again Shell。 它是用于与操作系统交互的最常见的 shell 语言。 此外,Bash shell 是 macOS 上的默认 shell。

命令行界面 (命令行界面,CLI)是人与计算机之间交互的一种方法,用户通过键盘输入命令,计算机执行这些命令,以文本形式向用户显示消息。 CLI 的主要用途是获取有关某些实体(例如文件)的最新信息以及使用文件。 命令行界面应与主要使用鼠标的图形用户界面 (GUI) 区分开来。 命令行界面通常简称为命令行。

脚本 (脚本)是一个包含一系列 shell 命令的小程序。 脚本被写入文件,可以重复使用。 编写脚本时,您可以使用变量、条件、循环、函数和其他功能。

现在我们已经介绍了重要术语,我想指出,我将在这里互换使用术语“Bash”、“shell”和“命令行”,以及术语“目录”和“文件夹”。

标准 ,我们在这里使用的是标准输入(标准输入, stdin)、标准输出(标准输出, stdout)和标准错误输出(标准错误, stderr).

如果在下面给出的示例命令中,您会发现类似的内容 my_whatever - 这意味着这个片段需要用你的东西替换。 例如,文件的名称。

现在,在继续分析本材料专用的命令之前,让我们先看一下它们的列表及其简短描述。

21 Bash 命令

▍获取信息

  • man:显示该命令的用户指南(帮助)。
  • pwd:显示有关工作目录的信息。
  • ls:显示目录的内容。
  • ps:允许您查看有关正在运行的进程的信息。

▍文件系统操作

  • cd:更改工作目录。
  • touch:创建一个文件。
  • mkdir:创建一个目录。
  • cp:复制文件。
  • mv:移动或删除文件。
  • ln: 创建一个链接。

▍I/O 重定向和管道

  • <: 重定向 stdin.
  • >: 重定向 stdout.
  • |:将一个命令的输出通过管道传输到另一命令的输入。

▍读取文件

  • head:读取文件的开头。
  • tail:读取文件末尾。
  • cat:读取文件并将其内容打印到屏幕上,或连接文件。

▍删除文件、停止进程

  • rm:删除文件。
  • kill: 停止进程。

▍搜索

  • grep: 搜索信息。
  • ag:高级搜索命令。

▍归档

  • tar:创建档案并使用它们。

让我们更详细地讨论这些命令。

团队详情

首先,让我们处理命令,其结果以以下形式发出 stdout。 通常这些结果出现在终端窗口中。

▍获取信息

man command_name:显示命令指南,即帮助信息。

pwd:显示当前工作目录的路径。 在使用命令行的过程中,用户经常需要找出自己在系统中的确切位置。

ls:显示目录的内容。 这个命令也经常使用。

ls -a:显示隐藏文件。 此处应用标志 -a 命令 ls。 使用标志有助于自定义命令的行为。

ls -l:显示文件的详细信息。

请注意,标志可以组合。 例如 - 像这样: ls -al.

ps:查看正在运行的进程。

ps -e:显示有关所有正在运行的进程的信息,而不仅仅是与当前用户 shell 关联的进程的信息。 该命令经常以这种形式使用。

▍文件系统操作

cd my_directory: 将工作目录更改为 my_directory。 要在目录树中上移一级,请使用 my_directory 相对路径 ../.

[已添加书签] Bash 初学者:21 个有用的命令
cd命令

touch my_file:文件创建 my_file 沿着给定的路径。

mkdir my_directory:创建一个文件夹 my_directory 沿着给定的路径。

mv my_file target_directory: 移动文件 my_file 到文件夹 target_directory。 当指定目标目录时,您需要使用它的绝对路径(而不是像这样的结构 ../).

团队 mv也可用于重命名文件或文件夹。 例如,它可能看起来像这样:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
:创建文件的副本 my_source_file 并将其放入文件夹中 target_directory.

ln -s my_source_file my_target_file: 创建符号链接 my_target_file 每个文件 my_source_file。 如果更改链接,原始文件也会更改。

如果文件 my_source_file 将被删除,然后 my_target_file 会保持。 旗帜 -s 命令 ln 允许您创建目录链接。

现在我们来谈谈 I/O 重定向和管道。

▍I/O 重定向和管道

my_command < my_file:替换标准输入文件描述符(stdin) 每个文件 my_file。 如果命令正在等待来自键盘的某些输入,并且该数据已保存在文件中,则这可能很有用。

my_command > my_file:重定向命令的结果,即通常会进入的内容 stdout 并输出到屏幕、文件 my_file。 如果文件 my_file 不存在——它是被创建的。 如果该文件存在,则会被覆盖。

例如执行命令后 ls > my_folder_contents.txt 将创建一个文本文件,其中包含当前工作目录中的内容列表。

如果代替符号 > 使用构造 >>,那么,只要命令输出重定向到的文件存在,该文件就不会被覆盖。 数据将添加到该文件的末尾。

现在让我们看一下数据管道处理。

[已添加书签] Bash 初学者:21 个有用的命令
一个命令的输出被馈送到另一命令的输入中。 这就像将一根管子连接到另一根管子

first_command | second_command:输送机符号, |,用于将一个命令的输出发送到另一命令。 所描述结构左侧的命令发送到什么 stdout, 掉进 stdin 命令位于管道符号右侧。

在 Linux 上,几乎可以使用任何格式良好的命令来管道传输数据。 人们常说 Linux 中的一切都是管道。

您可以使用管道符号链接多个命令。 它看起来像这样:

first_command | second_command | third_command

[已添加书签] Bash 初学者:21 个有用的命令
多个命令的管道可以比作一个管道

请注意,当符号左侧的命令 |,输出一些东西到 stdout,她输出的内容可以立即作为 stdin 第二队。 也就是说,事实证明,我们正在使用管道来处理命令的并行执行。 有时这可能会导致意想不到的结果。 有关此内容的详细信息可以阅读 这里.

现在我们来谈谈从文件中读取数据并将其显示在屏幕上。

▍读取文件

head my_file:从文件开头读取行并将其打印到屏幕上。 您不仅可以读取文件的内容,还可以读取命令输出的内容 stdin使用此命令作为管道的一部分。

tail my_file:从文件末尾读取行。 该命令也可以在管道中使用。

[已添加书签] Bash 初学者:21 个有用的命令
头(head)在前,尾(tail)在后

如果您使用 pandas 库处理数据,则命令 head и tail 你应该很熟悉。 如果不是这样,看看上图,你就会很容易记住它们。

考虑其他读取文件的方式,我们来说一下命令 cat.

团队 cat 将文件的内容打印到屏幕上,或连接多个文件。 这取决于调用时传递给此命令的文件数量。

[已添加书签] Bash 初学者:21 个有用的命令
猫命令

cat my_one_file.txt:当单个文件传递给此命令时,它将输出到 stdout.

如果您给它两个或更多文件,那么它的行为会有所不同。

cat my_file1.txt my_file2.txt:收到多个文件作为输入后,此命令连接它们的内容并显示发生的情况 stdout.

如果需要将文件拼接的结果保存为新文件,可以使用运算符 >:

cat my_file1.txt my_file2.txt > my_new_file.txt

现在我们来谈谈如何删除文件和停止进程。

▍删除文件、停止进程

rm my_file: 删除文件 my_file.

rm -r my_folder: 删除文件夹 my_folder 及其包含的所有文件和文件夹。 旗帜 -r 表示该命令将以递归模式运行。

为了防止系统在每次删除文件或文件夹时要求确认,请使用标志 -f.

kill 012345:停止指定的正在运行的进程,给它时间正常关闭。

kill -9 012345:强制终止指定正在运行的进程。 查看旗帜 -s SIGKILL 与国旗含义相同 -9.

▍搜索

您可以使用不同的命令来搜索数据。 尤其 - grep, ag и ack。 让我们开始熟悉这些命令 grep。 这是一个经过时间考验的可靠命令,但它比其他命令慢,而且使用起来也不方便。

[已添加书签] Bash 初学者:21 个有用的命令
grep 命令

grep my_regex my_file: 搜索 my_regex в my_file。 如果找到匹配项,则针对每个匹配项返回整个字符串。 默认 my_regex 被视为正则表达式。

grep -i my_regex my_file:搜索不区分大小写。

grep -v my_regex my_file:返回所有不包含的行 my_regex。 旗帜 -v 表示反转,类似于运算符 NOT,在许多编程语言中都可以找到。

grep -c my_regex my_file:返回有关在文件中找到的搜索模式的匹配数的信息。

grep -R my_regex my_folder:对位于指定文件夹及其嵌套文件夹中的所有文件执行递归搜索。

现在我们来谈谈团队 ag。 她后来来了 grep,速度更快,使用起来更方便。

[已添加书签] Bash 初学者:21 个有用的命令
农业命令

ag my_regex my_file:返回有关行号以及行本身的信息,其中找到了匹配项 my_regex.

ag -i my_regex my_file:搜索不区分大小写。

团队 ag 自动处理文件 .gitignore 并从输出中排除在该文件中列出的文件夹或文件中找到的内容。 非常舒服。

ag my_regex my_file -- skip-vcs-ignores:自动版本控制文件的内容(例如 .gitignore) 不包含在搜索中。

另外,为了告诉团队 ag 您可以在要从搜索中排除的文件路径上创建一个文件 .agignore.

在本节的开头,我们提到了命令 ack。 团队 ack и ag 非常相似,我们可以说它们 99% 是可以互换的。 然而,球队 ag 工作速度更快,这就是我描述它的原因。

现在我们来谈谈档案工作。

▍归档

tar my_source_directory:连接文件夹中的文件 my_source_directory 到一个 tarball 文件中。 此类文件对于将大量文件传输给某人非常有用。

[已添加书签] Bash 初学者:21 个有用的命令
焦油命令

此命令生成的 tarball 文件的扩展名为 .tar (磁带存档)。 事实上,单词“tape”(磁带)隐藏在命令名称及其创建的文件名称的扩展名中,这表明该命令已经存在了多长时间。

tar -cf my_file.tar my_source_directory:创建一个名为的 tarball 文件 my_file.tar 包含文件夹内容 my_source_directory。 旗帜 -c 代表“create”(创造),而flag -f 作为“文件”(文件)。

从中提取文件 .tar-文件,使用命令 tar 有旗帜 -x (“提取”,提取)和 -f (“文件”,文件)。

tar -xf my_file.tar: 从中提取文件 my_file.tar 到当前工作目录。

现在我们来说一下如何压缩和解压 .tar-文件。

tar -cfz my_file.tar.gz my_source_directory:这里使用标志 -z (“zip”,压缩算法)表示应该使用该算法来压缩文件 gzip (GNUzip)。 文件压缩可以在存储此类文件时节省磁盘空间。 例如,如果计划将文件传输给其他用户,这有助于更快地下载此类文件。

解压文件 .tar.gz 你可以添加一个标志 -z 到提取内容命令 .tar- 文件,我们上面讨论过。 它看起来像这样:

tar -xfz my_file.tar.gz
需要注意的是,团队 tar 还有许多更有用的标志。

Bash 别名

Bash 别名(也称为别名或缩写)旨在创建命令或其序列的缩写名称,使用它代替常规命令可以加快工作速度。 如果您有别名 bu,隐藏命令 python setup.py sdist bdist_wheel,那么要调用这个命令,使用这个别名就足够了。

要创建这样的别名,只需将以下命令添加到文件中即可 ~/.bash_profile:

alias bu="python setup.py sdist bdist_wheel"

如果您的系统没有该文件 ~/.bash_profile,然后你可以使用命令自己创建它 touch。 创建别名后,重新启动终端,即可使用该别名。 在这种情况下,两个字符的输入代替了命令的三打多个字符的输入,这是为了 装配 Python 包。

В ~/.bash_profile 您可以为任何常用命令添加别名。

▍结果

在这篇文章中,我们介绍了 21 个流行的 Bash 命令并讨论了创建命令别名。 如果您对这个话题感兴趣—— 这里 一系列致力于 Bash 的出版物。 这是 您可以找到这些出版物的 pdf 版本。 另外,如果您想学习 Bash,请记住,与任何其他编程系统一样,练习是关键。

亲爱的读者! 您会在本文讨论的命令中添加哪些对初学者有用的命令?

另请阅读我们的博客中有关 bash 脚本的一系列出版物

[已添加书签] Bash 初学者:21 个有用的命令

来源: habr.com

添加评论