Cシェルにおいて、通常echo文は標準エラー出力へ表示されます。
echo文のように引数で指定した文字列を標準エラーとして出力するような
コマンド?があったら教えてください。

c言語では
fprintf(stderr,"test!\n");
などとやりますが、Cシェルではありますでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

csh にはその機能はないと思います。


sh ならできますので、sh を使って echo させてやればよろしいかと。
例えば、
sh -c "echo foo bar >&2"
とかですね。
でも、もともと csh でシェルスクリプトを書かない方がいいような気もしますが。
    • good
    • 0
この回答へのお礼

ありがとうございました。
たぶんないだろうとは思ってたのですが、はっきりいたしました。

お礼日時:2001/04/17 13:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QCシェルの制御文について(求むCシェル・マスター)

Cシェルでとある処理をすることになり、参考資料としてスペシャリストな人の
シェルをみせてもらったのですが、ソースを読むこともままなりません(><)

私自身はVisualStudioを使ってCのプログラミングをかなり前にちょろっとやった程度で、
シェルというものをほとんど組んだことがないので、以下の点を教えてください。

if [ほにゃらら]
then
コマンドをぽちっとな
elif [はにゃらら]
then
コマンド2をぽちっとな
else
exit
fi

上記のような制御文を参考資料の中で多数みるのですが、
"elif"と"fi"が、まったく何者かわかりません。
Cシェルやelifなどで、ぐぐってみましたが、わからず
誰か助けてぇ~って感じです。

また、シェルの勉強サイト(C,Tc,B,Bash)のサイトも
ありましたら教えてください。すんませんが、よろしくお願いします。

Aベストアンサー

if [ほにゃらら]      もし [ほにゃらら] なら
then
コマンドをぽちっとな
elif [はにゃらら]     [ほにゃらら]でない時 [はにゃらら]なら
then
コマンド2をぽちっとな
else            [ほにゃらら]でも[はにゃらら]でも無い時
exit
fi             if文の終わりを意味します(ifとついになります)


これで解りますか?

QBシェルのECHO_C

Bシェルでよく使われているECHO_Cは何ですか?
様々な環境における標準出力への対応のものですか?
echo \c
による効果も教えてください。

以下はよくあるECHO_Cのソースです。
http://64.233.187.104/search?q=cache:0RdNFUznXWAJ:jbj.rapanden.dk/magicrescue/websvn/filedetails.php%3Frep%3D0%26path%3Dmagicrescue/trunk/configure%26rev%3D0%26sc%3D1+echo+testing+c&hl=ja&ie=UTF-8&inlang=ja

Aベストアンサー

これは、echoコマンドで文字列表示後に改行しないときに、echoコマンドの仕様としてオプションで -n を指定するものと 末尾に \c をつけるものが二種類あるのでそのどちらでも使えるように、
仕様に応じて、ECHO_N="echo -n" ECHO_C="" または ECHO_N=echo ECHO_C='\c' として、
$ECHO_N 文字列 "$ECHO_C"
と書くとどちらの仕様でも改行なしの表示が出来るという工夫のようですね。

>Bシェルでよく使われているECHO_Cは何ですか?
この文字通りだと意味不明なので、「Bシェルのechoコマンドで文字列を改行なしで表示するためによく使われる方法は何ですか」という意味の質問だとすると、上記のように2種類あります。ECHO_C の値としては、空 または \c のどちらかになりますね。どちらを使うべきかはその環境におけるマニュアルを見るしかない。もしくは両方試しに実行してみるか。

なお、\c の場合、\ がシェルの特殊文字なんで上記のように " " で囲むなどする必要があります。

これは、echoコマンドで文字列表示後に改行しないときに、echoコマンドの仕様としてオプションで -n を指定するものと 末尾に \c をつけるものが二種類あるのでそのどちらでも使えるように、
仕様に応じて、ECHO_N="echo -n" ECHO_C="" または ECHO_N=echo ECHO_C='\c' として、
$ECHO_N 文字列 "$ECHO_C"
と書くとどちらの仕様でも改行なしの表示が出来るという工夫のようですね。

>Bシェルでよく使われているECHO_Cは何ですか?
この文字通りだと意味不明なので、「Bシェルのechoコマンドで文字列を改行...続きを読む

Qシェル(sh)で実行コマンドを標準出力するには

kshでコマンドを実行して結果をファイルにリダイレクトしています。
結果のみファイルに出力され、実行したコマンドを確認することができません。
実行コマンドも一緒にファイルに出力する方法がありましたら教えてください。
なお、実行コマンドをechoするってのはなしで。
多量のコマンドを実行する場合にめんどくさいので。

Aベストアンサー

ksh -x 実行コマンド > ファイル 2>&1
または
ksh -x 実行コマンド 2>&1| tee ファイル

