UNIX/LINUXの基礎訓練

1.1 コンソール上で
デスクトップ環境
1
UNIX/LINUXの基礎訓練
2015 年 2 月 5 日版
西井 淳
目次
デスクトップ環境
1
1.1
コンソール上で . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
UNIX コマンド・基本アプリケーション
Emacs . . . . . . . . . . . . . . . . .
基本コマンド . . . . . . . . . . . . . .
マウス操作 . . . . . . . . . . . . . . .
プリンタ管理 . . . . . . . . . . . . . .
ファイル情報取得 . . . . . . . . . . . .
エイリアス . . . . . . . . . . . . . . .
シンボリックリンク . . . . . . . . . .
リダイレクト・パイプ . . . . . . . . .
文字列置換 . . . . . . . . . . . . . . .
2
2
2
2
2
3
3
3
3
3
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
パッケージ情報取得 (Vine Linux 用のコマンド)
4
4
シェルスクリプトとパス設定
4
4
4
4.1
4.2
準備運動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ファイル圧縮 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
リモート操作
5
5.1
5.2
5.3
6
アクセス権限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
5
5
5
このドキュメントの著作権について
5
他ホストへの接続 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
リモートコピー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
終了しないで仮想コンソールに移動)、ログ
1 デスクトップ環境
インせよ。
1.1 コンソール上で
2) ’yes’ とタイプせよ。これにより文字’y’ が出
ログイン後 X window を起動し (大抵自動で起
力され続ける。これを以下の 3 通りの方法で
動する)、以下を順に行え。
停止せよ。
• C-c で停止してみよ。
1) コンソール画面に移動して (X window は
• ’yes’ を再起動したあと、別の仮想コン
1
2.2 基本コマンド
2
ソールに移り、コマンド’yes’ のプロセス
8) 読み込んだファイル中のある文字列を探すた
ID(PID) を ps と grep を用いて調べ、
めのキー操作は (前方検索/後方検索)? さら
kill コマンドで yes を停 止せよ。
に同じ文字列がある次の場所を探す方法は?
• ’yes’ を 再 起 動 し た あ と 、別 の 仮 想 コ
9) ファイル中の特定の文字列を別の文字列に置
ンソールに移り、コマンド’top’ を用い
換するためのキー操作は?
て’yes’ を停止せよ。
2.2 基本コマンド
3) C-s を押してみよ。この後、そのコンソール
1) ターミナル (kterm 等) 上から emacs を起動
では入出力ができなくなるが、これを回復す
するとき、ターミナルも emacs も利用でき
るにはどうしたらよいか?
るように起動するにはどうすればよいか?
4) yes がたくさん起動されているとき、yes コ
2) 前問の起動オプションを忘れて,うっかり
マンドの名前の指定によってまとめて kill す
ターミナル (kterm 等) 上から emacs を起動
る方法は?
してしまった。その後 emacs を終了するこ
5) コンソールからログアウトせよ。
と無く,ターミナルも emacs も利用できる
6) X window に復帰せよ。
ようにする方法は?
3) あるプログラムと、それを少し修正したプロ
2 UNIX コマンド・基本アプリケー
グラムで、どこが違うかを知る方法は?
ション
2.1
UNIX コマンド・基本アプリケーション
4) 現在いるディレクトリがどこか、その絶対パ
スを知る方法は?
Emacs
1) emacs を起動し、“ヘルプ/練習” を実行して
5) あるディレクトリにコマンド cdで移動後、も
基本操作を学びなさい。(チュートリアルで、
とのディレクトリ戻るにはどうしたらいい?
ESC a などとあるのは、M-a でも同様に機
(cdのオプションを利用する)
能する)
6) ディスク使用率を表示するコマンドは?
2) emacs の画面を上下に分割する方法は? ま
7) あるテキストファイルに含まれる文字数や行
た、分割表示をやめる方法は?
数を調べる方法は?
3) emacs の編集画面を複数開く方法は? (メモ
8) 日本語のテキストファイルの文字コードを判
リを大量消費するので、emacs は複数起動
断する方法は?
しないこと)
9) EUC のテキストファイルの文字コードを
4) 編集中のプログラムのコンパイルを emacs
UTF-8 に変換するには?
上から実行するキー操作は?
2.3 マウス操作
5) emacs でコピー&ペーストをするキー操作
1) マウスで 1 単語 (文節) のみ選択する方法は?
は?
2) マウスで選択した単語をペーストする方法
6) emacs でカット&ペーストをするキー操作
は?
は?
7) 複数のファイルを読み込んでいる時、表示す
2.4 プリンタ管理
るファイルを変更する方法は?
1) プリンタの稼働状況を知るコマンドは?
2
2.9 文字列置換
2
2) プリンタジョブをキャンセルする方法は?
UNIX コマンド・基本アプリケーション
はどうしたらよいか?
3) ファイル math.h から、文字列 PI を含む行
2.5 ファイル情報取得
を全て抜き出すにはどうしたら良い?
1) ファイル math.h がシステム上のどこにある
4) あるファイルの、末尾から 50 行のみを less
か、その一覧を表示するコマンドは?
を使って見るにはどうしたらよいか?
2) ls とタイプしたとき実行されるコマンドがど
5) あるファイルの、先頭から 50 行のみを less
このパスにあるかを知るためのコマンドは?
を使って見るにはどうしたらよいか?
2.6 エイリアス
6) CSV 形式のファイルの 2 列目のみを抜き出
1) em とタイプすると emacs が起動するように
して表示するにはどうすればよいか? ($ man
エイリアスをつくれ。
cut参照)
CSV 形式とは以下の例のように、
各行にデータを”,” で区切って保存するデー
2) 一時的にエイリアスを無効にして em という
タ形式である。
名前のコマンドを実行する方法は?
3) 現在 em がどのようなエイリアスになってい
1
2
るかを確認する方法は?
デ ー タ x1 ,
デ ー タ x2 ,
デ ー タ y1 ,
デ ー タ y2 ,
デ ー タ z1
デ ー タ z2
4) 作成したエイリアス em が不要ならば削除
7) 以 下 の よ う に 2 つ の デ ー タ フ ァ イ ル
せよ。
(data1.txt,data2.txt) があるとする。
2.7 シンボリックリンク
1) ディレクトリ
1
2
3
4
5
6
7
8
˜/c と ˜/tmp をつくりなさい。
2) ディレクトリ˜/tmp に移動せよ。
3) ディレクトリ˜/cへのシンボリックリンクを
つくれ。
4)
ls cで、˜/c以下を参照できることを確かめよ。
5)
cd cでシンボリックリンクの中へ移動できる
これらの 2 つのデータファイルの各行をくっ
ことを確かめよ。
6) さらに、cd
つけて以下のようなファイル (data3.txt) を
../ でもとのディレクトリ (˜/tmp)
出力する方法は? ($ man paste 参照)
に戻れること を確かめよ。
7)
$ c a t data1 . t x t
1
2
3
$ c a t data2 . t x t
10
15
20
˜/tmp/c を削除せよ。この時˜/cは無くならな
1
2
3
4
いことを確認せよ。
8) 最後に、ディレクトリ˜/tmpと˜/cを (不要な
$
1
2
3
c a t data3 . t x t
10
15
20
ら) 削除せよ。
2.9 文字列置換
2.8 リダイレクト・パイプ
ストリームエディタ sed を使うと、文字列の置
以下をそれぞれコマンド行一行で解決する方
換を簡単にできる。あるファイル中の文字列 1 を
法を考えよ。
2)
文字列 2 に置換した内容を出力したいときには以
ls −lRの出力をファイル ls −lRに書き込むに
下を実行する。
3
4.2 ファイル圧縮
4
1
シェルスクリプトとパス設定
よう、パスの設定をせよ。
$ s e d −e ” s / 文 字 列 1 / 文 字 列 2 / g” < フ ァ イ ル
名>
4.2 ファイル圧縮
1) 指定ディレクトリを圧縮した tar.bz2 ファ
上記命令の g を省いたときには,各行で一番は
イルをつくるシェルスクリプトbzdirをつく
じめにあった文字列 1 のみが文字列 2 に置換さ
り な さ い 。す な わ ち$ bzdir <ディレクトリ名>
れる。
を実行すれば、<ディレクトリ名>.tar.bz2が出来
1) あるファイルの空白 (スペース) をすべて削
るスクリプトをつくりなさい。ただし、以下
除する方法は?
の仕様を満たすようにすること。
2) あるファイルの連続した 5 つの空白 (スペー
a) 作成したプログラムの使用方法を表示し
ス) をタブに置換して、その結果をファイル
てプログラムを終了する関数 Usage を
に保存する方法は?
作成し、引数の数が 1 個でない時には、
3) あるファイルの各行のはじめにある空白 (ス
その関数 Usage を呼び出すこと。
ペース) およびタブをすべて削除する方法は?
b) 引数で与えた名前のディレクトリが存在
しないときには、エラーメッセージを表
3 パッケージ情報取得 (Vine Linux 用の
コマンド)
示して終了
c) システムにあらかじめ用意されているコ
マンド bzip2dir は用いずに、tar を用い
以下を rpm コマンドを用いて調べる方法を述
て実現すること。
べなさい。
2) 現在いるディレクトリ以下のディレクトリを
1) コマンド ls を提供する rpm パッケージの名
それぞれ圧縮するシェルスクリプト bzdir2
称を知る方法は?
をつくれ。(c/,tex/というディレクトリがあ
2) 前問で調べたコマンド ls を提供する rpm
れば、c. tar .bz2,tex. tar .bz2をつくる)
パッケージに関する情報 (説明) を知る方
3) 引数に
法は?
<name>.tar.gzといった tar .gzで終る名
前を与えたときに、<name>.tar.bz2という名
3) ls を提供する rpm パッケージに含まれてい
前を表示するシェルスクリプトをつくりな
るファイル一覧を知る方法は?
さい。
4) 現在いるディレクトリに gzip で圧縮された
4 シェルスクリプトとパス設定
ファイル (*.gz) があれば、 bzip2 で圧縮し
たファイルに変換するスクリプト gz2bz2 を
4.1 準備運動
つくりなさい。変換前と変換後のファイルサ
1) 引数の数、第 0 引数、第 1 引数、全ての引数
イズも表示するようにしなさい。
をそれぞれ表示するシェルスクリプト arg.sh
を作って arg.sh ”a b” 3 a b の出力が どうな
るか確認せよ。
2) arg.sh をディレクトリ˜/binに置き、どこの
ディレクトリにいても ’arg.sh’ を実行できる
4
6
4)
5 リモート操作
このドキュメントの著作権について
/home/public/tmp/pochiに 自 分 の 作 っ た プ ロ
グラム (dog.c とする) をなにか置いて、そ
れに対して読み込み権限を持つヒト、書き換
リモート接続可能な計算機 venus, atlas がある
として,以下の課題をしなさい。
えや削除権限を持つヒトはそれぞれどのよう
5.1 他ホストへの接続
なヒトか述べなさい。
1) venus に ssh で ロ グ イ ン す る ス ク リ プ ト
2)
5) 自分と同じグループに属するヒトが/home/
connectを 作りなさい。
public/tmp/pochi/dog.cを読み書きできるよう
connectを˜/binに置いて,以下のような名前
にパーミションの設定をしなさい。
のシンボリックリンクを˜/bin内につくりな
6 このドキュメントの著作権について
さい。
venus −> c o n n e c t
a t l a s −> c o n n e c t
1
2
3)
1) 本 稿 の 著 作 権 は 西 井 淳 nishii@sci.
yamaguchi-u.ac.jp が有します。
venusとコマンドを打てば
atlas と打てば
venus に接続し,
2) 非商用目的での複製は許可しますが、修正を
atlas に接続するように、スク
加えた場合は必ず修正点および加筆者の氏
リプト connectを修正しなさい。
名・連絡先、修正した日付を明記してくださ
い。また本著作権表示の削除は行ってはいけ
5.2 リモートコピー
ません。
1) 自分のノートパソコンにある C のプログラ
3) 本稿に含まれている間違い等によりなんらか
ム (hoge.c とする) を, venus 上の自分のホー
の被害を被ったとしても著者は一切責任を負
ムに転送する方法は?
2) venus にあるファイル
hoge2.cを
いません。
venus から
自分のマシンに転送する方法は?
間違い等の連絡や加筆修正要望等の連絡は大歓
迎です。
5.3 アクセス権限
研究室では NFS サーバ venus に共用ディレク
トリ/home/public/がある。
1) 研究室のマシンにログインしなさい。
2)
/home/public/tmp以下に自分の名前のディレ
クトリ (仮に pochiとする) を作りなさい。
3)
/home/public/tmp/pochiに ア ク セ ス 権 限 を 持
つヒトは誰かを確認する方法を述べなさい。
また、このディレクトリの中のファイル一覧
を参照できる権限を持つヒト、中のファイル
削除や名前変更等ができる権限を持つヒト、
中に cd できる権限を持つヒトがそれぞれど
のようなヒトか述べなさい。
5