команда печати вместо эха в Linux


7

Я просто могу напечатать сообщение в терминале с помощью echoкоманды linux .

prayag@prayag$ echo "prayag works on JVM"
prayag works on JVM

Могу ли я иметь тот же вывод с printкомандой.

Я на самом деле просмотрел их руководства, где $ man printописывает их как Run-mailcap-программы, термин которых я никогда раньше не слышал. И узнал, что он используется для поиска правильной программы для открытия файла с помощью MIME.

Так есть ли способ напечатать простую строку, используя printодин вместо echo?

Найдено подобного рода проблемы при необходимости присвоения содержимого текстового файла в переменную в Баш скрипт , но люди предлагая echoболее printтам.

Я попытался следовать, но получил проблемы.

$ print --"text/plain" "prayag works on JVM"
Warning: unknown mime-type for "prayag works on JVM" -- using "application/octet-stream"
Error: no such file "prayag works on JVM"

Он запрашивает файл с предоставленным файлом.

$ print --"text/plain" application.properties 
Warning: unknown mime-type for "application.properties" -- using "application/octet-stream"
Error: no "print" mailcap rules found for type "application/octet-stream"

Но получил работу в сочетании с awkкомандой с предоставленным файлом,

$ awk '{print}' application.properties 
prayag works on JVM

На какой ОС вы работаете?
SLM

@slm Я на убунту
prayagupd

Хорошо, посмотрите мой ответ и дайте мне знать, если это поможет
slm

Ответы:


16

Вы путаете многие вещи здесь, позвольте мне попробовать и дразнить это для вас отдельно.

  1. awk '{print}' ...

    Это не имеет ничего общего с тем, о printчем вы спрашиваете. awkдинамический язык программирования, который содержит свои собственные команды, одной из которых printявляется

  2. print --"text/plain" "prayag works on JVM" и другие формы

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

    выдержка из страницы руководства для печати

    run-mailcap, просмотр, просмотр, редактирование, создание, печать - выполнение программ через записи в файле mailcap

    run-mailcap (или любой из его псевдонимов) будет использовать данное действие для обработки каждого mime-типа / файла по очереди. Каждый файл определяется как mime-тип, его кодировка (например, сжатие) и имя файла вместе, разделенные двоеточиями. Если тип mime опущен, делается попытка определить тип путем сопоставления расширения файла с расширениями в файлах mime.types. Если кодировка опущена, она также будет определяться из расширений файла. В настоящее время поддерживаются следующие кодировки: gzip (.gz), bzip (.bz), bzip2 (.bz2) и сжатие (.Z). Имя файла «-» может использоваться для обозначения «стандартного ввода», но тогда должен быть указан тип mime.

  3. echo

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

    $ type -a echo
    echo is a shell builtin
    echo is /bin/echo
    

    Вы заметите, что echoэто также отдельный исполняемый файл /bin/echo. Эта команда отличается от используемой echoвами, но служит аналогичной цели.

  4. print в оболочках типа зш / кш

    Благодаря комментарию @Gilles, printвы, скорее всего, ищете команду, встроенную в такие оболочки, как zshи / или ksh. Вы можете увидеть его использование на странице руководства man zshbuiltins.

    пример

    zsh % print "hello world"
    hello world
    

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

Printf

Возможно, вы ищете команду printf?

$ printf "%s\n" "hello stringy world"
hello stringy world

$ printf "this is some padded digits: %04d\n" "10"
this is some padded digits: 0010

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

mailcap

Так что многие люди, вероятно, не обращают внимания на файл /etc/mailcap. Этот файл содержит MIME-типы (заголовки из файлов, которые определяют тип файла). Затем вы можете создать записи в этом mailcapфайле, которые определяют, какой инструмент использовать для открытия определенного типа MIME для файла.

пример

text/html; /usr/bin/sensible-browser '%s'; description=HTML Text; nametemplate=%s.html
application/x-troff-man; /usr/bin/nroff -mandoc -Tutf8; copiousoutput; print=/usr/bin/nroff -mandoc -Tutf8 | print text/plain:-
application/x-ogg; /usr/bin/mplayer '%s'; description="OggVorbis Audio"
application/ogg; /usr/bin/mplayer '%s'; description="OggVorbis Audio"
audio/mpeg; /usr/bin/mplayer '%s'; description="MPEG Audio Format"
audio/x-mpegurl; /usr/bin/mplayer '%s'; description="Icecast Playlists"
audio/x-ms-wax; /usr/bin/mplayer '%s'; description="Audio Format"

Вышеуказанные строки говорят, что если вы получаете файл с mime-типом audio/mpeg, используйте инструмент, /usr/bin/mplayerчтобы открыть этот файл.

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

Если вы хотите узнать больше о mime-types или mailcap, смотрите следующие ссылки.

Ссылки


2
Иногда я думаю, что ты никогда не спишь :-). +1, не мог ответить на этот вопрос лучше
iruvar

2
@PrayagUpd - спасибо за ваши вопросы. Верьте или нет, я тоже чему-то учусь с каждым вопросом, поэтому я очень ценю их, так как они заставляют меня изучать вещи гораздо более детально. 8-)
СЛМ

1
@PrayagUpd - да, я посмотрел ваш IP. Я использую дорожного бегуна здесь, в США. Я сам веду свой блог, поэтому они могут блокироваться в зависимости от географического IP-адреса региона? Я хотел перенести свой блог на что-то более доступное.
SLM

2
@PrayagUpd - пожалуйста, спасибо, что сообщили мне о моем блоге. Очевидно, я хочу, чтобы он был как можно более доступным, нет смысла писать что-либо, если ppl не может показаться.
SLM

1
printтакже является встроенным ksh (и zsh), похожим, echoно без исторических причуд. Вероятно, это и есть окончательное происхождение вопроса о том, кто задал этот вопрос print.
Жиль "ТАК - перестань быть злым"

0

Вы можете использовать команду printf, чтобы сделать это,

 # printf Hello World
 Hello

 # printf "Hello World"
 Hello World

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

 # alias print='echo'

 # print Hello World
 Hello World

 # unalias print  < -- to revert.

также установить постоянный,

 # export print='echo'

 # print Hello Linux
 Hello Linux

так,

# export | grep print
declare -x print="echo"

# unset print   < -- to revert.
# export | grep print
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.