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

我们今天发布的内容旨在帮助那些想要掌握命令行的人。 Linux掌握 Bash 命令 shell 的正确使用方法可以节省大量时间。本文将重点介绍 Bash 命令 shell 和 21 个实用命令。我们还将讨论如何使用命令标志和 Bash 别名,它们可以加快输入长指令的速度。

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

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

术语

在学习使用命令行时 Linux 你可能会遇到很多有助于你理解和运用这些概念的概念。例如,“Linux“终端”和“Unix”、“命令 shell”和“终端”有时会被混淆。让我们来讨论一下这些以及其他重要的术语。

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

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

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

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

Bash shell 是 Bourne Again Shell 的缩写。它是最常用的命令行 shell 语言,用于与操作系统交互。此外,Bash shell 也是默认的 shell。 macOS.

命令行界面 (命令行界面,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

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster