Ошибка имя файла для вывода

Одна из самых интересных и полезных тем для системных администраторов и новых пользователей, которые только начинают разбираться в работе с терминалом — это перенаправление потоков ввода вывода Linux. Эта особенность терминала позволяет перенаправлять вывод команд в файл, или содержимое файла на ввод команды, объединять команды вместе, и образовать конвейеры команд.

В этой статье мы рассмотрим как выполняется перенаправление потоков ввода вывода в Linux, какие операторы для этого используются, а также где все это можно применять.

Как работает перенаправление ввода вывода

Все команды, которые мы выполняем, возвращают нам три вида данных:

  • Результат выполнения команды, обычно текстовые данные, которые запросил пользователь;
  • Сообщения об ошибках — информируют о процессе выполнения команды и возникших непредвиденных обстоятельствах;
  • Код возврата — число, которое позволяет оценить правильно ли отработала программа.

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

  • STDIN или 0 — этот файл связан с клавиатурой и большинство команд получают данные для работы отсюда;
  • STDOUT или 1 — это стандартный вывод, сюда программа отправляет все результаты своей работы. Он связан с экраном, или если быть точным, то с терминалом, в котором выполняется программа;
  • STDERR или 2 — все сообщения об ошибках выводятся в этот файл.

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

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

Все очень просто. Вы можете перенаправить вывод в файл с помощью символа >. Например, сохраним вывод команды top:

top -bn 5 > top.log

Опция -b заставляет программу работать в не интерактивном пакетном режиме, а n — повторяет операцию пять раз, чтобы получить информацию обо всех процессах. Теперь смотрим что получилось с помощью cat:

cat top.log

Символ «>» перезаписывает информацию из файла, если там уже что-то есть. Для добавления данных в конец используйте «>>». Например, перенаправить вывод в файл linux еще для top:

top -bn 5 >> top.log

По умолчанию для перенаправления используется дескриптор файла стандартного вывода. Но вы можете указать это явно. Эта команда даст тот же результат:

top -bn 5 1>top.log

Перенаправить ошибки в файл

Чтобы перенаправить вывод ошибок в файл вам нужно явно указать дескриптор файла, который собираетесь перенаправлять. Для ошибок — это номер 2. Например, при попытке получения доступа к каталогу суперпользователя ls выдаст ошибку:

ls -l /root/

Вы можете перенаправить стандартный поток ошибок в файл так:

ls -l /root/ 2> ls-error.log
$ cat ls-error.log

Чтобы добавить данные в конец файла используйте тот же символ:

ls -l /root/ 2>>ls-error.log

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

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

ls -l /root/ >ls-error.log 2>&1

Сначала будет отправлен вывод команды ls в файл ls-error.log c помощью первого символа перенаправления. Дальше в тот же самый файл будут направлены все ошибки. Второй метод проще:

ls -l /root/ &> ls-error.log

Также можно использовать добавление вместо перезаписи:

ls -l /root/ &>> ls-error.log

Стандартный ввод из файла

Большинство программ, кроме сервисов, получают данные для своей работы через стандартный ввод. По умолчанию стандартный ввод ожидает данных от клавиатуры. Но вы можете заставить программу читать данные из файла с помощью оператора «<«:

cat <domains.list

Вы также можете сразу же перенаправить вывод тоже в файл. Например, пересортируем список:

sort <domains.list >sort.output

Таким образом, мы в одной команде перенаправляем ввод вывод linux.

Использование тоннелей

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

ls -lt | head -n 5

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

echo test/ tmp/ | xargs -n 1 cp -v testfile.sh

Здесь параметр -n 1 задает, что для одной команды нужно подставлять только один параметр, а опция -v в cp позволяет выводить подробную информацию о перемещениях. Еще одна, полезная в таких случаях команда — это tee. Она читает данные из стандартного ввода и записывает в стандартный вывод или файлы. Например:

echo "Тест работы tee" | tee file1

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

Выводы

В этой статье мы рассмотрели основы перенаправления потоков ввода вывода Linux. Теперь вы знаете как перенаправить вывод в файл linux или вывод из файла. Это очень просто и удобно. Если у вас остались вопросы, спрашивайте в комментариях!

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Фундаментальные основы Linux. Часть IV. Программные каналы и команды

Оригинал: Linux Fundamentals

Автор: Paul Cobbaut

Дата публикации: 16 октября 2014 г.

Перевод: А.Панин

Дата перевода: 15 декабря 2014 г.

Глава 16. Перенаправление потоков ввода/вывода

Одной из мощных возможностей командной оболочки системы Unix является механизм перенаправления потоков ввода/вывода с возможностью задействования программных каналов.

В данной главе даются пояснения относительно перенаправления стандартных потоков ввода, вывода и ошибок.

Потоки данных stdin, stdout и stderr

Командная оболочка bash поддерживает три типа базовых потоков данных; она принимает данные из стандартного потока ввода stdin (поток 0), отправляет данные в стандартный поток вывода stdout (поток 1), а также отправляет сообщения об ошибках в стандартный поток ошибок stderr (поток 2).

Приведенная ниже иллюстрация является графической интерпретацией этих трех потоков данных.

Клавиатура обычно служит источником данных для стандартного потока ввода stdin, в то время, как стандартные потоки вывода stdout и ошибок stderr используются для вывода данных. Новых пользователей Linux может смущать подобное разделение, так как не существует очевидного способа дифференцирования стандартных потоков вывода stdout и ошибок stderr. Опытные же пользователи знают о том, что разделение стандартных потоков вывода и ошибок может оказаться весьма полезным.

Потоки данных stdin, stdout и stderr

В следующем разделе будет рассказано о том, как осуществляется перенаправление упомянутых потоков данных.

Перенаправление стандартного потока вывода

Операция перенаправления потока данных stdout (>)

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

stdout

Нотация > фактически является аббревиатурой для 1> (в данном случае стандартный поток вывода обозначается как поток номер 1).

[paul@RHELv4u3 ~]$ echo Сегодня холодно!
Сегодня холодно!
[paul@RHELv4u3 ~]$ echo Сегодня холодно! > winter.txt
[paul@RHELv4u3 ~]$ cat winter.txt 
Сегодня холодно!
[paul@RHELv4u3 ~]$

Обратите внимание на то, что командная оболочка bash фактически удаляет описание операции перенаправления потока данных из строки команды перед исполнением этой команды, представленной аргументом 0. Это значит, что в случае исполнения данной команды:

echo привет > greetings.txt

командная оболочка будет рассматривать только два аргумента (echo = аргумент 0, привет = аргумент 1). Описание операции перенаправления потока данных удаляется перед началом подсчета количества аргументов.

Содержимое выходного файла удаляется

В том случае, если в процессе разбора строки команды командная оболочка обнаружит символ знака >, содержимое указанного после него файла будет удалено! Ввиду того, что описанная процедура выполняется перед извлечением аргумента 0, содержимое файла будет удалено даже в случае неудачного исполнения команды!

[paul@RHELv4u3 ~]$ cat winter.txt 
Сегодня холодно!
[paul@RHELv4u3 ~]$ zcho Сегодня холодно! > winter.txt
-bash: zcho: команда не найдена..
[paul@RHELv4u3 ~]$ cat winter.txt 
[paul@RHELv4u3 ~]$

Параметр командной оболочки noclobber

Удаление содержимого файла при использовании оператора > может быть предотвращено путем установки параметра командной оболочки noclobber.

[paul@RHELv4u3 ~]$ cat winter.txt 
Сегодня холодно!
[paul@RHELv4u3 ~]$ set -o noclobber
[paul@RHELv4u3 ~]$ echo Сегодня холодно! > winter.txt
-bash: winter.txt: не могу переписать уже существующий файл
[paul@RHELv4u3 ~]$ set +o noclobber
[paul@RHELv4u3 ~]$

Нейтрализация влияния параметра командной оболочки noclobber

Влияние параметра командной оболочки noclobber может быть нейтрализовано с помощью оператора >|.

[paul@RHELv4u3 ~]$ set -o noclobber
[paul@RHELv4u3 ~]$ echo Сегодня холодно! > winter.txt
-bash: winter.txt: не могу переписать уже существующий файл
[paul@RHELv4u3 ~]$ echo Сегодня очень холодно! >| winter.txt
[paul@RHELv4u3 ~]$ cat winter.txt 
Сегодня очень холодно!
[paul@RHELv4u3 ~]$

Оператор дополнения >>

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

[paul@RHELv4u3 ~]$ echo Сегодня холодно! > winter.txt
[paul@RHELv4u3 ~]$ cat winter.txt 
Сегодня холодно!
[paul@RHELv4u3 ~]$ echo Когда же наступит лето ? >> winter.txt
[paul@RHELv4u3 ~]$ cat winter.txt 
Сегодня холодно!
Когда же наступит лето ?
[paul@RHELv4u3 ~]$

Перенаправление стандартного потока ошибок

Операция перенаправления потока данных stderr (2>)

Перенаправление стандартного потока ошибок осуществляется с помощью оператора 2>. Такое перенаправление может оказаться очень полезным для предотвращения заполнения вашего экрана сообщениями об ошибках.

stderr

В примере ниже показана методика перенаправления данных из стандартного потока вывода в файл, а данных из стандартного потока ошибок — в специальный файл устройства /dev/null. Запись 1> идентична записи >.

[paul@RHELv4u3 ~]$ find / > allfiles.txt 2> /dev/null
[paul@RHELv4u3 ~]$

Операция перенаправления нескольких потоков данных 2>&1

Для перенаправления данных как из стандартного потока вывода, так и из стандартного потока ошибок в один и тот же файл следует использовать конструкцию 2>&1.

[paul@RHELv4u3 ~]$ find / > allfiles_and_errors.txt 2>&1
[paul@RHELv4u3 ~]$

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

ls > dirlist 2>&1

позволяет перенаправить как данные из стандартного потока вывода (с файловым дескриптором 1), так и данные из стандартного потока ошибок (с файловым дескриптором 2) в файл dirlist, в то время, как команда

ls 2>&1 > dirlist

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

Перенаправление стандартного потока вывода и программные каналы

По умолчанию вы не можете использовать утилиту grep для обработки данных стандартного потока ошибок stderr приложения при использовании программных каналов в рамках строки команды, так как данная утилита получает данные исключительно из стандартного потока вывода stdout приложения.

paul@debian7:~$ rm file42 file33 file1201 | grep file42
rm: невозможно удалить "file42": Нет такого файла или каталога
rm: невозможно удалить "file33": Нет такого файла или каталога
rm: невозможно удалить "file1201": Нет такого файла или каталога

С помощью конструкции 2>&1 вы можете переправить данные из стандартного потока ошибок stderr в стандартный поток вывода stdout приложения. Это обстоятельство позволяет обрабатывать передаваемые посредством программного канала данные из обоих потоков с помощью следующей команды.

paul@debian7:~$ rm file42 file33 file1201 2>&1 | grep file42
rm: невозможно удалить "file42": Нет такого файла или каталога

Вы не можете одновременно использовать конструкции 1>&2 и 2>&1 для осуществления обмена файловых дескрипторов между стандартным потоком вывода stdout и стандартным потоком ошибок stderr.

paul@debian7:~$ rm file42 file33 file1201 2>&1 1>&2 | grep file42
rm: невозможно удалить "file42": Нет такого файла или каталога
paul@debian7:~$ echo file42 2>&1 1>&2 | sed 's/file42/FILE42/' 
FILE42

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

paul@debian7:~$ echo file42 3>&1 1>&2 2>&3 | sed 's/file42/FILE42/' 
file42
paul@debian7:~$ rm file42 3>&1 1>&2 2>&3 | sed 's/file42/FILE42/' 
rm: невозможно удалить "FILE42": Нет такого файла или каталога

Объединение стандартных потоков вывода stdout и ошибок stderr

Конструкция &> позволяет объединить стандартные потоки вывода stdout и ошибок stderr в рамках одного потока данных (причем данные будут сохраняться в файле).

paul@debian7:~$ rm file42 &> out_and_err
paul@debian7:~$ cat out_and_err 
rm: невозможно удалить "file42": Нет такого файла или каталога
paul@debian7:~$ echo file42 &> out_and_err
paul@debian7:~$ cat out_and_err 
file42
paul@debian7:~$ 

Перенаправление стандартного потока ввода

Операция перенаправления потока данных stdin (<)

Перенаправление стандартного потока ввода stdin осуществляется с помощью оператора < (являющегося краткой версией оператора 0<).

[paul@RHEL4b ~]$ cat < text.txt
one
two
[paul@RHEL4b ~]$ tr 'onetw' 'ONEZZ' < text.txt
ONE
ZZO
[paul@RHEL4b ~]$

Структура < here document

Структура here document (иногда называемая структурой here-is-document) является механизмом для ввода данных до момента обнаружения определенной последовательности символов (обычно EOF). Маркер EOF может быть либо введен вручную, либо вставлен автоматически при нажатии комбинации клавиш Ctrl-D.

[paul@RHEL4b ~]$ cat <EOF > text.txt
> один
> два
> EOF
[paul@RHEL4b ~]$ cat text.txt 
один
два
[paul@RHEL4b ~]$ cat <brol > text.txt
> brel
> brol
[paul@RHEL4b ~]$ cat text.txt 
brel
[paul@RHEL4b ~]$

Структура < here string

Структура here string может использоваться для непосредственной передачи строк команде. При использовании данной структуры достигается такой же эффект, как и при использовании команды echo строка | команда (но вы сможете избежать создания одного дополнительного процесса).

paul@ubu1110~$ base64 < linux-training.be
bGludXgtdHJhaW5pbmcuYmUK
paul@ubu1110~$ base64 -d << bGludXgtdHJhaW5pbmcuYmUK
linux-training.be

Для получения дополнительной информации об алгоритме base64 следует обратиться к стандарту rfc 3548.

Неоднозначное перенаправление потоков ввода/вывода

Командная оболочка будет осуществлять разбор всей строки команды перед осуществлением перенаправления потоков ввода/вывода. Следующая команда является хорошо читаемой и корректной:

cat winter.txt > snow.txt 2> errors.txt

Но следующая команды также является корректной, хотя и хуже читается:

2> errors.txt cat winter.txt > snow.txt

Даже следующая команда будет прекрасно интерпретироваться командной оболочкой:

< winter.txt > snow.txt 2> errors.txt cat

Быстрая очистка содержимого файла

Так какой же самый быстрый способ очистки содержимого файла?

>foo

А какой самый быстрый способ очистки содержимого файла в случае активации параметра командной оболочки noclobber?

>|bar

Практическое задание: перенаправление потоков ввода/вывода

1. Активируйте параметр командной оболочки noclobber.

2. Проверьте, активирован ли параметр noclobber, повторив вызов команды вывода содержимого директории ls для директории /etc с перенаправлением данных из стандартного потока вывода в файл.

3. Какой из символов представляет параметр noclobber в списке всех параметров командной оболочки.

4. Деактивируйте параметр noclobber.

5. Убедитесь в том, что вы имеете доступ к двум командным оболочкам, открытым на одном компьютере. Создайте пустой файл tailing.txt. После этого выполните команду tail -f tailing.txt. Используйте вторую командную оболочку для добавления строки текста в этот файл. Убедитесь в том, что эта строка была выведена в первой командной оболочке.

6. Создайте файл, содержащий имена пяти людей. Используйте команду cat и механизм перенаправления потоков ввода/вывода для создания файла, а также структуру here document для завершения ввода.

Корректная процедура выполнения практического задания: перенаправление потоков ввода/вывода

1. Активируйте параметр командной оболочки noclobber.

2. Проверьте, активирован ли параметр noclobber, повторив вызов команды вывода содержимого директории ls для директории /etc с перенаправлением данных из стандартного потока вывода в файл.

ls /etc > etc.txt 
ls /etc > etc.txt (команда не должна работать)

3. Какой из символов представляет параметр noclobber в списке всех параметров командной оболочки.

echo $- (параметр noclobber представлен символом C)

4. Деактивируйте параметр noclobber.

5. Убедитесь в том, что вы имеете доступ к двум командным оболочкам, открытым на одном компьютере. Создайте пустой файл tailing.txt. После этого выполните команду tail -f tailing.txt. Используйте вторую командную оболочку для добавления строки текста в этот файл. Убедитесь в том, что эта строка была выведена в первой командной оболочке.

paul@deb503:~$ > tailing.txt
paul@deb503:~$ tail -f tailing.txt 
hello
world

в другой командной оболочке:
paul@deb503:~$ echo hello >> tailing.txt 
paul@deb503:~$ echo world >> tailing.txt

6. Создайте файл, содержащий имена пяти людей. Используйте команду cat и механизм перенаправления потоков ввода/вывода для создания файла, а также структуру here document для завершения ввода.

paul@deb503:~$ cat > tennis.txt < ace
> Justine Henin
> Venus Williams
> Serena Williams
> Martina Hingis
> Kim Clijsters
> ace
paul@deb503:~$ cat tennis.txt 
Justine Henin
Venus Williams
Serena Williams
Martina Hingis
Kim Clijsters
paul@deb503:~$


Если вам понравилась статья, поделитесь ею с друзьями:


Если вы знакомы с основными командами Linux, вам также следует изучить концепцию перенаправления ввода-вывода.

Вы уже знаете, как работает команда в Linux. Она принимает вход и дает вам выход. Здесь есть несколько игроков. Позвольте нам рассказать вам о них.

Stdin, stdout и stderr

Когда вы запускаете команду Linux, в ней играют роль три потока данных:

  • Стандартный ввод ( stdin ) является источником входных данных. По умолчанию стандартный ввод – это любой текст, введенный с клавиатуры. Идентификатор потока равен 0.
  • Стандартный вывод ( stdout ) является результатом команды. По умолчанию он отображается на экране. Идентификатор потока равен 1.
  • Стандартная ошибка ( stderr ) – это сообщение об ошибке (если есть), генерируемое командами. По умолчанию stderr также отображается на экране. Идентификатор потока равен 2.

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

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

В Linux также существует такая концепция перенаправления, при которой вы можете перенаправить stdin, stdout и stderr из обычного места назначения в другой файл или команду (или даже на периферийные устройства, такие как принтеры).

Позвольте нам показать, как работает перенаправление и как вы можете его использовать.

Перенаправление вывода

Первой и самой простой формой перенаправления является перенаправление вывода, также называемое перенаправлением stdout.

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

andreyex@destroyer:~$ ls
appstxt  new.txt  static-ip.txt

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

command > file

Например, позвольте нам сохранить вывод команды ls в файл с именем output.txt:

andreyex@destroyer:~$ ls > output.txt

Выходной файл создается заранее

Как вы думаете, каким должно быть содержимое этого выходного файла? Позвольте нам использовать команду cat, чтобы показать вам сюрприз:

andreyex@destroyer:~$ cat output.txt 
appstxt
new.txt
output.txt
static-ip.txt

Вы заметили, что включение output.txt существует ? Мы сознательно выбрали этот пример, чтобы показать вам это.

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

Добавить вместо удаления

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

Вы можете добавить вместо перезаписи, используя >> синтаксис перенаправления.

command >> file

Совет

Вы можете запретить забивание в текущем сеансе оболочки, используя: set -C

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

Перенаправление канала

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

При перенаправлении канала стандартный вывод команды отправляется на стандартный ввод другой команды.

command 1 | command 2

Позвольте нам показать вам практический пример. Скажем, вы хотите посчитать количество видимых файлов в текущем каталоге. Вы можете использовать ls -1 (это цифра один, а не буква L) для отображения файлов в текущем каталоге:

andreyex@destroyer:~$ ls -1
appstxt
new.txt
output.txt
static-ip.txt

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

andreyex@destroyer:~$ ls -1 | wc -l
4

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

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

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

command_1 | command_2 | command_3 | command_4

Помните, что stdout/stdin это кусок данных, а не имена файлов

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

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

find . -type f -name "*.txt" | mv destination_directory

Вот почему вы часто будете видеть команду find, используемую в сопряжении с командой exec или xargs. Эти специальные команды «преобразуют текст с кучей имен файлов в имя файла», которые могут быть переданы в качестве аргумента.

find . -type f -name "*.txt" | xargs -t -I{} mv {} ../new_dir

Перенаправление ввода

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

command < file

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

Возьмите это к примеру:

head < filename.txt

Приведенная выше команда могла быть просто заголовком filename.txt (без <).

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

tr a-z A-Z < filename.txt

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

Например, многие люди используют приведенный выше пример с cat, а затем используют tr на нем. Честно говоря, здесь нет необходимости использовать cat.

cat filename.txt | tr a-z A-Z

Объединить перенаправления

Вы можете комбинировать перенаправление stdin, stdout и pipe в соответствии с вашими потребностями.

Например, приведенная ниже команда перечисляет все файлы .txt в текущем каталоге, а затем подсчитывает эти файлы .txt и сохраняет выходные данные в новый файл.

ls *.txt | wc -l > count.txt

Перенаправление ошибок

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

andreyex@destroyer:~$ ls -l ffffff > output.txt
ls: cannot access 'ffffff': No such file or directory

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

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

Но как вы различаете stdout и stderr, когда они оба являются потоком выходных данных? По их идентификатору потока (также называется дескриптором файла).

Поток данных Идентификатор потока
stdin
stdout 1
stderr 2

По умолчанию, когда вы используете выходной символ перенаправления >, это фактически означает 1>. Словом, вы говорите, что здесь выводится поток данных с ID 1.

Когда вам нужно перенаправить stderr, вы используете его идентификатор как 2> или 2>>. Это означает, что перенаправление вывода для потока данных stderr (ID 2).

Примеры перенаправления Stderr

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

andreyex@destroyer:~$ ls fffff 2> error.txt
andreyex@destroyer:~$ cat error.txt 
ls: cannot access 'fffff': No such file or directory

Это было просто. Давайте сделаем это немного более сложным (и полезным):

andreyex@destroyer:~$ ls -l new.txt ffff > output.txt 2> error.txt 
andreyex@destroyer:~$ cat output.txt 
-rw-rw-r-- 1 andreyex andreyex 0 May  5 10:12 new.txt
andreyex@destroyer:~$ cat error.txt 
ls: cannot access 'ffff': No such file or directory

В приведенном выше примере команда ls пытается отобразить два файла. Для одного файла она получает успех, а для другого – ошибку. Поэтому мы перенаправили stdout в ouput.txt (с>), а stderr в error.txt (с 2>).

Вы также можете перенаправить как stdout, так и stderr в один и тот же файл. Есть способы сделать это.

В приведенном ниже примере мы сначала отправляем stderr (с 2 >>) в файл комбинированный .txt в режиме добавления. Затем стандартный вывод (с >>) отправляется в тот же файл в режиме добавления.

andreyex@destroyer:~$ ls -l new.txt fff 2>> combined.txt >> combined.txt 
andreyex@destroyer:~$ cat combined.txt 
ls: cannot access 'fff': No such file or directory
-rw-rw-r-- 1 andreyex andreyex 0 May  5 10:12 new.txt

Другой способ, и он является предпочтительным, состоит в том, чтобы использовать что-то вроде 2>&1. Что можно примерно перевести как «перенаправить stderr на тот же адрес, что и stdout».

Давайте возьмем предыдущий пример и на этот раз используем 2>&1 для перенаправления как stdout, так и stderr в один и тот же файл.

andreyex@destroyer:~$ ls -l new.txt fff > output.txt 2>&1
andreyex@destroyer:~$ cat output.txt 
ls: cannot access 'fff': No such file or directory
-rw-rw-r-- 1 andreyex andreyex 0 May  5 10:12 new.txt

Имейте в виду, что вы не можете использовать 2>>&1, думая об использовании его в режиме добавления. 2>&1 уже переходит в режим добавления.

Вы также можете сначала использовать 2>, а затем 1>&2, чтобы перенаправить стандартный вывод в тот же файл, что и стандартный вывод. По сути, это «>&», который перенаправляет один поток данных в другой.

Резюме

  • Есть три потока данных. Один вход, stdin (0) и два потока выходных данных stdout (1) и stderr (2).
  • Клавиатура является стандартным устройством ввода, а экран является устройством вывода по умолчанию.
  • Перенаправление вывода используется с > или >> (для режима добавления).
  • Перенаправление ввода используется с <.
  • Stderr может быть перенаправлен с помощью 2> или 2>>.
  • Stderr и stdout можно комбинировать, используя 2>&1.

Надеюсь, вам понравилось эта подробная статья по перенаправлению в Linux. Если у вас все еще есть сомнения или у вас есть предложения по улучшению этой статьи, сообщите нам об этом в разделе комментариев.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

Стандартные потоки ввода вывода

В этом курсе мы работает в терминале, вводим какие-то команды и иногда получаем какой-нибудь вывод. То есть консольные утилиты получают от нас какую-то информацию и могут выводить нам информацию на терминал.

Я уже писал о том, что в Linux всё считается файлом. Из этого следует, когда команда выводит результат своей работы, она пишет в какой-то файл. А когда получает данные, она читает какой-то файл.

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

Также существует стандартный поток ошибок — это файл, в который процесс записывает ошибки, если они возникают при работе.

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

Название Файловый
дескриптор
Связанное
устройство
Файл
stdin
стандартный поток ввода
0 клавиатура
терминала
/dev/stdin
stdout
стандартный поток вывода
1 экран
терминала
/dev/stdout
stderr
стандартный поток ошибок
2 экран
терминала
/dev/stderr
Таблица файлов стандартных потоков в Linux

Вот как эти файлы увидеть:

alex@deb-11:~$ ls -l /dev/std*
lrwxrwxrwx 1 root root 15 сен  9 10:57 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 сен  9 10:57 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 сен  9 10:57 /dev/stdout -> /proc/self/fd/1

alex@deb-11:~$ ls -l /proc/self/fd/[0,1,2]
lrwx------ 1 alex alex 64 сен 12 14:28 /proc/self/fd/0 -> /dev/pts/0
lrwx------ 1 alex alex 64 сен 12 14:28 /proc/self/fd/1 -> /dev/pts/0
lrwx------ 1 alex alex 64 сен 12 14:28 /proc/self/fd/2 -> /dev/pts/0

alex@deb-11:~$ ls -l /dev/pts/0
crw--w---- 1 alex tty 136, 0 сен 12 14:28 /dev/pts/0

Из вывода мы можем понять что файлы потоков это символические ссылки, ведущие на номера файловых дескрипторов. А эти файловые дескрипторы ведут на одно и тоже устройство – /dev/pts/0. Это устройство называется псевдо-терминалом. Именно этому псевдо-терминалу (pts/0) подключен я по ssh:

alex@deb-11:~$ loginctl list-sessions
SESSION  UID USER SEAT TTY
     83 1000 alex      pts/0

1 sessions listed.

alex@deb-11:~$ w
 14:43:19 up 3 days,  3:45,  1 user,  load average: 0,00, 0,00, 0,00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
alex     pts/0    172.28.80.14     10:46    0.00s  0.17s  0.00s w

И все эти потоки можно перенаправлять, например можно пустить:

  • stdout не на терминал, а в файл;
  • stdout от одного процесса на stdin другому;
  • stdout в один файл, а stderr в в другой.

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

Перенаправление потоков stdout и stderr в файл

Перенаправление stdout в файл

Допустим мы запустили какую-то команду, которая выводит нам что-нибудь на экран терминала:

alex@deb-11:~$ id
uid=1000(alex) gid=1000(alex) группы=1000(alex),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev)

Мы можем перенаправить результат в файл с помощью символа “>“:

alex@deb-11:~$ id > id.txt

alex@deb-11:~$ cat id.txt
uid=1000(alex) gid=1000(alex) группы=1000(alex),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev)

Как видим на терминале ничего показано не было, а всё записалось в файл. При этом, если бы файла не было то он создастся. А если бы файл был, то он пере-запишется, то есть все содержимое файла очищается и заменяется.

Если мы не хотим пере-записывать файл целиком, а хотим дописать в файл, то нужно использовать “>>“:

alex@deb-11:~$ id root >> id.txt

alex@deb-11:~$ cat id.txt
uid=1000(alex) gid=1000(alex) группы=1000(alex),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev)
uid=0(root) gid=0(root) группы=0(root)

Перенаправление stderr в файл

Если нам нужно перенаправить stderr в файл, то используется “2>“:

alex@deb-11:~$ touch test.txt

alex@deb-11:~$ ls test.txt test2.txt
ls: невозможно получить доступ к 'test2.txt': Нет такого файла или каталога
test.txt

alex@deb-11:~$ ls test.txt test2.txt 2> ls-error.txt
test.txt

alex@deb-11:~$ cat ls-error.txt
ls: невозможно получить доступ к 'test2.txt': Нет такого файла или каталога

Как видим при таком перенаправлении stdout идет на терминал, а stderr в файл.

Тут как и с перенаправлением stdout:

  • 2>” — перезапишет файл;
  • 2>>” — допишет файл.

Перенаправление потоков stdout и stderr в файл одновременно

Вы можете простым образом перенаправить оба потока:

alex@deb-11:~$ ls test.txt test2.txt > ls-out.txt 2> ls-error.txt

alex@deb-11:~$ cat ls-out.txt
test.txt

alex@deb-11:~$ cat ls-error.txt
ls: невозможно получить доступ к 'test2.txt': Нет такого файла или каталога

А чтобы все перенаправить в один файл используется довольно интересная конструкция: > file 2>&1:

alex@deb-11:~$ ls test.txt test2.txt > ls-out.txt 2>&1

alex@deb-11:~$ cat ls-out.txt
ls: невозможно получить доступ к 'test2.txt': Нет такого файла или каталога
test.txt

То есть мы перенаправляем stdout в файл, а stderr в stdout, напомню что stdout имеет файловый дескриптор 1.

Есть такой файл в Linux – /dev/null, это как черная дыра, все что идет в /dev/null никуда не сохраняется. Во многих инструкциях можно найти примерно такую команду:

# команда > /dev/null 2>&1

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

Перенаправление stdout одного процесса на stdin другого

Допустим первая команда выводит какой-то результат, и нам нужно этот результат использовать как входные данные для следующей команды. В этом случае используется “|” (пайплайн (pipeline)).

Я очень долго путал stdin с параметрами команды, то есть я думал что:

alex@deb-11:~$ ls test.txt
test.txt

Результат предыдущей команды “test.txt” пере-направится как параметр. То есть я думал что:

alex@deb-11:~$ ls test.txt | cat

будет равен:

alex@deb-11:~$ cat test.txt
1
2
3

Но на самом деле:

alex@deb-11:~$ ls test.txt | cat
test.txt

Как же это работает на самом деле?

Pipeline заставляет cat читать не из файла а из stdout предыдущей команды. А первая команда пишет в stdout слово “test.txt“, вот и cat читает посимвольно слово “test.txt“.

Чтобы пайплайны работали, вторая команда должна уметь читать из stdin, а это умеют далеко не все утилиты. Но почти все утилиты, которые умеют читать данные из файла могут читать и из stdin. Как пример, могу привести следующие утилиты которые умеют принимать данные из stdincat, grep, less, tail, head, wc.

Вот еще один пример, найдем все файлы, в которых есть буква “l“:

alex@deb-11:~$ ls
apache2_2.4.53-1~deb11u1_amd64.deb  date.log      ls-out.txt  rootCA.srl  site.key         test.txt
crash                               id.txt        rootCA.crt  site.crt    sysadminium.cnf  timer.sh
crash.c                             ls-error.txt  rootCA.key  site.csr    testfolder       ulimit-t.sh

alex@deb-11:~$ ls | grep l
date.log
ls-error.txt
ls-out.txt
rootCA.srl
testfolder
ulimit-t.sh

Итог

Мы узнали про стандартные потоки ввода и вывода: stdin, stdout, stderr. Научились перенаправить stdout и stderr в файл и перенаправлять stdout одной команды на stdin другой.

В статье все примеры были проведены на Debian 11, но всё точно также будет работать и в Ubuntu 22.04.


Сводка

Объединение п перенаправление команд

Имя статьи

Объединение п перенаправление команд

Описание

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

Содержание

  1. Перенаправление ввода/вывода в Linux
  2. Введение
  3. Требования
  4. Потоки
  5. Стандартный ввод
  6. Пример
  7. Стандартный вывод
  8. Пример
  9. Стандартная ошибка
  10. Пример
  11. Перенаправление потока
  12. Пример
  13. Каналы
  14. Пример
  15. Пример
  16. Фильтры
  17. Пример
  18. Пример
  19. Заключение
  20. ИТ База знаний
  21. Полезно
  22. Навигация
  23. Серверные решения
  24. Телефония
  25. Корпоративные сети
  26. Использование потоков, конвейеров и перенаправлений в Linux
  27. Стандартный вывод ошибок.
  28. Конвейер
  29. Перенаправление ввода-вывода
  30. STDIN
  31. STDOUT
  32. STDERR
  33. Перенаправление вывода в скриптах
  34. Временное перенаправление вывода
  35. Постоянное перенаправление вывода
  36. Перенаправление ввода в скриптах
  37. Подавление вывода
  38. Перенаправление ввода-вывода в примерах Linux / Unix
  39. Что такое перенаправление?
  40. Перенаправление вывода
  41. Перенаправление ввода
  42. Дескрипторы файлов (FD)
  43. Перенаправление ошибок
  44. Почему перенаправление ошибок?
  45. Пример 1
  46. Пример 2
  47. Пример 3
  48. Операторы перенаправления вывода в Bash: что означает &1 и другие
  49. > /dev/null
  50. >(КОМАНДА) > /dev/null

Введение

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

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

Требования

Потоки

Стандартный ввод при работе пользователя в терминале передается через клавиатуру.

Стандартный вывод и стандартная ошибка отображаются на дисплее терминала пользователя в виде текста.

Ввод и вывод распределяется между тремя стандартными потоками:

Потоки также пронумерованы:

Из стандартного ввода команда может только считывать данные, а два других потока могут использоваться только для записи. Данные выводятся на экран и считываются с клавиатуры, так как стандартные потоки по умолчанию ассоциированы с терминалом пользователя. Потоки можно подключать к чему угодно: к файлам, программам и даже устройствам. В командном интерпретаторе bash такая операция называется перенаправлением:

Стандартный ввод

