Cmd добавить текст в конец файла
Обновлено: 21.11.2024
Один из самых полезных способов ведения журнала и устранения неполадок в поведении команд или пакетных заданий, запускаемых в Windows, — это перенаправление вывода в файл.
Однако существует несколько способов перенаправить запись из командной строки в файл. Выбранный вами вариант зависит от того, как вы хотите просмотреть выходные данные команды.
Как работает вывод командной строки Windows
Когда вы вводите команду в консоли Windows (командной строке), вывод этой команды направляется в два отдельных потока.
- STDOUT: Стандартный выход — это место, куда направляются любые стандартные ответы от команд. Например, стандартным ответом на команду DIR является список файлов внутри каталога.
- STDERR: стандартная ошибка — это место, куда попадают любые сообщения об ошибках, если есть проблема с командой. Например, если в каталоге нет файлов, команда DIR выведет «Файл не найден» в поток стандартных ошибок.
Вы можете перенаправить вывод в файл в Windows для обоих этих потоков вывода.
Перенаправить запись стандартного вывода в новый файл
Есть два способа перенаправить стандартный вывод команды в файл. Во-первых, каждый раз, когда вы запускаете команду, вывод вывода команды записывается в новый файл.
Для этого откройте командную строку и введите:
Символ > указывает консоли вывести STDOUT в файл с указанным вами именем.
Когда вы запустите эту команду, вы заметите, что в командном окне нет никакого ответа, кроме ошибки, что файл не существует.
Это связано с тем, что стандартный вывод команды был перенаправлен в файл с именем myoutput.txt. Теперь файл существует в том же каталоге, где вы выполнили команду. Стандартный вывод ошибок по-прежнему отображается как обычно.
Примечание. Не забудьте изменить активный каталог для командной строки перед запуском команды. Таким образом, вы будете знать, где хранятся выходные файлы.
Вы можете просмотреть стандартный вывод файла, введя «myoutput.txt» в командном окне. Это откроет текстовый файл в программе просмотра текстовых файлов по умолчанию. Для большинства людей это обычно Notepad.exe.
При следующем запуске той же команды предыдущий выходной файл будет удален. Новый выходной файл будет воссоздан с выходными данными последней команды.
Перенаправить запись стандартного вывода в один и тот же файл
Что делать, если вы не хотите перезаписывать тот же файл? Другой вариант — использовать >> вместо > для перенаправления в выходной файл. В этом примере вы должны ввести:
Вы увидите тот же результат (только ошибку).
Но в этом случае вместо перезаписи выходного файла эта команда добавляет новый вывод к существующему выходному файлу.
Каждый раз, когда вы запускаете команду и добавляете выходные данные в файл, она записывает новый стандартный вывод в конец существующего файла.
Перенаправить стандартную ошибку в файл
Точно так же, как вы можете перенаправить запись стандартного вывода в файл, вы также можете вывести стандартный поток ошибок в файл.
Для этого вам нужно будет добавить 2> в конец команды, а затем выходной файл ошибок, который вы хотите создать.
В этом примере вы введете команду:
При этом стандартный поток вывода отправляется в myoutput.txt, а стандартный поток ошибок — в output.err. В результате в окне консоли вообще не отображается поток вывода.
Однако вы можете просмотреть сообщения об ошибках, набрав output.err. Это откроет файл в программе просмотра текстовых файлов по умолчанию.
Как видите, любые сообщения об ошибках команды выводятся в файл ошибок. Как и в случае со стандартным выводом, вместо этого вы можете использовать >>, чтобы добавить ошибку к ошибкам из ранее запущенных команд.
Перенаправить все записи вывода в один и тот же файл
Все описанные выше подходы приводят к созданию нескольких файлов. Один файл предназначен для стандартного потока вывода, а другой — для стандартного потока ошибок.
Если вы хотите включить оба этих вывода в один и тот же файл, вы также можете это сделать.Для этого вам просто нужно перенаправить весь вывод в один и тот же файл с помощью следующей команды.
Вот как работает эта команда:
- Стандартный вывод направляется в выходной файл, обозначенный выходным номером 1.
- Стандартный вывод ошибок, обозначенный цифрой 2, перенаправляется в выходной файл, обозначенный цифрой 1.
Это добавит вывод ошибки в конец стандартного вывода.
Это удобный способ увидеть все выходные данные любой команды в одном файле.
Отключение стандартных потоков или потоков вывода ошибок
Вы также можете отключить стандартный вывод или стандартную ошибку, перенаправив вывод в NUL вместо файла.
Используя приведенный выше пример, если вам нужен только стандартный вывод и вообще никаких стандартных ошибок, вы можете использовать следующую команду:
Это приведет к тому же выходному файлу, что и в первом примере выше, где вы только перенаправили стандартный вывод, но с этой командой ошибка не будет отображаться в консоли. Он также не будет создавать файл журнала ошибок.
Это полезно, если вас не волнуют какие-либо ошибки и вы не хотите, чтобы они стали помехой.
Вы можете выполнить любую из указанных выше команд вывода из BAT-файла, и вывод этой строки будет отправлен в указанный вами выходной файл. Это полезный способ узнать, были ли какие-либо команды в BAT-файле с ошибками при попытке запуска.
Райан пишет инструкции и другие статьи о технологиях в Интернете с 2007 года. Он имеет степень бакалавра наук в области электротехники, 13 лет работал в области автоматизации, 5 лет — в ИТ, а сейчас работает инженером по приложениям. Прочитать полную биографию Райана
Понравился ли вам этот совет? Если это так, загляните на наш канал YouTube на нашем дочернем сайте Online Tech Tips. Мы охватываем Windows, Mac, программное обеспечение и приложения, а также предлагаем множество советов по устранению неполадок и обучающих видеороликов. Нажмите кнопку ниже, чтобы подписаться!
Предположим, что у меня есть строка, которую я хочу добавить в файл, не открывая редактор.
Как я могу добавить эту строку
3 ответа 3
Вы можете добавить строку текста в файл с помощью оператора >>:
или в вашем случае
Я сам использую эхо, но будьте осторожны, если вы укажете только один >, файл будет обрезан, а не добавлен. для более безопасной команды вы можете использовать sed: sed -i '$a hello world' имя файла
объяснение: -i обновит файл (в противном случае он просто выведет результат на стандартный вывод), $ — это регулярное выражение, которое будет соответствовать концу файла, а a добавляет следующий текст к имени файла.
echo "hello world" >> my_file.txt не создает новую последнюю строку с HW , а добавляет ее к строке последней строки.
Возможно, "Hello World" @7wp :) Это эхо, которое добавляет разрыв строки (делая его строкой, а не просто набором символов). Вы можете отключить разрыв строки в конце с помощью -n .
Добавляя к ответу Стефано, вы также можете использовать cat :
Использование heredoc:
означает "принимать в качестве входных данных следующее, пока не дойдете до строки, которая является просто EOF". Кавычки означают, что ввод следует воспринимать буквально.
Или ввод строки на стандартный ввод:
Затем вставьте или введите строку, нажмите Enter, чтобы перейти к новой строке, затем нажмите Ctrl+D, чтобы отметить конец.
Я часто использую этот метод, но недавно меня поймали, когда я вставил текст, содержащий некоторые (экранирующие) коды. Он не жаловался, но когда я проверил файл, в нем отсутствовали куски вставленного текста. Так что используйте его с осторожностью!
@elmclose Извините, какой метод? Они работают по-разному в отношении метасимволов. Я думаю, что второй ничего не делает с ними, хотя может быть несколько исключений.
Я имел в виду метод EOF. Очень удобно и полезно, когда вы печатаете или вставляете читаемый текст. Но коды в моем тексте запутали процесс. Файл был сценарием bash, который постоянно терпел неудачу. Мне потребовалось некоторое время, прежде чем я обнаружил, что произошло.
Существует множество способов добавления в файл без открытия текстовых редакторов, особенно с помощью нескольких доступных утилит обработки текста в Ubuntu. В общем, все, что позволяет нам выполнять системный вызов open() с добавленным флагом O_APPEND, можно использовать для добавления в файл.
Версия GNU утилиты dd может добавлять данные в файл с помощью conv=notrunc oflag=append
В случае переноса мы могли бы использовать что-то подобное на правой стороне конвейера:
Обратите внимание на использование bs=1 , которое предотвращает короткие чтения из конвейера
Команду tee можно использовать, когда вам нужно добавить файл и отправить его на стандартный вывод или на следующую команду в конвейере
в awk есть оператор добавления >>, который также является переносимым и определяется спецификациями POSIX
Мы можем комбинировать флаг sed $ для соответствия последней строке с a для добавления и -i для редактирования на месте.
Читайте также: