介绍
在本实验中,你将开启 Linux 命令行操作的基础之旅,具体在红帽企业 Linux(RHEL)环境中进行。你将通过动手实践掌握核心命令,学会识别用户和系统信息、管理用户密码以及检查各种文件类型。
通过实际练习,你将学会使用 cat、head 和 tail 查看文件内容,统计文件数据,并高效地浏览命令历史记录。此外,你还将掌握关键的命令行编辑快捷键,从而提升管理 Linux 系统的生产力和熟练度。
识别用户和系统时间
在此步骤中,你将学习如何识别当前登录系统的用户,以及如何使用基本的 Linux 命令显示系统的当前日期和时间。理解这些基础命令对于浏览和管理任何 Linux 环境都至关重要。
首先,让我们找出当前登录的用户是谁。whoami 命令正是用于此目的。它会打印当前用户的有效用户名。
在终端中输入以下命令:
whoami

你应该会看到输出 labex,这表明你当前是以 labex 用户身份登录的。
labex
接下来,我们将探索 date 命令。该命令用于显示或设置系统的日期和时间。如果不加任何选项使用它,它将以默认格式显示当前的日期和时间。
执行 date 命令:
date
输出将显示当前的星期几、月份、几号、时间(时:分:秒)、时区和年份。具体输出会根据你运行命令的时间而有所不同。
Mon Jul 22 10:30:45 AM UTC 2024
date 命令非常灵活,允许你使用格式说明符以各种方式格式化输出。例如,要仅以 24 小时制(时:分)显示当前时间,可以使用 +%R。
尝试仅显示时间:
date +%R
输出将类似于:
10:30
要仅以 MM/DD/YYYY 格式显示当前日期,可以使用 +%x。
尝试仅显示日期:
date +%x
输出将类似于:
07/22/2024
最后,你可以通过用分号(;)分隔,在同一行上执行多条命令。这对于快速运行一系列命令非常有用。
让我们尝试在同一行运行 whoami 和 date:
whoami; date
你将依次看到这两条命令的输出:
labex
Mon Jul 22 10:30:45 AM UTC 2024

管理用户密码与查看文件类型
在此步骤中,你将学习如何更改用户密码,以及如何使用 file 命令确定文件类型。理解文件类型对于在 Linux 中处理各种数据格式和可执行文件至关重要。
首先,让我们在不更改实验默认密码的情况下,观察密码修改的开始流程。passwd 命令用于更改用户密码。对于 labex 用户,它会提示输入当前密码,然后输入新密码。当前的密码是 labex。
在终端中输入以下命令:
passwd
在当前密码提示符下,输入 labex 并按回车键。当出现新密码提示符时,按 Ctrl+C 取消命令并返回 Shell。不要输入新密码。
Changing password for user labex.
Current password:
New password: ^C
注意: 在 Linux 中输入密码时,出于安全原因,屏幕上不会显示任何内容。这是正常行为,并不意味着虚拟机没有响应。尽管你看不到键入的字符,系统仍在接收你的输入。
接下来,我们将探索 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 命令检查文本文件的内容:cat、head 和 tail。这些命令是查看文件内容(尤其是配置文件和日志文件)的基础。
首先,让我们使用 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统计行数-w统计字数-c统计字符数
让我们仅统计 /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
当你在第一行后按回车键时,你的终端将显示一个 > 提示符(或类似提示符),表示它正在等待命令的其余部分。键入其余部分并再次按回车键。
==> /home/labex/project/words <==
1080
10-point
10th
==> /home/labex/project/linux.words <==
1080
10-point
10th
现在,让我们练习一些命令行编辑快捷键。这些快捷键在大多数现代 Linux 终端(如 Bash 或 Zsh)中均可使用。
键入一个长命令,但先不要按回车键:
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。从光标到开头的文本将被删除。
- 再次键入该命令。将光标放在行中间的某处(例如 "very" 之后)。按
- Ctrl+K:清除从光标到命令行末尾的内容。
- 再次键入该命令。将光标放在行中间的某处(例如 "very" 之后)。按
Ctrl+K。从光标到末尾的文本将被删除。
- 再次键入该命令。将光标放在行中间的某处(例如 "very" 之后)。按
- Ctrl+LeftArrow(或 Alt+B):跳转到命令行上上一个单词的开头。
- 再次键入该命令。将光标放在行尾。反复按
Ctrl+LeftArrow可逐个单词向左移动。
- 再次键入该命令。将光标放在行尾。反复按
- Ctrl+RightArrow(或 Alt+F):跳转到命令行上下一个单词的末尾。
- 将光标放在行首。反复按
Ctrl+RightArrow可逐个单词向右移动。
- 将光标放在行首。反复按
- Ctrl+R:在命令历史列表中搜索匹配的模式。
- 按
Ctrl+R。将出现(reverse-i-search)提示符。开始键入你以前执行过的命令的一部分,例如date。终端将显示历史记录中匹配的最近一条命令。继续按Ctrl+R以循环查看较早的匹配项。按回车键执行找到的命令,或按左/右箭头进行编辑。
- 按
一旦习惯了这些快捷键,它们将显著加快你的命令行交互速度。定期练习以建立肌肉记忆。
总结
在本实验中,你学习了用于识别用户和系统信息的 Linux 基础命令。你练习了使用 whoami 确定当前登录的用户,使用 date 显示系统的当前日期和时间(包括各种格式化选项,如用 +%R 表示时间,用 +%x 表示日期)。此外,你还了解了如何使用分号在单行上执行多条命令,从而提高了在命令行环境中的效率。



