本文介绍了Linux初学者如何开始使用终端、Linux命令行以及管理环境变量。涵盖终端仿真器的概念、常用工具、shell类型(如bash)、命令提示符的解读和环境变量的设置。
简介
这个教程是 Linux 基础知识系列中的第一篇,涵盖了如何开始使用终端、Linux 命令行以及执行命令。如果你是 Linux 新手,你需要熟悉终端,因为它是与 Linux 服务器交互的标准方式。
这个教程是针对 Ubuntu 22.04 服务器编写的,但一般原则适用于任何其他 Linux 发行版。
让我们开始学习什么是终端仿真器。
终端仿真器
终端仿真器是一个允许在图形环境中使用终端的程序。由于大多数人在日常计算机使用中使用带有图形用户界面(GUI)的操作系统,所以对于大多数 Linux 服务器用户来说,使用终端仿真器是必不可少的。
以下是一些免费常用的终端仿真器,按操作系统分类:
- Mac OS X: Terminal(默认)、iTerm 2
- Windows: ConEmu、Windows Terminal、PuTTy
- Linux: Gnome Terminal、Konsole、XTerm
每个终端仿真器都有自己的一套功能。一般来说,你应该期望一个现代终端仿真器支持选项卡窗口和文本高亮显示。
Shell
在 Linux 系统中,shell 是一个命令行界面,用于解释用户的命令和脚本文件,并告诉服务器的操作系统如何处理它们。有几种广泛使用的 shell,比如 Bourne-Again shell(bash
)和 Z shell(zsh
)。每种 shell 都有自己的功能集和关于如何解释命令的复杂性,但它们都支持输入和输出重定向、变量和条件测试等功能。
这个教程是使用 Bourne-Again shell 编写的,通常简称为 bash
,它是大多数 Linux 发行版(包括 Ubuntu、Fedora 和 RHEL)的默认 shell。
命令提示符
当你第一次登录服务器时,通常会看到 Message of the Day(MOTD),这通常是一个包含杂项信息的信息消息,比如服务器运行的 Linux 发行版的版本。在 MOTD 之后,你将进入命令提示符或 shell 提示符,这是你可以向服务器发出命令的地方。
命令提示符呈现的信息可以被用户自定义,但以下是默认 Ubuntu 20.04 命令提示符的示例:
sammy@webapp:~$
以下是命令提示符的组成部分的解释:
sammy
:当前用户的用户名webapp
:服务器的主机名~
:当前目录。在bash
中,这是默认 shell,~
是一个特殊字符,它会扩展为当前用户的主目录的路径;在这种情况下,它代表/home/sammy
$
:提示符符号。这表示命令提示符的结束,在这之后用户的键盘输入将会出现
以下是作为 root
用户登录并位于 /var/log
目录时命令提示符的示例:
root@webapp:/var/log#
请注意,结束命令提示符的符号是 #
,这是 root
的标准提示符符号。在 Linux 中,root
用户是超级用户账户,它是一个特殊用户账户,可以执行服务器上的任何任务。
执行命令
可以通过在命令提示符处指定可执行文件的名称来发出命令,这可以是二进制程序或脚本。有许多标准的 Linux 命令和实用程序安装在操作系统中,允许你浏览文件系统、安装软件包和配置系统和应用程序。
正在运行的命令的一个实例被称为进程。当在前台执行命令时(这是默认的执行方式),用户必须等待进程完成,然后才能返回到命令提示符,此时可以继续发出更多命令。
需要注意的是,在 Linux 中几乎所有东西都是区分大小写的,包括文件和目录名称、命令、参数和选项。如果某些东西的工作方式不如预期,要仔细检查命令的拼写和大小写!
以下是一些示例,涵盖了执行命令的基础知识。
没有参数或选项
要运行一个没有任何参数或选项的命令,只需输入命令的名称并按 Enter
键。
如果以这种方式运行命令,它将表现出其默认行为,这取决于命令的不同。例如,如果没有任何参数运行 cd
命令,您将返回到当前用户的主目录。ls
命令将打印当前目录的文件和目录列表。没有任何参数的 ip
命令将打印一条消息,向您展示如何使用 ip
命令。
尝试运行 ls
命令,不带任何参数,以列出当前目录中的文件和目录(可能没有):
ls
带参数
许多命令接受参数,或参数,这些参数可以影响命令的行为。例如,使用 cd
命令的最常见方式是传递一个参数,指定要切换到的目录。例如,要切换到 /usr/bin
目录,其中安装了许多标准命令,您可以发出以下命令:
cd /usr/bin
cd
是命令,/usr/bin
是跟随命令的第一个参数。注意您的命令提示符的当前路径已更新。
尝试运行 ls
命令,查看新当前目录中的文件。
ls
… 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 命令知识的良好基础。阅读本系列的下一个教程,学习如何导航、查看和编辑文件及其权限。