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