如何将此目录中所有文件的长列表创建为名为etcFiles.txt的文件(在Linux中)

如何将此目录中所有文件的长列表创建为名为etcFiles.txt的文件(在Linux中),linux,terminal,permissions,Linux,Terminal,Permissions,我开始学习Linux。但是我不知道如何解决这个问题。我想在一个名为etcFiles.txt的文件中创建一个/etc/目录中所有文件的长列表。当我尝试运行此终端时,显示“权限被拒绝”。要在Linux中长列表一个文件,需要使用以下命令 ls -l 它在控制台上显示内容。要将其存储在文件中,需要使用重定向操作将其重定向到如下文件 ls-l directoryPath>outputFile.txt 在这里,要将长列表的结果/etc/存储到您需要使用的文件中 ls -l /etc/ > etcFi

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

要在Linux中长列表一个文件,需要使用以下命令

ls -l
它在控制台上显示内容。要将其存储在文件中,需要使用重定向操作将其重定向到如下文件

ls-l directoryPath>outputFile.txt

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

ls -l /etc/ > etcFiles.txt
在链接的图像中,要将当前目录的内容存储到文件中,需要提供当前目录作为
ls
命令的参数。在Unix/Linux中,当前目录由
表示,因此如屏幕截图所示,您已经在
/etc/
目录中,要将当前目录的长列表内容(即
/etc/
存储到文件中,您需要使用

ls -l /etc/ > etcFiles.txt
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
的命令,该命令基本上读取标准输入并将其写入标准输出和一个或多个文件,可以使用管道
|
。 由于需要写入/etc/目录中的文件,因此需要使用
sudo
运行tee以获得提升的权限

ls-l|sudo tee etcFiles.txt

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


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

要在Linux中长列文件,需要使用以下命令

ls -l
它在控制台上显示内容。要将其存储在文件中,需要使用重定向操作将其重定向到如下文件

ls-l directoryPath>outputFile.txt

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

ls -l /etc/ > etcFiles.txt
在链接的图像中,要将当前目录的内容存储到文件中,需要提供当前目录作为
ls
命令的参数。在Unix/Linux中,当前目录由
表示,因此如屏幕截图所示,您已经在
/etc/
目录中,要将当前目录的长列表内容(即
/etc/
存储到文件中,您需要使用

ls -l /etc/ > etcFiles.txt
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
的命令,该命令基本上读取标准输入并将其写入标准输出和一个或多个文件,可以使用管道
|
。 由于需要写入/etc/目录中的文件,因此需要使用
sudo
运行tee以获得提升的权限

ls-l|sudo tee etcFiles.txt

这也会将输出打印到控制台。为了避免输出到控制台,将输出重定向到
/dev/null
(将其作为垃圾箱接收器)