在 Red Hat Enterprise Linux 中访问命令行

Red Hat Enterprise LinuxBeginner
立即练习

介绍

在这个实验(Lab)中,你将踏上 Linux 命令行操作的基础之旅,特别是在 Red Hat Enterprise Linux (RHEL) 环境中。你将通过实践获得使用基本命令的经验,以识别用户和系统信息、管理用户密码以及检查各种文件类型。

通过实际练习,你将学习使用 catheadtail 查看文件内容,统计文件数据,并有效地浏览你的命令历史记录。此外,你还将掌握关键的命令行编辑快捷方式,从而提高你在管理 Linux 系统方面的效率和熟练程度。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 中级 级别的实验,完成率为 53%。获得了学习者 99% 的好评率。

识别用户和系统时间

在本步骤中,你将学习如何使用基本的 Linux 命令来识别当前登录系统的用户以及如何显示系统的当前日期和时间。理解这些基本命令对于在任何 Linux 环境中进行导航和管理至关重要。

首先,让我们找出你当前登录的用户。whoami 命令用于此目的。它会打印出当前用户的有效用户名。

在你的终端中输入以下命令:

whoami
Screenshot of whoami command output

你应该会看到 labex 作为输出,这表明你以 labex 用户身份登录。

labex

接下来,我们将探索 date 命令。此命令用于显示或设置系统日期和时间。当不带任何选项使用时,它会以默认格式显示当前的日期和时间。

执行 date 命令:

date

输出将显示当前的星期几、月份、日期、时间(HH:MM:SS)、时区和年份。确切的输出将根据你运行命令的时间而有所不同。

Mon Jul 22 10:30:45 AM UTC 2024

date 命令非常灵活,允许你使用格式说明符以各种方式格式化输出。例如,要仅以 24 小时制(HH:MM)显示当前时间,你可以使用 +%R

尝试仅显示时间:

date +%R

输出将类似于:

10:30

要仅以 MM/DD/YYYY 格式显示当前日期,你可以使用 +%x

尝试仅显示日期:

date +%x

输出将类似于:

07/22/2024

最后,你可以通过分号(;)分隔在一行上执行多个命令。这对于快速运行一系列命令非常有用。

让我们尝试在同一行上运行 whoamidate

whoami; date

你将看到两个命令的输出,一个接一个:

labex
Mon Jul 22 10:30:45 AM UTC 2024
Screenshot of whoami and date commands output

管理用户密码和查看文件类型

在本步骤中,你将学习如何更改用户密码以及如何使用 file 命令确定文件类型。理解文件类型对于在 Linux 中处理各种数据格式和可执行文件至关重要。

首先,我们来练习更改用户密码。passwd 命令用于更改用户密码。对于 labex 用户,系统会提示你输入当前密码,然后两次输入新密码。请记住,labex 的当前密码是 labex

在你的终端中输入以下命令:

passwd

系统会提示你输入当前密码,然后两次输入新密码。在本实验中,你可以将新密码设置为 newpass重要提示: 请勿更改此实验的默认密码)。

Changing password for user labex.
Current password: old_password  <-- 输入 labex 并按 Enter
New password: new_password      <-- 输入 newpass 并按 Enter
BAD PASSWORD: The password is shorter than 8 characters

注意: 在 Linux 中输入密码时,出于安全原因,屏幕上不会显示任何内容。这是正常行为,并不意味着虚拟机没有响应。即使你看不到输入的字符,系统仍在接收你的输入。

这表明密码少于 8 个字符。在实际应用中,你应该设置一个至少 8 个字符长且更复杂的密码。但对于本次实验,我们不更改密码,所以你可以直接按 Enter 跳过密码更改。

接下来,我们将探索 file 命令。此命令用于确定文件类型。它对于理解文件包含什么类型的数据非常有用,尤其是在文件扩展名缺失或具有误导性时。

让我们检查 /etc/passwd 文件的类型。此文件包含系统中所有用户账户的信息。

file /etc/passwd

输出将表明 /etc/passwd 是一个 ASCII 文本文件。

/etc/passwd: ASCII text

现在,让我们检查一个可执行文件的类型,例如 /bin/bash,这是你当前使用的 shell 程序。

file /bin/bash

输出将显示 /bin/bash 是一个可执行文件,并附带其架构和其他属性的详细信息。

/bin/bash: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=<omitted>, for GNU/Linux <omitted>, stripped

最后,让我们确定一个目录的类型。我们将使用 /home 目录作为示例。

