Linux 终端简介
介绍
本教程是 Linux 基础知识系列教程中的第一篇,涵盖了终端入门、Linux 命令行和执行命令。如果您是 Linux 新手,您会希望自己熟悉终端,因为它是与 Linux 服务器交互的标准方式。
如果您想充分利用本教程,您将需要一个 Linux 服务器来连接和使用。如果您还没有,可以通过以下链接快速创建一个:如何创建 DigitalOcean Droplet。本教程是为 Ubuntu 22.04 服务器编写的,但一般原则适用于任何其他 Linux 发行版。
让我们从了解什么是终端仿真器开始。
终端仿真器
终端仿真器是允许在图形环境中使用终端的程序。由于大多数人使用带有图形用户界面 (GUI) 的操作系统来满足日常计算机需求,因此使用终端仿真器对于大多数 Linux 服务器用户来说是必需的。
以下是一些按操作系统分类的免费、常用的终端仿真器:
- Mac OS X:终端(默认),iTerm 2
- Windows:ConEmu、Windows 终端、PuTTy
- Linux:Gnome 终端、Konsole、XTerm
每个终端仿真器都有自己的一组功能。通常,您应该期望现代终端仿真器支持选项卡式窗口和文本突出显示。
贝壳
在 Linux 系统中,shell 是一个命令行界面,它解释用户的命令和脚本文件,并告诉服务器的操作系统如何处理它们。有几种 shell 被广泛使用,例如 Bourne-Again shell (bash
) 和 Z shell (zsh
)。每个 shell 都有自己的功能集和复杂的命令解释方式,但它们都具有输入和输出重定向、变量和条件测试等功能。
本教程是使用 Bourne-Again shell 编写的,通常称为 bash
,它是大多数 Linux 发行版(包括 Ubuntu、Fedora 和 RHEL)的默认 shell。
命令提示符
当您首次登录到服务器时,通常会收到今日消息 (MOTD),这通常是一条信息性消息,其中包含杂项信息,例如 Linux 发行版的版本,服务器正在运行。在 MOTD 之后,您将进入命令提示符或 shell 提示符,您可以在此处向服务器发出命令。
命令提示符处显示的信息可以由用户自定义,但这里是默认 Ubuntu 20.04 命令提示符的示例:
sammy@webapp:~$
以下是命令提示符组成的细分:
sammy
: 当前用户的用户名webapp
:服务器的主机名~
:当前目录。在作为默认 shell 的bash
中,~
或波浪号是一个特殊字符,可扩展到当前用户的主目录 ;在这种情况下,它代表/home/sammy
$
:提示符号。这表示命令提示符结束,之后将出现用户的键盘输入
如果以 root
身份登录并位于 /var/log
目录中,以下是命令提示符的示例:
root@webapp:/var/log#
请注意,结束命令提示符的符号是 #
,这是 root
的标准提示符号。在 Linux 中,root
用户是超级用户 帐户,这是一个可以执行系统范围管理功能的特殊用户帐户。它是一个不受限制的用户,有权在服务器上执行任何任务。
运行命令
命令可以通过指定可执行文件的名称在命令提示符下发出,该可执行文件可以是二进制程序或脚本。有许多随操作系统一起安装的标准 Linux 命令和实用程序,可让您浏览文件系统、安装软件包以及配置系统和应用程序。
运行命令的实例称为进程。当命令在前台执行时,这是命令执行的默认方式,用户必须等待进程完成,然后才能返回到命令提示符,此时他们可以继续发出命令更多命令。
需要注意的是,Linux 中的几乎所有内容都区分大小写,包括文件和目录名称、命令、参数和选项。如果某些东西没有按预期工作,请仔细检查命令的拼写和大小写!
下面是一些示例,它们将涵盖执行命令的基础知识。
注意:如果您还没有连接到 Linux 服务器,现在是登录的好时机。如果您有 Linux 服务器但连接有问题,请访问此链接:如何使用 SSH 连接到您的 Droplet。
没有参数或选项
要运行不带任何参数或选项的命令,请键入命令的名称并按 Enter
。
如果您运行这样的命令,它将显示其默认行为,该行为因命令而异。例如,如果您运行不带任何参数的 cd
命令,您将返回到当前用户的主目录。 ls
命令将打印当前目录的文件和目录的列表。不带任何参数的 ip
命令将打印一条消息,向您展示如何使用 ip
命令。
尝试运行不带参数的 ls
命令以列出当前目录中的文件和目录(可能没有):
- ls
带参数
许多命令接受参数 或参数,这会影响命令的行为。例如,使用 cd
命令的最常见方法是向它传递一个参数,指定要更改到的目录。例如,要切换到安装了许多标准命令的 /usr/bin
目录,您可以发出以下命令:
cd /usr/bin
cd
组件是命令,第一个参数 /usr/bin
跟在命令后面。请注意您的命令提示符的当前路径是如何更新的。
尝试运行 ls
命令来查看新当前目录中的文件。
ls
Output…
grub-mkrescue sdiff zgrep
grub-mkstandalone sed zipdetails
grub-mount see zless
grub-ntldr-img select-editor zmore
grub-render-label semver znew
grub-script-check sensible-browser
有选项
大多数命令接受选项,也称为标志 或开关,它们可以修改命令的行为。选项跟在一条命令之后,由单个-
字符后跟一个或多个选项 表示,这些选项 由单独的大写或小写字母表示。一些多词选项可以以 --
开头,后跟标志文本。
有关选项如何工作的示例,让我们看一下 ls
命令。以下是使用 ls
时派上用场的几个常用选项:
-l
:打印一个“长列表”,其中包括额外的详细信息,例如权限、所有权、文件大小和时间戳-a
:列出目录的所有文件,包括隐藏文件(以.
开头)
要将 -l
标志与 ls
一起使用,请使用以下命令:
- ls -l
请注意,该清单包括与以前相同的文件,但包含有关每个文件的附加信息。
如前所述,选项通常可以组合在一起。如果你想同时使用 -l
和 -a
选项,你可以运行 ls -l -a
,或者像在这个命令:
- ls -la
请注意,由于 -a
选项,清单中包含隐藏的 .
和 ..
目录。
带有选项和参数
运行命令时,选项和参数几乎总是可以组合在一起。
例如,您可以通过运行此 ls
命令来检查 /home
的内容,而不管您当前的目录是什么:
ls -la /home
ls
是命令,-la
是选项,/home
是指示要列出哪个文件或目录的参数。这应该打印出 /home
目录的详细列表,其中应该包含服务器上所有普通用户的主目录。
环境变量
环境变量是用于更改命令和进程执行方式的命名值。首次登录服务器时,默认会根据几个配置文件设置几个环境变量。
查看所有环境变量
要查看为特定终端会话设置的所有环境变量,请运行 env
命令:
env
可能会有很多输出。查找 PATH
条目:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PATH
环境变量是一个以冒号分隔的目录列表,shell 将在发出命令时在其中查找可执行程序或脚本。例如,env
命令位于 /usr/bin
中,您可以在不指定其完整路径的情况下运行它,因为它的路径在 PATH 中
环境变量。
查看变量的值
可以通过在变量名称前加上 $
来检索环境变量的值。这会将引用的变量扩展为其值。
例如,要打印出 PATH
变量的值,您可以使用 echo
命令:
echo $PATH
或者您可以使用 HOME
变量(默认情况下设置为用户的主目录)更改为您的主目录,如下所示:
cd $HOME
如果您尝试访问一个尚未设置的环境变量,它将被扩展为空;一个空字符串。
设置环境变量
现在您知道如何查看环境变量,您应该学习如何设置它们。
要设置环境变量,您需要做的就是以变量名开头,紧接着是 =
符号,紧接着是其所需的值:
VAR=value
请注意,如果您设置现有变量,原始值将被覆盖。如果变量最初不存在,则会创建它。
Bash 包含一个名为 export
的命令,该命令导出一个变量,以便子进程继承该变量。这允许您使用引用当前会话中导出的环境变量的脚本。
您还可以在设置变量时引用现有变量。例如,如果您将应用程序安装到 /opt/app/bin
,则可以使用以下命令将该目录添加到 PATH
环境变量的末尾:
export PATH=$PATH:/opt/app/bin
现在使用 echo
验证 /opt/app/bin
是否已添加到 PATH
变量的末尾:
echo $PATH
请记住,以这种方式设置环境变量只会为当前会话设置它们。这意味着如果您注销或以其他方式更改为另一个会话,您对环境所做的更改将不会保留。有一种方法可以永久更改环境变量,但这将在以后的教程中介绍。
结论
现在您已经开始学习 Linux 终端(和一些命令),您应该为扩展 Linux 命令的知识打下良好的基础。阅读本系列的下一篇教程,了解如何导航、查看和编辑文件及其权限。