|
> ディレクトリの移動によって「今現在どこに居るか」というのを表示させたいのです。 とりあえず、こんなんでどうでしょうか? テストは tcsh でやったので、 断定的なことは言えませんが、古い csh と互換性のある構文を使っています。 alias sp 'set prompt=`whoami`@`hostname -s`\[`pwd`\] ' alias cd "cd \!* ; dirs -l ; sp" alias pushd "pushd \!* ; sp" alias popd "popd ; sp" ポイントは set prompt の alias をシングルクォートで囲むところですかね。 あと、cd, pushd, popd のごとに prompt の set をするということですね。 4.1-RELEASE 以降だと /bin/csh は tcsh なので、もっと簡単に出来ます。 たしか %/ とかいうのを使えば、良いだけだったと思います。 |
|
rosegardenさんへ> >ポイントは set prompt の alias をシングルクォートで囲むところですかね。 >あと、cd, pushd, popd のごとに prompt の set をするということですね。 なるほど。cdコマンドを使うたびにset promptするんですね。 ためしてみたところ、確かに出来ました。 >たしか %/ とかいうのを使えば、良いだけだったと思います。 これは知りませんでした。tcshの利用が可能なマシンがあるので 試してみましたが、ホントですね。うーん、こっちの方が簡単だなぁ。 でもメインのマシンはシェルの変更を許可してくれないので、 alias方式で行きます。どうもありがとうございました。 |
|
> でもメインのマシンはシェルの変更を許可してくれないので 僕は sh・csh のような非人間的なシェルを使うのは耐えられない ので、そういうときは勝手に tcsh を入れて、~/.cshrc に if ( ${?tcsh} == 0 ) then exec /usr/local/bin/tcsh endif などと書いてます。 前にちょっとはまったことを書いておきますと、これをするなら ~/.cshrc に setenv TERM vt100 などと書いてはいけません。 普通にログインするときはいいのですが、もし端末がない場合 (rsh を使う場合など) は、tcsh が端末があると勘違いして 入力待ちになってしまい、rsh が効かなくなるからです。 Solaris などで、デフォルトだと TERM=kterm になってしまい、 さらに /etc/termcap に kterm のエントリがないため、vi や emacs を実行すると文句を言われるので仕方なく setenv TERM vt100 と書いている人もいると思いますが、それをするなら if ( ${?TERM} ) then setenv TERM vt100 endif と書けばいいです。これなら rsh のときは TERM が設定されません。 |
|
はじめまして。今UNIXにおいてのプロセス間通信として、 FTPをモデルとして調べていて、ここのHPにたどりつきました。 ものすごく参考になってます。で、聞きたいことがあります。 聞きたいことは、FTPクライアントのプログラムでのことですが、 C言語版での、GET及びPUTなのですが、GETの場合は、Perl同様に soketより手に入れたデータをfopen関数を用いてのそのデータをGetしたファイルと同じ名前で保存することでGETされるのですか?PUTも同様ですか? また、FTPサーバーでは、LESTやGETやPUT のプログラム上では、どのような動きをしてるのでしょうか? 自分なりには、イメージがあるのですが自信がないので教えてもらい たいです。 こちらの勝手なお願いですが、今週中までに返事を掲示板のほうでいただけると大変助かります。 |
|
初歩的な質問ですが, AIXを触り始めたのですが, telnetでrootのログオンを許容しているのを やめたいのですが, 設定ファイルがわかりません。 どのファイルにその設定が書いてあるのでしょうか? あと,tcshをmakeするとEUCコードで作成されてしまいますが AIX用(SJIS)での作成方法もご存知の方,お教え願います。 よろしくお願い致します。 |
|
> telnetでrootのログオンを許容しているのをやめたいのですが, AIX は管理したことも使ったこともありませんのでわかりません。 init, pam, login, tty, ttys などのマニュアルを探してみてください。 FreeBSD なら /etc/ttys Solaris なら /etc/default/login Linux なら /etc/security あたりなので、/etc の下に片っ端から grep かけてみる のもいいでしょう。 cd /etc; egrep -i 'secur|root|login' * */* */*/* > soketより手に入れたデータをfopen関数を用いてのその > データをGetしたファイルと同じ名前で保存する そうです。C でも perl でもやることは同じです。 > FTPサーバーでは、LESTやGETやPUT > のプログラム上では、どのような動きをしてるのでしょうか? コマンド用コネクションから RETR hoge が送られてきたら、 データコネクションを確立し、hoge のファイルを fopen して データコネクションに hoge の内容を流します。 コマンド用コネクションから LIST/NLST が送られてきたら、 データコネクションを確立し、/bin/ls の結果 (別に ls を 使わなくてもいいけど) をデータコネクションに流します。 > 自分なりには、イメージがあるのですが自信がないので > 教えてもらいたいです。 自分なりのイメージを書いた上で、それが合ってるか間違ってるか たずねるのがスジというものでしょう。 |
|
質問というか、ご意見頂きたいです。 掲示板が荒らされたなら、制限したり削除できますが メールが大量に届いたり本文が最悪なタグの羅列だった場合 どうすればいいんでしょうか?明日も変なメールきそうで カナリ、不安です。これって警察に言えたりするものなのでしょうか? 迷惑防止条例とか。 http://www.alles.or.jp/~tll/toc/hino.html |
|
Perlの質問です。 2000/10/01の三日まえを表示したいのですが どのようにやれば良いでしょうか? 宜しくお願いします。 |
|
> 2000/10/01の三日まえを表示したいのですが Time::Local で time_t 形式に変換し、3日分の秒数を引いてから、 再度 localtime で年月日の形式に戻します。 use Time::Local; $time = timelocal(0,0,12,1,10-1,2000-1900); $time -= 60*60*24*3; ($sec,$min,$hour,$day,$mon,$year) = localtime($time); printf "%4d/%02d/%02d",$year+1900,$mon+1; > メールが大量に届いたり メールが何通届いていて、それぞれサイズはどれだけか、という ことは、メール本文を取得する前に調べることができます。 また、これはメールサーバにもよりますが、あるメールの先頭 何行のみを取得、ということもできます。そういう機能を持つ メーラーを探してみてはどうでしょうか。 % telnet メールサーバ名 110 USER your_user_name PASS your_password LIST (メール一覧とサイズ表示) TOP 1 3 (1通目のヘッダと本文3行のみを表示) QUIT (終了) > 本文が最悪なタグの羅列だった場合 Windows はよく知らないんですが、HTML メールが送られて きたら、HTML として開くか plain text として開くかを 確認してきませんか? 聞いてこないなら、まともなメーラーに かえましょう。 |
|
68userさん > こないだは説明が足りずに済みません。助かりました。 またしても質問なんですが、 sh スクリプトで2つのファイルの内容が完全に一致した場合に aというファイルに 日付,"一致"(文字列)を出力して、 一致しなかった場合には 日付,"不一致"(文字列)を出力したいんですが 全然わかりません。よろしかったら教えてください。 |
|
ファイルの比較には cmp か diff を使います。一致 したかどうかはコマンドの戻り値を見ればよいですが、 sh なら $? で参照できます。あとはマニュアルを よく読んでみてください。 |