Чтобы получить длинный список файлов в 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