ネットワークコンピューティング実習

1. URL
2. 担当教員
3. TA (ティーチングアシスタント)
4. ネットワークに関する疑問
5. 講義目的: 到達目標
6. 授業方法
7. 成績評価
8. スケジュール
9. 大崎が担当する科目に共通の連絡事項・アドバイス
10. Debian GNU/Linux のインストール
11. UNIX (UNIX とは、ユーザ権限、パッケージ管理)
12. Debian GNU/Linux セットアップ〜パッケージ管理
13. シェル (ファイル操作、リダイレクト、パイプ)
14. X ウィンドウシステム & ウィンドウマネージャ
15. エディタ (Emacs チュートリアル)
16. シミュレータ導入 (インストール、実行、可視化)
17. Python 言語 (1) (名前、変数、式)

シェル (ファイル操作、リダイレクト、パイプ)

実習の流れ・チーム分けの方針・態度目標

2025/09/24 のものと同じ。

https://lsnl.jp/~ohsaki/lecture/netcompx/2025/#10-1

内容目標

- 簡単なシェルスクリプトが書けるようになる

テキスト

https://lsnl.jp/~ohsaki/lecture/netcompx/2025/priv/02.pdf

サンプルセッション (参考: Vine Linux 上の bash での実行例です)

https://lsnl.jp/~ohsaki/lecture/netcompx/2025/03-session.html

課題

課題 1

/usr/bin ディレクトリに格納されているファイルの一覧を list というファイルに保存せよ。

課題 2

/usr/bin ディレクトリに格納されているファイルのうち、 m で始まるファイルの一覧を list-m というファイルに保存せよ。

課題 3

コマンド行で指定したディレクトリに格納されているファイルのうち、 ファイルサイズが最大のもののサイズとファイル名を表示するシェルスクリプトを作成せよ。

課題 4

コマンド行で指定した地域の、 今晩の天気予報を Web から取得し、 標準出力に表示するシェルスクリプトを作成せよ。

略解

課題 1

 > ls /usr/bin >list
 

保存できているかの確認:

> head list
2to3-2.7
411toppm
7z
7za
7zr
CuraEngine
GET
HEAD
HTMLLinker
JxrDecApp

課題 2

 > ls /usr/bin | grep '^m' >list-m
 

保存できているかの確認:

> head list-m
m17n-db
m4
macptopbm
madplay
mag
mail
mail.mailutils
mailq
mailx
make

課題 3

 プログラムの例
 https://lsnl.jp/~ohsaki/lecture/netcompx/2025/03-findmax.sh
 

実行例:

> chmod +x 03-findmax.sh
> ./03-findmax.sh /usr/bin
+ dir=/usr/bin
+ shift
+ ls -l /usr/bin
+ awk { print $5, $9 }
+ sort -rn
+ head -1
53756024 docker

課題 4

 プログラムの例
 https://lsnl.jp/~ohsaki/lecture/netcompx/2025/03-weather.sh
 

実行例:

 > chmod +x 03-weather.sh
 > ./03-weather.sh sanda
 + area=sanda
 + shift
 + id=1de45589c3ffdf7ec3f72a09d94465bc89b562c10fdb719edc5140c935828285
 + lynx --dump https://weather.com/weather/tenday/l/1de45589c3ffdf7ec3f72a09d94465bc89b562c10fdb719edc5140c935828285
 + sed -n /^To\(night\|day\)/,/ mph/p
 Today

    78°/61°
    Partly Cloudy
    4%
    N 12 mph
 > ./03-weather.sh nisinomiya
 + area=nisinomiya
 + shift
 + id=0b564079717caa709f3a11a530951a66926be8f8f0227b6c2ccf18cd9da20f2d
 + lynx --dump https://weather.com/weather/tenday/l/0b564079717caa709f3a11a530951a66926be8f8f0227b6c2ccf18cd9da20f2d
 + sed -n /^To\(night\|day\)/,/ mph/p
 Today

    81°/67°
    Mostly Sunny
    2%
    N 12 mph

より深く学びたい人へ

(UNIX に限りませんが) オンラインドキュメントではなく、 書籍で知識を吸収することをおすすめします。 以下の本は特におすすめです。 特に上の 2 冊 (カーニハンとレイモンドの本) は「UNIX の哲学」を学ぶことができます。

