Druckbefehl statt Echo unter Linux


7

Ich kann einfach eine Nachricht im Terminal mit dem Linux- echoBefehl drucken .

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

Kann ich die gleiche Ausgabe mit printBefehl haben.

Ich habe tatsächlich ihre Handbücher durchgesehen, wo $ man printes als Run-Mailcap-Programme beschrieben wird, welchen Begriff ich noch nie zuvor gehört habe. Und erfuhr, dass es verwendet wird, um das richtige Programm zum Öffnen einer Datei zu finden, basierend auf MIME.

Gibt es also eine Möglichkeit, eine einfache Zeileprint allein zu drucken , anstatt echo?

Gefunden ähnliche Art von Problem bei Bedarf den Inhalt einer Textdatei auf eine Variable in einem Bash - Skript zuweisen , aber die Leute darauf hindeutet , echoüber printdort.

Ich habe versucht zu folgen, aber Probleme bekommen.

$ 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"

Es wird nach einer Datei gefragt, wobei die Datei bereitgestellt wird.

$ 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"

Aber in Kombination mit awkBefehl mit einer bereitgestellten Datei arbeiten,

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

Auf welchem ​​Betriebssystem bist du?
slm

@slm Ich bin auf Ubuntu
Prayagupd

OK, sehen Sie meine Antwort und lassen Sie mich wissen, ob es hilft
slm

Antworten:


16

Sie verwirren hier viele Dinge, lassen Sie mich versuchen, dies für Sie auseinander zu ziehen.

  1. awk '{print}' ...

    Dies hat nichts mit dem zu tun print, wonach Sie fragen. awkist eine dynamische Programmiersprache, die ihre eigenen Befehle enthält, von denen printeiner einer ist.

  2. print --"text/plain" "prayag works on JVM" und andere Formen

    Der Befehl printdient zum Anzeigen von Dateien gemäß dem Inhalt der Mailcap-Datei unter Verwendung des festgelegten "Handlers" für jeden bestimmten Dateityp und nicht zum Drucken von Zeichenfolgen auf dem Bildschirm.

    Auszug aus der Druck-Manpage

    Run-Mailcap, Anzeigen, Anzeigen, Bearbeiten, Verfassen, Drucken - Ausführen von Programmen über Einträge in der Mailcap-Datei

    run-mailcap (oder einer seiner Aliase) verwendet die angegebene Aktion, um jeden MIME-Typ / jede MIME-Datei nacheinander zu verarbeiten. Jede Datei wird als MIME-Typ, Codierung (z. B. Komprimierung) und Dateiname zusammen angegeben, getrennt durch Doppelpunkte. Wenn der MIME-Typ weggelassen wird, wird versucht, den Typ zu bestimmen, indem versucht wird, die Dateierweiterung mit denen in den Dateien mime.types abzugleichen. Wenn die Codierung weggelassen wird, wird sie auch anhand der Dateierweiterungen ermittelt. Derzeit unterstützte Codierungen sind gzip (.gz), bzip (.bz), bzip2 (.bz2) und compress (.Z). Ein Dateiname von "-" kann verwendet werden, um "Standardeingabe" zu bedeuten, aber dann muss ein MIME-Typ angegeben werden.

  3. echo

    Der Befehl echoist ein integrierter Befehl für die von Ihnen verwendete Shell namens Bash (ich gehe davon aus, dass Sie Bash verwenden). Sie können dies mit diesem Befehl bestätigen:

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

    Sie werden feststellen, dass dies echoauch eine eigenständige ausführbare Datei ist /bin/echo. Dies ist ein anderer Befehl als der von echoIhnen verwendete, dient jedoch einem ähnlichen Zweck.

  4. print in Schalen wie zsh / ksh

    Dank des @ Gilles-Kommentars ist der gesuchte printBefehl höchstwahrscheinlich derjenige, der in Shells wie zshund / oder integriert ist ksh. Sie können seine Verwendung über die Manpage sehen man zshbuiltins.

    Beispiel

    zsh % print "hello world"
    hello world

    Sie können eine dieser Shells ausführen, indem Sie zshoder eingeben ksh.

printf

Vielleicht suchen Sie nach dem Befehl 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

Der Befehl verwendet printfeinen Formatierungssatz von Sonderzeichen, damit Sie ihm mitteilen können, wie Sie Dinge wie Zeichenfolgen oder Ziffern usw. anzeigen möchten. Weitere Informationen finden Sie in der Manpage printf.

Mailcap

Viele Leute sind sich der Datei wahrscheinlich nicht bewusst /etc/mailcap. Diese Datei enthält MIME-Typen (Header aus Dateien, die angeben, um welchen Dateityp es sich bei einer Datei handelt). Sie können dann Einträge in dieser mailcapDatei erstellen, die angeben , mit welchem ​​Tool ein bestimmter MIME-Typ für eine Datei geöffnet werden soll.

Beispiel

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"

Die obigen Zeilen besagen, dass Sie diese Datei mit audio/mpegdem Tool /usr/bin/mplayeröffnen können , wenn Sie eine Datei mit dem MIME-Typ erhalten .

Diese Regeln werden im Allgemeinen vom E-Mail-Tool verwendet, aber auch andere Tools können diese Einträge in der mailcapDatei nutzen.

Wenn Sie mehr über MIME-Typen oder Mailcap erfahren möchten, lesen Sie die folgenden Referenzen.

Verweise


2
Manchmal denke ich, du schläfst nie :-). +1, hätte das nicht besser beantworten können
iruvar

2
@PrayagUpd - danke für dein Q. Ob du es glaubst oder nicht, ich lerne auch mit jedem Q etwas, deshalb schätze ich sie sehr, da sie mich dazu bringen, Dinge viel detaillierter zu lernen. 8-)
slm

1
@PrayagUpd - Ja, ich habe deine IP nachgeschlagen. Ich benutze Roadrunner hier in den USA. Ich hoste mein Blog selbst, damit es wahrscheinlich aufgrund der IP-Adresse der geografischen Region blockiert wird. Ich wollte mein Blog auf etwas verschieben, das leichter zugänglich ist.
slm

2
@PrayagUpd - Gern geschehen, danke, dass du mich über meinen Blog informiert hast. Natürlich möchte ich, dass es so zugänglich wie möglich ist. Es macht keinen Sinn, Dinge aufzuschreiben, wenn ppl es nicht scheinen kann.
slm

1
printist auch ein ksh (und zsh) eingebaut, ähnlich, echoaber ohne die historischen Macken. Das ist wahrscheinlich der ultimative Grund, warum der Fragesteller dieser SO-Frage verwendet hat print.
Gilles 'SO - hör auf böse zu sein'

0

Sie können dazu den Befehl printf verwenden.

 # printf Hello World
 Hello

 # printf "Hello World"
 Hello World

Nun, genau müssen Sie print commnad verwenden, dann können Sie einen Alias ​​hinzufügen

 # alias print='echo'

 # print Hello World
 Hello World

 # unalias print  < -- to revert.

auch dauerhaft zu setzen,

 # export print='echo'

 # print Hello Linux
 Hello Linux

damit,

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

# unset print   < -- to revert.
# export | grep print
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.