commande print au lieu d'echo sous linux


7

Je peux simplement imprimer un message dans le terminal en utilisant la echocommande linux .

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

Puis-je avoir la même sortie avec la printcommande.

En fait, j'ai parcouru leurs manuels, où $ man printil est décrit comme des programmes Run-mailcap, terme que je n'avais jamais entendu auparavant. Et est venu à savoir qu'il est utilisé pour trouver le bon programme pour ouvrir un fichier avec, basé sur MIME.

Existe-t-il un moyen d' imprimer une ligne simple en utilisant printseul au lieu de echo?

Trouvé même genre de problème Nécessité d'affecter le contenu d'un fichier texte à une variable dans un script bash , mais les gens suggérant echoplus printlà.

J'ai essayé de suivre, mais j'ai eu des problèmes.

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

Il demande un fichier, avec le fichier fourni.

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

Mais a travaillé en combinaison avec la awkcommande avec un fichier fourni,

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

Sur quel OS êtes-vous?
slm

@slm Je suis sur ubuntu
priagupd

OK, voir ma réponse et faites-moi savoir si cela aide
slm

Réponses:


16

Vous confondez beaucoup de choses ici, laissez-moi essayer de vous expliquer cela.

  1. awk '{print}' ...

    Cela n'a rien à voir avec ce printque vous demandez. awkest un langage de programmation dynamique qui contient ses propres commandes, dont l' printune d'entre elles.

  2. print --"text/plain" "prayag works on JVM" et autres formes

    La commande printsert à afficher les fichiers en fonction du contenu du fichier mailcap, en utilisant le "gestionnaire" désigné pour chaque type de fichier particulier, et non à imprimer des chaînes à l'écran.

    extrait de la page de manuel d'impression

    exécuter-mailcap, afficher, voir, éditer, composer, imprimer - exécuter des programmes via les entrées du fichier mailcap

    run-mailcap (ou l'un de ses alias) utilisera l'action donnée pour traiter chaque type / fichier mime à son tour. Chaque fichier est spécifié comme son type MIME, son encodage (par exemple compression) et son nom de fichier ensemble, séparés par des deux-points. Si le type mime est omis, une tentative de détermination du type est effectuée en essayant de faire correspondre l'extension du fichier avec celles des fichiers mime.types. Si l'encodage est omis, il sera également déterminé à partir des extensions du fichier. Les encodages actuellement pris en charge sont gzip (.gz), bzip (.bz), bzip2 (.bz2) et compress ((Z). Un nom de fichier "-" peut être utilisé pour signifier "entrée standard", mais un type mime doit alors être spécifié.

  3. echo

    La commande echoest une commande intégrée au shell que vous utilisez appelée Bash (je suppose que vous utilisez Bash). Vous pouvez le confirmer en utilisant cette commande:

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

    Vous remarquerez que echoest un exécutable autonome, /bin/echo. Il s'agit d'une commande différente de celle echoque vous utilisez, mais sert un objectif similaire.

  4. print dans des coques telles que zsh / ksh

    Grâce au commentaire de @Gilles, la printcommande que vous recherchez est probablement celle qui est intégrée dans des shells tels que zshet / ou ksh. Vous pouvez voir son utilisation à travers la page de manuel, man zshbuiltins.

    Exemple

    zsh % print "hello world"
    hello world

    Vous pouvez exécuter l'un de ces shells en tapant zshou ksh.

printf

Vous recherchez peut-être la commande 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

La commande printfprend un ensemble de mise en forme de caractères spéciaux afin que vous puissiez lui indiquer comment vous souhaitez afficher des éléments tels que des chaînes ou des chiffres, etc. Consultez la page de manuel pour printf.

mailcap

Donc, beaucoup de gens sont probablement inconscients du dossier /etc/mailcap. Ce fichier contient des types MIME (en-têtes de fichiers qui identifient le type de fichier d'un fichier). Vous pouvez ensuite créer des entrées dans ce mailcapfichier qui désignent quel outil utiliser pour ouvrir un type MIME particulier pour un fichier.

Exemple

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"

Les lignes ci-dessus indiquent que si vous obtenez un fichier avec le type MIME audio/mpeg, utilisez l'outil /usr/bin/mplayerpour ouvrir ce fichier.

Ces règles sont généralement utilisées par l'outil de messagerie, mais d'autres outils peuvent également tirer parti de ces entrées dans le mailcapfichier.

Si vous souhaitez en savoir plus sur les types MIME ou le mailcap, consultez les références suivantes.

Références


2
Parfois, je pense que vous ne dormez jamais :-). +1, n'aurait pas pu mieux répondre à cette question
iruvar

2
@PrayagUpd - merci pour votre Q. Croyez-le ou non, j'apprends aussi quelque chose avec chaque Q donc je les apprécie énormément car ils me poussent à apprendre des choses d'une manière beaucoup plus détaillée. 8-)
slm

1
@PrayagUpd - ouais j'ai recherché votre IP. J'utilise road runner ici aux États-Unis. J'héberge moi-même mon blog, donc ils bloquent probablement en fonction de l'IP de la région géographique? J'avais l'intention de déplacer mon blog vers quelque chose de plus accessible.
slm

2
@PrayagUpd - vous êtes les bienvenus, merci de m'avoir informé de mon blog. Évidemment, je veux que ce soit aussi accessible que possible, inutile d'écrire les choses si ppl ne peut pas le paraître.
slm

1
printest également un ksh (et zsh) intégré, similaire echomais sans les bizarreries historiques. C'est probablement l'origine ultime de la raison pour laquelle le demandeur de cette question SO a utilisé print.
Gilles 'SO- arrête d'être méchant'

0

Vous pouvez utiliser la commande printf pour ce faire,

 # printf Hello World
 Hello

 # printf "Hello World"
 Hello World

Eh bien, vous devez utiliser la commande d'impression avant d'ajouter un alias

 # alias print='echo'

 # print Hello World
 Hello World

 # unalias print  < -- to revert.

aussi de fixer permanent,

 # export print='echo'

 # print Hello Linux
 Hello Linux

donc,

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

# unset print   < -- to revert.
# export | grep print
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.