Linux リテラシ - 第2回 エディタ、シェルスクリプト
This content is not available in your language yet.
エディタ、シェルスクリプト
Section titled “エディタ、シェルスクリプト”エディタ、ビューア
Section titled “エディタ、ビューア”エディタとは文書を編集、ビューアとは閲覧するツールソフトを指します。
基本的に画面に収まりきらないファイルを読むときに用いるビューアです。
lessの操作中に使えるコマンドには、以下のような物があります。
v ・・・編集用のエディタ(vi)を起動g ・・・ファイルの先頭へG ・・・ファイルの末尾へ/文字列 ・・・文字列の後方検索 文字列とマッチするものを検索?文字列 ・・・文字列の前方検索 文字列とマッチするものを検索q ・・・終了h ・・・操作の簡易ヘルプを表示何故viを使うのか
Section titled “何故viを使うのか”- テキスト作成の効率化を図ってあり、そのための細かな機能が充実している。
- そうしたコマンドをなるべく単純な文字入力で実行できる。
- UNIXのコマンドを自由に呼び出せ、テキスト作成のツールとして活用できる。vi内でコンパイルやプログラムの実行も可能。
viの基本操作
Section titled “viの基本操作”vi ファイル名によって起動/編集することができます。
ファイル名が存在しないファイルならその名前のファイルが作成され、存在するファイルならそのファイルを編集します。
viには主に、
ノーマルモード
挿入モード
コマンドラインモード
の三つのモードがあります。
最初はノーマルモードで起動し、以下の項目で説明するaまたはiのような入れ替えコマンドを入力することによって挿入モードに移行します。
挿入モードはWindowsのnotepadのように使用する事ができます。
ノーマルモード
Section titled “ノーマルモード”- 挿入モードに入れ替え
i ・・・カーソルの前に入力します。カーソルの後のテキストは、すべて右に移動します。I ・・・行の最初の文字の前に入力します。a ・・・現在のカーソルの後ろにテキストを入力します。カーソルは右に移動し、テキストはiと同様に挿入されます。A ・・・行の後ろにテキストを入力します。o ・・・カーソルの次の行に空行ができ、そこにテキストを入力します(小文字のo)。O ・・・カーソルの前の行に空行ができ、そこにテキストを入力します(大文字のO)。- 移動コマンド
lまたは[→] ・・・カーソルを右に移動するhまたは[←] ・・・カーソルを左に移動するjまたは[↓] ・・・カーソルを上に移動するkまたは[↑] ・・・カーソルを下に移動する- 編集コマンド
x ・・・カーソルで強調表示された文字を削除します。このコマンドを実行しても、挿入モードにはなりません。nx ・・・カーソルからn個の文字を削除します。dw ・・・カーソルから次の単語(または句点)までを削除します。dd ・・・現在の行(カーソルのある行)を削除します。dG ・・・現在の行(カーソルのある行)からファイルの末尾までを削除します。行数 yy ・・・指定した行数コピーする,行数 dd ・・・指定した行数削除します,回数 p ・・・コピーした内容を下の行に指定した回数貼り付ける回数 P ・・・コピーした内容を上の行に指定した回数貼り付けるu ・・・1つ前の動作を取り消す(元に戻す)。※ viでは「削除=切り取り」です。直前に削除した文字はpやPで貼り付けることができます。コマンドラインモード
Section titled “コマンドラインモード”:q! ・・・変更を保存しないで、viを終了する:w ・・・現在のファイルに書き込む(保存):wq ・・・ファイルに書き込んで、viを終了する:saveas (ファイル名) ・・・(ファイル名)という名前で編集中のデータを新しく保存する。/検索文字列 ・・・ファイルを開いている状態で文字列を検索するn ・・・検索中で次を検索するN ・・・検索中で前を検索する文字を挿入する事ができます。[Esc] ・・・ノーマルモードに戻るLinuxはOSの核にあたるカーネルと、その上で動作する数多くのプロセスによって構成されています。
シェルはプロセスの1つで、ユーザが入力した命令を解釈してカーネルに伝えます。
それに応じてカーネルは新たなプロセスを起動するなどの処理を行います。
bashとは
Section titled “bashとは”ユーザが利用する対話的シェルの一つでLinuxがデフォルトで利用しているのがbashです。
bashは他のシェルが持つ便利な拡張機能を持っています。
bashの補完機能
Section titled “bashの補完機能”bashではコマンド/ディレクトリをタイプする時に、先頭の文字をタイプし、[TAB]キーを押せば補完してくれるという機能を持っています、ディレクトリ移動の時など便利な機能ですので使いこなせるようになると便利です。
リダイレクト
Section titled “リダイレクト”リダイレクトは標準入出力の切り替えです。
これは、標準入力をキーボード以外のファイルに指定したり、標準出力をディスプレイ以外のファイルに指定することを指します。
例えば
echo This is test > testとし、標準出力に出力される文字列を新規に作成したtestというファイルに書き込む事ができます。
cat < testまた、以上のように、catコマンドにtestファイルの内容を入力することで、testファイルの内容を標準出力に出力する事ができます。
標準入出力とは
Section titled “標準入出力とは”- 標準入力: キーボードからの入力
- 標準出力: 私達が見ている画面(ディスプレイ)への出力 つまり標準入出力とは、キーボードからの入力がLinux(カーネル)に送られ、それが文字などとして画面に出力される動作全般のことを指します。
出力のリダイレクト
Section titled “出力のリダイレクト”出力のリダイレクトを行う際には2通りの方法があります。
> ・・・新しくファイルを作成し、それに出力する>> ・・・既存のファイルに追加書き出しを行うecho test1 > testcat testecho test2 >> testcat testecho test3 > testcat testを順次実行することによって、出力のリダイレクトの仕組みを理解する事ができます。
パイプライン処理
Section titled “パイプライン処理”一つのプログラムの標準出力をそのまま他のプログラムの標準入力に送るためのしくみです。
ファイルグロブ
Section titled “ファイルグロブ”ファイルグロブとはシェルが _ ? {} [] ~等の文字列を解釈し、ファイル名として展開することです。
これを使うことによって複数のファイルに対して一括処理を行う場合に有効です。
| 表記 | 効果 |
|---|---|
| _ | すべての文字列を表す。 |
| ? | 任意の1文字を表す。 |
| […] | 鉤括弧内のどれか1文字を表す。 |
| [!…] | 鉤括弧内に含まれない文字を表す。 |
文字列が使用されている行を探す
Section titled “文字列が使用されている行を探す”grep test file[1-9]とすれば、file1~file9というファイルの中から文字列testが記述されている行だけを表示する事ができます。
コマンド”|“コマンド
Section titled “コマンド”|“コマンド””|“記号は、左側のコマンドの標準出力を、右側のコマンドの標準入力に流すという動作を行います。
例えば
grep test file[1-9] | sortとすれば、file1~file9というファイルの中から文字列testが記述されている行だけを抜き出し、アルファベット順に並べ替えて表示させる事ができます。
頻繁に行う作業がある時、そのコマンド名が長い場合や入力が長くなりすぎる場合、別名機能を用います。
別名を定義するにはコマンド”alias”を使います
alias 別名='文字列'逆に別名を取り消す場合は、コマンド”unalias”を使います。
unalias 別名という形で表記します。
パーミッション
Section titled “パーミッション”パーミッションはファイルの保護モードのことを指します。
読み込み、書き込み、実行の3つのパーミッションによって構成されており、それらがファイル所有者(u)、グループユーザ(g)、その他のユーザ(o)のそれぞれに対して設定される権限をいいます。
| 自分 | グループ | 他人 | |
|---|---|---|---|
| 読む | r— --- --- | --- r— --- | --- --- r— |
| 書く | -w- --- --- | --- -w- --- | --- --- -w- |
| 実行 | —x --- --- | --- —x --- | --- --- —x |
パーミッションの確認は
ls -lを用いて確認する事ができます。
-rw-rw-r--の先頭一文字は
- ・・・ファイルd ・・・ディレクトリを表しています。
ファイルtestのパーミッションがrw-r—r—のグループに書き込み権を与えるには、
chmod g+w testと書けばrw-rw-r—と変更することができます。
またこのrwxは数字で表す事も可能です。それぞれ3桁の2進数で表すことができ、
r→4
w→2
x→1
と考え、
rw-r—r—であれば644と表す事が可能です。
ファイルtestのパーミッションを644に変更するには
chmod 644 testと書けば変更する事ができます。
シェルスクリプト
Section titled “シェルスクリプト”シェルスクリプトとはコマンドやシェルの組み込みコマンドなどをファイルに記述し、実行できるようにしたものです。
bashの設定ファイル
Section titled “bashの設定ファイル”~/.bashrc~/.bash_profileにはbashの設定が含まれています。
.bash_profileはログイン時だけによみこまれるファイルで、ここには環境変数の設定などが保管されています。
.bashrcはログイン時にbash_profileからも読み込まれますが、別のシェルが起動したときにも実行されます。
そして.bash_profileの内容は
# Get the aliases and functionsif [ -f ~/.bashrc ]; then . ~/.bashrcfi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATHunset USERNAME以上のようになっています。
#が行の最初についている部分はコメントアウトされています。
上のif~fiでくくられた部分が意味しているのは、ホームディレクトリに.bashrcがあれば.bashrcを読み込むという意味です。
PATHは環境変数(シェル変数)のことで、コロン(:)によって分けられたディレクトリのリストで構成されています。コマンドを実行しようとすると、PATH にあるディレクトリ全てを検索対象とし、ファイルが見つかるとそこで実行されます。
PATHは
echo $PATHとすることで確認する事ができます。
例えばコマンドlsを実行する時に、lsとタイプして実行される物は/bin/lsです
これはPATHの中に/binが含まれているので
その配下に配置されているlsが実行されています。
それは
which lsを実行する事で確認する事ができます。
デフォルトの.bashrcの内容は
# User specific aliases and functions
# Source global definitionsif [ -f /etc/bashrc ]; then . /etc/bashrcfi以上のようになっています。
.bashrcの内容は/etc/bashrcのファイルがあればそれを読み込む、と書かれています。
余裕がある人は/etc/bashrcの中身を見て理解してみてください。
基礎コマンド説明
Section titled “基礎コマンド説明”echo (options)[文字列]
Section titled “echo (options)[文字列]”echo ・・・文字列の内容を標準出力に出力する。(options) -n ・・・最後の改行を出力しない -e ・・・エスケープコードを使用可能にする。sort (options)[ファイル]
Section titled “sort (options)[ファイル]”sort ・・・ファイルの内容を並べ替える。(options) -r ・・・ファイル内容を逆順に並べ替える。 -u ・・・ファイル内容を並べ替え、同一行を削除する。grep (options) PATTERN [ファイル…]
Section titled “grep (options) PATTERN [ファイル…]”grep ・・・ファイルで指定された入力ファイルの中からパターンがマッチする行を表示する。 -v ・・・パターンにマッチしない行を選択する。 -c ・・・通常の表示はせず、パターンがマッチした行数を出力します。chmod (options)[権限記述] [ファイル]
Section titled “chmod (options)[権限記述] [ファイル]”chmod ・・・ファイル・ディレクトリのアクセス権限を変更する。権限記述の書式 [対象]±[属性] ・・・対象(u:所有者、g:グループ、o:他人、a:すべて)の属性(r:読み取り、w:書き込み、x:実行)を変更する。 [数値] ・・・数値で対象の属性を変更する。alias (options)[別名=‘コマンド列’]
Section titled “alias (options)[別名=‘コマンド列’]”alias ・・・コマンドにエイリアス(別名)を付けるwhich (options)[コマンド名]
Section titled “which (options)[コマンド名]”which ・・・コマンドのフルパスを表示