print command em vez de echo no linux

7

Eu simplesmente posso imprimir uma mensagem no terminal usando o comando linux echo .

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

Posso ter a mesma saída com o comando print .

Eu realmente passei por seus manuais, onde $ man print descreve como programas Run-mailcap cujo termo eu nunca ouvi antes. E veio a saber que ele é usado para encontrar o programa correto para abrir um arquivo com base em MIME.

Então existe alguma maneira de imprimir uma linha simples usando print sozinho em vez de echo ?

Encontrou um tipo similar de problema em Precisa atribuir o conteúdo de um arquivo de texto a uma variável em um script bash , mas as pessoas sugerem echo over print there.

Eu tentei seguir, mas recebi 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"

Ele pede um arquivo, com o arquivo fornecido.

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

Mas comecei a trabalhar em combinação com o comando awk com um arquivo fornecido,

$ awk '{print}' application.properties 
prayag works on JVM
    
por prayagupd 09.11.2013 / 04:59

2 respostas

17

Você está confundindo muitas coisas aqui, deixe-me tentar e separar isso para você.

  1. awk '{print}' ...

    Isso não tem nada a ver com o print que você está perguntando. awk é uma linguagem de programação dinâmica que contém seus próprios comandos, dos quais print é um deles.

  2. print --"text/plain" "prayag works on JVM" e outras formas

    O comando print é para exibir arquivos de acordo com o conteúdo do arquivo mailcap, usando o "manipulador" designado para cada tipo de arquivo específico, não para imprimir strings na tela.

    trecho da página de manual de impressão

    run-mailcap, view, see, edit, compose, print - execute programs via entries in the mailcap file

    run-mailcap (or any of its aliases) will use the given action to process each mime-type/file in turn. Each file is spec‐ ified as its mime-type, its encoding (e.g. compression), and filename together, separated by colons. If the mime-type is omitted, an attempt to determine the type is made by trying to match the file's extension with those in the mime.types files. If the encoding is omitted, it will also be determined from the file's extensions. Currently supported encodings are gzip (.gz), bzip (.bz), bzip2 (.bz2), and compress (.Z). A filename of "-" can be used to mean "standard input", but then a mime-type must be specified.

  3. echo

    O comando echo é um comando interno para o shell que você está usando chamado Bash (suponho que você esteja usando o Bash). Você pode confirmar isso usando este comando:

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

    Você notará que echo também é um executável autônomo, /bin/echo . Este é um comando diferente do que o echo que você está usando, mas tem um objetivo semelhante.

  4. print em shells como zsh / ksh

    Graças ao comentário @Gilles, o comando print que você está procurando é provavelmente o que é construído em shells como zsh e / ou ksh . Você pode ver seu uso através da página man, man zshbuiltins .

    Exemplo

    zsh % print "hello world"
    hello world
    

    Você pode executar um desses shells digitando zsh ou ksh .

printf

Talvez você esteja procurando o 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

O comando printf usa um conjunto de formatação de caracteres especiais para que você possa instruí-lo sobre como deseja exibir coisas como cadeias de caracteres ou dígitos, etc. Consulte a página man em printf .

mailcap

Então, muitas pessoas provavelmente não sabem o arquivo /etc/mailcap . Este arquivo contém tipos MIME (cabeçalhos de arquivos que identificam que tipo de arquivo é um arquivo). Você pode, então, criar entradas neste arquivo mailcap que designa qual ferramenta usar para abrir um determinado tipo MIME para um arquivo.

Exemplo

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"

As linhas acima dizem que, se você obtiver um arquivo com o tipo mime audio/mpeg , use a ferramenta /usr/bin/mplayer para abrir este arquivo.

Essas regras geralmente são usadas pela ferramenta de e-mail, mas outras ferramentas também podem aproveitar essas entradas no arquivo mailcap .

Se você estiver interessado em aprender mais sobre mime-types ou mailcap, consulte as seguintes referências.

Referências

por 09.11.2013 / 05:08
0

Você pode usar o comando printf para fazer isso,

 # printf Hello World
 Hello

 # printf "Hello World"
 Hello World

Bem, você precisa usar o comando print, então você pode adicionar o alias

 # alias print='echo'

 # print Hello World
 Hello World

 # unalias print  < -- to revert.

também para definir permanente,

 # export print='echo'

 # print Hello Linux
 Hello Linux

então,

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

# unset print   < -- to revert.
# export | grep print
    
por 09.11.2013 / 22:44