SNS、ネットワークニュース、ブログ、RSS、シェル変数、環境変数、Emacs 英語チュートリアル

					2017年06月13日
情報科学類 コンピュータリテラシ

                                       筑波大学 システム情報系 情報工学域
                                       新城 靖
                                       <yas@cs.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2017/2017-06-13
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/

■連絡事項

■ソーシャル・ネットワーキング・サービス(SNS)

ソーシャル・ネットワーキング・サービス(Social Networking Service, SNS) とは、社会的な関係した人々(友達、家族、地域)と、趣味、日常活動等の情 報を共有するための、インターネット上の仕組みである。

◆SNSの使い方

◆SNSで発信すべきではない情報

Juan Enriquez、タトゥーのように残るあなたのオンラインライフ、TED 2013

EU 「忘れられる権利」。

注意

■ネットワークニュース

ネットワーク・ニュース(network news)、あるいは、ネットニュース (netnews)は、電子メールと並び古くから使われているインターネットのアプ リケーション。 World Wide Webよりずっと古い。

ネットワーク・ニュースのメッセージを読み書きするには、ニュース・リーダ と呼ばれるプログラムを使う。

◆ニュース・リーダの種類

Thunderbird Thunderbird の icon
電子メールが本業。 MacOS, Linux, Windows, Windows その他で動作する。 手引き 4.2節 参照
Netscape Messenger, Mozilla
Thunderbird に引き継がれた。
GNUS (にゅーず)
Emacs の中で使える。メールも読める。 The Unix Super Text 26.3節 参照,
Mew
Emacs の中で使える。本業は、メール。 手引き 3.5 参照, The Unix Super Text 25.7節 参照
Wandarlust
Emacs の中で使える。本業は、メール。
vin (びん)
筑波大学の卒業生、佐藤豊氏の作品。メールも読める。 The Unix Super Text 26.4項 参照
mnews(えむにゅーす)
階層構造に基づくニュース・リーダ。電子メールも読 み書きできる。もともとは、重たい vin を mini にして軽くしようとしたが、 mnews 自体も独自の発展を遂げた。 The Unix Super Text 26.2項 参照
Outlook Express
Windows 用。
Google Groups
Google は、ネットワーク・ニュースの記事を Web ブラウザでアクセスできる ようにしている。ただし、操作性がよくない。 https://groups.google.com/

◆資料

Active Newsgroups List of fj
http://www.fj-news.org/active/ ([ローカル・キャッシュ])
情報科学類/分散システムの資料
技術的には、冗長リンクで、記事を落ちないようにしていることと、記事の重 複対策に Message-ID: を遣っていることが重要である。

■ネットワーク・ニュースの基本的な考え方と操作

ネットワーク・ニュース(network news) あるいは、 ネットニュース(netnews) は、インターネットで「1対多の通信」を実現するための仕掛けの1つ。 Usenet と呼ばれることもある。 ネットワーク・ニュースでは、ある書き手が発したメッセージを、大勢の人が 読む。ネットワーク・ニュースでは、メッセージの事を新聞に たとえて「 記事(article) 」と呼ぶ。 1つひとつの記事は、電子メールと同じく、基本的にはテキストである。

◆記事の転送、サーバ、保存期間

図?は、ネットワーク・ニュースの記事が配送される様子を表わしている。

ネットワーク・ニュースの記事転送の仕組み
図? ネットワーク・ニュースの記事転送の仕組み

各LAN上のどれかのコンピュータでは、ネットワーク・ニュースのサーバ (NNTPサーバ) とよばれるコンピュータ が動いている。そのサーバは、LAN内の他のコンピュータで動いているニュー ス・リーダからの要求に従って、自分が保存している記事を提供する。また、 投稿された記事や他のサーバから受け取った記事を、他のサーバへ転送する。 この時、サーバ間、および、サーバとニュース・リーダの間で使われる、 通信の仕組みは、 NNTP (Network News Transfer Protocol) と呼ばれている。

このように、ネットワーク・ニュースの記事はサーバ間で次々にコピーされる 形で伝わっていく。この時、世界中の数百万のサーバの中には、コピーに 失敗することがある。こういう現象を、「記事が落ちる」という。 また、コピーには、どうしても遅れか生じる。電子メールが1分もかからな いで届くような間でも、ネットワーク・ニュースの場合は、数時間はかかると こともある。また、途中のサーバが止まっていると、記事が落ちな いまでも、そこで何日か足止めされることがある。

ニュース・リーダ(news reader) は、ユーザと対話しながら、サーバから記事を取り寄せたりサーバに記事を送っ たりするプログラムである。

ネットワーク・ニュースでは、毎日膨大な量の記事が投稿されている。それ を保存するためのディスク容量には、限りがある。よって、記事は、あ る保存期間が過ぎると自動的に消されるようになっている。 これを、 エクスパイア(expire) するという。保存期間は、サーバによって異なるか、普通は2週間程 度である。 coins では、3ヶ月。

◆記事の形式

ネットワーク・ニュースの記事は、次のようなテキスト。

