「標準出力」と「標準エラー」に印刷

「標準出力」と「標準エラー」に印刷

課題に使用されているいくつかの用語が混乱しています。

だから私が問題を理解する方法はprintなどをしなければならないということです。echoそして、catこれを行うためにコマンドを使用したいと思いますecho

echo echo
echo cat 
echo ´!!´

これが「標準出力として印刷する」という意味ですか?私は正しい道を行っていますか?

もしそうなら、「コマンドを入力したときに標準エラーに何も印刷されません」ということが何を意味するのかわかりません。

答え1

私はあなたが単語を出力しなければならないので、この課題を解釈しなければならないと思います。ブロッツecho、、、catおよび各コマンドを順番に使用lsしてくださいgrep!!

echo blotzもちろんそれは小さなものです。

このcatコマンドはファイルの内容を出力すると考えることができます。 (man catここで役に立ちます。 )ジョブを使用して出力するファイルを事前に準備できるので、これは非常に簡単です。

他のものは必要な結果を得るためにいくつかの考えが必要です。

答え2

質問は、コマンドリストの各コマンドを使用し、そのコマンドが文字列blotzのみを印刷するようにすることです。先生が各行の後に改行を印刷したい場合blotz(質問で明確ではない)、次のようにすることができます。

$ echo "blotz"
blotz
$ echo "blotz" > file && cat file
blotz
$ touch blotz && ls blotz
blotz
$ echo blotz | grep b  ## This might also include (invisible) color codes
blotz
$ echo blotz | grep --color=never b ## This one avoids the color codes
blotz

!!デフォルトでは、実行コマンドも印刷するので、使用するのがより面倒です。たとえば、

$ blotz      ## run blotz to get that saved as !!
blotz: command not found
$ echo !!  ## print the value of !!
echo blotz ## Unfortunately, this also prints the command being run. 
blotz

この問題を解決するには、次の小さなスクリプトを作成できます。

set -o histexpand
set -o history

blotz
echo !!

次に、次のように実行します。

$ bash foo.sh 2> /dev/null 
blotz

サブシェルを使用する賢い方法があるかもしれませんが、まだ見つかりませんでした。


先生が改行を求めていない場合は、以下を使用してください。

$ echo -n "blotz"
$ echo -n "blotz" > file && cat file
$ touch blotz && ls blotz | tr -d $'\n'
$ echo blotz | grep --color=never b | tr -d $'\n'

!!スクリプトの場合:

$ bash foo.sh 2> /dev/null | tr -d $'\n'

関連情報