Linuxを基本からまとめてみた【ファイル・ディレクトリの操作と管理】

## ディレクトリの内容の確認

#### lsコマンド
- ディレクトリの中身を表示する
使い方 : ls(オプション)(ディリクトリ/ファイル)

|オプション|説明| 
| :---: | --- | 
|-a   |ドットファイルも含めた全てのディレクトリ/ファイルを表示| 
|-d   |ディレクトリ自身の内容を表示| 
|-b   |ファイルサイズをKB,MBといった単位で表示(-lと併用)| 
|-i   |iノード番号を表示| 
|-l   |パーミッションやタイムスタンプなどの情報も表示| 
|-R   |サブディレクトリも展開して表示| 
|-F   |ファイルの種類を末尾に表示(ディレクトリ:/,シンボリックリンク:@)| 

#### ワイルドカード
- 複数の文字に一致する特殊文字
- ファイル名やディレクトリ名をパターンで指定

|構文|意味| 
| :---: | --- | 
|*|指定した位置に0文字以上の任意の文字| 
|?|指定した位置に1文字の任意の文字| 
|[n],[n-n]|指定した位置に[]内に含まれる文字, ハイフンで連続文字の指定|
|[!n],[!n-n]|指定した位置に[]内に含まれない文字| 
|[n,n],[n..n]|ブレース展開を行う| 

#### fileコマンド
- ファイルの種類を特定
使い方 : file(オプション)ファイル

#### touchコマンド
- タイムスタンプを更新する
- touch(オプション)ファイル

|オプション|説明| 
| :---: | --- |
|[[cc]yy]mmddhhmm[.ss]   |指定した日時にタイムスタンプを更新| 
|-a   |アクセス日時のみ更新| 
|-d   |更新日時のみ変更| 

#### cpコマンド
- ファイルをコピーする
- cp(オプション)ファイル1 ファイル2

|オプション|説明| 
| :---: | --- |
|-r   |ディリクトリをコピー| 
|-f   |上書き時、確認メッセージを非表示にする| 
|-i   |上書き時、確認メッセージの表示を強制する| 
|-p   |タイムスタンプやパーミッションなどのファイル属性を維持したままコピー| 
|-d   |シンボリックリンクをそのままコピー|

#### mvコマンド
- ファイルの移動、名前の変更
- mv(オプション)ファイル1 ファイル2

|オプション|説明| 
| :---: | --- |
|-f   |上書き時、確認メッセージを非表示にする| 
|-i   |上書き時、確認メッセージの表示を強制する| 

#### rmコマンド
- ファイルの削除
- rm(オプション)ファイル

|オプション|説明| 
| :---: | --- |
|-r   |ディリクトリを削除| 
|-f   |確認メッセージを非表示にする| 
|-i   |確認メッセージの表示を強制する|

#### mkdirコマンド
- ディリクトリの作成
- mkdir(オプション)ディレクトリ

|オプション|説明| 
| :---: | --- |
|-p   |親ディリクトリも一緒に作成| 
|-m   |作成するディリクトリのパーミッションを指定| 

#### rmdirコマンド
- 空のディリクトリの削除
- rmdir(オプション)ディレクトリ

|オプション|説明| 
| :---: | --- |
|-p   |親ディリクトリも一緒に削除| 
 
#### tarコマンド
- アーカイブファイルの作成、展開
- tar(オプション)ファイル

|オプション|説明| 
| :---: | --- |
|c   |アーカイブファイルの作成| 
|x   |アーカイブファイルの展開| 
|t   |アーカイブファイルの内容を参照する| 
|v   |処理したファイルの一覧を表示| 
|f(ファイル名)   |ファイルの指定|

## ファイルの圧縮・解凍

#### 圧縮・解凍用のコマンド

|圧縮形式|圧縮用コマンド|解凍用コマンド|tarコマンドのオプション|
| --- | --- | --- | --- |
|gzip形式|gzip|gzip(gzip -d)|z| 
|bzip2形式|bzip2|bunzip2(bzip -d)|j| 
|xz形式|xz|unxz(xz -d)|J| 