file /home

输出将简单地说明 /home 是一个目录。

/home: directory

这些示例展示了 file 命令如何帮助你快速识别 Linux 系统上不同文件和目录的性质。

使用 cat、head 和 tail 命令检查文件内容

在这一步中,你将学习如何使用三个基本的 Linux 命令:catheadtail 来检查文本文件的内容。这些命令是查看文件内容的基础,尤其适用于查看配置文件和日志文件。

首先,让我们使用 cat 命令。cat 命令(concatenate 的缩写)主要用于显示文件的内容。它也可以用于将多个文件合并成一个文件。

让我们查看 /etc/passwd 文件的全部内容。此文件包含用户帐户信息。

cat /etc/passwd

你将看到 /etc/passwd 文件的全部内容打印到你的终端。输出将很长,显示所有用户条目。

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...output omitted...

现在,让我们在你的 ~/project 目录下创建两个简单的文本文件,以演示 cat 与多个文件的使用。

创建 file1.txt

echo "Hello World!!" > ~/project/file1.txt

创建 file2.txt

echo "Introduction to Linux commands." > ~/project/file2.txt

现在,使用 cat 显示这两个文件的内容:

cat ~/project/file1.txt ~/project/file2.txt

输出将显示 file1.txt 的内容,后跟 file2.txt 的内容。

Hello World!!
Introduction to Linux commands.

接下来,我们将使用 head 命令。head 命令显示文件的前几行。默认情况下,它显示前 10 行。

让我们查看 /etc/passwd 的前 10 行:

head /etc/passwd

你将看到 /etc/passwd 文件的前 10 行。

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

你可以使用 -n 选项指定要显示的行数。例如,要查看前 3 行:

head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

最后,让我们使用 tail 命令。tail 命令显示文件的最后几行。默认情况下,它也显示最后 10 行。

让我们查看 /etc/passwd 的最后 10 行:

tail /etc/passwd

你将看到 /etc/passwd 文件的最后 10 行。

systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:998:996:systemd Resolver:/:/sbin/nologin
systemd-network:x:997:995:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System Message Bus:/:/sbin/nologin
polkitd:x:996:994:User for polkitd:/:/sbin/nologin
unbound:x:995:993:Unbound DNS resolver:/:/sbin/nologin
tss:x:59:59:TPM software stack:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:980:978::/run/gnome-initial-setup/:/sbin/nologin
dnsmasq:x:979:977:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin

head 类似,你可以使用 -n 选项指定要显示的行数。例如,要查看最后 3 行:

tail -n 3 /etc/passwd
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:980:978::/run/gnome-initial-setup/:/sbin/nologin
dnsmasq:x:979:977:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin

这些命令对于快速检查文件内容而无需在文本编辑器中打开它们非常有用,这对于大型文件或你只需要检查特定部分时尤其有用。

统计文件信息并使用命令历史记录

在这一步中,你将学习如何使用 wc 命令来统计文件中的行数、单词数和字符数,以及如何在你的终端中有效地使用命令历史记录功能。管理命令历史记录对于提高效率和回忆先前执行的命令至关重要。

首先,让我们探索 wc 命令(word count,字数统计)。此命令用于统计文件中行数、单词数和字符数。

让我们统计 /etc/passwd 文件中的行数、单词数和字符数:

wc /etc/passwd

输出将显示三个数字,后跟文件名:行数、单词数和字符数。确切的数字可能因你的系统配置而略有不同。

41   98 2338 /etc/passwd

你可以使用选项仅显示特定的计数:

  • -l 用于行数(lines)
  • -w 用于单词数(words)
  • -c 用于字符数(characters)

让我们仅统计 /etc/passwd/etc/group(包含有关用户组的信息)中的行数。我们可以使用分号在一行中完成此操作。

wc -l /etc/passwd
wc -l /etc/group

你将看到每个文件的行数:

41 /etc/passwd
63 /etc/group

现在,让我们仅统计 /etc/group/etc/hosts(将主机名映射到 IP 地址)中的字符数。

wc -c /etc/group /etc/hosts

输出将显示每个文件的字符数和总计数。

883 /etc/group
114 /etc/hosts
997 total

接下来,我们将学习命令历史记录。你的 shell 会记录你执行的所有命令。这对于重新运行命令或记住你之前做了什么非常有帮助。

要显示你的命令历史记录,请使用 history 命令:

history

你将看到一个编号列表,其中包含你在当前会话和先前会话中输入的所有命令。输出将根据你的活动而有很大差异。

