Как сохранить файл в консоли

Обновлено: 22.11.2024

Сохранение вывода команды в файл полезно, если вы пытаетесь диагностировать проблему, и это очень просто сделать.

Когда вы запускаете команду в окне терминала, вывод команды обычно выводится в терминал или на экран, чтобы вы могли сразу его прочитать. Вы также можете распечатать вывод команды в файл, если хотите его сохранить.

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

Сегодня мы рассмотрим, как отправить вывод команды в текстовый файл в оболочке bash в Windows, Mac и Linux.

Примечание. В нашем примере мы будем использовать терминал Mac, но он работает одинаково в оболочке bash в Linux и в новой оболочке bash в Windows 10.

Перенаправить вывод только в файл

Существует два оператора для перенаправления вывода команды в файл, а не на экран.

Символ > создает новый файл, если он отсутствует, или перезаписывает файл, если он уже существует. >> также создает новый файл, если он отсутствует, но добавляет текст в конец файла, если он уже существует, а не перезаписывает файл.

Чтобы перенаправить вывод команды в файл, введите команду, укажите оператор > или >>, а затем укажите путь к файлу, в который вы хотите перенаправить вывод. Например, команда ls выводит список файлов и папок в текущем каталоге. При выполнении следующей команды список файлов и папок будет записан в файл ls_output.txt в папке TerminalOutput.

Замените /path/to/file полным путем к файлу, который вы хотите использовать.

Это команда для нашего примера.

Чтобы просмотреть содержимое файла в окне терминала, используйте команду cat, как показано в следующей команде. Снова замените /path/to/file полным путем к файлу, который вы хотите просмотреть.

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

Например, мы добавим системную информацию в конец созданного выше файла. Итак, в следующей строке uname -a — это команда, за которой следует оператор перенаправления >>. Затем полный путь к файлу, к которому мы хотим добавить вывод команды uname.

Параметр -a в команде uname выводит всю доступную системную информацию.

Чтобы просмотреть файл с добавленной информацией в окне терминала, введите следующую команду, указав полный путь к вашему файлу.

Повторяйте этот процесс столько раз, сколько вам нужно, чтобы добавлять выходные данные команды в конец файла.

Вот еще один пример отправки вывода команды ls в виде дерева каталогов с рекурсивным списком подкаталогов (параметр R) и одним файлом в строке (параметр 1).

Затем мы используем команду cat, как упоминалось ранее, для просмотра содержимого файла в окне терминала.

Вывести вывод на экран и перенаправить в файл

Операторы > и >> не отображают вывод команды на экран. Вывод отправляется только в файл.

Если вы хотите отправить вывод в файл и увидеть его на экране, используйте команду tee вместо операторов > и >>.

Чтобы использовать команду tee, вы должны направить вывод выполняемой вами команды, например ls, в команду tee, используя оператор вертикальной черты (|). Например, следующая команда берет вывод команды ls и передает его команде tee. Затем команда tee отправляет эти выходные данные на экран и в файл, который вы указываете, используя полный путь к файлу.

Приведенная выше команда заменяет все содержимое файла или создает новое, если оно не существует, точно так же, как оператор >. Мы использовали следующую команду cat для просмотра содержимого нашего файла в окне терминала.

Чтобы использовать команду tee для вывода вывода на экран и добавления его в конец файла, введите следующую команду. Здесь мы добавляем полную системную информацию в конец файла с помощью команды uname -a, точно так же, как мы делали это с оператором >>, но также отправляем вывод на экран.

Следующая команда представляет собой первую версию рекурсивной печати дерева каталогов в файл и на экран, по одному файлу в каждой строке, точно так же, как мы делали с оператором >.

Затем мы снова используем команду cat для просмотра содержимого файла.

Но подождите, это еще не все

Есть много других способов перенаправить вывод, включая ошибки, в файл.Вы можете прочитать о различных операторах и командах, используемых для перенаправления вывода, в главе «Перенаправление ввода-вывода» Advanced Bash Scripting Guide.

Есть ли способ без использования какого-либо программного обеспечения? Я хотел бы знать, как это сделать.

10 ответов 10

Да, это возможно, просто перенаправьте вывод (AKA stdout ) в файл:

Или, если вы хотите добавить данные:

Если вы хотите использовать stderr, используйте это:

или это добавить:

если вы хотите, чтобы и stderr, и вывод отображались на консоли и в файле, используйте это:

