我知道 Linux 是一个基于文本文件的操作系统。我想做的是使用vi
我学到的所有各种命令创建一个文件。这样我就可以使用/
in非常轻松地找到每个单独的命令vi
。但我只在它不会改变我的计算机运行方式的情况下才想这样做。这是一个好主意吗?
答案1
编写文本文件不会“改变计算机的运行方式”。
具体来说,为了做这样的事情,你必须做以下其中一件事
- 覆盖一些重要文件
- 将文件写入特殊受保护位置,例如 /etc 中的 *.d 目录;您无权执行此操作
- 将文件标记为可执行文件并将其放在您的路径中
由于您不会明确地做这样的事情,所以没有什么可担心的。特别是,另一个答案不必要地建议您的文本文件每行都需要以哈希开头。当然他们不会。仅仅将文本文件存储在普通主目录中的某个位置不会产生任何效果。
答案2
您可以将学到的所有命令保存在一个文件中,但需要注意以下几点:
- 不要使文件可执行
- 永远不要
source
文件 最好的方法是
#
在所有命令的开头添加一个,以注释掉所有命令,这样它们就不会被意外执行。这样你就可以真正搜索到你需要的命令,而且不会有风险。你可以#
在每行的开头添加以下命令:sed -i 's/^/#/' <file_name>
编辑:我提出第三点是作为一种极端的安全措施,因为“neon_overload”和“David Z”指出,在所有行中都使用哈希值太过广泛,因此没有必要,在这方面我赞同他们的观点。此外,正如“random832”所指出的那样,比我的第三点更好的替代方案是使用 来启动文件exit
,因为这样就不会执行后续命令。
编辑-2:“Rinzwind”提到了两个要点:
不要覆盖现有文件
将文件存储在用户的主目录中(
/home/$USER/
)。
答案3
neon_overload 有一个非常好的答案。
我将就您问题的某个方面稍微展开一下 - 我会对此发表评论,但我在这里没有足够的声誉。
Linux 作为一种操作系统,很大程度上不是基于文本文件的。话虽如此,我还是能理解你的意思。对于一个局外人来说,编辑和启动“文本”文件需要做很多事情,尤其是与 Windows 相比。
这有几个原因,其中一些是:
- Linux 中没有像 Windows 那样的注册表系统。因此,应用程序通常将其设置存储在文本文件中,并会指示您编辑这些设置,而不是像 Windows 那样编辑注册表。
- Linux 被广泛用作服务器系统,许多在桌面上使用 Linux 的人也使用服务器系统。与 Windows Server 不同,Linux 服务器通常没有图形界面。因此,预计在 Linux 服务器上运行的产品以及它们的用户和管理员都无需图形界面即可运行。预计仅在 Windows 上运行的产品(以及值得一提的系统功能)通常更以 GUI 为中心(例如 MS SQL)
- Linux 脚本系统比 Windows 更常见,也更透明。您会在 Windows 上看到脚本 - 但它们会被称为 something.vbs 或 another.bat。您不一定意识到它们是文本文件 - 但是,考虑到我的第二点,在 Linux 中窥探 .sh 文件更为常见。
- 最后,许多 Linux 用户习惯于不使用图形界面工作,对于很多事情,他们宁愿直接编辑文件,就像不使用 GUI 一样,而不是摸索着使用图形工具。我知道,当我想在系统中做更深入的事情时,我只需启动终端,我的许多同事也是如此。
答案4
vi
是文本编辑,因此,如果您想要的只是将一些文本片段存储在文本文件中,然后搜索它,那么您可以使用内置命令直接从终端完成所有操作。
向文本文件写入注释(如果文件不存在则创建该文件):
回显包含重要数据的注释 >> info.txt
重要提示:请注意单引号和双引号,如果要包含它们,请在其前面加上斜线。
在文件中搜索一些文本(例如
important
):grep --color -i 重要信息.txt
为了避免--color -i
在您的 中键入应该别名的内容~/.bashrc
。
您还可以向现有或不存在的文本文件添加多行文本:
cat >> info2.txt
然后输入或粘贴文本,完成后按CTR+Z
至于更改系统,不,只要您在自己的主文件夹中创建文件但不执行它们,它就不会改变系统的工作方式(即使文件不可执行,您也可以执行它,例如使用bash myFile
)。另外,请确保仅在需要时才使用 root 权限。
最后,你对基于文件系统在某种程度上误导了你:大多数操作系统都有存储重要设置的文件,这些设置会深深影响系统的运行方式,但它们位于预定义的位置,通常受到保护,以防止普通用户修改。
但也有可能很容易弄巧成拙,例如,如果作为普通用户,您有一个添加到的本地“可执行”文件夹,而该文件夹中恰好有与内置常用实用程序或PATH
bash 关键字同名的可执行文件,如test
,,,,,等echo
。cat
for
cut