最低限 UNIX (2) パーミッション・シェル・ テキストエディタ 2012 年度 INEX TA 高橋康人
お品書き パーミッション – パーミッションとは何か ? – 確認・変更方法 シェル – シェルとは何か ? – シェルの機能 – シェルスクリプト テキストエディタ – テキストエディタとは何か ? – vi の使い方 まとめ
パーミッション
パーミッションとは何か ? ファイル・ディレクトリの利用権限 – ファイルやディレクトリに対して「誰が」 「何を」していいのか – 全てのファイル・ディレクトリはそれぞれ固 有のパーミッション情報を持つ
パーミッションはなぜ必要か ? プライバシーの保持 – マルチユーザシステムの課題 – 例: 他者に見られたくないファイル – メール・未発表の研究データ・昔書いた ポエム etc… 勝手に改変されると困るファイル – 公開データ・自作プログラム・自分のウェブページ etc… システム管理 – 重要ファイルの保護 /etc/shadow 等のシステムファイル 計算機を共同利用する上で、目的に応じた適切 なパーミッション設定が必要となる
確認方法 ls コマンドに –l オプションを付与 – 詳しいファイル情報をリスト表示する ファイルモード – ファイルタイプ ( 左端 1 字 ) ・パーミッション (3×3 字 ) 所有ユーザ・所有グループ ls -l 合計 28 -rw-rw-r-- 1 chappy epnetfan :46 ichigo.txt -rw-r--r-- 1 chappy chappy :40 mikan.txt drwxr-xr-x 2 chappy chappy :40 ringo
読み方と変更方法 「何を」 – 読み取り (Read) – 書き込み (Write) – 実行 (eXecute) 「誰が」 – ファイル所有ユーザ (User) – ファイル所有グループ (Group) – その他 (Others) 例外 – システム管理者 ( root ) パーミッション設定に関係 なくあらゆる権限を持つ 変更方法 – chmod (change mode) コマンド – ファイル所有者のみ可能 指定方法 – 数字で指定 R:4, W:2, X:1 の和で指定 $ chmod 740 ichigo.txt – 文字で指定 対象 +(-) 権限 $ chmod g+r ichigo.txt 詳しくは実習で! -rwx-w-r-x 1 chappy epnetfan :22 ichigo.txt
シェル
シェルとは ? 人間と計算機を仲介するソフトウェア – Windows のエクスプローラやコマンドプロンプト、 Mac のファインダー等 シェルの主な役割 – ユーザインターフェースを提供する 人間にとって使いやすいことが求められる シェル カーネル ユーザ 仲介 リクエス ト レスポン ス 仲介
CUI ( キャラクタユーザインターフェイス ) – すべての操作をコマンドを打って制御する キーボード 一つでなんでもできる – 原始的な入力様式 GUI ( グラフィカルユーザインターフェイス ) – グラフィックなどで直観的な操作を行う マウスとキーボードを用いる – Windows, Mac OS などの OS で実装 CUI と GUI
CUI と GUI (titan.tex を tex ディレクトリに格納 ) mv titan.tex tex/ CUI の場合 GUI の場合
CUI の場合 GUI の場合 CUI と GUI (titan.tex を tex ディレクトリに格納, 結 果 ) mv titan.tex tex/ cd tex/ ls titan.tex
CUI – コマンドを覚えないと何もできない 逆に覚えてしまえばこっちのもの – 負荷が小さい サーバ業務・トラブル対処に強い GUI – 直観的なので素人でも使いやすい 計算機の爆発的普及の原動力 – 負荷が大きい CUI と GUI のメリット・デメ リット
シェルの機能 コマンドインタープリタ – ユーザのコマンドを受け取る – 適切なアプリケーションに引き渡す – 結果をユーザに返す 環境設定 – アプリケーション間での共用データを保持し、 必要に応じて参照させる
Kterm × OS ユーザ terminal × カーネル カーネル ユーザ プロンプト(コマンド受け付け) コマンドインタープリタ コマンドを待ちうける – これ自体もひとつのお仕事
Kterm × OS ユーザ Terminal × date 今何時? カーネル カーネル コマンド入力 ユーザ コマンドインタープリタ 文字列 (date) を受け取る 文字列をコマンドとして解釈する 適切なアプリケーション ( カーネル ) に引き継ぐ
Kterm × OS ユーザ Kterm × date OS ユーザ 今何時? terminal × date Fri May 7 13:25:14 JST 2010 カーネル カーネル 日時の表示 ユーザ コマンドインタープリタ アプリケーション ( カーネル ) から結果を受け取る 結果を見やすい形に変換させる – 環境変数を参照する ( 後述 ) 結果を表示する
シェルの機能 ~環境設定~ 「環境」とは ? – アプリケーション間で共用され る設定内容 – 各アプリケーションはシェルか ら与えられた環境の下で動作す る 設定方法 – 環境変数を用いて設定 $LANG $USER etc… ハードウェア ( 計算機の物理的実 体 ) 日本語しかできな い ユーザ ( 人間 ) シェル アプリケーション カーネル 日本語 日本語を 知らないので 英語 LANG=EUC_JP
Linux におけるシェル 多様なシェルが存在する – sh, bash, csh, dash, tcsh, zsh など – 個人の好みに応じて変更可能 シェルの相違点 – 補完機能 – シェル変数 – リダイレクト機能 etc… 実習では基本的に bash を使用 – いろいろと便利な機能を持った標準的なシェル
高度なシェルの使い方 ~シェルスクリプト~ シェルスクリプトとは ? – 複数のコマンドを組み合わせた「台本」 ( ファイル ) – 「台本」を読むように順にコマンドを実行 利用する意義 – 一つずつ作業する手間を省く 同じ作業を省く – 人為ミスを防ぐ 簡易なプログラミングも可能 – 制御構造を利用可能
プログラミングの基本 制御構造 順次構造 – 上から下へ進む基本的な構造 選択構造 – 条件に応じて処理を分岐する構造 – if, case 反復構造 – 同じ処理を反復する構造 – for, while これらの組み合わせで ( ほぼ ) あらゆ る作業が可能 処理 B 処理 A 処理 C 処理 A NO 処理 B 処理 A YES 条件 反復開始 処理 B 反復終了
シェルスクリプトの具体例 (1) ファイルのバックアップ バックアップに必要な手順 – ファイルをコピー – 日付を取得しシェル変数に格 納 – ファイルの名前を書き換え シェルスクリプトだと右の 通り – 順次構造のみで十分 ファイルを実行するだけで バックアップが完了! – $./backup.sh #!/bin/bash cp source.txt backup.txt NICHI=`date ‘+%Y-%m-%d’` mv backup.txt bk_${NICHI}.txt
シェルスクリプトの具体例 (2) ちょっと複雑な作業 small_1-50.txt, large_ txt を作る シェルスクリプトだと右の 通り – シェル変数・制御構造等を利 用 – 詳しくは調べてみよう! 同じ目的でも方法はいろい ろ – うまく活用して「楽をする」 #!/bin/bash number=1 while [ $number –le 100 ] do echo $number!!! > small_$number.txt if [ $number –ge 51 ] ; then mv small_$number.txt large_$number.txt fi number=`expr $number + 1` done
テキストエディタ
テキストエディタとは ? アプリケーションの一つ – テキストファイルの編集を目的とする 人間が「読める」ファイル⇔バイナリファイル 拡張子はあてにならないことに注意! – 基はプログラム作成ソフトウェア 通常の文書からプログラム・各種設定ファイルの作成・編集 まで幅広く使える ドキュメントエディタ (MS Word 等 ) とは異なる 種類は豊富 – vi, emacs, nano, gedit etc… – 好みに応じて使ってよい
困ったときに頼れるアイツ ~ vi( ぶいあい ) ~ テキストエディタの一つ – 計算機黎明期から使われている由緒正しいエディタ 特徴 – 動作が軽快 – どの Linux でもほぼ確実にインストールされている トラブル時に役立つ= root にとっては必修のエディタ 操作方法 – かなり独特なため慣れが必要 「基本的」ではあるが「初心者向け」ではない
vi の操作概略 シェル vi ( コマンドモード ) vi ( 挿入モード ) a, A, i, I, o, O キー $ vi [filename] ESC キー :wq, :q! 困った時は Esc キーでコマンドモード へ!
まとめ パーミッションの確認 – RWX, UGO のチェックを習慣づける シェルを通した操作 – シェルの機能に習熟する – 必要に応じてシェルスクリプトを利用する テキストエディタを用いたファイル作成・編集 – vi の最低限の操作を身につける これらをマスターすれば Linux を ( ほぼ ) 自由自在 に操れる!
参考文献 INEX 最低限 UNIX / Linux [II] – INEX 最低限 UNIX / Linux [III] – IT 用語辞典 e-Words – – 第 8 回 bash で始めるシェルスクリプト基礎の基礎 – IT media エンタープライズ – 現在使用されているシェル が知りたい –
参考文献 とほほの WWW 入門 - パーミッションを変 更するには – KENT WEB - パーミッションについて – TAG index - パーミッションの設定 –
参考文献 C. Newbam, B. Rosenblatt 著, 遠藤美代子 訳., オラ イリー・ジャパン, 入門 bash 第 2 版, 1998 L. Lamb 著, 福崎俊博 訳., アスキー出版局, Learning the vi Editor, 1998
訂正 ( テキストは修正済み ) [4] テキストエディタ – [4-1] テキストファイルを確認する /etc/grub.d/00_header