在 vi 中创建文本文件会改变我的电脑吗?

BJs*_*ife 9 command-line vi

我知道 Linux 是一个建立在文本文件上的操作系统。我想做的是使用vi我学到的所有各种命令创建一个文件。这样我就可以很容易地使用/in找到每个单独的命令vi。但我只想这样做,如果它不改变我的计算机的运行方式。这是个好主意吗?

tho*_*ter 34

编写文本文件不会“改变计算机的运行方式”。

特别是,为了做这样的事情,你必须做其中之一

  • 覆盖一些重要文件
  • 将您的文件写入一个特殊的受保护位置,例如 /etc 中的 *.d 目录;你将无权这样做
  • 标记文件可执行文件并将其放在您的路径中

由于您不会明确地做这样的事情,所以没有什么可担心的。特别是,另一个答案通过建议您的文本文件需要在每一行以散列开头来达到不必要的长度。他们当然不会。仅将文本文件存储在普通主目录中的某处不会做任何事情。

  • 作为一个有点独立的问题,我认为最重要的一点(这个答案是,另一个不是)是创建任意文件不会改变系统。您只能通过创建其他进程正在寻找的文件来影响系统,或者通过执行您创建的文件(如果它包含影响系统的代码)来影响系统 - 但这属于不运行完全未知的 shell 命令的一般建议,无论您是否正在处理文件,这都是明智的。 (9认同)
  • 我认为_不_总是更好的选择更安全的一面。安全是有代价的,在某一点上,降低的风险不再值得付出代价。例如,当它超过您试图保持安全的事物的价值时(在此参数有意义的情况下)。在 [security.SE] 上,您可以找到很多讨论适当的安全性是如何权衡的答案,并且唯一完全安全的系统也完全没有用,因此在所有情况下都坚持完美的安全性是愚蠢的。 (8认同)
  • 我建议放置`#`,这样就不会出现任何无意的情况。我认为站在更安全的一边总是更好。 (3认同)
  • 给我做一个三明治。`你将无权这样做`。sudo 给我做一个三明治。`是的,是的,先生!` (2认同)
  • @heemayl 为什么不在文件 `exit` 中创建第一行? (2认同)

hee*_*ayl 15

您可以将所学的所有命令保存在一个文件中,但需要注意一些要点:

  • 不要使文件可执行
  • 从不source文件
  • 最好的方法是#在所有命令的开头放置一个以注释掉所有命令,这样它们就不会被意外执行。通过这种方式,您可以实际搜索所需的命令,而且没有风险。您可以#通过以下命令在每一行的开头添加:

    sed -i 's/^/#/' <file_name>

编辑:我已经给出了第三点作为一种极端的安全措施,因为“neon_overload”和“David Z”指出将哈希值放在所有行中太广泛了,因此不需要,在这种情况下我会与他们一起。同样正如“random832”所指出的,我的第三点的一个更好的替代方法是用 启动文件exit,因为以后不会执行任何命令。

EDIT-2: “Rinzwind”提到了两个要点:

  • 不要覆盖现有文件

  • 将文件存储在用户的主目录 ( /home/$USER/) 中。

  • `在所有命令的开头放一个# 来注释掉所有命令,这样它们就不会被意外执行` 我不太确定这应该是一个严肃的建议还是一个笑话。我的讽刺探测器今天让我失望了。 (4认同)
  • 他不能在文件的开头放一个“退出”或类似的东西,而不是评论每一行吗? (4认同)

Fab*_*.sk 7

neon_overload 有一个很好的答案。

我将在您问题的某个方面进行一些扩展 - 我会对此发表评论,但我在这里没有足够的声誉。

Linux 作为一种操作系统,在很大程度上不是基于文本文件。也就是说,我可以看出你来自哪里。对于外部观察者来说,编辑和启动“文本”文件有很多工作要做,尤其是与 Windows 相比。

这有几个原因,其中一些是:

  • Linux 中没有注册表系统,就像在 Windows 中一样。因此,应用程序通常将其设置存储在文本文件中,并且系统会指示您编辑它们,而不是像在 Windows 中那样编辑注册表。
  • Linux 被广泛用作服务器系统,许多在台式机上使用它的人确实使用服务器系统。与 Windows Server 不同,Linux 服务器通常在没有图形界面的情况下运行。因此,预期在 Linux 服务器上运行的产品,实际上,它们的用户和管理员,预期在没有图形界面的情况下工作。只能在 Windows 上运行的产品(和系统功能,值得一提的是)通常更以 GUI 为中心(比如 MS SQL)
  • Linux 脚本系统比 Windows 更常见和更透明。您会在 Windows 上看到脚本 - 但它们会被称为 something.vbs 或 another.bat。您不一定会意识到它们是文本文件 - 但是,考虑到我的第二点,在 Linux 中窥探 .sh 文件更为常见。
  • 最后,许多 Linux 用户习惯于在没有图形界面的情况下工作,并且在许多情况下,他们宁愿像没有 GUI 一样直接编辑文件,而不是摸索图形工具。我知道当我想在系统中做一些更深入的事情时,我只是启动终端,我的许多同事也是如此。