Newsgroups: fj.news.reader
From: shiro@is.tsukuba.ac.jp (Shiro Yagi)
Subject: E-Mail facility of news readers
Date: Thu, 24 Apr 2008 00:55:50 GMT
Organization: Institute of Information Sciences and Electronics, Univ of Tsukuba
Message-ID: <SHIRO.10Apr24085550@is.tsukuba.ac.jp>

こんにちは。白やぎです。

ニュース・リーダの電子メールも読み書き機能では、どれが便利一
番便利でしょうか。GNUS でも、メールが読めると聞いたのですけ
れど。

♪♪ 白やぎ
♪♪ http://www.is.tsukuba.ac.jp/~shiro/

ネットワーク・ニュースの記事の構造は、 電子メールの形式 と共通である。 電子メールもネットワーク・ニュースの記事も、空行で ヘッダ(header、頭)本文(body) にわかれる。

電子メールと共通のフィールド:

ネットワーク・ニュースに独自のフィールドで、特に重要なもの

◆ニュース・グループの木構造

記事は、 ニュース・グループ(newsgroup) と呼ばれる仕組みを使って分類されている。世界中で1日に投稿される記事 は、数百万にもなる。それらの記事を全部読むことはできない。 ニュース・グループという仕組みを利用して記事を分類し、各自が興味を持っ ている記事を簡単に見つけられるようにしている。 それぞれの記事のヘッダのNewsgroups: フィールドには、その記事がど のニュース・グループに属しているかが書かれている。

ニュース・グループには、次のように、「.」で区切られたアルファベット や数字などで名前が付けられている。

fj.rec.music
日本関係のニュース・グループ群 fj (From Japan)で、レクリエーション (recreation)関係で、音楽に関する記事を集めるためのニュース・グループ
fj.comp.lang.c
日本関係のニュース・グループ群 fj (From Japan)で、コンピュー タ関係で、言語関係で、C言語についての記事を集めるためのニュー ス・グループ

ニュース・グループの名前は、英語で、かつ長いものは省略形で 付けられている。

ニュース・グループの名前は、全体として、 木構造(tree structure) になっている。木構造が使われている理由は、 パス名 によるファイルの名前付け やDNS (Domain Name System) と同様に、非常に数多くのニュース・グループを扱えることによる。 節の区切りは、「/」ではなく、「.」。

ニュース・リーダの中でも、mnews や vin は、ユーザがニュー ス・グループの木構造にそってニュース・グループを選んでいくことになる。 ニュース・リーダによっては、ユーザは、木構造をあまり意識せず、自分が 興味があるグループを自分が好きな順序で選んでいくことができるようになっている。

1つの記事は、普通、1つのニュース・グループにだけ現われる。記事を投 稿する時に、複数のニュース・グループに現われるようにすることを、 クロスポスト という。

よいニュース・リーダなら、クロスポストされた記事を見つけると、一度 だけユーザに提示し、別のニュース・グループでは既読として扱い、提示しな いという機能がある。

◆ニュース・リーダの操作

ニュース・リーダの操作には、次のようなものがある。
  1. 記事を読む
  2. 記事を書く(ポストする、投稿する)
  3. ある記事に続けて記事を書く(フォローアップする)
  4. 電子メールで返事を出す
  5. 記事をキャンセルする
  6. 記事を保存する
  7. 環境を整える
記事を読むには、まず、ニュース・グループを選ぶことから始まる。 次に、Subject: や From: を見て、その記事を読むかどうかを 決める。

ニュース・グループの中には、自分には興味がないものもある。ニュース・ リーダには、そのようなニュース・グループを、表示しない機能がある。 このことを、ニュース・グループを購読しない状態にするとか、 アンサブスクライブ(unsubscribe) するという。多くのニュース・リーダは、新しいニュース・グループを 購読する状態 ( サブスクライブ(subscribe) された状態 ) にする。ユーザは、興味があればそのままの状態にしておき、興味がなけれ ば、アンサブスクライブする。

1つのニュース・グループでは、各記事には、サーバが受け取った順に付けら れた番号が付けられている。 記事番号 と呼ぶことがある。ニュース・リーダは、標準では、この記事番号の順番 に記事を提示する。Subject: や、 スレッド の順序で並べ変えて関連する話題を連続的に読めるように提示する機能がある ニュース・リーダもある。記事番号、ニュース・サーバごとに異なる。 記事を参照する時には、 Message-ID: を使う。

記事を書くには、記事の形式で説明 したようなテキストを作成し、サーバ・プロセスに渡すことになる。この 作業を、記事を投稿する、 あるいは、 ポストするという。

ネットワーク・ニュースの記事を投稿するのは、電子メールを出すことと非常 によく似ている。異なる点は、 電子メールの受取人の電子メールのアドレス(To:)の代わりに、ニュー ス・グループ名(Newsgroups:)を指定する所 を指定することである。

電子メールと違って、ネットワーク・ニュースでは、一度投稿した記事を 取り消すことができる。これを、記事を キャンセル(cancel) するという。キャンセルできるのは、自分が投稿した記事だけである。 普通のニュース・リーダなら、キャンセルする機能がある。

記事は、保存期間が終ると消えるので、ネットワーク・ニュースの記事で、有 益なものを見つけた時には、ファイルに保存する必要がある。ニュース・ リーダでは、記事を保存する機能がある。

