エディタとは文書を編集するもので、Windowsでいうメモ帳などがこれにあたります。
vi ファイル名
$ vi sample.txt
存在しないファイルを指定した場合、新規ファイルとして生成されます。
viには主に
の二つのモードがあります。
起動時はノーマルモードになっていて、コマンドを入力することで挿入モードへと移行します。
挿入モードではWindows のメモ帳などと同様にvi を使用する事ができます。
挿入モードでは文字を挿入する事ができます。挿入方法はノーマルモードから移行するのに使用したコマンドに依存します。挿入モードになるとエディタの左下に'-- 挿入 --'または'-- INSERT --'と表示されます。
i ...カーソルの前に挿入するモードになります カーソルより後のテキストは、すべて右に移動します a ...現在のカーソルの後ろにテキストを入力します カーソルは右に移動し、テキストはiと同様に挿入されます A ...行の後ろにテキストを挿入するモードになります o ...カーソルの次の行に空行ができ、そこに挿入するモードになります
[Esc] ...ノーマルモードに戻る
↑ または k ...カーソルを上に移動します ↓ または j ...カーソルを下に移動します ← または h ...カーソルを左に移動します → または l ...カーソルを右に移動します(小文字のLです)
古いシステムでは方向キーが使えないため、h~lのキーで操作します。
x ...カーソルで強調表示された文字を削除します(挿入モードにはならない) u ...1つ前の動作を取り消します(元に戻す) [行数] yy ...指定した行数分カーソルのある行から下をコピーします [行数] dd ...指定した行数分カーソルのある行から下を削除(切り取り)します [行数] p ...コピー、または切り取りした内容を張り付けます
viでは「削除=切り取り」です。直前に削除した文字や行はpで貼り付けることができます。
/検索文字列 ...指定した文字列をカーソルより下の範囲で検索します ?検索文字列 ...指定した文字列をカーソルより上の範囲で検索します n ...検索された結果の次の候補に移動します N ...検索された結果の前の候補に移動します
:w ・・・現在の状態をファイルに保存します :q! ...変更を保存しないで、viを終了します :wq ...ファイルに書き込んで、viを終了します
ユーザの入力をカーネルと呼ばれるLinuxの核をなす部分に伝え、同時にその逆を行う仲介役のプログラムのことをシェルといいます。これはユーザから見て、カーネルを包み込んでいる「殻(shell)」のように見えることから名付けられました。
ユーザが利用できる対話的シェルの一つで、Linux の標準シェルとして主に使用されているのがbash です。
bashはコマンドやファイル、ディレクトリ等を入力する際に、入力の途中で[TAB]キーを押すとその続きを補ってくれる機能を持っています。cd でのディレクトリ移動の時など役に立つので使いこなせるようになると便利です。
リダイレクトとは「標準入出力の入れ換え」を行うことを指します。通常、標準入力とはキーボードからの入力を指し、標準出力とはディスプレイへの表示のことを指します。リダイレクトを行うことによって、標準入力をファイルから読み込むようにしたり、標準出力をファイルに書き出すようにすることが出来ます。
echo 文字列
$ echo Hello,world
> ファイル名 ・・・標準出力をを指定したファイルに切替えます ファイルが存在していた場合、古い内容は'''上書き'''されます >> ファイル名 ・・・標準出力をを指定したファイルに切替えます 出力データはファイルの内容に'''追記'''されます < ファイル名 ・・・標準入力を指定したファイルに切替えます
$ echo Hello,world > hello.txt
$ echo Hello,world >> hello.txt
$ cat < hello.txt
あるコマンドの標準出力をそのまま別のコマンドの標準入力へと送る仕組みのことをパイプといいます。
コマンド1 | コマンド2
コマンド2の後にもパイプを繋げてゆくことで何回でもパイプを続けることが出来ます。また、リダイレクトと連携させることも可能です。
$ echo Hello, World | rev
revは入力された文字列を逆にして表示するコマンドです。
シェルが * ? {} [] ~ 等の特殊文字を解釈し、ファイル名として展開することをグロブといいます。
複数のファイルに対して一括処理を行う場合に有効です。
* ・・・全ての文字列を表します(0文字も含む) ? ・・・任意の1文字を表します
$ ls samp*
“samp”から始まる名前のファイルを表示します
$ ls hello.tx?
“hello.tx”から始まる9文字の名前のファイルを表示します
エイリアスとはコマンドやコマンド群に略称をつける機能です。
頻繁に行う作業がある時、そのコマンド名が長い場合や入力が長くなりすぎる場合、エイリアスを用いることで作業を楽に進めることができます。
alias 別名='コマンド列'
$ alias la='ls -a'
$ la
また、定義されたエイリアスにはオプションや引数をとることも出来ます。例えばこのlaの場合、
$ la -l
とすることで ls -a -lと同じコマンドを表します。
$ alias
unalias エイリアス名
$ unalias la
シェルスクリプトとは複数のコマンドや組み込みコマンドなどをファイルに記述し、実行できるようにすることで記述したコマンドをまとめて実行できるようにしたものです。複雑な操作を繰り返し行う際などに役立ちます。
シェルスクリプトは通常、拡張子を.sh とすることが多いのでシェルスクリプトを作る際はファイルの判別をしやすくするためにも.sh と末尾につけるようにしましょう。
$ vi ex.sh
#!/bin/sh # echo sample shell script
bashでは# の後ろに書かれたものはコメントという、プログラムの実行自体には関係の無いソースの中の注釈として扱われます。
一行目に書いた#!/bin/sh というのは、このファイルがシェルスクリプトのファイルであることを表す"おまじない"です。
実行するために、第二回で学んだchmod コマンドを使ってファイルに実行権限を与えます。
chmod +x シェルスクリプト名 ./シェルスクリプト名
実行権限を与えていない場合でも、
sh シェルスクリプト名
とすることで実行することも出来ます。
$ chmod +x ex.sh $ ./ex.sh
~/.bashrc ~/.bash_profile
にはbashの設定が含まれています。
.bash_profileはログイン時だけによみこまれるファイルで、ここには環境変数の設定などが保管されています。
.bashrcはログイン時にbash_profileからも読み込まれますが、別のシェルが起動したときにも実行されます。
そして.bash_profileの内容は
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH unset USERNAME
以上のようになっています。#が行の最初についている部分はコメントアウトされています。
上のif~fiでくくられた部分が意味しているのは、ホームディレクトリに.bashrcがあれば.bashrcを読み込むという意味です。
PATHは環境変数(シェル変数)のことで、コロン(:)によって分けられたディレクトリのリストで構成されています。コマンドを実行しようとすると、PATH にあるディレクトリ全てを検索対象とし、ファイルが見つかるとそこで実行されます。
PATHは
echo $PATH
とすることで確認する事ができます。
例えばコマンドlsを実行する時に、lsとタイプして実行される物は/bin/lsです
これはPATHの中に/binが含まれているので
その配下に配置されているlsが実行されています。
それは
which ls
を実行する事で確認する事ができます。
デフォルトの.bashrcの内容は
# .bashrc # User specific aliases and functions # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
以上のようになっています。
.bashrcの内容は/etc/bashrcのファイルがあればそれを読み込む、と書かれています。
余裕がある人は/etc/bashrcの中身を見て理解してみてください。