Как создать длинный список всех файлов в этом каталоге в файл с именем etcFiles.txt (In Linux) - PullRequest
0 голосов
/ 28 марта 2020

Я начал учиться Linux. Но я не знаю, как решить эту проблему. Я хочу создать длинный список всех файлов в каталоге / etc / в файл с именем etcFiles.txt. Когда я пытаюсь запустить этот терминал, появляется сообщение «В доступе отказано». введите описание изображения здесь

1 Ответ

0 голосов
/ 28 марта 2020

Чтобы получить длинный список файлов в Linux, вам нужно использовать команду

ls -l

. Она отображает содержимое на консоли. Чтобы сохранить его в файле, необходимо перенаправить его, используя операцию перенаправления >, в файл, подобный

ls -l directoryPath > outputFile.txt.

Здесь, чтобы сохранить результат длинного листинга / etc / to файл, который необходимо использовать

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, и передайте команду в виде строки с параметром -c, как показано ниже

Решение 1

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

Решение 2

Вы можете использовать канал |, передавая вывод ls -l в команду, называемую tee, который в основном читает стандартный ввод и записывает его как в стандартный вывод, так и в один или несколько файлов. Так как вам нужно записать файл в каталог / etc /, вам нужно запустить tee с sudo для повышенных разрешений.

ls -l | sudo tee etcFiles.txt

Это также выведет вывод в приставка. Чтобы избежать вывода на консоль, перенаправьте вывод на /dev/null (примите его в качестве приемника мусорной корзины для выброса нежелательных выходов), и ваша последняя команда станет

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

...