◆サーバの選択

ニュース・リーダは、LAN上で動いているネットワーク・ニュースのサーバ を探して接続する。この時、どのサーバを使うかを指定する方法には、 ニュース・リーダの設定画面や プログラムを実行する時に与えるパラメタ (引数や 環境変数 NNTPSERVER ) が使われる。ポー ト番号は、標準では 119 が使われるので、普通は、ホスト名だけを指定する。 ニュース・リーダの中には、119 以外のポート番号に接続できるものや、複数 のサーバに接続できるものもある。

■ネットワーク・ニュースに関する知っておきたいこと

■ブログ

ブログ(blog)、または、ウェブログ(web log)とは、World Wide Web において日記形式でニュースを発信するものである。

◆ブログと単なる Web ページの違い

◆ブログを実現するプログラム

◆blogの内容

■RSS

RSS (RDF Site Summary、Rich Site Summary、または、 Really Simple Syndication )は、Web サイトの要約や見出しを記述するためのファイル形式(XML 形式)。 「フィード(feed)」ということもある。

◆RSSとニュース、ブログ

RSS は、ニュースサイトが記事の見出しを配信するためによく使われている。 また、ブログ(blog、Web log)のツールの中には、自動的に RSS により更新情 報を提供するものがある。

◆3種類のRSS

RSSには、様々な種類がある。大きく分けると 3 種類に分けられる。(プログラ ムによっては扱えないことがある。)

◆RSSの構造

◆RSSリーダ

RSS で配信された見出し(RSSフィード、Webフィード)を元に、元のページを表 示する機能を持つWWW ブラウザを RSS リーダという。多くの場合、RSS だけで なく Atom を扱える。

英語圏では、「RSS reader」よりも「aggregator」という呼び方が多い。 複数の RSS や Atom で配信されている情報を1つに集約(aggregate)して 読みことができることによる。

RSS reader/Aggregator を使うと、単純に WWW サイトを訪れる方法と比較し て、楽に更新された情報を見ることができる。メーリング・リスト等と 比較して、spam が混入することは(今の所)ない。 広告は、入ることがある。

2種類の方法がある。

■シェル変数と環境変数

■変数とは

変数(variable)
何かを覚えるためのもの。メモリを抽象化して名前をつけたもの。
変数名(variable name)
変数を区別するための名前
変数の値(value)
変数が覚えているもの
変数の値を参照(reference)
変数の値を取り出すこと
変数に値を代入(assignment)
変数名で変数を指定して、その値を変更する。変数に値をセットする。

◆シェル変数と環境変数の違い

シェルでは、2種類の変数を使える。
シェル変数
1つのシェル内でのみ有効。
環境変数
実行されるプログラム(子プロセス)に引き継がれる。

◆echo コマンドの復習