(Если вам нужен только вывод, отбросьте 2 выше)

Обратите внимание, что someCommand 2> someFile.txt и someCommand 2>> someFile.txt также перенаправляют stterr в someFile.txt

Я пытаюсь сделать это с помощью команды gcc, но это не работает. Он работает с другими командами, но не с этой. Он просто создает выходной файл, в котором ничего нет.

@Nik-Lz Часто это происходит из-за того, что команда отправляет все свои выходные данные на стандартный вывод. Если gcc генерирует сообщения об ошибках, это кажется вероятным. См. комментарий Slothworks о том, как захватить stderr вместо stdout.

Для записи вывода команды в файл существует 10 наиболее часто используемых способов.

Обзор:

Обратите внимание, что нет. в колонке синтаксиса означает "не существует".
Существует способ, но он слишком сложен, чтобы поместиться в колонку. Вы можете найти полезную ссылку об этом в разделе «Список».

Стандартный поток вывода будет перенаправлен только в файл, он не будет виден в терминале. Если файл уже существует, он будет перезаписан.

Стандартный поток вывода будет перенаправлен только в файл, он не будет виден в терминале. Если файл уже существует, новые данные будут добавлены в конец файла.

команда 2> output.txt

Стандартный поток ошибок будет перенаправлен только в файл, он не будет виден в терминале. Если файл уже существует, он будет перезаписан.

команда 2>> output.txt

Стандартный поток ошибок будет перенаправлен только в файл, он не будет виден в терминале. Если файл уже существует, новые данные будут добавлены в конец файла.

И стандартный вывод, и стандартный поток ошибок будут перенаправлены только в файл, в терминале ничего не будет видно. Если файл уже существует, он будет перезаписан.

И стандартный вывод, и стандартный поток ошибок будут перенаправлены только в файл, в терминале ничего не будет видно. Если файл уже существует, новые данные будут добавлены в конец файла..

команда | файл output.txt

Стандартный поток вывода будет скопирован в файл, он по-прежнему будет виден в терминале. Если файл уже существует, он будет перезаписан.

команда | тройник -a output.txt

Стандартный поток вывода будет скопирован в файл, он по-прежнему будет виден в терминале. Если файл уже существует, новые данные будут добавлены в конец файла.

Bash не имеет сокращенного синтаксиса, позволяющего передавать только StdErr во вторую команду, которая здесь потребуется в сочетании с tee снова для завершения таблицы. Если вам действительно нужно что-то подобное, посмотрите «Как передать stderr, а не stdout?» о переполнении стека, чтобы узнать, как это можно сделать, например. путем замены потоков или использования подстановки процессов.

команда |& tee output.txt

Как стандартный вывод, так и стандартные потоки ошибок будут скопированы в файл, оставаясь при этом видимыми в терминале. Если файл уже существует, он будет перезаписан.

команда |& tee -a output.txt

Как стандартный вывод, так и стандартные потоки ошибок будут скопированы в файл, оставаясь при этом видимыми в терминале. Если файл уже существует, новые данные будут добавлены в конец файла.

В некоторых случаях, когда вы сталкиваетесь с проблемами, нашей службе поддержки будет очень полезно предоставить им выходной файл консоли браузера.

Действия для получения журналов консоли в большинстве популярных браузеров очень похожи, но могут быть небольшие различия. В этой статье вы узнаете, как получить их в разных браузерах. Пожалуйста, проверьте шаги ниже.

СОДЕРЖАНИЕ

Google Chrome

Шаг 1. Откройте инструменты разработчика

Нажмите F12 или щелкните правой кнопкой мыши в любой части страницы и выберите "Проверить" в раскрывающемся списке:

Шаг 2. Перейдите на вкладку "Консоль"

После открытия инструментов разработчика вкладка Элементы станет активной. Перейдите на вкладку Консоль:

Шаг 3. Сохраните журналы

Вариант 1:

Щелкните правой кнопкой мыши в любом месте содержимого консоли и выберите "Сохранить как", как показано ниже:

Вариант 2:

Если вы не видите никаких данных в сохраненном файле, просто скопируйте и вставьте журналы консоли в любой текстовый редактор (например, Блокнот) и сохраните его как текстовый файл.

Файрфокс

Шаг 1. Откройте инструменты веб-разработчика