Стандартный входной поток обычно переносит данные от пользователя к программе. Программы, которые предполагают стандартный ввод, обычно получают входные данные от устройства типа клавиатура. Стандартный ввод прекращается по достижении EOF (конец файла), который указывает на то, что данных для чтения больше нет.

EOF вводится нажатием сочетания клавиш Ctrl+D.

Рассмотрим работу со стандартным выводом на примере команды cat (от CONCATENATE, в переводе «связать» или «объединить что-то»).

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

Cat отправляет полученные входные данные на дисплей терминала в качестве стандартного вывода и останавливается после того как получает EOF.

Пример

В открывшейся строке введите, например, 1 и нажмите клавишу Enter. На дисплей выводится 1. Введите a и нажмите клавишу Enter. На дисплей выводится a.

Дисплей терминала выглядит следующим образом:

Для завершения ввода данных следует нажать сочетание клавиш Ctrl + D.

Стандартный вывод

Стандартный вывод записывает данные, сгенерированные программой. Когда стандартный выходной поток не перенаправляется в какой-либо файл, он выводит текст на дисплей терминала.

При использовании без каких-либо дополнительных опций, команда echo выводит на экран любой аргумент, который передается ему в командной строке:

Аргументом является то, что получено программой, в результате на дисплей терминала будет выведено:

При выполнении echo без каких-либо аргументов, возвращается пустая строка.

Пример

Команда объединяет три файла: file1, file2 и file3 в один файл bigfile:

Команда cat по очереди выводит содержимое файлов, перечисленных в качестве параметров на стандартный поток вывода. Стандартный поток вывода перенаправлен в файл bigfile.

Стандартная ошибка

Стандартная ошибка записывает ошибки, возникающие в ходе исполнения программы. Как и в случае стандартного вывода, по умолчанию этот поток выводится на терминал дисплея.

Пример

Рассмотрим пример стандартной ошибки с помощью команды ls, которая выводит список содержимого каталогов.

При запуске без аргументов ls выводит содержимое в пределах текущего каталога.

Введем команду ls с каталогом % в качестве аргумента:

В результате должно выводиться содержимое соответствующей папки. Но так как каталога % не существует, на дисплей терминала будет выведен следующий текст стандартной ошибки:

Перенаправление потока

Linux включает в себя команды перенаправления для каждого потока.

Пример

В приведенном примере команда cat используется для записи в файл file1, который создается в результате цикла:

Для завершения цикла нажмите сочетание клавиш Ctrl + D.

Если файла file1 не существует, то в текущем каталоге создается новый файл с таким именем.

Для просмотра содержимого файла file1 введите команду:

В результате на дисплей терминала должно быть выведено следующее:

Для перезаписи содержимого файла введите следующее:

Для завершения цикла нажмите сочетание клавиш Ctrl + D.

В результате на дисплей терминала должно быть выведено следующее:

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

Для добавления нового текста к уже существующему в файле с помощью двойных скобок >> выполните команду:

Для завершения цикла нажмите сочетание клавиш Ctrl + D.

Откройте file1 снова и в результате на дисплее монитора должно быть отражено следующее:

Каналы

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

Пример

В результате каждый файл текущего каталога будет размещен на новой строке:

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

Пример

Для сохранения имен файлов, содержащих строку «LOG», используется следующая команда:

Вывод команды dir отсылается в команду-фильтр find. Имена файлов, содержащие строку «LOG», хранятся в файле loglist в виде списка (например, Config.log, Logdat.svd и Mylog.bat).

При использовании нескольких фильтров в одной команде рекомендуется разделять их с помощью знака канала |.

Фильтры

Фильтры представляют собой стандартные команды Linux, которые могут быть использованы без каналов:

Как правило, все нижеприведенные команды работают как фильтры, если у них нет аргументов (опции могут быть):

Если в качестве аргумента передается файл, команда-фильтр считывает данные из этого файла, а не со стандартного потока ввода (есть исключения, например, команда tr, обрабатывающая данные, поступающие исключительно через стандартный поток ввода).

Пример

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

Пример

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

В результате сообщение о неверной опции «z» в команде ls будет записано в файл t2, поскольку stderr перенаправлен в файл.

Для просмотра содержимого файла file3 введите команду cat:

В результате на дисплее терминала отобразиться следующее:

Заключение

Мы рассмотрели возможности работы с перенаправлениями потоков >, >> и |, использование которых позволяет лучше работать с bash-скриптами.

Источник

ИТ База знаний

Полезно

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Навигация

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Использование потоков, конвейеров и перенаправлений в Linux

Работаем в командной строке

Операционные системы Unix традиционно используют такие понятия, как стандартный ввод, вывод и вывод ошибки. Чаще всего ввод — это клавиатура, а вывод это на кран. Но конечно же мы можем выводить исполнение какой-то команды в файл и передавать другой команде, потому что работая в Linux, создается такая последовательность из команд, т.е результат предыдущей мы отправляем следующей и т.д

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

laptop

Целью данной статьи является рассмотреть:

1

2

3

Стандартный вывод ошибок.

4

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

Конвейер

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

5

Как видите после данной конструкции команд файлов не осталось. Т.е. данные построчно передались на команду удаления, которая построчно каждый файл с ключом –f (принудительно) их и удалила.

Источник

Перенаправление ввода-вывода

Всё в Linux — это файлы, в том числе — ввод и вывод. Операционная система идентифицирует файлы с использованием дескрипторов. Каждому процессу позволено иметь до девяти открытых дескрипторов файлов. Оболочка bash резервирует первые три дескриптора с идентификаторами 0, 1 и 2. Вот что они означают.

STDIN

STDOUT

STDERR

Если надо, STDERR и STDOUT можно перенаправить в один и тот же файл, воспользовавшись &> :

Устаревшая форма записи:

Оболочка определяет порядок перенаправления потоков в командной строке слева направо, поэтому приведенный выше пример нельзя записать так:

Для дозаписи в файл data-error.txt

Перенаправление вывода в скриптах

Существует два метода перенаправления вывода в сценариях командной строки:

Временное перенаправление вывода

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

Запустим скрипт так, чтобы вывод STDERR попадал в файл:

Постоянное перенаправление вывода

Если в скрипте нужно перенаправлять много выводимых на экран данных, добавлять >&2 к каждому вызову echo неудобно. Вместо этого можно задать перенаправление вывода в определённый дескриптор на время выполнения скрипта, воспользовавшись командой exec :

Команду exec можно использовать не только в начале скрипта, но и в других местах:

Перенаправление ввода в скриптах

Для перенаправления ввода можно воспользоваться тем же способом, который использовался для перенаправления вывода. Например, команда exec позволяет сделать источником данных для STDIN какой-нибудь файл:

Подавление вывода

Вот, например, как подавить вывод сообщений об ошибках:

Тот же подход используется, если, например, надо очистить файл, не удаляя его:

Источник

Перенаправление ввода-вывода в примерах Linux / Unix

Что такое перенаправление?

Перенаправление — это функция Linux, позволяющая при выполнении команды изменять стандартные устройства ввода / вывода. Основной рабочий процесс любой команды Linux заключается в том, что она принимает входные данные и выдает выходные данные.

С перенаправлением можно изменить вышеуказанный стандартный ввод / вывод.

Перенаправление вывода

Символ ‘> ‘ используется для перенаправления вывода (STDOUT).

Перенаправление в Linux / Unix — раскрыто!

redirect komandi v file listing

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

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

dobavit bolshe

Вы можете перенаправить стандартный вывод не только в файлы, но и на устройства!

$ cat music.mp3> / dev / audio

Команда cat считывает файл music.mp3 и отправляет вывод в / dev / audio, которое является аудиоустройством. Если настройки звука на вашем ПК правильные, эта команда воспроизведет файл music.mp3

Перенаправление ввода

Символ ‘ perenapravlenie vvoda

Пример: почтовая программа в Linux может помочь вам отправлять электронные письма из Терминала.

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

format perenapravleniya vvoda

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

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

Дескрипторы файлов (FD)

В Linux / Unix все является файлом. Обычный файл, каталоги и даже устройства — это файлы. Каждый файл имеет связанный номер, называемый дескриптором файла (FD).

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

Перенаправление ошибок

Всякий раз, когда вы выполняете программу/команду на терминале, всегда открываются 3 файла, а именно: стандартный ввод, стандартный вывод, стандартная ошибка.

standard input standard output standard error

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

Файл Дескриптор файла
Стандартный ввод STDIN
Стандартный выход STDOUT 1
Стандартная ошибка STDERR 2

По умолчанию на экране отображается поток ошибок. Перенаправление ошибок — это перенаправление ошибок в файл, отличный от экрана.

Почему перенаправление ошибок?

Перенаправление ошибок — одна из очень популярных функций Unix / Linux. Частые пользователи UNIX будут считать, что многие команды выдают огромное количество ошибок.

Решение — перенаправить сообщения об ошибках в файл.

Пример 1

perenapravit soobscheniya ob oshibkah

Выше мы выполняем программу с именем myprogram.

Дескриптор файла для стандартной ошибки — 2.

Используя «2>», мы перенаправляем вывод ошибки в файл с именем «errorfile».

Таким образом, вывод программы не загроможден ошибками.

Пример 2

Вот еще один пример, в котором используется оператор поиска —

Используя команду «find», мы ищем «.» текущий каталог для файла с «именем», начинающимся с «my»

komanda poiska

Пример 3

Давайте посмотрим на более сложный пример,

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

ls Documents ABC> dirlist 2> & 1

Источник

Операторы перенаправления вывода в Bash: что означает &1 и другие

Рассмотрим операторы перенаправления вывода Bash и похожие по функции операторы и конструкции. Я собрал следующий список, если что-то пропустил, то пишите в комментариях:

Этот оператор на английском называется pipe, и на русском его называют труба или конвейер. Используется очень часто для перенаправления вывода из одной команды в другую, которая может принимать стандартный вывод. Например:

Символ > используется для перенаправления вывода в файл, например:

То есть оператор | используется когда вывод передаётся в другую команду, а оператор > используется когда вывод записывается в файл.

Ещё один пример использования сразу обоих операторов:

Результат работы этой последовательности команд будет сохранён в файл num.txt.

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

> /dev/null

Это частный случай перенаправления, когда всё из стандартного вывода перенаправляется в псевдоустройство /dev/null. Это означает уничтожение данные. То есть ничего не будет выводиться в стандартный вывод.

Функция оператора >> похожа на > с тем отличием, что оператор >> не удаляет содержимое файла, а дописывает новые данные к уже существующим.

Если файл не существует, то оператор >> создаст его и запишет в него переданные данные.

Оператор 2> перенаправляет стандартный вывод ошибок — standard error (stderr).

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

К примеру попытаемся сохранить в файл текст ошибки, возникшей в результате выполнения команды:

Текст ошибки будет выведен на экран, но файл ls-error.txt окажется пустым.

Дело в том, что нужно различать стандартный вывод и стандартный вывод ошибок. Чтобы перенаправить стандартный вывод в файл используется оператор 2>:

В данном случае ошибка не будет выведена на экран, а будет сохранена в файл ls-error.txt.

Чтобы перенаправить стандартную ошибку, мы должны обратиться к её файловому дескриптору. Программа может выводить любой из нескольких пронумерованных файловых потоков. Первые три из этих файловых потоков называются стандартный ввод, стандартный вывод и стандартный вывод ошибок. Оболочка ссылается на них внутренне как файловые дескрипторы , 1 и 2 соответственно. Оболочка обеспечивает запись для перенаправления файлов с использованием номера дескриптора файла. Поскольку стандартная ошибка совпадает с дескриптором файла номер 2, мы можем перенаправить стандартную ошибку с помощью 2>.

Файловый дескриптор «2» помещается непосредственно перед оператором перенаправления, чтобы выполнить перенаправление стандартной ошибки в файл ls-error.txt.

Конструкция 2>&1 предназначена для перенаправления стандартного вывода и стандартного вывода ошибок в один файл.

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

Используя этот метод, мы выполняем два перенаправления. Сначала мы перенаправляем стандартный вывод в файл ls-output.txt, а затем перенаправляем дескриптор файла 2 (стандартная вывод ошибок) на дескриптор файла один (стандартный вывод), используя обозначения 2>&1.

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

перенаправляет стандартную ошибку в файл ls-output.txt, но при изменении порядка на

стандартная ошибка направлена на экран.

Последние версии bash предоставляют второй, более упрощённый метод для выполнения комбинированного перенаправления 2>&1:

В этом примере мы используем одинарную запись &> для перенаправления как стандартного вывода, так и стандартной ошибки в файл ls-output.txt.

Вы также можете добавить стандартные выходные данные и стандартные потоки ошибок в один файл, например так:

Итак, &> является аналогом 2>&1, а &>> это то же самое, но с перенаправлением вывода в файл.

Это ещё одна форма «подстановки процессов» (Process Substitution):

Если используется эта форма, то вместо записи в файл, данные будут переданы на ввод для КОМАНДЫ.

>(КОМАНДА) > /dev/null

Эка комбинация, включающая в себя 3 уже рассмотренных элемента:

Пример практического использования:

HTTP заголовки команда cURL выводит в stderr, а команда grep не ищет по stderr. Но если мы хотим искать только по HTTP заголовков (игнорируя HTML код), то мы не может сделать просто перенаправление stderr для слияния со стандартным выводом, то есть не можем 2>&1, поскольку текст страницы может содержать фразу «401 Unauthorized» и мы получим ложное срабатывание. Поэтому мы используем указанную выше конструкцию — стандартный вывод ошибок обрабатывается, стандартный вывод уничтожается.

Данная конструкция получает многострочный ввод по стандартному вводу и сохраняет его в файл. То есть это аналог

в котором просто операторы поменяны местами.

Источник

Откройте раздел “Устройства и принтеры”, удалите все значки, кроме вашего принтера (чтобы в будущем не было проблем). На вашем принтере должна быть галочка и сам значок не должен быть прозрачным.

Ответить

Главная » Разное » Имя файла для вывода при печати как убрать

Имя файла для вывода при печати как убрать

Что такое печать в файл: как убрать и отключить

Одной из частых проблем при работе с офисной техникой на компьютере или ноутбуке под управлением операционной системы Windows 7, 8 или 10 является ситуация, когда принтер производит печать в файл на физический диск, а не выводит результат на бумагу. В этой инструкции мы расскажем, как отключить сохранение результат и устранить появление данной ошибки в будущем.

Содержание статьи:

Установка по умолчанию

Если после нажатия кнопки «Print» Вы видите окно, где пишет «Сохранить файл», то это значит, что скорее всего неправильно установлен принтер по умолчанию. Когда используется ОС Виндовс, то главным установлен Microsoft XPS Document Writer. Он не может распечатать документ на лист бумаги, а только создать файл аналогичный формату PDF, который в дальнейшем изменить никак нельзя.

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

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

  1. Зайдите в панель управления, а оттуда в раздел с принтерами.
  2. Найдите свою модель и левой клавишей мышки отметьте ее.
  3. Правой вызовите контекстное меню.
  4. В нем отметьте пункт «Использовать по умолчанию».

Убедитесь, что Вы или кто-то другой не устанавливали на ПК программ или утилит для печати в ПДФ.

Смена порта

А также стоит проверить правильно ли указан сам порт устройства. Возможно он был сменен или установлен не корректно еще при установке.

  1. Откройте раздел с устройствами. Аналогично как в первом способе.
  2. Теперь выберите в меню «Свойства».
  3. Перейдите на вкладку «Порты».
  4. Убедитесь, что напротив порта с названием «Печать в файл» нет отмеченной галочки.
  5. Если она присутствует, то уберите ее.
  6. Если аппарат локальный, то отметьте порт USB001, а если сетевой, то соответствующий ему port.
  7. После этого печатать в файл принтер уже не должен.

Видеоинструкция

СТАТЬЯ БЫЛА ПОЛЕЗНОЙ?

Отлично!

В знак благодарности расскажите о статье своим друзьям и знакомым в социальных сетях. Используйте кнопки для слева или внизу страницы. Это не занимает более 15 секунд. Спасибо!

  Play Again!

Как убрать печать в файл

Здравствуйте, уважаемые посетители нашего сайта. Хочу предложить вашему вниманию небольшой мануал по такой вот проблеме. При печати любого документа word, exel и даже изображения, выходит окно  «Сохранить как…» и далее ничего не происходит, принтер не печатает. Хочу сразу вас успокоить, не переживайте, это не вирус и легко решается :) Это называется «печать в файл», а о том, как убрать печать в файл, вы узнаете из этой статьи. Выполнив всего несколько простых шагов, вы сможете исправить это досадное недоразумение и наконец распечатать ваши документы.

Решение:

Панель управления -> Оборудование и звук->Устройства и принтеры-> свойства принтера -> вкладка Порты -> выбрать USB вместо Печати в файл

А теперь немного картинок, где всё пошагово показано.

1. Первый делом идём в Панель управления, выбираем вид по категориям и заходим в «Оборудование и звук»

2. Идём в «Устройства и принтеры»

3. Вот он — наш принтер! Обратите внимание, принтер не виртуальный, а физический. Всё как положено, выбран по умолчанию.

4. Открываем свойства принтера, нажав правую кнопку мыши по значку принтера. В открывшемся окне выбираем вкладку «Порты». Если стоит галочка «Печатать в файл» — это и есть причина того, почему принтер не печатает.

5. Поставьте галочку на USB подключении «Порт виртуального принтера«. Например, у меня это порт USB001.

6. Нажмите ОК. Теперь печать должна заработать, все ваши документы и фото будут успешно напечатаны :) Спасибо за внимание и хорошего дня!

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

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

Функция Печать в файл сохраняет документ в формате prn, чтобы в дальнейшем его можно было распечатать на другом устройстве. Например, более профессиональном оборудовании с языком PS, которое должно быть подключено к компьютеру исключительно через порт LPT. В этом случае новому файлу нужно дать имя и нажать ОК. По умолчанию сохранение скорее всего пойдет в папке Документы.

Как убрать печать в файл

  1. Нажмите Отмена и снова откройте настройки печати. Нажмите на строку с принтером и посмотрите на последнюю строчку выпадающего меню. Если там стоит галочка в строке Печать в файл, просто снимите ее.
  2. Если маркера в этой строке нет, откройте Панель управления и перейдите в Просмотр устройств и принтеров.
  3. Если ваш реальный принтер, использующийся по умолчанию, не помечен зеленым как обычно, значит он действительно настроен для печати в файл.
  4. Откройте Свойства принтера (для вызова этого меню нужно кликнуть по значку вашей модели принтера правой кнопкой мыши).
  5.  Выберите вкладку Порты. Для вашего принтера назначен порт Печать в файл. Поставьте маркер в строку с портом USB, если таково ваше соединение, или сетевым, как на этом рисунке и нажмите ОК.

Вместо печати предлагается сохранение результата печати

  1. Если система предлагает сохранить PDF-документ, или OpenXPS, проверьте назначенный принтер. Скорее всего вы случайно кликнули этот значок и нужно просто выбрать в выпадающем меню нужную модель.
  2. Если же этот Print to PDF помечен зеленым, то есть назначен по умолчанию, выбирать принтер придется при каждой отправке на печать.
  3. Зайдите в Устройства и принтеры, кликните по значку реального, а не виртуального принтера правой кнопкой мыши и поставьте маркер в строке Использовать по умолчанию.

Понравилась статья? Поделись с друзьями!

Печать в файл — что это и как убрать

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

Функция печати в файл (как говорит Microsoft) — это уже история. Она была разработана для принтеров с интерфейсом LPT и сейчас заменена более универсальной печатью в формат PDF. Скорее всего, по причине распространенности этого формата и его универсальности (можно открыть практически любым браузером).

По умолчанию файлы принтера имеют разрешение — PRN. В нем принтер закладывает всю необходимую информацию для печати документа. То есть пользователь может распечатать файл PRN не имея программы просмотра оригинального документа. Например. Исходный документ создавался в Microsoft Word и был создан файл принтера (prn). Имея файл PRN можно распечатать документ на компьютере без пакета Microsoft Office. Здесь важно чтобы на компьютере был установлен такой же принтер и шрифты, которые использовались в исходном документе. Если шрифтов не будет принтер подберет максимально похожие.

Обычно, программа предлагает выбрать место для сохранения файла принтера (PRN). Если этого не происходит то, скорее всего, искать нужно в папке «Мои документы».

Печатайте с удовольствием.

Как очистить очередь печати принтера в Windows 7, 8, 10

Проблем с печатающими устройствами бывает много и разных. Исправить их порой достаточно просто. Но иногда неопытному пользователю приходится изрядно напрячься, чтобы аппарат снова стал работать. Многие ищут в сети «как очистить очередь печати принтера» — это правильное первое действие, когда печать попросту остановилась без причин и ошибок.

Как правило, проблема с невозможностью убрать документы из списка задач возникает на моделях фирмы HP, Canon. В статье Вы сможете найти сразу несколько способов, как удалить очередь на печать на принтере принудительно, когда стандартными действиями она не очищается. Инструкции актуальны для семейства всех версий операционных систем Windows 7,8,10.

Содержание статьи:

Возможные причины проблем

Перед тем как начать устранять какую-либо проблему или ошибку необходимо точно знать о ее наличии. Зависание документов в очереди возможно по нескольким причинам и не всегда требуется именно очистка или сброс всех заданий. Причинами могут быть:

  1. Ошибки программного обеспечения печатающего устройства.
  2. Проблемы с операционной системой Windows.
  3. Наличие вирусов на компьютере или неполное устранение последствий их действий.
  4. Временный «глюк» принтера, который решается простым вариантом очистить его память. Нужно выключить аппарат из розетки, а через некоторое время подать питание снова.

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

Диспетчер задач принтера

Самый простой и стандартный способ почистить очередь документов на печать на компьютере или ноутбуке сделать все через диспетчер задач принтера. Но сначала необходимо добраться до него. Сделать это можно так:

  1. Откройте панель управления через кнопку «Пуск» или нажав комбинацию WINDOWS+R, а потом введите «Control».
  2. Найдите раздел «Устройства и принтеры».
  3. Выберите свою модель из открывшегося списка.

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

  1. Выделите мышкой и нажмите правую кнопку.
  2. В контекстном меню выберите пункт «Просмотр очереди». Вы увидите все незавершенные задания.
  3. В окошке, которое сейчас видите, будет список зависших документов.
  4. Чтобы убрать все сразу нужно нажать на «Файл» вверху и выбрать «Очистить очередь печати».
  5. Чтобы удалить какой-то определенный документ из очереди печати, выделите и нажмите правой кнопкой мыши и в меню нажмите «Отменить».

Способы принудительной очистки

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

Службы Windows

В операционных системах Windows есть разные службы, которые выполняют большое количество задач. Есть среди них и служба диспетчера очереди печати. Роль этой оснастки предельно проста и достаточно важна — контролировать печать на Вашем компьютере. Проблемы зависания печати могут быть связаны именно с ней. Точно проверить такой факт неопытный пользователь не сможет.

Все что можно сделать в нашем случае — это попробовать перезапустить данную службу. Чтобы это сделать, следуйте такой инструкции:

  • Через пуск попадаем в панель управления.
  • Среди большого списка находим раздел «Администрирование».
  • Из перечня ярлыков нажимаем на «Службы».
  • В списке ищем оснастку «Диспетчер печати».
  • Перезапускаем ее.

Что это, почему отключается и как запускать.

Очистка временной папки

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

Найти нужную папку можно по адресу C:/Windows/System32/spool/Printers. Если система Виндовс установлена не на диск C, то в пути имя диска нужно изменить на актуальную букву. Удалять нужно только файлы в папке, а не саму директорию Printers. После удаления следует перезагрузить компьютер или ноутбук.

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

Командная строка

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

Запускать режим командной строки нужно от имени администратора.

Дальнейшими действиями будут вод и выполнение таких команд:

  1. net stop spooler.
  2. del %systemroot%system32spoolprinters*.shd /F /S /Q.
  3. del %systemroot%system32spoolprinters*.spl /F /S /Q.
  4. net start spooler.

Bat файл

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

Как временный вариант можно воспользоваться специальным bat файлом. Для этого создайте текстовый файл с расширением .bat. В сам файл вставьте текст.

net stop spooler

del %systemroot%system32spoolprinters*.shd /F /S /Q

del %systemroot%system32spoolprinters*.spl /F /S /Q

net start spooler

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

Специальные утилиты

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

Статья была полезной для Вас?Poll Options are limited because JavaScript is disabled in your browser.

  • Ничего полезного 46%, 13 голосов

    13 голосов 46%

    13 голосов — 46% из всех голосов

  • Очень 32%, 9 голосов

    9 голосов 32%

    9 голосов — 32% из всех голосов

  • Так себе 21%, 6 голосов

    6 голосов 21%

    6 голосов — 21% из всех голосов

Всего голосов: 28

18.03.2019

×

Вы или с вашего IP уже голосовали.

Видео инструкция

Актуально для семерки, восьмерки и десятки.

СТАТЬЯ БЫЛА ПОЛЕЗНОЙ?

Отлично!

В знак благодарности расскажите о статье своим друзьям и знакомым в социальных сетях. Используйте кнопки для слева или внизу страницы. Это не занимает более 15 секунд. Спасибо!

  Play Again!

Имя файла для вывода при печати

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

Функция печати в файл ( как говорит Microsoft ) — это уже история. Она была разработана для принтеров с интерфейсом LPT и сейчас заменена более универсальной печатью в формат PDF. Скорее всего, по причине распространенности этого формата и его универсальности (можно открыть практически любым браузером).

По умолчанию файлы принтера имеют разрешение — PRN. В нем принтер закладывает всю необходимую информацию для печати документа. То есть пользователь может распечатать файл PRN не имея программы просмотра оригинального документа. Например. Исходный документ создавался в Microsoft Word и был создан файл принтера (prn). Имея файл PRN можно распечатать документ на компьютере без пакета Microsoft Office. Здесь важно чтобы на компьютере был установлен такой же принтер и шрифты, которые использовались в исходном документе. Если шрифтов не будет принтер подберет максимально похожие.

