comando di stampa invece di echo in linux


7

Posso semplicemente stampare un messaggio nel terminale usando il echocomando linux .

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

Posso avere lo stesso output con printcomando.

In realtà ho $ man printsfogliato i loro manuali, dove lo descrivono come programmi Run-mailcap che termine non avevo mai sentito prima. E ho scoperto che viene utilizzato per trovare il programma corretto con cui aprire un file, basato su MIME.

Quindi c'è un modo per stampare una linea semplice usando printsolo invece di echo?

Trovato simile tipo di problema alla necessità di assegnare il contenuto di un file di testo ad una variabile in uno script bash , ma la gente che suggerisce echosopra printlà.

Ho provato a seguire, ma ho avuto problemi.

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

Richiede un file, con il file fornito.

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

Ma ho funzionato in combinazione con il awkcomando con un file fornito,

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

Su quale sistema operativo sei?
slm

@slm I'm on ubuntu
prayagupd

OK, vedi la mia risposta e fammi sapere se aiuta
slm

Risposte:


16

Stai confondendo molte cose qui, lasciami provare a stuzzicarlo per te.

  1. awk '{print}' ...

    Questo non ha nulla a che fare con ciò di printcui stai chiedendo. awkè un linguaggio di programmazione dinamico che contiene i propri comandi, di cui printuno di questi.

  2. print --"text/plain" "prayag works on JVM" e altre forme

    Il comando printserve per visualizzare i file in base al contenuto del file mailcap, usando il "gestore" designato per ciascun tipo di file, non per stampare stringhe sullo schermo.

    estratto dalla pagina man di stampa

    run-mailcap, visualizza, visualizza, modifica, componi, stampa - esegui i programmi tramite le voci nel file mailcap

    run-mailcap (o uno qualsiasi dei suoi alias) utilizzerà l'azione fornita per elaborare a turno ogni tipo / file mime. Ogni file è specificato come tipo mime, codifica (ad es. Compressione) e nome file insieme, separati da due punti. Se il tipo mime viene omesso, viene effettuato un tentativo di determinare il tipo cercando di far corrispondere l'estensione del file a quelle nei file mime.types. Se la codifica viene omessa, verrà determinata anche dalle estensioni del file. Le codifiche attualmente supportate sono gzip (.gz), bzip (.bz), bzip2 (.bz2) e compress (.Z). Un nome di file di "-" può essere utilizzato per indicare "input standard", ma è necessario specificare un tipo mime.

  3. echo

    Il comando echoè un comando incorporato per la shell che stai usando chiamato Bash (suppongo che tu stia usando Bash). Puoi confermarlo usando questo comando:

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

    Si noterà che echoè anche un eseguibile standalone, /bin/echo. Questo è un comando diverso da quello echoche stai usando, ma ha uno scopo simile.

  4. print in shell come zsh / ksh

    Grazie al commento di @Gilles, il printcomando che stai cercando è molto probabilmente quello integrato in shell come zshe / o ksh. Si può vedere il suo utilizzo attraverso la pagina man, man zshbuiltins.

    Esempio

    zsh % print "hello world"
    hello world

    È possibile eseguire una di queste shell digitando zsho ksh.

printf

Forse stai cercando il 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

Il comando printfaccetta un set di formattazione di caratteri speciali in modo che tu possa istruirlo su come visualizzare elementi come stringhe o cifre, ecc. Consulta la pagina man per printf.

mailcap

Quindi molte persone sono probabilmente ignare del file /etc/mailcap. Questo file contiene tipi mime (intestazioni di file che identificano il tipo di file di un file). È quindi possibile creare voci in questo mailcapfile che designano quale strumento utilizzare per aprire un particolare tipo MIME per un file.

Esempio

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"

Le righe sopra dicono che se ottieni un file con il tipo mime audio/mpeg, usa lo strumento /usr/bin/mplayerper aprire questo file.

Queste regole sono generalmente utilizzate dallo strumento e-mail, ma anche altri strumenti possono sfruttare queste voci all'interno del mailcapfile.

Se sei interessato a saperne di più sui tipi MIME o Mailcap, vedi i seguenti riferimenti.

Riferimenti


2
A volte penso che non dormi mai :-). +1, non avrei potuto rispondere meglio
iruvar

2
@PrayagUpd - grazie per il tuo Q. Che ci crediate o no, imparo qualcosa anche con ogni Q, quindi li apprezzo immensamente poiché mi spingono ad imparare le cose in modo molto più dettagliato. Cool
slm

1
@PrayagUpd - sì, ho cercato il tuo IP. Uso il corridore su strada qui negli Stati Uniti. Ospito da solo il mio blog, quindi probabilmente stanno bloccando in base all'IP della regione geografica? Avrei voluto spostare il mio blog in qualcosa di più accessibile.
slm

2
@PrayagUpd - prego, grazie per avermi fatto conoscere il mio blog. Ovviamente voglio che sia il più accessibile possibile, inutile scrivere cose se il PLP non può sembrare.
slm

1
printè anche un built-in ksh (e zsh), simile echoma senza le stranezze storiche. Questa è probabilmente l'origine ultima del motivo per cui l'interrogatore di quella domanda SO ha usato print.
Gilles 'SO- smetti di essere malvagio' il

0

È possibile utilizzare il comando printf per farlo,

 # printf Hello World
 Hello

 # printf "Hello World"
 Hello World

Bene, esattamente devi usare print commnad per aggiungere alias

 # alias print='echo'

 # print Hello World
 Hello World

 # unalias print  < -- to revert.

anche per impostare permanente,

 # export print='echo'

 # print Hello Linux
 Hello Linux

così,

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

# unset print   < -- to revert.
# export | grep print
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.