echo コマンドは、引数をそのまま画面(標準出力)に出力するコマンド。
$ echo hello [←]
hello
$ echo hi [←]
hi
$ echo /usr/bin/*z [←]
/usr/bin/DeRez /usr/bin/Rez
$ echo /usr/bin/DeRez /usr/bin/Rez [←]
/usr/bin/DeRez /usr/bin/Rez
$ []

◆シェル変数の操作

シェル変数へ代入するには、「変数名=」を使う。
$ X=100 [←]
$ []
参照するには、「$変数名」とする。
$ X=100 [←]
$ echo $X [←]
100
$ []
他の変数と紛らわしい時には、 「"$変数名"」のようにダブルクォートで括るとよい。
$ echo x"$X"x [←]
x100x
$ []
(注意: $Xx と $X は別の変数なので区別できるようにする。) あるいは、${変数名}のように、 括弧で括る方法もある。
$ echo x${X}x [←]
x100x
$ []

シェル変数を削除するには、unset コマンドを使う。

$ unset X [←]
$ echo $X [←]

$ echo x"$X"x [←]
xx
$ []
設定されていないシェル変数を使おうとすると、空として扱われる。 注意:シェルのプロンプト($ ) と間違えないこと。シェルのプロンプ ト($ ) は、実際のコンピュータでは、crocus38:~ i1012345$ のようになっている。

◆環境変数の代入

bash では、シェル変数の変数名を export コマンドに与えることで、 そのシェル変数を環境変数に変える。
$ X=100 [←]
...
$ export X [←]
$ []
あるいは、最初から export を付けて代入の操作をすることもできる。
$ export X=100 [←]
$ []
bash では、環境変数の参照方法と削除方法はシェル変数と同じ($とunset)である。

◆環境変数の利用方法(TZ)

シェルがプログラムを実行する時、シェル変数は、プログラムへ引き渡されな いが、環境変数は、渡される。環境変数は、プログラムの動作を変更するため に用いる。 以下の例では、環境変数 TZ を設定して、date コマンドの動きを 変えている。
$ date [←]
2017年 6月11日 日曜日 20時36分01秒 JST
$ echo $TZ [←]

$ TZ=EST [←]
$ echo $TZ [←]
EST
$ export TZ [←]
$ date [←]
2017年 6月11日 日曜日 06時36分33秒 EST
$ []
マニュアルの ENVIRONMENT に記述されている。
$ man date [←]

DATE(1)                   BSD General Commands Manual                  DATE(1)

NAME
     date -- display or set date and time

SYNOPSIS
     date [-ju] [-r seconds] [-v [+|-]val[ymwdHMS]] ... [+output_fmt]
     date [-jnu] [[[mm]dd]HH]MM[[cc]yy][.ss]
     date [-jnu] -f input_fmt new_date [+output_fmt]
     date [-d dst] [-t minutes_west]

DESCRIPTION
     When invoked without arguments, the date utility displays the current
     date and time.  Otherwise, depending on the options specified, date will
     set the date and time or print it in a user-defined way.
...
ENVIRONMENT
     The following environment variables affect the execution of date:

     TZ      The timezone to use when displaying dates.  The normal format is
             a pathname relative to /usr/share/zoneinfo.  For example, the
             command ``TZ=America/Los_Angeles date'' displays the current time
             in California.  See environ(7) for more information.
...

◆空白を含むシェル変数

シェル変数や環境変数で、空白を含んでいる(可能性がある)時には、ダブル クォート "" で括ると1単語として扱われる。
$ as="Application Support" [←]
$ echo $as [←]
Application Support
$ ls -ld ~/Library/$as [←]
ls: /home/prof/yas/Library/Application: No such file or directory
ls: Support: No such file or directory
$ ls -ld ~/Library/"$as" [←]
drwx------  14 yas  prof  4096  4 26 12:27 /home/prof/yas/Library/Application Support
$ []

◆シェルのメタキャラクタ

シェルが解釈し、コマンドには渡されない文字。 < > | $ { } ( ) [ ] & ; ^ " * ? ~ ' ` 空白 タブ など。

コマンドの引数として渡したい時には、解釈を避ける(エスケープ(escape))た めの特殊な形式を使う。
形式 エスケープ対象 エスケープしないメタキャラクタ
\x \」の直後の一文字 なし (行末の「\」は継続行の意味)
'str' 「'」でくくられた文字列 「'」自身は入れられない。「\'」も効かない。
"str" 「"」でくくられた文字列 「$」, 「`」(バッククォート),「"」(ダブルクォート), 「\」,「!」
\は、ASCII 5c(16進)の文字。表示は、「\」か「¥」。

ダブルクォート "" の内部では、$ は解釈され、シェル変数や 環境変数の置き換えられる。シングルクォート 「''」では、$ は解釈さない。

$ echo "$HOME" [←]
/home/prof/yas
$ echo '$HOME' [←]
$HOME
$ []

◆空白のエスケープ

ファイル名の一部に空白を含む場合、エスケープする必要がある。
$ ls -ld "/Applications/QuickTime Player.app" [←]
drwxr-xr-x+ 3 root  wheel  102  5 15 22:29 /Applications/QuickTime Player.app
$ open "/Applications/QuickTime Player.app" [←]
$ []
バックスラッシュを使ってもよい。
$ ls -ld /Applications/QuickTime\ Player.app [←]
drwxr-xr-x+ 3 root  wheel  102  5 15 22:29 /Applications/QuickTime Player.app
$ open /Applications/QuickTime\ Player.app [←]
$ []
bashのファイル名補完機能 では、空白を含むファイル名は、バックスラッシュで自動的に補完されることがある。
$ ls -ld /A[]
$ ls -ld /A[tab][]
$ ls -ld /Applications/[]
$ ls -ld /Applications/Q[]
$ ls -ld /Applications/Q[tab][]
$ ls -ld /Applications/QuickTime\ Player.app/[]
ファイル名の補完機能を使う時には、空白を打ち込むには、 「\ バックスラッシュ スペース」と打つ必要がある。

補完よりも、ファイル名の置き換え機能が簡単のこともある。
$ ls -ld /A*/Q* [←]
drwxr-xr-x+ 3 root  wheel  102  5 15 22:29 /Applications/QuickTime Player.app
$ []

◆環境変数PATH

環境変数PATHは、コマンドが存在するディレクトリを保持している環境変数である。
$ echo $PATH [←]
/home/prof/yas/bin:/usr/local3/coins/macosx/bin:/usr/local3/coins/common/bin:/us
r/local3/bin:/usr/X11/bin:/Developer/Simulator/GTKwave/bin:/usr/bin:/bin:/usr/sb
in:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/MacGPG2/bin:/opt/local/sbin:/opt
/local/bin:/usr/texbin
$ printenv PATH [←]
/home/prof/yas/bin:/usr/local3/coins/macosx/bin:/usr/local3/coins/common/bin:/us
r/local3/bin:/usr/X11/bin:/Developer/Simulator/GTKwave/bin:/usr/bin:/bin:/usr/sb
in:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/MacGPG2/bin:/opt/local/sbin:/opt
/local/bin:/usr/texbin
$ []
シェルは、打ち込まれたコマンドを環境変数 PATH の中から探して実行する。 たとえば、ls と打ち込まれると、/bin にある /bin/ls を実行する。

複数のコマンドがみつかれば、PATHの先に見つかったものを実行する。 どのコマンドが実行されるかを確認するには、which コマンドを使う。

$ which ls [←]
/bin/ls
$ []

