<> = はじめに = * nest(MMAのサーバ)に接続できる環境が必要です。 * 不明な点がありましたら、挙手をお願いします。優秀なTAが駆けつけてくれます。 * 講習の内容に間違いがあったら御指摘をお願い致します * コンピュータリテラシーの進度はどれほどでしょうか . 前年度までは * やった: cp,mv等のコマンド * 今やってる||やってない: パイプ、リダイレクトなど = UNIXとは? = * OSの種類の1つ * 現在では、「UNIX」という語は「UNIX標準に準拠するあらゆるオペレーティングシステムの総称」でもある(規格みたいなもの) * UNIXの例 * Mac OS X * Linux * Redhat Enterprise Linux 6.5(sol) == OSの構造 == {{{ オペレーティングシステム(Operating System, OS)は、コンピュータにおいて、ハードウェアを抽象化したインターフェースを利用者またはアプリケーションソフトウェアに提供するソフトウェアである - Wikipedia オペレーティングシステム }}} * コンピューターの五大機能 * 入力機能(キーボード・マウスなど) * 出力機能(ディスプレイ) * 記憶機能(メモリなど) * 制御機能(CPUなど) * 演算機能(同上) * ユーザー(アプリケーション)がこれらのハードウェア部分まで意識するのは面倒で大変 * エディタ1つとっても、キーボードからの入力、記憶装置への書き込み、ディスプレイへの描画、これらを行うCPUの処理などなど * この管理を一括にし、使いやすい形で私たちに提供してくれるのがOS === カーネル === [[attachment:figure1]] * kernel...核 * 直接的にハードウェアを管理している部分 * 文字通り「核」としての重要な役割 === シェル === * shell...殻 * Kernelとユーザの橋渡し的な役割を持つ {{{ echo $SHELL }}} == UNIXを使うメリット == * 小さなコマンドで大きなことができる * ツール等の蓄積(歴史の話につながる?) == 実際にUNIXの構造を眺めてみる == * nestに接続 {{{ $ cd / $ ls }}} * home * 各人の部屋がある場所 * bin * バイナリ:binary * 基本コマンドのバイナリが置いてある * shellの置場もここである * ちょっとまって!cdが入ってないやん! * cdは独立したファイルではない(らしい) * etc * その他:et cetra * 設定ファイル * dev * device * デバイス(キーボード等)に関するファイル * 先述したKernelとしての役割 * lib * library * 共有ライブラリ * usr * USeRの略だったりそうじゃなかったり * ユーザのバイナリやライブラリ、ヘッダーファイルなどの置き場所 * var * variable(変化しやすい) * ログ等の常に変化のあるファイルを置く場所 * tmp * temporary * 一時ファイル = アクセス権 = * 人には見られたくないファイルや、特定の人にのみ公開したいファイルがある * パーミッション(許可)を変更することで公開範囲を制限する == ユーザの分類 == * u(user) ・・・所有ユーザ * g(group) ・・・所有グループに属するユーザ * o(other) ・・・その他の全てのユーザ == 権利の分類 == * r(read):ファイルの読み出し * w(write):ファイルへの書き込み * x(execute):ファイルの実行 * ディレクトリにも同様に、アクセス権が決められている * r(read):当該ディレクトリ内のファイルやディレクトリの閲覧ができる * w(write):当該ディレクトリ内にファイルやディレクトリを作成したり、削除できる * x(execute):当該ディレクトリに入り、内部のファイルやディレクトリにアクセスできる * 自分がどのグループに属するかは、groupsコマンドを叩くと分かる == アクセス権の読み方 == * 100の位が自分、10の位がグループ、1の位がその他のユーザに関してのアクセス権を示している * r権限が4、w権限が2、x権限が1の重みをそれぞれ持っている * 4、2、1と重みを付けることでそれぞれが干渉せず、1ケタで1種のユーザに関するパーミッションを表現できる = コマンド = * man * manual * コマンドのマニュアルを閲覧する * オプション等の記載もあるのでとりあえず叩いてみるといいかも * qキーで端末の入力画面に戻る * ls * list * ディレクトリの内容をリスト表示する * 引数を渡すことでそれに合致するファイル名を表示したり、表示するディレクトリを指定できる * cd * change directory * カレントディレクトリを指定のディレクトリに変更 * 指定をしない場合、ホームディレクトリ(~)に移る * pwd * print working directory * 現在の作業ディレクトリの名前を出力 * cat * concatenate(鎖状につなぐ) * ファイルの内容を連結して表示 * chmod * change mode * ファイルのパーミッションを変更 * chown * change owner * mkdir * make directory * ディレクトリを作成 * rm * remove * ファイルやディレクトリの削除を行う * cp * copy * ファイルやディレクトリのコピーを行う * mv * move * ファイルの移動を行う * echo * 1行のテキストを表示 * less * ファイルの内容を一画面ごとに表示 * ページの前後ができる(f,b) * 比較的長いテキストの閲覧に適する * sudo * コマンドを他のユーザーとして実行 * root権限を一時的に行使するときなどに使用 = リダイレクト = * コマンドへの入力、また、コマンドからの出力先を変更する * 出力先変更の例 {{{ $ echo Linux chotto dekiru > Linux chotto dekiru $ echo Linux chotto dekiru > Linus.txt $ ls }}} * 入力の変更の例 {{{ $ echo 500 + 50 + 5 > calc.txt $ bc < calc.txt }}} = パイプ = * あるコマンドによる出力を、別のコマンドの入力として扱う * パイプの利用例 {{{ $ echo 500 - 50 - 5 | bc }}} = 参考 = [[mizunashi_mana/UNIX講習]] [[alstamber/UNIXPresentation]] [[chmod/Hello, UNIX.]]