情報リテラシー実習 Exercise in Information Literacy シェル §11 bash入門 §39 bashプログラミング §40 tcsh §41 いろいろなシェル カーネル(kernel)とユーザ ○UNIX(Linux)の核となる部分,つまりハー ・ドウェアを直接制御している部分はカーネル ・(kernel)と呼ばれ,マルチタスクやファイ ・ルシステム,仮想記憶,入出力などの機能を ・司っている ○しかし,kernelは人間と意思を疎通する機能 ・を持っていない ○そこで,kernelとユーザの橋渡しをする通訳 ・のような存在が必要となる シェルとは p. 119 ○UNIX(Linux)ではシェル(shell), ・WindowsではExplorer,Mac OSでは ・Finderと呼ばれるプログラム ○shellはターミナル上で実行されるので,ター ・ミナルを起動しないと使用できない ハードウエア 操作・命令 操作・命令 shell kernel ユーザ シェルの役割 p. 119 シェルの役割は大きく分けて ①ユーザインタフェイス(コマンドインタプリ ・タ)として ・○プロンプトの表示 ・○コマンドの読み込み ・○コマンドの前処理 ・○コマンドの実行 ②環境設定の道具 ③プログラミング言語 代表的なシェル p. 120 主要なシェルは以下のようなものがある ①sh(Bourne shell):現在利用できる最も ・古いシェル。AT&Tのベル研究所で開発され, ・開発者の1人であるSteven Bourneの名にち ・なんでいる。ほとんどのUNIXで利用できる ・標準的なシェル。 代表的なシェル p. 120 主要なシェルは以下のようなものがある ②csh(C shell):UCBのWilliam Joyが中心 ・になって開発したシェルで,C言語に似た構 ・文を持つことから名づけられた.shに比べ, ・ヒストリー機能,ジョブ機能,エイリアスな ・どの機能が付加されており,対話形式で使用 ・するのに便利 代表的なシェル p. 120 主要なシェルは以下のようなものがある ③bash(Bourne-again shell): MITの ・Brian Foxが作成したシェル.shにおいて貧 ・弱であった,ユーザーインターフェースとし ・ての機能を強化するために,ヒストリー機能 ・やエイリアスなどが追加されている ④その他:cshの拡張版であるtcsh(TENEX ・C shell)やzsh(Z shell),ksh(Korn ・shell)などがある 利用するシェルの確認と変更方法 ○現在,自分がどのシェルを使っているのかを ・調べる方法 $ ps c $$ ○シェルの変更方法 $ tcsh ・シェルの名前をコマンド名として入力する. ・ただし,システムにインストールされている ・必要がある.このシェルを終了するには % exit シェル変数と環境変数 pp. 127~131 ○シェル変数:シェルの動作を設定するために ・使用される ○環境変数:コマンドの実行環境を設定するた ・めに使用される ○コマンドを実行する際にはシェルの子プロセ ・スが起動される.このとき,環境変数は子プ ・ロセスに渡されるが,シェル変数は渡されな ・い シェル変数の設定と参照 ○シェル変数の設定(例) $ a=kumamoto % set a=kumamoto ○シェル変数の値の表示(例) $ echo $a ○シェル変数とその値の一覧表示 $ set ○シェル変数の削除(例) $ unset a pp. 127~131 シェル変数の利用 pp. 127~131 次のようにファイルを作成・実行する $ cat << 'EOF' > testname #!/bin/bash myname=Igasaki echo "My name is $myname." EOF $ chmod +x testname $ ./testname My name is Igasaki. 環境変数の設定と参照 ○環境変数の設定(例) $ export A=KUMAMOTO % setenv A=KUMAMOTO ○環境変数の値の表示(例) $ echo $A ○環境変数とその値の一覧表示 $ printenv ○シェル変数の削除(例) $ unset A % unsetenv A pp. 127~131 環境変数の例 ○ ○ ○ ○ ○ ○ ○ ○ PATH HOME USER PAGER EDITOR LANG DISPLAY MANPATH pp. 127~131 コマンドサーチパス ホームディレクトリのパス名 ユーザ名 ページャの指定 テキストエディタの指定 使用する言語の指定 表示ディスプレイの指定 Manコマンドのリファレンスマ ニュアルのディレクトリ 本日の学習項目 ○whichコマンド/whereisコマンド ○キー入力の補完機能 ○ワイルドカードを使ったファイルの指定 ○~(チルダ)の意味とその利用 ○履歴(history)の利用 ○jobの管理 ○コマンドの別名(alias)の利用 whichコマンド/whereisコマンド ○あるコマンドを指定した場合に,実際にはど ・このディレクトリ(コマンドサーチパス)に ・あるコマンドが実行されるのかを確認する場 ・合,whichコマンドを利用 $ which vi /bin/vi whichコマンド/whereisコマンド ○指定したコマンドがどのディレクトリにある ・かを知るためには,whereisコマンドを利用. ・コマンドサーチパスよりも広い範囲で検索 $ whereis vi vi: /bin/vi /usr/share/man/man 1p/vi.1p.gz キー入力の補完機能の利用 pp. 136~137 ○多くのシェルでは,コマンドラインの入力の ・際に補完機能があり,ファイル名等を完全な ・形でキー入力する必要はない。途中まで入力 ・ して補完キーを入力する ・○TABキー:bashやtcshなどにおける補完 ・・キー ・○ESCキー:cshにおける補完キー(set ・・filecコマンドの実行後,利用できる) ワイルドカード pp. 133~136 ○カレントディレクトリにある「file」で始まる ・ファイルだけ「test」というディレクトリに ・移動したい $ ls file1 file10 file2 prog1.c pro g2.c test/ $ mv file1 test/ $ mv file10 test/ $ mv file2 test/ ワイルドカード pp. 133~136 $ ls file1 file10 file2 prog1.c pro g2.c $ mv file1 test/ $ mv file10 test/ $ mv file2 test/ ・と3回も似たようなコマンドを実行するのは ・面倒くさい.こんなときに,一度にファイル ・を指定するのがワイルドカード ワイルドカード pp. 133~136 ○ホームディレクトリの下に練習用のディレク ・トリ「test」を作成・移動して,中身が空の ・ファイルを5つ作成する $ mkdir test $ cd test $ pwd /st/c2009/c9876/test $ touch file1 file2 file10 pro g1.c prog2.c ワイルドカード pp. 133~136 ○ワイルドカードは,複数のファイルの中から, ・特定の文字列が含まれるファイルのみを抜き ・出したり,効率よく指定したい場合に有効 * 0文字以上の任意の文字列 ? 任意の1文字 [] []内に指定した1文字 ハイフン(-)を使って範囲を指定可 {} {}内に指定した文字列 項目をカンマ(,)で区切って並べる ワイルドカード pp. 133~136 $ ls file1 file10 file2 prog1.c pro g2.c ○名前が「file」で始まるファイルのみを表示 $ ls file* file1 file10 file2 ○すべてのファイルを表示 $ ls * file1 file10 file2 prog1.c pro g2.c ワイルドカード pp. 133~136 $ ls file1 file10 file2 prog1.c pro g2.c ○名前が「file1」で始まるファイルのみを表示 $ ls file1* file1 file10 ○名前が「.c」で終わるファイルのみを表示 $ ls *.c prog1.c prog2.c ワイルドカード pp. 133~136 $ ls file1 file10 file2 prog1.c pro g2.c ○名前が「file」で始まり,残りが1文字 $ ls file? file1 file2 ○名前が6文字のファイルを表示 $ ls ?????? file10 ワイルドカード pp. 133~136 $ ls file1 file10 file2 prog1.c pro g2.c ○名前が「file」で始まり,残りの1文字が「1」 ・か「2」のファイルを表示 $ ls file[12] file1 file2 ○名前が「file1」か「prog1」で始まる $ ls {file1,prog1}* file1 file10 prog1 ワイルドカード pp. 133~136 使用上の注意 ○ワイルドカードの意味をしっかり理解する $ rm * ※実行禁止 ・上記のコマンドを実行するとどうなるか? ○空白に注意をはらう $ rm file* $ rm file * ※実行禁止 ・上記の2つのコマンドはまったく意味が違う ワイルドカード pp. 133~136 使用上の注意 ○自分のホームディレクトリに,ドット(.)で ・始まるemacsの設定ファイルの一覧を表示す ・るには,どのようなコマンドを実行すればよ ・いか? ○自分のホームディレクトリにある,ドット ・(.)で始まるファイルの一覧を詳細表示する ・には,どのようなコマンドを実行すればよい ・か? ~(チルダ)の利用 ○~(チルダ)はホームディレクトリを表すの ・に利用される $ echo ~ /staff/c2009/c9876 ○自分のホームディレクトリにある「file1」と ・いうファイルは「~/file1」で指定可能 ○~は他のユーザのホームディレクトリを示す ・にも利用可能.igaさんのホームディレクトリ ・を指定する場合には,「~iga」のようにする ~(チルダ)の利用 ○igaさんのホームディレクトリにあるファイル ・「file10」を自分のホームディレクトリに ・自分のホームディレクトリにある「file1」と ・「file100」という名前でコピーしたい場合 $ cp ~iga/file10 ~/file100 $ cp /staff/iga/file10 /satff/ iga/file100 $ cd ; cp /staff/iga/file10 ./ file100 history機能の利用 pp. 140~144 ○過去に実行したコマンドを記録し,それらを ・再利用する機能 $ history 44 man bash 45 emac 46 emacs 47 history 48 history 49 history history機能の利用 pp. 140~144 ○コマンドを再利用するには !! 直前のコマンドを実行 !n ヒストリリスト中の番号nで示 されたコマンドを実行 !-m m個前のコマンドを実行 !str strで始まるコマンドで最近のもの を実行 ^str1^str2 直前のコマンドのstr1をstr2に変 更して実行 history機能の利用 pp. 140~144 ○直前のコマンドを実行する $ !! ○n番目のコマンドを実行する $ !n ○「ca」で始まる最新のコマンドを実行 $ cal 7 2009 $ !ca cal 7 2009 ... history機能の利用 pp. 140~144 ○直前のコマンドの文字列2009を1991に変 ・更して実行 $ ^2009^1991 cal 7 1991 ... job制御 pp. 137~140 ○ユーザがコンピュータに行わせる仕事の単位 ○bashには,1つのシェルで複数のジョブを切 ・り替えながら,並行して作業を行う機能(ジ ・ョブ制御)があり,ジョブには ・○フォアグランドジョブ ・○バックグランドジョブ ・がある.この2つのジョブを制御するために, ・「bg」「jobs」「&」コマンドを使用する. job制御 pp. 137~140 ○ターミナル(シェル)で別のウィンドウを作 ・成する $ xterm & $ xclock ・もとのシェルは新しいウィンドウ(xterm) ・をフォアグランドジョブとして実行し,時計 ・を表示するコマンド(xclock)をバックグラ ・ンドジョブとして実行.xclockを終了するま ・で他のコマンドを実行できない状態 job制御 pp. 137~140 ○フォアグランドジョブの停止 ^Z ・「C-z」を入力 ○フォアグランドジョブとバックグランドジョ ・ブを表示 $ jobs [1]- Running xterm & [2]+ Stopped xclock ・[]内はジョブ番号 job制御 pp. 137~140 ○フォアグランドジョブとバックグランドジョ ・ブを切り替える $ bg %2 [2]+ xclock & ○バックグランドジョブとフォアグランドジョ ・ブを切り替える $ fg %1 xterm alias機能の利用 pp. 144~147 ○コマンドに別名を定義することができる $ alias ls='ls -al’ % alias ls 'ls -al’ ・設定後は「ls」は「ls –al」を意味することと ・なる ○現在のエイリアスの状況を知る $ alias ○現在のエイリアスを取り消す $ unalias ls
© Copyright 2024 ExpyDoc