いつも長いので今回は短めなネタにしました(ちなみに連載初期は短めでした)。シンプルに使っている端末(ターミナル)情報の取得です。いつもとは違いサンプルファイルなどは不要なので、ささっと進めていきます。

現在の端末のデバイスファイル名を取得

 まず現在使っている端末(ターミナル)のデバイスファイル名を表示してみます。これは以下のようにttyとコマンドを入力します。すると、使用している端末デバイスファイル名が表示されます。

tty
  • macOS

  • Linux (Ubuntu 24)

  • Raspberry PI OS

ここらへんは使用している環境によって異なります。開いているターミナルによっても異なります。

端末の画面サイズを取得

 現在使用しているターミナルの横の文字数と行数を取得するにはsttyコマンドを使ってパラメーターにsizeを指定します。

stty size

端末の詳細情報を取得

 sttyコマンドを使えば、より詳細な端末情報を表示することができます。これはオプションに-aを指定します。

stty -a

他にはinfocmpコマンドでも詳細情報を表示することができます。

infocmp

特定の端末にメッセージを送る

 echoなどと組み合わせると特定の端末に向けてメッセージを送ることができます。まず、ttyで送り先のデバイスファイル名を確認します。確認したら以下のようにechoコマンドに送るメッセージを指定しリダイレクトで送りつけます。(場合によっては迷惑なので注意)

echo 'SSDが破損したかも' > /dev/ttys015
echo 'SSDが破損したかも' > /dev/pts/1
echo 'Disk crash!' > /de/pts/2

デバイスファイル名を指定する以外にwriteコマンドを使う方法もあります。まず、whoコマンドでユーザー名を確認します。

who

ユーザー名を確認したら以下のようにwriteコマンドの後にユーザー名と端末名を指定します。

echo 'Main Server Down!' | write weed ttys015

Ubuntu/Raspberry Pi OSなどでは、そのままwriteコマンドを使うとエラーで動作しません。Raspberry Pi OSは、手軽に解決できない感じなのでwriteコマンドでなく前に説明した方法を使うのが無難そうです。

echo 'Main Server Down!' | write ubuntu pts/1

この場合、以下のようにコマンドを入力して利用できるようにします。

・Ubuntu (ユーザー名ubuntuの場合)

sudo usermod -aG tty ubuntu

次に以下のコマンドを入力します。

newgrp tty

これで準備完了です。あとは先ほどと同じようにwriteコマンドを実行します。

echo 'Main Server Down!' | write ubuntu pts/1

なお、このようなメッセージの受信が迷惑な場合はmesg nとすると拒否することができます。受信可能にするにはmesg yとします。現在の受信状況を取得したい場合はmesgとだけ入力します。

全員の端末にメッセージを送る

 それでは最後に全員にメッセージを送るwallコマンドを使ってみましょう。なお、環境や受信先の設定によってはwallのメッセージが表示されないことがあります。(mesg nで拒否している場合など)

・Ubuntu (Linux)
echo '業務終了です。さあ、帰りましょう!' | wall

・macOS(日本語は変換してもダメなので英語のみで)

echo 'The END!' | wall

それでは、また次回。

著者 仲村次郎
いろいろな事に手を出してみたものの結局身につかず、とりあえず目的の事ができればいいんじゃないかみたいな感じで生きております。