Нажмите кнопку меню "гамбургер" (1) и выберите вариант "Веб-разработчик" в раскрывающемся списке (2):

Шаг 2. Откройте веб-консоль

Выберите веб-консоль из следующих вариантов:

Вы увидите открытую вкладку Консоль:

Шаг 3. Сохраните журналы

Выделите текст журнала консоли, скопируйте и вставьте его в любой текстовый редактор (например, Блокнот) и сохраните как текстовый файл.

Интернет-обозреватель

Шаг 1. Откройте инструменты разработчика

Нажмите F12 или щелкните значок зубчатого колеса в правом верхнем углу, чтобы открыть Инструменты (1), и выберите параметр Инструменты разработчика F12 в раскрывающемся списке (2):

Шаг 2. Перейдите на вкладку "Консоль"

После открытия инструментов разработчика активируется вкладка DOM Explorer. Перейдите на вкладку Консоль:

Шаг 3. Сохраните журналы

Щелкните правой кнопкой мыши в любом месте содержимого консоли и выберите "Копировать все", как показано ниже:

Вставьте скопированное содержимое в любой текстовый редактор (например, Блокнот) и сохраните его как текстовый файл.

Майкрософт Эдж

Шаг 1. Откройте инструменты разработчика

Нажмите F12 или в правом верхнем углу страницы нажмите . , чтобы открыть настройки (1), выберите параметр «Дополнительные инструменты» (2), а затем «Инструменты разработчика» (3):

Шаг 2. Перейдите на вкладку "Консоль"

После открытия инструментов разработчика вкладка Элементы станет активной. Перейдите на вкладку Консоль:

Шаг 3. Сохраните журналы

Вариант 1:

Щелкните правой кнопкой мыши в любом месте содержимого консоли и выберите "Сохранить как", как показано ниже:

Вариант 2:

Если вы не видите никаких данных в сохраненном файле, просто скопируйте и вставьте журналы консоли в любой текстовый редактор (например, Блокнот) и сохраните его как текстовый файл.

Сафари

Необходимое условие: включить меню разработки Apple Safari

По умолчанию меню «Разработка» в Safari отключено. Чтобы включить его, откройте меню Safari и выберите параметр «Настройки».

Перейдите на вкладку Дополнительно.

Поставьте галочку для меню "Показать разработку".

Убедитесь, что вы видите меню "Разработка" между меню Windows и закладками.

Закройте настройки.

Шаг 1. Откройте инструменты разработчика

Выберите меню "Разработка" (1), а затем "Показать веб-инспектор" (2).

Шаг 2. Перейдите на вкладку "Консоль"

После открытия веб-инспектора вкладка Элементы станет активной. Перейдите на вкладку Консоль:

Шаг 3. Сохраните журналы

Перед сохранением журналов установите флажок «Сохранить журнал» (1), убедитесь, что вы выбрали фильтр для «Все» (2) и нажмите кнопку «Очистить журнал» (3), как показано ниже:

Воспроизведите проблему, с которой вы столкнулись. Теперь действия консоли записываются.
Выделите текст в консоли с помощью горячей клавиши Cmd+A или щелкните правой кнопкой мыши в любом месте содержимого консоли и выберите «Копировать выделенное»:

Вставьте его в любой текстовый редактор (например, Блокнот) и сохраните как текстовый файл.

Опера

Шаг 1. Откройте инструменты разработчика

Щелкните правой кнопкой мыши в любом месте страницы и выберите «Проверить элемент» из предложенных вариантов:

Шаг 2. Перейдите на вкладку "Консоль"

После открытия инструментов разработчика вкладка Элементы станет активной. Перейдите на вкладку Консоль:

Шаг 3. Сохраните журналы

Вариант 1:

Щелкните правой кнопкой мыши в любом месте содержимого консоли и выберите "Сохранить как", как показано ниже:

Вариант 2:

Если вы не видите никаких данных в сохраненном файле, просто скопируйте и вставьте журналы консоли в любой текстовый редактор (например, Блокнот) и сохраните его как текстовый файл.

Шаг 4. Отправьте сохраненный файл в нашу службу поддержки

Прикрепите файл консоли к ответу по электронной почте. Наша служба поддержки проверит его и свяжется с вами в ближайшее время.