Обычно, программа предлагает выбрать место для сохранения файла принтера (PRN). Если этого не происходит то, скорее всего, искать нужно в папке «Мои документы».

Печатайте с удовольствием.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

  1. Перейдите на вкладку «Вывод» панель «Печать» «Печать» . В командной строке введите «печать».
  2. В диалоговом окне «Печать» в группе «Принтер/Плоттер» в поле «Имя» выберите из списка драйвер вывода на плоттер.

Файлы печати предназначены для работы с программным обеспечением буферизации данных; их можно также передать в центр обслуживания для вывода на печать. Вывод файлов PLT можно запустить с помощью простого командного файла.

  1. Откройте текстовый редактор и сохраните командный файл в той папке, где хранятся файлы PLT.
  2. Присвойте командному файлу имя, например MySpooler.bat.
  3. Добавьте в командный файл одну строку следующего вида:

copy %1 серверпринтер

Параметр %1 автоматически заменяется именем файла .plt, который передается устройству вывода.

При выполнении этой процедуры используется командный файл, созданный в ходе выполнения процедуры To create a batch file for plot spooling .

  1. Откройте окно командной строки и введите команду перехода к папке, содержащей файл PLT и командный файл буферизации данных.
  2. В командной строке введите следующую команду:

Здесь MySpooler.bat – имя созданного ранее командного файла, а MyDrawing.plt – имя файла печати.

Выполняется копирование файла PLT на устройство вывода и создание чертежа.

Вывод чертежа на плоттер, принтер или в файл.

Здравствуйте, уважаемые посетители нашего сайта. Хочу предложить вашему вниманию небольшой мануал по такой вот проблеме. При печати любого документа word, exel и даже изображения, выходит окно «Сохранить как…» и далее ничего не происходит, принтер не печатает. Хочу сразу вас успокоить, не переживайте, это не вирус и легко решается 🙂 Это называется «печать в файл», а о том, как убрать печать в файл, вы узнаете из этой статьи. Выполнив всего несколько простых шагов, вы сможете исправить это досадное недоразумение и наконец распечатать ваши документы.

Решение:

Панель управления -> Оборудование и звук->Устройства и принтеры-> свойства принтера -> вкладка Порты -> выбрать USB вместо Печати в файл

А теперь немного картинок, где всё пошагово показано.

1. Первый делом идём в Панель управления, выбираем вид по категориям и заходим в «Оборудование и звук»

2. Идём в «Устройства и принтеры»

3. Вот он — наш принтер! Обратите внимание, принтер не виртуальный, а физический. Всё как положено, выбран по умолчанию.

4. Открываем свойства принтера, нажав правую кнопку мыши по значку принтера. В открывшемся окне выбираем вкладку «Порты». Если стоит галочка «Печатать в файл» — это и есть причина того, почему принтер не печатает.

5. Поставьте галочку на USB подключении «Порт виртуального принтера«. Например, у меня это порт USB001.

6. Нажмите ОК. Теперь печать должна заработать, все ваши документы и фото будут успешно напечатаны 🙂 Спасибо за внимание и хорошего дня!

Добавить комментарий Отменить ответ

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

БОЛЬШОЕ СПАСИБО. Неделю мучилась с принтером и наконец смогла его настроить.

очень рад помочь)

Спасибо огромное, 6 месяцев я не мог найти решение этой проблемы десятки сайтов и видео просмотрел, спасибо

не работает,тоже самое(

Всё сделал , как советовали, но комп все равно предлагает сохранить, причём в формате фото…потом печатает.

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

Галочка стояла на usb порте, но в ворде все равно печатало в файл.
Удалила порт «в файл» и теперь все печатает.
Спасибо за подсказку!

Спасибо за помощь все работает.

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

А ЕСЛИ НЕ ПОЛУЧАЕТСЯ ПРИМЕНИТЬ И НЕ РАБОТАЕТ ЧТО ДЕЛАТЬ

It works. Thank you.

Спасибо огромное, все заработало!

СПАСИБО ОГРОМНОЕ,ВСЕ ДОХОДЧИВО И ЯСНО,ПРИНТЕР ЗАРАБОТАЛ.

А у меня в порте не показывает USB?

нужно драйвер для принтера установить, ну и убедиться что кабель рабочий

Спасибо. все получилось отменить !

у меня тупорылый принтер

Печатает только в Ворде, картинки предлагает сохранять

Добрый день. У меня все правильно стоит. Но если печатаю текстовый документ, то печатает. А если картинку PDF например. Предлагает сохранить…. Иногда это даже полезно, но если честно заколебало. Где еще посмотреть?

а какой принтер в настройках выбран по умолчанию?

а у меня стоит все правильно,но сохранение в файл и не печатает

на вирусы проверьтесь, вдруг дело в них?

ГОСПОДИ, какое счастье. СПАСИБО!

Спасибо огромное, Человек.

Здравствуйте, у меня проблемка с печатью из AutoCAD в файл принтером DWG to PDF.pc3 и PublishToWeb JPG , сначала думал, что сбились настройки в AutoCAD-11, но и в AutoCAD-8 тоже самое. Операционка XP.

Реальная помощь- просто и доходчиво!
Искал решение проблемы на других ресурсах, умники дают бесполезные советы- убери галочку там, поставь галочку там…
Спасибо большое!

У меня так и стоит, но все равно не работает

драйвера как правило виноваты, переустановить попробуйте

А как переустановить драйвер?

набираете в пуск-> выполнить команду printui /s ,и на вкладке драйвер можно удалить текущий

Windows 10 не печатает только PDF — вместо кнопки Печать кнопка Сохранить. Зашла в Панель управления, Устройства и принтеры. У меня принтер Canon MP230 series Printer. Жму на него правой кнопкой.
Нажимаю на Свойства — только две вкладки Общие и Оборудование. Вкладки Порты вообще нет. Поэтому нигде нет списка, чтобы снять галочку со строчки Печатать в файл.
На вкладке Оборудование в окошечке перечень из 4 пунктов:
Имя тип
Canon MP230 series устр…
Canon MP230 series Printer принтеры
Поддержка USB принтера контроллер
Составное юсб устройство контроллер
Внизу есть кнопка свойства.
При кликанье на эту кнопку и на любую строчку в окошечке открывается еще одно окно, где 4 вкладки: общие драйвера видео события. Опять-таки нет никаких портов.
Вопрос — как в такой Windows 10 отменить печать в файл?

Нужно выбирать не свойства, а «свойства принтера», точно нет такого?

Уже все печатает! Проблема оказалась в глюках Windows 10. Кроме того, что нельзя было распечатать PDF, вообще ничего не печатал, показывал системную ошибку winnpol драйв и недоступность доменных служб Active directory. Обращалась в техподдержку, они запускали проверку. Не помогло. Ещё раз сказали запустить, так как уже кончался у них рабочий день. После окончания проверки решила попробовать печатать. Опять были принтеры не установлены, но хотя бы кнопка была активной. Нажала принтеры установить. ошибки winnpol драйв уже не было. Но снова объявилась ошибка:
Принтер не устанавливается потому что доменные службы Active directory сейчас недоступны.
Я попробовала зайти в брандмауэр в панели управления, нажала устранение неполадок в сети, запустился мастер. После него попробовала печатать всё отлично печатается — в офисах выбрала принтер, принтер подключился. После этого попробовала зайти на сайт распечатать PDF. Кнопка было сохранить но после того как зашла в изменить — там появилась куча принтеров. Я выбрала свой mp230. Кнопка сохранить наконец-таки поменялась на печать и можно было распечатать.

Рад, что у вас проблема благополучно решилась 🙂

Огромное спасибо- выручили! Моментально всё стало работать.

python — удалить имя, dtype из вывода pandas

Переполнение стека

  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя

.

linux — Не печатать имена файлов в выводе zgrep при поиске нескольких файлов

Переполнение стека

  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант

.

javascript — Как создать собственное имя файла для файла при сохранении страницы печати?

Переполнение стека

  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант

.

Matlab — как убрать разрыв строки при выводе на экран?

Переполнение стека

  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд

.

linux — Как удалить предупреждение: link.res содержит разделы вывода; ты забыл -T?

Переполнение стека

  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста

.


Смотрите также

Понравилась статья? Поделить с друзьями:
  • Ошибка имя указано некорректно 100
  • Ошибка имя приложения explorer exe
  • Ошибка имя содержит недопустимое значение
  • Ошибка имя пользователя уже используется
  • Ошибка имя службы доступа к сети