练习 3:Bash:Shell、.profile
、.bashrc
、.bash_history
。
当使用 CLI(命令行界面)来使用 Linux 时,你正在与一个名为 shell 的程序进行交互。所有你输入的都传递给 shell,它解释你输入的内容,执行参数扩展(这有点类似于代数中的花括号扩展),并为你执行程序。我们将使用的 Shell 称为 Bash,它代表 Bourne Again Shell,而 Bourne Again Shell 又是一个双关语。现在我将使用纯中文,向大家介绍一下 bash 的工作方式:
- 你
- 登入 Linux 虚拟机
- 你的身份由用户名(
user1
)和密码(123qwe
)确定。 - Bash 执行了。
- Bash
- 从你的配置中读取并执行首个命令,它定义了:
- 使用 Linux 时,你会看到什么颜色
- 你的编辑器是什么
- 你的浏览器是什么
- …
- 读取首个命令后,Bash 进入循环
- 没有通过输入
exit
或者按下<CTRL+D>
,来要求退出的时候:- 读取一行
- 解析这一行,扩展花括号
- 使用扩展参数执行命令
- 没有通过输入
- 从你的配置中读取并执行首个命令,它定义了:
我重复一下,你输入的任何命令都不会直接执行,而是首先扩展,然后执行。例如,当你输入ls *
时,星号*
将扩展为当前目录中所有文件的列表。
现在你将学习如何修改你的配置,以及如何编写和查看你的历史记录。
打印当前目录中的所有文件,包括隐藏的文件。选项
-al
告诉ls
以long
格式打印文件列表,并包括所有文件,包括隐藏文件。.profile
和是隐藏文件,因为它们以点.
开头。以点开头的每个文件都是隐藏的,这很简单。这两个特殊文件是 shell 脚本,它们包含登录时执行的指令。告诉你的 shell,你这里是 bash,输出一个字符串
Hello, $LOGNAME!
,用环境变量`$LOGNAME
替换$LOGNAME`,它包含你的登录名。将
.profile
文件复制到.profile.bak
。选项-v
让cp
详细输出,这意味着它会打印所有的操作。记住这个选项,它通常用于让命令给你提供比默认更多的信息。在
.bash_rc
配置文件中添加一行。从现在开始,每次登录到vm1
时, 都将执行该命令。注意,>>
代表向文件添加了一些东西,但>
意味着使用一些东西来替换文件。如果你不小心替换了.profile
而不是向它添加,则命令会向你返回旧的
.profile
文件。将所有命令历史写入文件。通常这是在会话结束时完成的,当你通过键入
exit
或按<CTRL> + D
关闭它。打印当前目录中的文件。选项
-tr
表示文件列表按时间反向排序。这意味着最近创建和修改的文件最后打印。注意你现在有两个新的文件。打印出保存命令历史记录的文件。注意你所有的输入都在这里。
关闭会话
在线搜索为什么
ls -al
告诉你“总共 20”,但是只有 5 个文件存在。 这是什么意思? 请注意,.
和..
是特殊文件条目,分别对应于当前目录和父目录的。登录
vm1
并键入man -K /etc/profile
,现在使用光标键滚动到INVOCATION
部分并阅读它。 要退出man
,请键入q
。 键入man man
来找出man -K
选项的含义。找到 bash 的 wiki 页面,并尝试阅读它。不用担心,如果它吓到你,只需要省略可怕的部分。