Некоторое время назад мне приходилось сканировать сайт в поисках ссылок, а затем использовать эти ссылки на страницы для сканирования данных с помощью selenium или puppeteer. Настройка контента на сайте была немного странной, поэтому я не мог начать сразу с селена и узла. Также, к сожалению, данных на сайте было много. Мне пришлось быстро придумать подход, чтобы сначала просканировать все ссылки, а затем передать их для детального сканирования каждой страницы.

Именно здесь я научился интересным вещам с API консоли браузера. Вы можете использовать это на любом веб-сайте без особых настроек, так как это всего лишь JavaScript.

Давайте перейдем к техническим деталям.

Обзор высокого уровня

Для обхода всех ссылок на странице я написал небольшой кусок JS в консоли.Этот JavaScript сканирует все ссылки (занимает 1–2 часа, так как он также выполняет разбиение на страницы) и выводит json-файл со всеми просканированными данными. Следует помнить, что вам нужно убедиться, что веб-сайт работает аналогично одностраничному приложению. В противном случае он не перезагрузит страницу, если вы хотите просканировать более одной страницы . Если это не так, ваш код консоли исчезнет.

В некоторых случаях Medium не обновляет страницу. А пока давайте просканируем историю и автоматически сохраним очищенные данные в файле из консоли после очистки.

Но прежде чем мы это сделаем, вот краткая демонстрация финального исполнения.

1. Получить экземпляр объекта консоли из браузера

Код просто пытается получить экземпляр объекта консоли на основе текущего браузера пользователя. Вы можете проигнорировать и напрямую назначить экземпляр вашему браузеру.

Например, если вы используете Chrome, приведенного ниже кода должно быть достаточно.

2. Определение младшей вспомогательной функции

Я предполагаю, что вы уже открыли историю Medium в своем браузере. Строки с 6 по 12 определяют атрибуты элемента DOM, которые можно использовать для извлечения названия истории, количества хлопков, имени пользователя, URL-адреса изображения профиля, описания профиля и времени чтения истории соответственно.

Это основные вещи, которые я хочу показать в этой истории. Вы можете добавить еще несколько элементов, таких как извлечение ссылок из истории, всех изображений или встроенных ссылок.

3. Определение нашей старшей вспомогательной функции — чудовище

Поскольку мы сканируем страницу в поисках разных элементов, мы сохраняем их в коллекции. Эта коллекция будет передана одной из основных функций.

Мы определили имя функции console.save . Задача этой функции — сделать дамп файла csv/json с переданными данными.

Он создает объект Blob с нашими данными. Объект Blob представляет собой файловый объект неизменяемых необработанных данных. BLOB-объекты представляют данные, которые не обязательно имеют собственный формат JavaScript.

Создать BLOB-объект прикреплен к тегу ссылки ;a>, по которому запускается событие клика.

Вот краткая демонстрация console.save с небольшим массивом, переданным в качестве данных.

Соединяя все фрагменты кода, мы имеем следующее:

  1. Экземпляр API консоли
  2. Вспомогательная функция для извлечения элементов
  3. Консольная функция сохранения для создания файла

Давайте выполним наш console.save() в браузере, чтобы сохранить данные в файл. Для этого вы можете перейти в историю на Medium и выполнить этот код в консоли браузера.

Я показал демонстрацию с извлечением данных с одной страницы, но тот же код можно настроить для сканирования нескольких статей с главной страницы издателя. Возьмем пример freeCodeCamp: вы можете переходить от одной истории к другой и возвращаться (используя кнопку «Назад» в браузере) на домашнюю страницу издателя без обновления страницы.

Ниже приведен минимальный код, необходимый для извлечения нескольких статей с главной страницы издателя.

Давайте посмотрим на код в действии для получения описания профиля из нескольких историй.

Для любого такого типа приложений после удаления данных вы можете передать их нашей функции console.save и сохранить в файле.

Функция сохранения консоли может быть быстро присоединена к коду вашей консоли и может помочь вам выгрузить данные в файл. Я не говорю, что вы должны использовать консоль для очистки данных, но иногда это будет намного быстрее, поскольку мы все хорошо знакомы с работой с DOM с помощью селекторов CSS.

Вы можете скачать код с Github

Спасибо, что прочитали эту статью! Надеюсь, это дало вам крутую идею быстро очистить некоторые данные без особых настроек. Нажмите кнопку хлопать, если это понравилось! Если у вас есть какие-либо вопросы, отправьте мне электронное письмо (praveend806 [at] gmail [dot] com).

Читайте также: