comando de impresión en lugar de echo en Linux


7

Simplemente puedo imprimir un mensaje en la terminal usando el echocomando de Linux .

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

¿Puedo tener la misma salida con el printcomando?

De hecho, $ man printrevisé sus manuales, donde los describe como Run-mailcap-programas, término que nunca antes había escuchado. Y llegué a saber que se usa para encontrar el programa correcto para abrir un archivo, basado en MIME.

Entonces, ¿hay alguna forma de imprimir una línea simple usando printsolo en lugar de echo?

Encontraron el mismo tipo de problema en la necesidad de asignar el contenido de un archivo de texto a una variable en un script bash , pero la gente lo que sugiere echomás de printallí.

Intenté seguir, pero tuve problemas.

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

Pide un archivo, con el archivo proporcionado.

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

Pero trabajé en combinación con el awkcomando con un archivo proporcionado,

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

¿En qué sistema operativo estás?
slm

@slm Estoy en ubuntu
prayagupd

OK, mira mi respuesta y avísame si te ayuda
slm

Respuestas:


16

Estás confundiendo muchas cosas aquí, déjame tratar de descifrar esto por ti.

  1. awk '{print}' ...

    Esto no tiene nada que ver con lo printque estás preguntando. awkes un lenguaje de programación dinámico que contiene sus propios comandos, de los cuales printes uno de ellos.

  2. print --"text/plain" "prayag works on JVM" y otras formas

    El comando printes para mostrar archivos según el contenido del archivo mailcap, utilizando el "controlador" designado para cada tipo de archivo en particular, no para imprimir cadenas en la pantalla.

    extracto de la página del manual de impresión

    run-mailcap, ver, ver, editar, componer, imprimir: ejecutar programas a través de entradas en el archivo mailcap

    run-mailcap (o cualquiera de sus alias) usará la acción dada para procesar cada tipo / archivo mime a su vez. Cada archivo se especifica como su tipo mime, su codificación (p. Ej., Compresión) y su nombre de archivo, separados por dos puntos. Si se omite el tipo mime, se intenta determinar el tipo intentando hacer coincidir la extensión del archivo con las de los archivos mime.types. Si se omite la codificación, también se determinará a partir de las extensiones del archivo. Las codificaciones admitidas actualmente son gzip (.gz), bzip (.bz), bzip2 (.bz2) y comprimir (.Z). Se puede usar un nombre de archivo de "-" para significar "entrada estándar", pero luego se debe especificar un tipo mime.

  3. echo

    El comando echoes un comando incorporado al shell que está usando llamado Bash (supongo que está usando Bash). Puede confirmar esto usando este comando:

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

    Se dará cuenta de que echotambién es un ejecutable independiente, /bin/echo. Este es un comando diferente al echoque está utilizando, pero tiene un propósito similar.

  4. print en shells como zsh / ksh

    Gracias al comentario de @Gilles, el printcomando que está buscando es muy probablemente el que está integrado en shells como zshy / o ksh. Se puede ver su uso a través de la página del manual, man zshbuiltins.

    Ejemplo

    zsh % print "hello world"
    hello world

    Puede ejecutar uno de estos shells escribiendo zsho ksh.

printf

¿Quizás estás buscando el comando 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

El comando printftoma un conjunto de formatos de caracteres especiales para que pueda indicarle cómo desea mostrar elementos como cadenas o dígitos, etc. Consulte la página del manual para obtener más información printf.

correo postal

Por lo tanto, muchas personas probablemente ignoran el archivo /etc/mailcap. Este archivo contiene tipos MIME (encabezados de archivos que identifican qué tipo de archivo es un archivo). Luego puede crear entradas en este mailcaparchivo que designen qué herramienta usar para abrir un tipo MIME particular para un archivo.

Ejemplo

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"

Las líneas anteriores dicen que si obtiene un archivo con el tipo mime audio/mpeg, use la herramienta /usr/bin/mplayerpara abrir este archivo.

La herramienta de correo electrónico generalmente usa estas reglas, pero otras herramientas también pueden aprovechar estas entradas dentro del mailcaparchivo.

Si está interesado en aprender más sobre los tipos mime o mailcap, consulte las siguientes referencias.

Referencias


2
A veces pienso que nunca duermes :-). +1, no podría haber respondido esto mejor
iruvar

2
@PrayagUpd: gracias por tu Q. Créalo o no, también aprendo algo con cada Q, así que los aprecio inmensamente, ya que me llevan a aprender cosas de una manera mucho más detallada. 8-)
slm

1
@PrayagUpd: sí, busqué tu IP. Yo uso correcaminos aquí en los Estados Unidos. Yo mismo alojo mi blog, ¿entonces es probable que estén bloqueando según la IP de la región geográfica? Tenía la intención de mover mi blog a algo que sea más accesible.
slm

2
@PrayagUpd: de nada, gracias por informarme sobre mi blog. Obviamente, quiero que sea lo más accesible posible, no tiene sentido escribir cosas si ppl no lo parece.
slm

1
printTambién es un ksh (y zsh) incorporado, similar echopero sin las peculiaridades históricas. Ese es probablemente el origen último de por qué usó el autor de esa pregunta SO print.
Gilles 'SO- deja de ser malvado'

0

Puede usar el comando printf para hacerlo,

 # printf Hello World
 Hello

 # printf "Hello World"
 Hello World

Bueno, exatly necesitas usar print commnad y luego puedes agregar un alias

 # alias print='echo'

 # print Hello World
 Hello World

 # unalias print  < -- to revert.

también para establecer permanente,

 # export print='echo'

 # print Hello Linux
 Hello Linux

entonces,

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

# unset print   < -- to revert.
# export | grep print
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.