Linux 终端入门

简介

这个教程是 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 shellbash)和 Z shellzsh)。每种 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 命令,不带任何参数,以列出当前目录中的文件和目录(可能没有):

command 复制代码
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,使用以下命令:

command 复制代码
ls -l

请注意,列表包括与之前相同的文件,但包括有关每个文件的附加信息。

如前所述,选项通常可以分组在一起。如果要同时使用 -l-a 选项,可以运行 ls -l -a,或者像这个命令一样将它们组合在一起:

command 复制代码
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 命令知识的良好基础。阅读本系列的下一个教程,学习如何导航、查看和编辑文件及其权限。

相关推荐
coppher2 分钟前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
xyz59916 分钟前
如何在 WSL 中删除指定版本的 Ubuntu 以及安装
linux·运维·ubuntu
亚空间仓鼠44 分钟前
OpenEuler系统常用服务(五)
linux·运维·服务器·网络
minji...2 小时前
Linux 线程同步与互斥(二) 线程同步,条件变量,pthread_cond_init/wait/signal/broadcast
linux·运维·开发语言·jvm·数据结构·c++
虚伪的空想家2 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
the sun342 小时前
从 QEMU 直接启动到 U-Boot 引导:嵌入式 Linux 启动流程的本质差异
linux·运维·服务器
草莓熊Lotso2 小时前
【Linux 线程进阶】进程 vs 线程资源划分 + 线程控制全详解
java·linux·运维·服务器·数据库·c++·mysql
ShineWinsu2 小时前
对于Linux:文件操作以及文件IO的解析
linux·c++·面试·笔试·io·shell·文件操作
-SGlow-2 小时前
Linux相关概念和易错知识点(52)(基于System V的信号量和消息队列)
linux·运维·服务器
江畔何人初2 小时前
TCP的三次握手与四次挥手
linux·服务器·网络·网络协议·tcp/ip