- Brian W. Kernighan, Rob Pike, ``UNIXプログラミング環境,'' KADOKAWA, 2017.

- Eric S. Raymond, ``The Art of UNIX Programming,'' KADOKAWA, 2019.

- Shelley Powers, Tim O'Reilly, Jerry Peek, Mike Loukides, ``UNIX パワーツール,'' オライリージャパン, 2003.

レポート課題 2025/10/15

「レポート課題 2025/09/24」と同じ。

https://lsnl.jp/~ohsaki/lecture/netcompx/2025/#10-7

質問

- Debianの実用的な使い方

すべての作業を Debian GNU/Linux 上で行うとよいでしょう。

OS が高速で、キーボードだけで操作できて、自由にカスタマイズできて、利用でき
るパッケージも豊富で、問題があっても治せるので、生産性が劇的に向上しますよ。

- パソコン本体のOSでコピーした内容をvm側のOS上のコマンドラインにペーストする方法は、自身で調べた限りSSH接続くらいだったのですが、他に良い方法はありますか?

ホストが Windows や macOS で、ゲストが Debain GNU/Linux の場合は、ゲスト上の
X11 アプリ (Emacs、rxvt 端末エミュレータ等) であれば、VirtualBox の Guest
Additions で実現可能だと思います (私自身は使っていません)。

- 今操作しているDebianはOSの一つで、OSではwebアプリなどを動かすためのwebサーバーを作ったりできる、という認識で合っていますでしょうか?合っているとするならば、チャレンジ課題にある、ターミナル上でパックマン互換のゲームをプレイせよ。などは、webサーバーを作れたことになるのでしょうか??それともただたんにアプリケーションを動かしただけでしょうか??

 今はいろんなものがあるので、仕組みや概念が非常にややこしいですね。

 Debian GNU/Linux は OS です。アプリケーションや Web サーバは、OS のユーザ空
 間上で動作するソフトウェア (プログラム) です。

 パックマン互換のゲームも OS のユーザ空間上で動作するソフトウェア (プログラム)
 です。Web サーバは関係ありません。

 ややこしいのは、例えば以下のようなパックマン互換のゲームは、Web ブラウザ上で
 動作します。

 Pacman Doodle - Google
 https://www.google.co.jp/logos/2010/pacman10-i.html

 パックマン無料ゲーム|PCで遊べるブラウザ版
 https://game16.net/burage/act/html5-pacman/

 これらのパックマン互換のゲームは、Web ブラウザ上で動作する JavaScript で書か
 れたソフトウェア (プログラム) です。Web ブラウザは、OS のユーザ空間上で動作
 するソフトウェア (プログラム) です。

 したがって、Debian GNU/Linux 上で動作する Web ブラウザの上で動作するパックマ
 ン互換のゲーム、という関係です。この場合も、実行時は Web サーバは関係ありま
 せん (Web サーバは JavaScript のプログラムを取得するために使用しています)。

 やっぱりややこしいですね。

チャレンジ課題

- apt-cache search tetris を実行し、どのようなパッケージが存在するか見てみよ。

- ターミナル上でテトリス互換のゲームをプレイせよ。

- apt-cache search pacman を実行し、どのようなパッケージが存在するか見てみよ。

- ターミナル上でパックマン互換のゲームをプレイせよ。

- man ls を実行し、ls コマンドにどんなオプションがあるか見てみよ。

- ls(1) (ls コマンドの man ページ) 中に単語 color が何回登場するかを数えよ。

- /usr/bin 以下のコマンドのうち、Python のスクリプトであるもののコマンド名を列挙せよ。

- 現在の日経平均を表示する nikkei コマンドを作成せよ。

- fish のプロンプトを自分好みにカスタマイズせよ。

実況ビデオ 「テトリス互換ゲームを探して改造して遊んでみた」

GNU/Linux のターミナル上で実行できるテトリス互換ゲームを探し、 ソースコードに手を入れて、 既存のゲームを自分流に改造して楽しむ様子を収録したビデオです。

  221012-tint.mp4 (01:03:59, 184 kb/s)
  https://lsnl.jp/video/netcompx/2025/221012-tint.mp4


[<12. Debian GNU/Linux セットアップ〜パッケージ管理] [>14. X ウィンドウシステム & ウィンドウマネージャ]