■コマンド行の編集機能とヒストリ機能

◆historyコマンド

history コマンドは、過去に打ち込んだコマンドの一覧を表示するコマンドである。
$ history [←]
    1  saykotoeri2 
    2  saykotoeri2 
    3  fg
    4  dup
<中略>
  500  history
$ []
シェル変数 HISTFILESIZE の個数だけ記憶している。
$ echo $HISTFILESIZE [←]
500
$ []

◆bashのコマンド行の編集機能

bash には、Emacs に似せて、コマンド行の編集機能がある。

◆「!」と「^」

bash には、過去に打ち込んだコマンドを記憶して再現する機能がある。 bash では、コマンド行の編集機能があるので使わなくてもよいが、次の ことは理解しておく必要がある。

◆利用

bash では、 コマンド行の編集機能 で、ヒストリをさかのぼって編集して利用できる。 その他に、次のような方法もある。bash では、ほとんど使われない。 編集機能がないシェルでは有効であった。
!!
直前のコマンドの再実行
!10
history で表示される 10番のコマンドの実行
!-2
現在からさかのぼって2個前のコマンドの実行。!-1 は、!! と同じ。
!str
先頭が str から始まるコマンドで、最も最新のもの。
!?str
文字列 str を含むコマンドで、最も最新のもの。
^old^new
直前のコマンドの old を new で置き換えたもの。打ち間違いの修正。
!*
直前のコマンドの引数(コマンド名以外)
利用例:
$ ls file.txt [←]
file.txt
         ここで -l を付けわすれたのに気がつく
$ ls -l !* [←]
ls -l file.txt
-rw-r--r--  1 yas  prof  9  4 29 21:23 file.txt
$ []

■Emacs

◆英語チュートリアル

Emacs には チュートリアル機能(自習機能) がある。Emacs のキー操作は、英語の単 語を元に作れている。このことは、英語でチュートリアルを実施するとよくわ かる。 手引き 3.1.4 参照

■実習

実習時間中には、 以下の課題をできるだけ多く行いなさい。全部を行う必要はない。

★練習問題(1701) Thunderbirdでのニュース・リーダの設定

Thunderbirdでネットワーク・ニュースの記事を読めるようにしなさい。 Thunderbird には、ニュースリーダとしての機能がある。これを利用してみなさい。

  1. 一番上のツールバーの「ツール」メニューから「アカウント設定」を選ぶ。
  2. 「アカウント操作」をクリックし、メニューを表示する。開いたメニュー から、「他のサービスのアカウントを追加」を選ぶ。
  3. 「ニュースグループアカウント」を選ぶ。
  4. 差出人情報を設定する
  5. 「ニュースサーバ」に対して、「news.coins.tsukuba.ac.jp」と打ち、 「続ける」ボタンを押す。
  6. アカウント名に対して、わかりやすい名前(news.coins.tsukuba.ac.jp)の ままでもよい)を打ち、「続ける」ボタンを押す。
  7. 「設定完了」のウインドウで、設定を確認し、「完了」ボタンを押す。
  8. 「OK」ボタンを押す。 
この結果、左側のサイドメニューに「アカウント名」で指定した項目 (news.coins.tsukuba.ac.jp)ができる。

  1. 「フォルダ」の下にあるニュースアカウントの項目(上の6.で指定したも の)を選択する。
  2. 「購読するニュースグループを管理する」を選ぶ。
  3. 読みたいニュースグループにチェックを入れ、「購読」ボタンを押す。 たとえば、fj.1st-readme なら、fj の左の三角ををiクリックし、 展開して、fj.1st-readme をクリックし、「購読」ボタンを押す。
  4. いくつかのニュースグループについて、繰り返す。
  5. 「OK」ボタンを押す
以後、1つのニュースグループは、 電子メールのフォルダのように表示される。 記事の既読、未読の情報が管理される。

★練習問題(1702) ニュースグループの調査(comp)

英語のニュースグループ comp で、 自分にとって興味があるニュース・グループを探し、購読しなさい。

★練習問題(1703) ニュースグループの調査(fj)

日本語のニュースグループ fj で 自分にとって興味があるニュース・グループを探し、購読しなさい。

記事がありそうなニュースグループ

★練習問題(1704) 記事の保存

自分が興味がある記事を保存しなさい。 保存した記事を lv コマンド(手引き)、Emacs などで観察しなさい。

★練習問題(1705) RSSの発見

次の場所にある RSS を、Web ブラウザで探しなさい。

★練習問題(1706) ThunderbirdのRSSリーダ機能

Thunderbird には、RSS リーダとしての機能がある。これを利用してみなさい。

  1. 一番上のツールバーの「ツール」メニューから「アカウント設定」を選ぶ。
  2. 「アカウント操作」をクリックし、メニューを表示する。開いたメニュー から、「他のサービスのアカウントを追加」を選ぶ。
  3. 「ブログとニュース(フィード)」を選ぶ。
  4. 「アカウント名」に分かりやすい名前を打ち込む(標準の 「ブログとニュース」のままでもよい)。 その後、「続ける」ボタンを押す。
  5. 「完了」ボタンを押す。
  6. 「OK」ボタンを押す。 
