linuxを初めて勉強してみた。

##Linuxとは
###特徴　
・無料
・質の高いソフトウェアを利用できる。
・サーバ用途として利用
・操作を自動化できる。

##シェルとは
###シェルとコマンド
シェル
ハードウェアとの間でコマンドの入出力を行う。（ソフトウェア）
カーネルとは、コマンド（命令）を実行するところ
カーネルとシェルが分かれている。
Linuxを扱うには、シェルの使い方を理解する必要がある。
###プロンプト
命令の指示待ち状態を表す。
####プロンプト記号
＄、＃がある。
####ログインシェル
ログイン時に最初に起動されるシェルのこと
####対話型操作
キーボードと画面を利用して直接シェル操作をする方法
####シェルスクリプト
一連の捜査の流れを記述したファイルのこと

##シェルの便利な機能
各種操作のショートカットキーのキーボード操作に慣れておく

#ファイルとディレクトリ
###Linuxはファイルからできている
Linuxではすべてがファイルとして表現されている。　ファイル操作は必ず学んでおく。
ディレクトリとは　ファイルを整理する入れ物こと。　親と子の関係がある。

###Linuxのディレクトリ構造
一番上の/ を***ルートディレクトリ***と言う。　親にたどっていく。
あるファイルへの道筋を***パス***という。
ファイルのつながりを***ディレクトリツリー***をいう。
Windowsでは２つディレクトリツリーを持っているが、Linuxでは１つしか持っていない。
***各ディレクトリには役割***がある。　

###絶対パス、相対パス
ルートディレクトリを起点として表記されるパスのことを***絶対パス***という。
現在のカレントディレクトリを起点として表記されるパスを***相対パス***という。

###ディレクトリの移動
***pwd***　カレントディレクトリを表示
***cd***　カレンとディレクトリを変更
***ls***　ディレクトリ内のファイルを表示
Tabキー　***コマンドの補完***
***cd 〜（チルダ）***　ホームディレクトリのパスへと自動的に置き換えられる。

###lsコマンド
引数で＊、？がある
＊　任意の文字列　他の文字と組み合わせるとその文字の入った文字列を表示することができる。
？　任意の一文字　*と似ているが、？は一文字に対応し、組み合わせで文字数を制限して表示することができる。

##ファイル操作
mkdir ディレクトリを作成
＊、？をつかってファイルを絞り込む　-a -l -t -r のオプションがあり、組み合わせも可
cp　ファイルをコピー

```
cd ~ ユーザのホームディレクトリへ移動
cp /etc/hosts ~　etcのhostsディレクトリからホームディレクトリへコピー
ls　ディレクトリを表示

cd ~
cp /etc/hosts ~hosts.newname etcのhostディレクトリからhost.newnameディレクトリへコピー
ls

cp -p hosts.newname hosts.sametime 古い情報を保持したままコピーする。
ls -l ディレクトリを長形式でコピー

mkdir oddir newdir ディレクトリを作成
cp -r olddir/newdir/ -rでディレクトリをコピーする
ls newdir/　
```

###mv ファイルの移動　ファイル名の変更
書式　***mv 移動元のファイル　移動先のファイル***
オプション
-i　処理の確認　ファイルの上書き防止
-f　強制的に実行

```
mv hosts.newname hosts.renew　hosts.newnameからhosts.renewへ名前を変更
ls -l　長形式で表示

mkdir test ディレクトリtestを作成
mv hosts.renew test/　hosts.renewからtestに移動
ls test/ ディレクトリを表示　host.renewを移動完了
```
###rm　ファイルの削除
書式　***rm ファイル名***
オプション
-i 
-f
-r ディレクトリを対象にする。　ディレクトリも削除できる。

```
cd ~ ホームディレクトリへ移動
rm hosts.sametime ディレクトリhosts.sametimeを削除
rm -r test ファイルtestを削除
ls -l 長形式で表示
```

##ディレクトリの操作
###pwd 現在のディレクトリの表示
書式　***pwd***
パスで現在地を表示

###cd ディレクトリの変更　
書式　***cd ディレクトリ名***

```
pwd　パスで現在地を表示
cd /usr　ディレクトリusrへ移動
pwd　
```
###mkdir ディレクトリの作成
書式　***mkdir ディレクトリ名***
オプション　
-p 指定されたディレクトリの上位ディレクトリも作成