...output omitted...
   23  clear
   24  whoami
   25  date
   26  file /etc/passwd
   27  cat /etc/passwd
   28  head /etc/passwd
   29  tail /etc/passwd
   30  wc /etc/passwd
   31  history

你可以使用感叹号(!)后跟命令编号或字符串,从你的历史记录中重新执行命令。

例如,要重新执行编号为 26 的命令(在上面的示例中是 file /etc/passwd,但对你来说会不同),请在你的 history 输出中找到它的编号并使用它:

!26 ## 将 26 替换为你的历史记录中 'file /etc/passwd' 的实际编号

shell 将首先显示它将要执行的命令,然后显示其输出:

file /etc/passwd
/etc/passwd: ASCII text

你还可以重新执行以特定字符串开头的最近命令。例如,要重新运行以 wc 开头的最后一个命令:

!wc

这将执行你运行的最后一个 wc 命令。

wc -c /etc/group /etc/hosts
883 /etc/group
114 /etc/hosts
997 total

这些历史记录功能可以通过让你快速回忆和重新执行复杂的命令而无需重新键入它们,从而显着加快你的工作流程。

练习命令行编辑快捷键

在这一步中,你将学习并练习有用的命令行编辑快捷键。这些快捷键可以显著提高你在终端中键入和修改命令的效率,让你无需频繁使用鼠标即可导航和编辑文本。

首先,让我们了解如何在多行上编写长命令。这可以提高复杂命令的可读性。你可以在行尾使用反斜杠(\)来指示命令在下一行继续。

让我们尝试使用多行命令显示两个字典文件的前 3 行。这些文件通常在 Linux 系统上找到,并包含单词列表。

head -n 3 \
  /home/labex/project/words \
  /home/labex/project/linux.words

当你在第一行之后按下 Enter 键时,你的终端将显示一个 > 提示符(或类似提示符),表明它正在等待命令的其余部分。键入剩余部分,然后再次按下 Enter 键。

==> /home/labex/project/words <==
1080
10-point
10th

==> /home/labex/project/linux.words <==
1080
10-point
10th

现在,让我们练习一些命令行编辑快捷键。这些快捷键适用于大多数现代 Linux 终端(如 Bash 或 Zsh)。

键入一个长命令,但不要立即按 Enter 键

echo "This is a very long command that we will edit using shortcuts."
  • Ctrl+A:跳转到命令行的开头。
    • 键入上面的命令,然后按 Ctrl+A。你的光标将移动到行的开头。
  • Ctrl+E:跳转到命令行的结尾。
    • 按下 Ctrl+A 后,按 Ctrl+E。你的光标将移回行的结尾。
  • Ctrl+U:从光标处清除到命令行的开头。
    • 再次键入命令。将你的光标放置在行的中间某处(例如,在 "very" 之后)。按 Ctrl+U。从光标到开头的文本将被删除。
  • Ctrl+K:从光标处清除到命令行的结尾。
    • 再次键入命令。将你的光标放置在行的中间某处(例如,在 "very" 之后)。按 Ctrl+K。从光标到结尾的文本将被删除。
  • Ctrl+LeftArrow(或 Alt+B):跳转到命令行上上一个单词的开头。
    • 再次键入命令。将你的光标放置在行的末尾。重复按 Ctrl+LeftArrow 以逐个单词向左移动。
  • Ctrl+RightArrow(或 Alt+F):跳转到命令行上下一个单词的结尾。
    • 将你的光标放置在行的开头。重复按 Ctrl+RightArrow 以逐个单词向右移动。
  • Ctrl+R:搜索命令的历史记录列表以查找模式。
    • Ctrl+R。将出现一个 (reverse-i-search) 提示符。开始键入你之前执行的命令的一部分,例如 date。终端将显示与你的历史记录匹配的最近命令。继续按 Ctrl+R 以循环浏览较旧的匹配项。按 Enter 键执行找到的命令,或按左/右箭头键进行编辑。

一旦你习惯了这些快捷键,它们将显着加快你的命令行交互速度。定期练习它们以建立肌肉记忆。

总结

在这个实验中,你学习了用于识别用户和系统信息的基本 Linux 命令。你练习了使用 whoami 来确定当前登录的用户,以及使用 date 来显示系统的当前日期和时间,包括各种格式化选项,例如 +%R 用于时间,+%x 用于日期。此外,你还发现了如何使用分号在一行中执行多个命令,从而提高了在命令行环境中的效率。