この結果、左側のサイドメニューに トップの項目ができる。その後、 購読する RSS を追加する。
  1. 「ローカルフォルダ」の下にある RSS の項目(上の4.で指定した「ブロ グとニュース」)をクリックして選択する。
  2. 「購読するブログやニュースを管理する」をクリックする。 すると、「フィードの購読」というウィンドウが開く。
  3. 「フィードURL:」の枠に、 RSS の URL を打ち込み、「追加」ボタンを押す。
  4. 「閉じる」ボタンを押し、ウィンドウを閉じる。
以後、1つの RSS フィードは、 メッセージの既読、未読の情報が管理される。 この機能を使って、次の RSS を購読してみなさい。

★練習問題(1707) Firefoxのブックマーク

Firefox の(普通の)ブックマークの機能を使ってみなさい。 手引き 4.1.3節 参照The Unix Super Text 28.2.5項 参照

★練習問題(1708) FirefoxのRSSリーダ機能

Firefox の RSS リーダ機能( http://support.mozilla.com/ja/kb/ライブブックマーク )を利用してみなさい。 Firefox では、RSS ファイルのこと「フィード」と呼んでいる。

★練習問題(1709) シェル変数の確認

setコマンドに引数付けないで実行すると、全てのシェル変数(環境変数含む)の 値が表示される。
$ set [←]
$ set | lv [←]
どのようなシェル変数が設定されているか観察しなさい。

★練習問題(1710) printenvコマンド

printenvtコマンドに引数付けないで実行すると、全ての環境変数の値が表示さ れる。これを確認しなさい。
$ printenv [←]
$ printenv | lv [←]

★練習問題(1711) 環境変数の確認

個々の環境変数の値がどうなっているか、echo コマンドや printenv コマンド で確認することができる。
$ echo $HOME [←]
/home/prof/yas
$ printenv HOME [←]
/home/prof/yas
$ []
注意: echo の引数には、$ を付けるが、 printenv の引数には、$ を付けない。

次のような環境変数の値を調べなさい。

注意:環境変数が設定されていないことがある。

★練習問題(1712) 環境変数 TZ の動作

次のようなコマンドを打ち、環境変数 TZ の働きを調べなさい。
$ date [←]
$ echo $TZ [←]
$ export TZ=EST    [←]
$ date [←]
$ unset TZ [←]
$ date [←]
$ []
環境変数 TZ/usr/share/zoneinfo/ の下にあるファイル名 を設定して、その動作を確認しなさい。

★練習問題(1713) 環境変数 HOME

環境変数 HOME の値を調べなさい。
$ echo $HOME [←]
cd コマンドの引数に与えて、ホーム・ディレクトリや ホーム・ディレクトリ以下のディレクトリに移動してみなさい。
$ cd / [←]
$ pwd [←]
$ cd $HOME [←]
$ pwd [←]
$ cd / [←]
$ pwd [←]
$ cd $HOME/Desktop [←]
$ pwd [←]
$ []
ファイル名の置き換え機能「~/」を使う方法と環境変数 HOME を使う方法を比 較しなさい。

★練習問題(1714) 環境変数 PATH

環境変数 PATH の働きを次のようにして調べなさい。
$ echo $PATH [←]
(表示を確認する)
$ aaaa [←]
-bash: aaaa: command not found     (エラーの表示)
$ ls [←]
(普通に実行される)
$ which ls [←]
/bin/ls
$ PATH=/usr/bin [←]
$ ls [←]
-bash: ls: command not found     (エラーの表示)
$ exit [←]
この例ではPATH の内容がかなり限定され、普段は実行できるコマンドが実行で きなくなっている。それで、最後に exit コマンドでシェルを終了している。 シェルが必要ならば、もう一度 iTerm を実行するなどしてシェルを実行する。

★練習問題(1715) シェル変数の操作

シェル変数を使って、長いファイル名やディレクトリ名を簡単に打ちなさい。
$ u=/Applications/Utilities [←]
$ echo $u [←]
/Applications/Utilities
$ ls $u [←]
Activity Monitor.app            Disk Utility.app
AirPort Utility.app             Grab.app
AppleScript Editor.app          Grapher.app
Audio MIDI Setup.app            Keychain Access.app
Bluetooth File Exchange.app     Migration Assistant.app
Boot Camp Assistant.app         System Information.app
BootPicker.app                  Terminal.app
ColorSync Utility.app           VoiceOver Utility.app
Console.app                     XQuartz.app
DigitalColor Meter.app
$ []

★練習問題(1716) 「*」のエスケープ

「*」は、シェルが解釈するメタキャラクタの1つである。 ファイル名置換 で、ファイル名に置換られる。
$ echo * [←]
(ファイル名の並び)
$ ls -ld * [←]
(ls -ld の結果)
$ []
次のようにして、「*」をエスケープして、ファイル名置き換えの動作を無効化 できることを確認しなさい。
 $ echo \*[←]
 *
 $ ls -ld \*[←]
 ls: *: No such file or directory
 (「*」というファイルが存在しないというエラー・メッセージ。エラーが出ることが正しい動作。)
 $ echo '*'[←]
 *
 $ ls -ld '*'[←]
 ls: *: No such file or directory
 $ echo "*"[←]
 *
 $ ls -ld "*"[←]
 ls: *: No such file or directory
 $ []

★練習問題(1717) 様々なシェルのメタキャラクタのエスケープ

練習問題 「*」のエスケープ と同様に、様々な メタキャラクタ を表示してみなさい。
$ echo '< > | { } ( ) [ ] & ; ^ " * ? ~'[←]
< > | { } ( ) [ ] & ; ^ " * ? ~
$ echo "< > | { } ( ) [ ] & ; ^ ' * ? ~"[←]
< > | { } ( ) [ ] & ; ^ ' * ? ~
$ echo \< \> \| \{ \} \( \) \[ \] \& \; \^ \" \* \? \~[←]
< > | { } ( ) [ ] & ; ^ " * ? ~
$ []

★練習問題(1718) 変数とクォートの働き

bash で ダブルクォート「" "」 や シングルクォート 「' '」の働きを調べなさい。
$ echo "$HOME" [←]
(表示の確認)
$ echo '$HOME' [←]
(表示の確認)

★練習問題(1719) Emacs英語チュートリアル

Emacs には チュートリアル機能 がある。 coins の環境では標準で、日本語の環境では日本語のチュートリアルが実行される。 次の手順で、英語のチュートリアルを実行しなさい。

★練習問題(1720) historyコマンド

history コマンドで、どのようなコマンドを打ち込んできたかを調べなさい。
$ history [←]
$ history | tail -5 [←]
(過去の5行だけ表示)
$ history | grep cd [←]
(cd を含む行だけ表示)
$ history | lv [←]
(ページャ lv でページ単位で表示。)

★練習問題(1721) historyを使ったコマンドの実行

history の結果を用いて、過去のコマンドを再実行してみないさい。

★練習問題(1722) シェル変数 HISTFILESIZE

シェル変数 HISTFILESIZE の値を調べなさい。
$ echo $HISTFILESIZE [←]
history コマンドで表示されるコマンドの数を調べなさい。
$ history [←]
<表示>
$ history | wc [←]
$ []
wc は、word count の略で、行数、単語数、バイト数を表示する。一番左が行 数である。 シェル変数 HISTFILESIZE の値を変化させると、何が起きるか調べなさい。

★練習問題(1723) シェル変数 PS1

シェル変数 PS1 を表示しなさい。
crocus39:~ yas$ echo "$PS1"
\h:\W \u\$ 
crocus39:~ yas$ 
この時、ダブルクォート "" を付けないとうまく表示できないことがある。この理由を考えなさい。 シェル変数 PS1 は、シェルのプロンプトを保持している。これを変更してみな さい。
crocus39:~ yas$ PS1="hi$ "[←]
hi$ []

マニュアル man bash で、PS1 変数(PROMPTING)の中で次のような表現がどのような意味を 持っているかを調べなさい。

man bash の中では、ページャ lv (less) の 「/」 による検索が便利である。

★練習問題(1724) シェル変数と環境変数の比較

シェル変数と環境変数を比較しなさい。 練習問題 シェル変数の確認練習問題 printenvコマンド の結果を比較しなさい。変数を次の3つに分けて数を数えなさい。 シェル変数の方が数は多い。環境変数にしか現れないものは存在するか。
$ set | wc [←]
      53      67    1566
$ set | lv [←]
(表示省略。q で終了)
$ printenv | wc [←]
      24      29    1005
$ printenv | lv [←]
(表示省略。q で終了)
$ []

★練習問題(1725) クォートと改行

ダブルクォート「" "」 や シングルクォート 「' '」は、中に改行を含めることができる。逆に言うと、必ず閉じる 必要がある。閉じられていない場合には、シェルのプロンプトが$ から > に変化する。このことを確認しなさい。
$ echo "a [←]
> b[←]
> c"[←]
(表示の確認)
$ echo 'a [←]
> b[←]
> c'[←]
(表示の確認)
$ []

★練習問題(1726) その他のニュース・リーダの設定

その他のニュース・リーダを設定して、記事が読めるようにしなさい。

★練習問題(1727) newsrcファイルの観察

ニュース・リーダは、未読記事と既読記事の管理を newsrc というファイルを使って行う。 記事を読みながら、そのファイルの内容がどのように変化するかを観察しなさい。

★練習問題(1729) 記事の投稿、フォローアップ記事、キャンセル

coins.test など coins から始まるニュースグループに記事を投稿してみなさ い。フォローアップ記事を投稿してみなさい。また、キャンセルの練習のため の記事を投稿し、それをキャンセルしてみなさい。

■課題17 SNS、ネットワークニュース、ブログ、RSS、シェル変数、環境変数、Emacs 英語チュートリアル

以下の問題について、問題、および、回答をテキスト・ファイルに記述し、 レポート提出ページから提出しなさい。端末の表示 (コマンドの実行結果)は、コピー&ペースト等の機能を使って提出するファイ ルに含めなさい。課題が達成されたことを示す程度には見やすいように編集し なさい。ただし、過度の編集は避けなさい。編集した部分は必要に応じて省略 記号を入れなさい。

テキスト・ファイルで、右揃えをするには、パラグラフの区切りを、空行にし た上で、M-q (Esc q, M-x fill-paragraph) の機 能を利用するとよい。

(1) ニュースリーダの設定を行いなさい。ネットワーク・ニュースの記事を読 みなさい。その中で、面白い記事、将来役立ちそうな記事、賛成意見を含む記 事、または、反対意見を含む記事を保存しなさい。この時、次のヘッダをきち んと保持しなさい。

保存した記事を、Emacs 等のテキスト・エディタで表示できることを確認しな さい。ファイルに保存した記事を、レポートに含めなさい。 Emacs の insert-file が簡単である。 保存した記事について、次のどれか1つを書きなさい。

練習問題 Thunderbirdでのニュース・リーダの設定練習問題 その他のニュース・リーダの設定 参照。

(2) RSSリーダ の設定をしなさい。RSSリーダとし ては、 ThunderbirdのRSSリーダ機能FirefoxのRSSリーダ機能 がある。その他に、RSSリーダ機能のサービスを利用する方法もある。

RSSリーダに、3つ以上の「学外」のサイトの RSS を登録しなさい。 学外のサイトのうち、1つ以上は、コンピュータ関連のものにしなさい。 残りのものは、コンピュータ関連でもそれでなくても良い。 レポートには、次の内容を含めなさい。

練習問題 ThunderbirdのRSSリーダ機能練習問題 FirefoxのRSSリーダ機能 参照

(3) SNS (ネットワークニュース含む) でメッセージを発信する時、考慮すべき 重要な事を2点上げ、簡単に説明しなさい。

(4) 学類の iMac で、MacOSX が動作している状態で、次のファイル名(ディレ クトリ名も含めたすべて)を、適当なシェル変数を設定して短く表現しなさい。

    /Applications/Firefox.app
    /Applications/Thunderbird.app
    /Applications/QuickTime Player.app
    /Applications/MacPorts/Emacs.app
短く表現したものを、ls -ld コマンドの引数に与えて実行しなさい。
$ シェル変数の代入1 [←]
$ シェル変数の代入2 [←]
$ シェル変数の代入3 [←]
...
$ シェル変数の代入n [←]
$ ls -ld シェル変数の参照を利用短い表現 [←]
drwxrwxr-x@ 3 root  admin  102  5 25 09:50 /Applications/Firefox.app
$ ls -ld シェル変数の参照を利用短い表現 [←]
drwxrwxr-x@ 3 root  admin  102  6  7 09:43 /Applications/Thunderbird.app
$ ls -ld シェル変数の参照を利用短い表現 [←]
drwxr-xr-x+ 3 root  wheel  102  7 21  2016 /Applications/QuickTime Player.app
$ ls -ld シェル変数の参照を利用短い表現 [←]
drwxr-xr-x  3 root  admin  102  4 27 07:10 /Applications/MacPorts/Emacs.app
$ []
ヒント1: シェル変数への代入は、何回でもよい。1回でも2回以上でもよい。

ヒント2: シェル変数の値に空白が含まれている(可能性がある)ものを参照する 時には、ダブルクォートでくくる("$name")とよい。

ヒント3: 補完機能と組み合わせてもよい。その場合にはどのようなキー操作を したのかをレポートに書きなさい。

練習問題 シェル変数の操作練習問題 変数とクォートの働き 参照

(4) echo コマンドを使って、次の文字列を画面に表示しなさい。

Lib*
????top
A   B #AとBの間に空白が3個
<yes><no>
Let's go
#help
たとえば、次のように回答しなさい。
$ echo 回答内容 [←]
Lib*
$ echo 回答内容 [←]
????top
$ echo 回答内容 [←]
A   B
$ echo 回答内容 [←]
<yes><no>
$ echo 回答内容 [←]
Let's go
$ echo 回答内容 [←]
#help
$ []
注意:これは、 メタキャラクタをエスケープ する課題である。単に echo コマンドに対してこのような文字列を与えればよ いということでない。 練習問題 「*」のエスケープ練習問題 様々なシェルのメタキャラクタのエスケープ 参照。

(6) The Unix Super Text の次の部分を読みなさい。

次の項目について簡単に説明しなさい。 (7) The Unix Super Text の次の部分を読みなさい。 次の項目について簡単に説明しなさい。

(8) 手引きの次の部分を読みなさい。

次の項目について簡単に説明しなさい。

(9) [加点] 以下のコマンドは、環境変数によって動作が変わる。どのような環 境変数でどのように動作が変わるかを man コマンドや The Unix Super Text (30.4.2 節、その他各コマンドの説明) で調べなさい。そして 練習問題(1714) と同様に実際に実行し、動作の 変化を確かめなさい。 全体として、コマンドと環境変数の組で、5 個以上の例を示しなさい。ただし、 環境変数としては PATH, TZ 以外のものを使いなさい。同じ環境変数で、複数 のコマンドの動作が変化するものを含めてもよい。

(10) [加点] Emacs で、英語でチュートリアルを実施しなさい。開始日時と終了 日時を報告しなさい。


Last updated: 2017/06/13 16:31:26
Yasushi Shinjo / <yas@cs.tsukuba.ac.jp>