```
mkdir -p dir4/dir5/dir6 左から順に子ディレクトリを作成
ls -R dir4　dir4の子ディレクトリができていることを確認できる。
```
###rmdir　ディレクトリの削除（中身のないディレクトリ）
書式　***rmdir ディレクトリ名***
オプション
-p 指定した改装までのディレクトリを一括で削除

```
mkdir directory1 directory2　ディレクトリ１、２を作成
touch directory2/file　ディレクトリ２の下にファイルを作成
ls　
rmdir directory1　ディレクトリ１は中身はからなので削除できる
ls
rmdir directory2　ディレクトリ２は中身にファイルが入っているので削除できない。
rm -r directory2/　rm、-rで中身のあるディレクトリを削除できる。
ls
```
###ディレクトリの種類
***. カレントディレクトリ　　現在いるディレクトリ
.. 親ディレクトリ　　　　１階層上のディレクトリ
~　ホームディレクトリ　    ログイン直後のユーザは、必ずホームディクトリにいる。
/　ルートディレクトリ　    最上位階層を示す***


###絶対パス、相対パス
絶対パス　ルートディレクトリから任意のディレクトリ、ファイルを指定　パスが長くなる。
相対パス　カレントディクトリから任意のディレクトリ、ファイルを指定　現在のディレクトリが変わると指定できない。

###cat ファイルの内容を表示
書式　***cat ファイル名***
オプション
-n　行番号を付加して表示

```
cat ~/.bashrc ホームディレクトリのファイルbashrcの内容を表示
cat -n ~/.bashrc　行に番号をつけてファイルの内容を表示
```
###ページャを使った表示
***ページャ***　catコマンドで表示されたファイルの中身がたくさんある場合、画面制御を行い***スクロールが途中で止まる***機能のコマンド
書式　***more ファイル名***
コマンド
スペース　次ページに進む
b　　　　前の画面に戻る
f　　　　次の画面に進む
/単語　　単語を検索
q　　　　ページャコマンドを終了

```
more /etc/hosts　etcのhostsのディレクトリにページャを行う
```
　
書式　***less ファイル名***
コマンド
スペース
b　
f
↑　　　　前の行に戻る
↓　　　　次の行に進む
/単語
q

```
less /etc/hosts　
```

###find　ファイルの検索
書式　***find パス　-name ファイル名***

```
find /etc/ -name hosts etcの下にあるhostsという名前のファイルを検索
```
ユーザには読み込み権限が与えられていないディレクトリある

###which　コマンドのパスを表示
書式　***which コマンド名***

```
which cat　catコマンドがどこのディレクトリの配下にあるかわかる。
```

##正規表現とパイプ
###標準入出力
標準入力　　　　データのこと
標準エラー出力　エラーが画面に表示されること
標準出力　　　　コマンドを打つと実行結果が画面に表示されること

###リダイレクト
***ユーザが自由に設定、入出力先を自由に変更できる。***

＞で表し、ファイルに書き込むことができる。
####出力のリダイレクト

```
cd /etc ディレクトリetcに移動
ls > ~/ls-output　ファイルls-outputに書き込む
cat ~/ls-output　ファイルの内容を見る
```
###catコマンドによるファイル作成
リダイレクトと組み合わせるとファイルを作成することができる。

```
cat > cat-output
```
###標準エラー出力
標準エラー出力のリダイレクトは***2>***という記号を使う。

標準入力　０　
標準出力　１
標準出力エラー　２　と表す。

```
ls -l tekitou 2> ls-l-output ファイルls-l-outputに標準エラーを表示
ls -l tekitou > ls-l-output-second 2>&1　一つのファイルに標準出力、標準エラーを出力
```
まだリダイレクト記法があるのでわからない場合は調べる。

###パイプライン
***コマンドの標準出力を別のコマンドに標準入力に連携させる***　
書式　***コマンド1 | コマンド２　***

```
ls -l xxx /usr/bin 2>&1 | less 標準出力、出力エラーの２つをファイルlessに入力する。
```

###grep　ファイルからデータを検索　
書式　***grep オプション　検索条件　指定ファイル***
ワイルドカード使用可能
検索条件は正規表現

```
grep abc /etc/* ファイルの中にabcという文字列を含むファイル名を検索
grep ^xy /etc/*　xyで始まるファイル名を検索
grep -i hostname /etc/*　大文字と小文字に関わらずhostnameを含むファイル名を検索
grep abc /etc/* | grep -v tcp　abcを含み、tcpの文字列を含まないファイル名を検索
ls /usr/bin/ | grep -e d$　binディレクトリ中の検索パターン無しでdが行末になってるファイル名を検索      
```
##基本的なコマンド２
###touch 　ファイルのタイムスタンプ更新、空ファイル作成
書式　***touch　オプション　ファイル名***

