課題に使用されているいくつかの用語が混乱しています。
だから私が問題を理解する方法は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'