Shell

在linux中列印命令而不是echo

  • February 14, 2022

我只需使用 linuxecho命令在終端中列印一條消息。

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

我可以使用print命令獲得相同的輸出嗎?

我實際上瀏覽了他們的手冊,其中$ man print將其描述為 Run-mailcap-programs,這是我以前從未聽說過的術語。並且開始知道它用於基於 MIME 找到正確的程序來打開文件。

那麼有什麼方法可以單獨使用而不是列印一條簡單的線print``echo

在需要將文本文件的內容分配給 bash 腳本中的變數時發現了類似的問題,但人們建議echoprint那裡。

我嘗試關注,但遇到了問題。

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

它要求提供文件,並提供文件。

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

但是awk與提供文件的命令結合使用,

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

你在這裡混淆了很多東西,讓我試著為你梳理一下。

  1. awk '{print}' ...

print這與您要問的無關。awk是一種動態程式語言,它包含自己的命令,其中一個命令print就是其中之一。 2. print --"text/plain" "prayag works on JVM"和其他形式

該命令print用於根據 mailcap 文件的內容顯示文件,使用為每個特定文件類型指定的“處理程序”,而不是將字元串列印到螢幕上。

摘自列印手冊頁

run-mailcap,查看,查看,編輯,撰寫,列印 - 通過 mailcap 文件中的條目執行程序

run-mailcap(或其任何別名)將使用給定的操作依次處理每個 mime 類型/文件。每個文件都被指定為它的 mime 類型、它的編碼(例如壓縮)和文件名,用冒號分隔。如果省略 mime-type,則嘗試通過將文件的副檔名與 mime.types 文件中的副檔名匹配來嘗試確定類型。如果省略編碼,也將根據文件的副檔名確定。目前支持的編碼有 gzip (.gz)、bzip (.bz)、bzip2 (.bz2) 和 compress (.Z)。文件名“-”可用於表示“標準輸入”,但必須指定 MIME 類型。

  1. echo

該命令echo是您正在使用的名為 Bash 的 shell 的內置命令(我假設您正在使用 Bash)。您可以使用以下命令確認這一點:

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

您會注意到它echo也是一個獨立的執行檔,/bin/echo. 這是與您正在使用的命令不同的命令echo,但用於類似的目的。 4. print在 zsh/ksh 等 shell 中

感謝@Gilles 評論,print您正在尋找的命令很可能是內置於 shell 中的命令,例如zshand/or ksh。您可以通過手冊頁查看其用法,man zshbuiltins.

例子

zsh % print "hello world"
hello world

您可以通過鍵入zsh或來執行這些 shell 之一ksh

列印

也許您正在尋找命令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

該命令printf採用一組特殊字元的格式,以便您可以指示它如何顯示字元串或數字等內容。請參閱printf.

郵件帽

所以很多人可能對文件一無所知/etc/mailcap。此文件包含 mime 類型(文件的標頭,用於標識文件是什麼類型的文件)。然後,您可以在此mailcap文件中創建條目,指定使用什麼工具來打開文件的特定 mime 類型。

例子

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"

上面幾行說如果你得到一個 mime-type 的文件audio/mpeg,然後使用該工具/usr/bin/mplayer打開這個文件。

這些規則通常由電子郵件工具使用,但其他工具也可以利用mailcap文件中的這些條目。

如果您有興趣了解有關 mime-types 或 mailcap 的更多資訊,請參閱以下參考資料。

參考

引用自:https://unix.stackexchange.com/questions/99535