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

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) (名前、変数、式)
18. Python 言語 (2) (文、スコープ、サブルーチン)
19. Python 言語 (3) (オブジェクト指向プログラミング)
20. 最終レポート課題 (実施報告書)
21. シミュレータ解説 (1) (概要、エージェント)
22. シミュレータ解説 (2) (モビリティ、可視化)
23. ソフトウェア設計・実装

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

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

2024/09/25 のものと同じ。

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

内容目標

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

テキスト

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

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

https://lsnl.jp/~ohsaki/lecture/netcompx/2024/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/2024/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/2024/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.

レポート課題 2024/10/16

「レポート課題 2024/09/25」と同じ。

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

チャレンジ課題

- 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/2024/221012-tint.mp4

要望

- 実況ビデオ 「テトリス互換ゲームを探して改造して遊んでみた」を見ながら自分も同じようにやってみようと思い、tintをインストールするところまではできたのですが、そのあとのパスを通すという部分がよくわからず、tintを立ち上げることができなかったのでパスを通すということについて説明をしていただきたいです。また、cd /usr/games/lsとするとtint*と表示されファイルを開く方法が分からず、手詰まってしまったのでこの場合のファイルの開き方も教えてほしいです。

環境変数 PATH については以下を見てください。

1.5 シェルプロンプト
https://www.debian.org/doc/manuals/debian-reference/ch01.ja.html#_the_simple_shell_command

fish の場合は ~/.config/fish/config.fish 中で
set -x PATH /usr/local/bin /usr/bin /bin /usr/local/sbin /usr/sbin /sbin /usr/games
のように設定するのが一つの方法です。

コメント

- いつでもどこでも般若心経を唱えることができるシェルスクリプトを添付します。簡単なものですがシェルスクリプトの勉強と徳を積むことに活用してください

  以下に置きました。
  https://lsnl.jp/~ohsaki/lecture/netcompx/2024/priv/hannya.sh

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