Linux echo
コマンドを使用して、ターミナルでメッセージを出力できます。
prayag@prayag$ echo "prayag works on JVM"
prayag works on JVM
print
コマンドで同じ出力を取得できますか?.
私は実際に$ man print
は、これをRun-mailcap-programsと表現しています。そして、それはMIMEに基づいて、ファイルを開くための正しいプログラムを見つけるために使用されることがわかりました。
print
の代わりにecho
だけを使用して単純な行を印刷する方法はありますか?bashスクリプトの変数にテキストファイルの内容を割り当てる必要がある で同様の問題が見つかりましたが、人々はecho
をprint
よりも推奨しています。
以下を試しましたが、問題が発生しました。
$ 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
あなたはここで多くのことを混乱させています。私はあなたのためにこれをばらばらにしてみます。
awk '{print}' ...
これはあなたが尋ねているprint
とは何の関係もありません。 awk
は、独自のコマンドを含む動的プログラミング言語で、print
はその1つです。
print --"text/plain" "prayag works on JVM"
およびその他のフォーム
コマンドprint
は、文字列を画面に出力するためではなく、特定のファイルタイプごとに指定された「ハンドラ」を使用して、mailcapファイルの内容ごとにファイルを表示するためのものです。
print manページからの抜粋
run-mailcap、表示、表示、編集、作成、印刷-mailcapファイルのエントリを介してプログラムを実行します
run-mailcap(またはそのエイリアス)は、指定されたアクションを使用して、各MIMEタイプ/ファイルを順番に処理します。各ファイルは、MIMEタイプ、エンコーディング(圧縮など)、ファイル名をコロンで区切って指定します。 mime-typeが省略されている場合、ファイルの拡張子をmime.typesファイル内の拡張子と一致させることにより、タイプを判別しようとします。エンコーディングを省略した場合は、ファイルの拡張子からも決定されます。現在サポートされているエンコードは、gzip(.gz)、bzip(.bz)、bzip2(.bz2)、および圧縮(.Z)です。ファイル名「-」は「標準入力」を意味するために使用できますが、その場合はMIMEタイプを指定する必要があります。
echo
コマンドecho
は、使用しているシェルへの組み込みコマンドで、Bashと呼ばれます(私はBashを使用していると想定しています)。これは、次のコマンドを使用して確認できます。
$ type -a echo
echo is a Shell builtin
echo is /bin/echo
echo
もスタンドアロンの実行可能ファイル/bin/echo
であることがわかります。これは、使用しているecho
とは異なるコマンドですが、目的は同じです。
print
zsh/kshなどのシェル
@Gillesコメントのおかげで、探しているprint
コマンドは、zsh
やksh
などのシェルに組み込まれているコマンドである可能性が高いです。使い方はman zshbuiltins
のmanページで確認できます。
zsh % print "hello world"
hello world
zsh
またはksh
と入力すると、これらのシェルの1つを実行できます。
おそらく、コマンド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の詳細に興味がある場合は、次の参考文献を参照してください。
これを行うには、printfコマンドを使用できます。
# printf Hello World
Hello
# printf "Hello World"
Hello World
まあ、まさにあなたはprintコマンドを使う必要があり、次にエイリアスを追加することができます
# alias print='echo'
# print Hello World
Hello World
# unalias print < -- to revert.
永久に設定するためにも、
# export print='echo'
# print Hello Linux
Hello Linux
そう、
# export | grep print
declare -x print="echo"
# unset print < -- to revert.
# export | grep print