dotinstall
UNIX,

UNIXコマンド入門 2/3

●Vimについて
ファイルを編集する方法:vim というエディタがついてくる
vi + ファイル名:vim の起動
-->コマンドモード(起動時) と 編集モード の2つある。
i(insert) をおす,もしくは下の表示で--INSERT--になっていれば、
編集モードであることが確認できる。

保存や終了する際には、コマンドモードに移る必要がある。
その際にはescapeキーで戻ることができる。

その後
:w で保存が可能。
:q で終了
escape + : + q とその後にescape + : + q + ! で間違った際も保存せずに終了できる。

●シンボリックリンク
ln -s config/production/database dbconfig :
意味:config/production/database は dbconfig という別名

ls -l :詳細まで表示することができる

作成されたシンボリックリンクは、通常のディレクトリと同じように扱うことができる。

touch : 空のファイルを作成する。
unlink dbconfig: dbconfigというリンクの削除ができる。

●ユーザー、グループを確認してみよう
ls -lの見方
ーーー
合計 8
drwxrwxr-x. 3 vagrant vagrant 4096 9月 26 22:55 2017 config
-rw-rw-r--. 1 vagrant vagrant 1572 9月 26 22:48 2017 hello.txt
ーーー

[最初の文字]
d だったらディレクトリ、
- だったら通常のファイル、
l だったらシンボリックリンクを指す。

[それ以降]
ファイルのアクセス権、Permission に関わる情報

[最初のvagrantと次のvagrant]
ファイルを所有しているユーザとグループ

4096 , 1572 :ファイルサイズ

"config" "hello.text" :ファイル名

cat /etc/passwd :ユーザの一覧表示コマンド
cat /etc/group : グループ一覧の表示コマンド
groups : 自分の所属するグループを確認コマンド

●Permission を理解する

drwxrwxr-x:
d--> ディレクトリ、
rwx : ファイルを所有するユーザu(ser)のアクセス権
rwx : ファイルを所有するグループg(roup)のアクセス権
r-x : その他のユーザo(ther)のアクセス権

r(ead):読み込み可
w(rite):書き込み可
e(xecute):実行可能
(x:そのディレクトリを開ける。ディレクトリは実行できないので。)

Permissionを変えたい場合
1.グループのアクセス権にディレクトリを開けるのを含める
chmod g+x sample(ファイル名)
2.グループとその他のアクセス権にディレクトリを開けるのを含める
chmod go+x sample(ファイル名)
3.全てのアクセス権にxを削除
chmod a-x sample(ファイル名)
a:全てという意味

●数値によるパーミッションの表現
3桁の塊を、
左から4,2,1 or 0で表すことができる。
-rwxrw-r-- の時
ユーザーに関する権限は rwx なので、
421の合計、7として表すことができる。
また、例えばグループに関する権限がrw-なので
420の合計の6と表すことができる。
一方、他のユーザーに関しては r-- なので、
r にだけ数値が付いて 400 の合計に4となる。
-->このファイルのパーミッションはそれぞれの合計で 764 と表現することができる
この数字の変更で、権限の変更も可能。


chmod 774 sample とコマンドを打つと、以下のようなパーミッションになる。
-rwxrwxr--

●コマンドを作ってみよう
hi!と表示するhiというコマンドを作る

0: type hi で hi というコマンドが存在しないか調べることができる。
1: vi hi (コマンドモードになる)
2: i ...insertの意味
3.#!/bin/bash
*先頭の 2 文字はシェバンと呼ぶ。
これがあったら次に続くプログラムで実行しなさいよ、という意味。
bash で文字列を出力するには echo を使ってあげればいい。
4.echo"hi!"
5.escapeで、コマンドモード
6.:wqで保存と終了を同時に行う
7.chmod u+x hiユーザーにだけ実行権限を与えたいので
8. ./hi カレントディレクトリ[./]をきちんと指定しているか確認したのちに。
*hi だけだとコマンドが見つからない

●PATHを通してみよう
UNIX ではコマンドを検索するディレクトリが決められている。
そのディレクトリ以外にあるコマンドを実行したい場合は、
ちゃんとそのファイルがどこにあるか指定してあげないといけないルールになっている

echo $PATH でコマンドをどこから検索しているかがわかる。
※$PATHはコマンドを実行する際に使われる環境変数の一つ

printenv で環境変数を確認することができる。

環境変数は自分で設定することができる。

今のディレクトリが /home/vagrant/unix_lessons/myapp の場合、
現在ある $PATH の先頭に加えるには、
export PATH=/home/vagrant/unix_lessons/myapp:$PATH

export は環境変数を設定するための命令
PATH という名前でこのディレクトリと、すでに設定されている PATH の値を繋げて設定しなさい、という意味

環境変数+$(この場合は$PATH)でその値を意味する。

echo $PATH で、myappディレクトリが加わっているのが確認できるはず。
つまり、コマンドを実行する際にmyappディレクトリも見るようになった
=コマンドもそのまま入力してもオーケーな状況になった。と言える

実行しようとしているコマンドがどこのディレクトリから呼び出されているかは
which コマンドで調べることができる。

*このPATHはログアウトすると無効になる。
(無効にしない設定は可能だが)