#### ddコマンド
- ディスクの内容を別のディスクやイメージファイルに複製
- dd(オプション)if=出力元of=出力先(bs=ブロックサイズ)(count=読み書き回数)

## 所有権とパーミッション
#### パーミッションとは？
- 読み取り、書き込み、実行ができるかどうかを表すアクセス権
- 所有者、所有グループ、その他のユーザーに対して設定
- 所有者:作成者
- 所有グループ:同じアクセス権を共有するグループ
- その他のユーザー:所有者、所有グループ以外のユーザー

#### ls -lコマンドで確認する

```
~$ls-l test1.txt
```

#### chmodコマンド
- パーミッションの変更
- chmod(オプション)モードファイル・ディレクトリ

|オプション|説明| 
| :---: | --- |
|r   |フォルダ内のファイル、サブディレクトリも合わせてパーミッションを変更| 

#### シンボルモードの設定
|記号|対象| 
| :---: | --- |
|u   |所有者| 
|g   |所有ユーザー| 
|o   |その他のユーザー| 
|a   |すべての対象| 
|+   |追加|
|-   |削除| 
|=   |設定| 
|r   |追加| 
|w   |削除| 
|x   |設定|
|s   |SUID/SGID| 
|t   |スティッキビット| 

#### chownコマンド
- 所有者の変更
- chown(オプション)所有者ファイル・ディレクトリ

|オプション|説明| 
| :---: | --- |
|-R   |フォルダ内のファイル、サブディレクトリも合わせてパーミッションを変更| 

#### chgrpコマンド
- 所有者グループの変更
- chgrp(オプション)所有者ファイル・ディレクトリ

|オプション|説明| 
| :---: | --- |
|-R   |フォルダ内のファイル、サブディレクトリも合わせてパーミッションを変更| 

#### umaskコマンド
- 規定のパーミッションとマスク値
- ファイル作成時に不必要な権限を与えないようにマスクを設定する
- マスク値の参照、変更
- umask(オプション)(マスク値)

|オプション|説明| 
| :---: | --- |
|-R   |フォルダ内のファイル、サブディレクトリも合わせてパーミッションを変更| 

## 様々なアクセスモード
#### SUID,SGID
- SUID:所有者の権限で実行
- SGID:所有グループの権限で実行

|chmodのモード|SUID|SGID| 
| :---: | :---: | :---: |
|シンボル| u+s| g+s| 
|8新数| 4xxx| 2xxx|

## ハードリンクとシンボリックリンクの作成
#### ハードリンクとシンボリックリンクとは？
- リンクの種類とiノードを参照する流れ

|ハードリンク|シンボリックリンク|
| :---: | :---: |
|元のファイルが削除されてもデータにアクセス可|ディリクトリ宛てのリンク|
||単なるファイルシステム宛のリンク|

## リンクの作成

#### lnコマンド
- リンクを作成する
- ln(オプション)リンク元リンク

|オプション|説明| 
| :---: | --- |
|-f   |リンク先が存在しても上書き作成| 
|-s   |シンボリックリンクを作成| 

## ファイルの配置と検索
#### FHS(ファイルシステム階層標準)
- FHSで定義されている主なディリクトリ
- /usrの主なサブディレクトリ

#### findコマンド
- ファイルを検索する
- find(検索ディレクトリ)(オプション)(条件式)(アクション)

|オプション|説明| 
| :---: | --- |
|maxdepth 数 |検索サブディリクトリの階層数を指定| 

#### locateコマンド
- ファイルを検索する(findよりも高速)
- locate(オプション)(名前)

|オプション|説明| 
| :---: | --- |
|maxdepth 数 |検索サブディリクトリの階層数を指定| 


## 検索したファイルへのコマンド実行
#### xaragsコマンド
- 標準入力に送られてきた対象に対して、コマンドを実行
- コマンド|xargs(オプション)コマンド2


## 参考サイト
[新・Linux入門編2(LinuC対策版): ファイル・ディレクトリの操作と管理](https://paiza.jp/works/linux/new-primer/linux-new-primer-2)