>>1610 rosegarden 補足などしてみたり。間違ってたらご指摘お願いします。 % cat と実行して、C-p,C-m,C-v,C-m とタイプしてみて下さい。C-p は ^P と 出力されるでしょう。rosegarden さんが書かれた通り、C-m は改行に なります。C-v C-m は ^M と表示されます。 この表示は、キー入力を受け取った端末ドライバが行っています。その 端末ドライバのキー割り当てを変えるのが stty コマンドなわけです。 改行 (この場合 C-m と等価) を打たない限りは、cat に文字列は 渡りません。1行のデータが確定して初めて、端末ドライバが cat に データを送ります。 次に tcsh か bash を起動して、そこで C-p,C-m,C-v,C-m をタイプして 下さい。C-m や C-v C-m はさきほどと同じですが (tcsh ^M でなくて ^J となりますが、両方改行コードなのでこれは置いといて) 、C-p の 挙動が違いますね。1つヒストリをさかのぼります。つまり、1行を 入力していなくても、1文字打った瞬間に tcsh や bash にデータが 渡っていることになります。 これは tcsh や bash が端末ドライバを経由せずに、直接キー入力を 取得しているからです。これを canonical モードといいます。端末の中で 動く mule や emacs や vi もcanonical モードになっているわけです。 これらは端末ドライバを経由していないので、stty の設定とは無関係です。 例えば tcsh のコマンドラインで C-v C-m で ^M となるのは、 % stty erase ^H しているからでなく、デフォルトで % bindkey ^V quoted-insert という設定になっているからです (bindkey は tcsh の内部コマンド)。 一方、伝統的な sh は canonical モードでは動きません。(Linux だと sh=bash だから例外)。つまり端末ドライバ経由でキー入力を拾う わけで、この場合は stty を使って設定します。 > du や df コマンドの -h (human friedly) オプション > というのはご存知でしょうか? 関係ないですが、FreeBSD 2.2.6-RELEASE では du -s が使えず くやしい思いをしました。 使いこなせると幸せだと思うオプション。 ls -lt、uniq -c、tail -f、du -s # du -s は Solaris にはないかな。 |