```
ls -l hosts.bak hosts.bakを長形式で表示
touch hosts.bak　タイムスタンプを更新する
ls -l hosts.bak　
touch -t 06030800 hosts.bak　最終更新時間によってソートをして出力する。

ls -l touched-file からファイルを作成
touch touched-file
ls -l touchde-file
```
###head, tail ファイルの一部を取得
書式　***head　オプション　ファイル名***
オプション
-n 行　先頭から指定した行を標準出力
-c バイト　先頭から指定したバイト文を標準出力します

```
head FILE
cat FILE | head
```
###head, tail ファイルの一部を表示
書式　***head　オプション　ファイル名***
オプションがない場合、10行を標準出力

オプション
-n 行　先頭から指定した行を標準出力
-c バイト　先頭から指定したバイト文を標準出力します

```
head FILE　ファイルFILEの中身を10行標準出力する
cat FILE | head -　FILEの内容を標準入力し、ファイルを10行表示
cat FILE | head 同上
```

書式　***tail オプション　ファイル名***
オプションがない場合、末尾から10行を標準出力

オプション
-n
-c
-f　終わりの部分が随時変わる、そのためリアルタイムで監視することが可能になる。　ログファイルの監視が目的がある。
　　ログとはサービスの動作状況が出力される

```
tail FILE　ファイルFILEを末尾10行を表示
cat FILE | tail -　表示されたファイルを標準入力し、末尾10行を表示
cat FILE | tail 　同上（-　がついている意味がわからない。）

man less > ~/manual-less lessコマンドのマニュアルをファイルmanual-lessに標準出力する
tail manual-less　ファイルの末尾10行を標準出力
tail -n 5 manual-less　ファイルの末尾5行を標準出力
tail -f manual-less　ファイルの動作状況をリアルタイム監視する。
```
-fはアクセスログやエラーログを見る場合に便利

###sort テキストファイルの中身をソート
書式　***sort オプション　ファイル名***
オプションがついていない場合一文字目をアルファベット順で並び替え
数値と捉えず文字として扱っている。

オプション
-r 逆順でソート
-k n　n列目のデータをソート
-n　数値としてソート

```
cat > score ファイル内容を表示
sort score　ファイルの内容を並び替え
sort -r score　逆のアルファベット順で並び替え
sort -k 2 score　２列目の部分をアルファベット順に並び替え
sort -k 2 -r score　２列目の部分を逆のアルファベット順に並び替え
sort -k 3 score　3列目を並び替え
sort -n -k 3 score　３列目の数値を並び替え　昇順
sort -n -r -k 3 score　上記の逆順　降順
```
####uniq 行の重複の消去
書式　***uniq ファイル名***
連続に重複して続く行を削除

```
uniq uniq-sample ファイルの重複する文を削除する
```
####tr 文字列の置き換え
書式　***tr　文字列１　文字列２***
文字列１から２へ置換する

```
cat > translate　catコマンドをファイルtranslateで実行する
cat translate | tr on ON　ファイルを標準入力し大文字に置き換える。
cat translate |tr on ON > translate2　置き換えられたファイルを別のファイルで実行
cat translate2　別のファイルで表示
```
####diff ファイルの比較
書式　***diff オプション　ファイル１　ファイル２***
オプションのない場合、異なる部分を標準出力

オプション
-c cotext diff 形式で差分を出力する。
-u　unified diff 形式で差分を出力

```
echo "test text "> file1 ファイルの表示を１に標準出力を変更
echo "test text" > file2　ファイルの表示を２に標準出力を表示
echo "new line" >> file2　ファイルの表示を２に標準出力の末尾に追記

diff file1 file2　1と２のファイルを比較

diff -u file1 file2　１と２をファイルの更新時刻を含めた多くの差分情報を比較
dif -c file1 file2
echo "overwrite text" > file2　ファイルのechoコマンドを２に標準入力を変更
echo "new line" >>file2　echoコマンドを２に標準入力の末尾に追加
diff file1 file2 1,2を比較　
diff -u file1 file2　削除された行の頭にー、追加された行の頭に＋が追加されて標準出力され比較
```

理解できていないところ
ヘルプ
マニュアル
検索パターン

頑張って理解したい。
理解した都度編集していきたい。