【问题标题】:How to Create a long listing of all the files in this directory to a file called etcFiles.txt (In Linux)如何将此目录中所有文件的长列表创建到名为 etcFiles.txt 的文件中(在 Linux 中)
【发布时间】:2020-07-08 23:49:44
【问题描述】:

我开始学习 Linux。但我不知道如何解决这个问题。我想将 /etc/ 目录中所有文件的长列表创建到一个名为 etcFiles.txt 的文件中。当我尝试运行此终端时,显示“权限被拒绝”。enter image description here

【问题讨论】:

    标签: linux terminal permissions


    【解决方案1】:

    要在 Linux 中长列表文件,你需要使用命令

    ls -l
    

    它在控制台上显示内容。要将其存储在文件中,您需要使用重定向操作 > 将其重定向到类似

    的文件

    ls -l directoryPath > outputFile.txt.

    在这里,将长列表/etc/的结果存储到您需要使用的文件中

    ls -l /etc/ > etcFiles.txt
    

    在链接的图像中,要将当前目录的内容存储到文件中,您需要将当前目录作为参数提供给ls 命令。在Unix/Linux中,当前目录用.表示,所以如截图所示,你已经在/etc/目录下,要将当前目录的长列表内容即/etc/存储到文件中,你需要使用

    ls -l . > ~/etcFiles.txt

    但是ls命令将当前目录作为默认参数.可以避免上面的,下面的命令也可以工作

    ls -l > ~/etcFiles.txt

    Linux /Unix 默认情况下不授予任何用户在/etc/ 目录中写入/创建文件的权限,并且需要提升权限才能在此目录中进行任何更改。由于您无权在 /etc/ 目录中创建新文件,因此您需要将输出重定向到您具有上述权限的某个目录中的文件,我们将其存储在主目录 ~ 中,否则您必须使用sudo 获得超级用户权限才能在/etc/ 本身中创建新文件。

    由于我们需要重定向操作符在/etc/中写入文件,我们不能简单地运行

    sudo ls -l > etcFiles.txt

    因为ls 将在超级用户权限下运行,而重定向将在默认用户权限下完成。因此,您需要同时加入两者才能获得更高的权限。

    为了实现这一点,使用sudo sh 生成一个具有提升权限的新shell,并将命令作为带有-c 选项的字符串传递,如下所示

    解决方案 1

    sudo sh -c 'ls -l . > etcFiles.txt'

    解决方案 2

    您可以通过管道|ls -l 的输出传送到一个名为tee 的命令来使用管道tee,该命令基本上读取标准输入并将其写入标准输出和一个或多个文件。 由于您需要写入 /etc/ 目录中的文件,因此您需要使用 sudo 运行 tee 以获得提升的权限。

    ls -l | sudo tee etcFiles.txt

    这也会将输出打印到控制台。为避免输出到控制台,请将输出重定向到/dev/null(将其作为垃圾箱接收器以抛出不需要的输出),您的最终命令变为

    ls -l | sudo tee etcFiles.txt > /dev/null

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      相关资源
      最近更新 更多