参考URL:http://x68000.q-e-d.net/~68user/unix/pickup?tee

Qコマンドプロンプト標準出力とファイル出力両方

お世話になってます

コマンドプロンプトで
echo "こんにちは"
とするとプロンプトに
こんにちは
と書き込まれます。
echo "こんにちは" >> file.txt
とするとfile.txtに
こんにちは
と書き込まれます。

では、1行で
プロンプトとfile.txtの両方に
こんにちは
と書き込むことは出来ますか?

file.txtは上書きではなく、追記で行いたく思ってます。

よろしくお願いします。

Aベストアンサー

残念ながらそのような機能は無いはずです。

ので、少し面倒臭いですが自分で作りましょう。

バッチファイル内で行う場合、
-----
Call :echoEx こんにちは
Exit

:echoEx
echo %*
echo %*>>file.txt
Exit /b 0
-----
この:echoExというサブルーチンが画面とファイルに出力する部分です。
echoコマンドの代わりにCall :echoExを呼んで使います。

echo こんにちは

Call :echoEx こんにちは


コマンドプロンプト上で手打ちの時であれば、似たようなバッチファイルをつくりましょう。
例えば echoEx.batという名前で
-----
echo %*
echo %*>>file.txt
Exit /b 0
-----
のようなバッチファイルを作成し、
echoコマンドの代わりにechoEx.batをコールして使います。

echo こんにちは

echoEx.bat こんにちは

QDOSプロンプト(cmd.exe)の標準出力ログ出力方法 (gpgコマンド)

DOSプロンプトにてgpgコマンドを実行した際のログ
を出力させようとしています。

リダイレクトを使用しても、ファイルに書き出されません。
(もちろん画面コピーしてから貼り付ければ可能ですが自動化したいです)

gpgコマンドが標準出力へ出力するログは、ファイルに書き出すことは
出来ないでしょうか?

/*****************************************
(例):GPGコマンドが出力するログ(保存したいログ)
*****************************************/
1. gpg暗号化 + 署名 成功時のログ
次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“test <gpg.test@test.co.jp>”
2048ビットRSA鍵, ID FFFFFF作成日付は2014-01-01 (主鍵ID 12345678)


2. gpg復号化 + 署名 検証成功時のログ
次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“test <gpg.test@test.co.jp>”
2048ビットRSA鍵, ID FFFFFF作成日付は2014-01-01 (主鍵ID 12345678)

gpg: 2048-ビットRSA鍵, ID 876543211, 日付2012-01-23に暗号化されました
“public.player <public@test.co.jp>”
gpg: 2014-01-01 02:01:11にRSA鍵ID 12345678で施された署名
gpg: “test <gpg.test@test.co.jp>”からの正しい署名

DOSプロンプトにてgpgコマンドを実行した際のログ
を出力させようとしています。

リダイレクトを使用しても、ファイルに書き出されません。
(もちろん画面コピーしてから貼り付ければ可能ですが自動化したいです)

gpgコマンドが標準出力へ出力するログは、ファイルに書き出すことは
出来ないでしょうか?

/*****************************************
(例):GPGコマンドが出力するログ(保存したいログ)
*****************************************/
1. gpg暗号化 + 署名 成功時のログ
次のユーザ...続きを読む

Aベストアンサー

>なぜ出ないんでしょ...Wr5さんのPC環境ではgpgコマンドに対する
>リダイレクトに成功しますか?

失敗しますね……。
gpgのソースまでは確認していませんが…リダイレクトを強制的に外している…んでしょうかねぇ……

cmd.exeが妙な挙動をしている。という可能性もあるにはありますが…。

フロントエンド的なプログラム作って、stdoutとstderrをパイプで受け取れるようにしてみないと判らない…でしょうかね。
もっとも、その場合でも別々に出力されるのでコマンド プロンプトの画面に表示される状況とは異なってしまいますが。
CreateProcess()のlpStartupInfo.hStdOutputとlpStartupInfo.hStdErrorに同じハンドル渡せば一緒に取れる…か?
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686331%28v=vs.85%29.aspx

パイプに変更してWindows版のteeコマンドで…でも失敗しますし…。

>なぜ出ないんでしょ...Wr5さんのPC環境ではgpgコマンドに対する
>リダイレクトに成功しますか?

失敗しますね……。
gpgのソースまでは確認していませんが…リダイレクトを強制的に外している…んでしょうかねぇ……

cmd.exeが妙な挙動をしている。という可能性もあるにはありますが…。

フロントエンド的なプログラム作って、stdoutとstderrをパイプで受け取れるようにしてみないと判らない…でしょうかね。
もっとも、その場合でも別々に出力されるのでコマンド プロンプトの画面に表示される状況とは異な...続きを読む


人気Q&Aランキング

おすすめ情報