Linux 终端简介

简介

本教程是讲授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]
23 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)中的[下一教程,以了解如何导航、查看和编辑文件及其权限。

Published At
Categories with 技术
comments powered by Disqus