Linuxファイル管理とIOリダイレクト（二）

# 概要
+ ファイルシステムのディレクトリ構造
+ ファイルの作成と表示
+ ファイルのコピー、転送、削除
+ ソフトリンクとハードリンク
+ IOリダイレクトとパイプ

### 1.3 よく使うディレクトリ
| 種類 | パス |
|:-:|:-:|
|binary file| /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin  |
| Library file  | /lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64  |
|Config file   |  /etc, /etc/DIRECTORY, /usr/local/etc |
| Help file  | /usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc  |

### 1.4 Linuxシステムのファイルタイプ識別子
| 種類 | 識別子 | 説明 |
|:-:|:-:|:-:|
|  Ordinary document | -  |   |
|catalog file   |d   |  directory |
|Symbolic link file   | l  | link  |
| block device file  | b  |  block |
| character device file  | c  | character  |
|pipeline file   |  p | pipe  |
| socket file  | s  | socket  |

例：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/a14726c1-57df-9c8a-faaa-e578ad64878e.png)

## 2 ファイル操作コマンド
### 2.1 現在の作業ディレクトリを表示
pwd コマンド: 作業ディレクトリの出力
例：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/472732f5-29bd-2223-5d50-7e1ea84d1e10.png)
### 2.2 絶対パスと相対パス
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/f2d1a682-481e-7e32-c409-4c330e818ce2.png)

### 2.3 ベース名とディレクトリ名
+ basename、パスの代わりにファイル名のみを取得します
+ dirname、ファイル名ではなくパスのみを取得します

例：
~~~
[root@centos8 bin]#basename /etc/sysconfig/network
network
[root@centos8 bin]#dirname /etc/sysconfig/network
/etc/sysconfig
[root@centos8 ~]#dirname /etc/sysconfig/network-scripts/ifcfg-eth0 
/etc/sysconfig/network-scripts
[root@centos8 ~]#basename /etc/sysconfig/network-scripts/ifcfg-eth0 
ifcfg-eth0
[root@rocky86 ~]# basename http://nginx.org/download/nginx-1.18.0.tar.gz 
nginx-1.18.0.tar.gz
[root@rocky86 ~]# basename http://nginx.org/download/nginx-1.18.0.tar.gz.tar.gz 
nginx-1.18.0.tar.gz.tar.gz
[root@rocky86 ~]# basename -s .tar.gz http://nginx.org/download/nginx-
1.18.0.tar.gz
nginx-1.18.0
[root@rocky86 ~]# basename -s .tar.gz http://nginx.org/download/nginx-1.18.0.tar.gz.tar.gz
nginx-1.18.0.tar.gz

# パスからコンテンツをダウンロードして抽出します
[root@rocky86 ~]# url=http://nginx.org/download/nginx-1.18.0.tar.gz 
[root@rocky86 ~]# wget $url
[root@rocky86 ~]# tar xf `basename $url`
~~~
### 2.4 ディレクトリの内容を一覧表示する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/317f8026-82b1-271e-f155-354ab4677767.png)
### 2.5 ファイルステータスの表示
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/ad0b0743-707f-252f-3123-55d133adcc8f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/4ed74251-d2ea-9c5f-ddbb-effc4a3e2543.png)
### 2.6 ファイルの内容を確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/c533449e-96eb-dfd7-8edf-42ce45025abb.png)
例：
~~~
[root@rocky86 ~]# file user.sh 
user.sh: Bourne-Again shell script, ASCII text executable
[root@rocky86 ~]# file -b user.sh 
Bourne-Again shell script, ASCII text executable
~~~
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/78000340-3751-988e-c50d-0b20ab3852c0.png)
### 2.7 File wildcard pattern
ファイル ワイルドカードを使用して、基準を満たす複数のファイルを照合できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/2bf374e5-93b1-86cd-ef6a-7b97ec1e90f6.png)
例：
~~~
[root@rocky86 ~]# ll f{1..5}
ls: cannot access 'f1': No such file or directory 
ls: cannot access 'f2': No such file or directory
-rw-r--r-- 1 root root 0 Nov  7 09:34 f3
-rw-r--r-- 1 root root 0 Nov  7 09:34 f4
-rw-r--r-- 1 root root 0 Nov  7 09:34 f5

[root@rocky86 ~]# ll f[1-5]
-rw-r--r-- 1 root root 0 Nov  7 09:34 f3
-rw-r--r-- 1 root root 0 Nov  7 09:34 f4
-rw-r--r-- 1 root root 0 Nov  7 09:34 f5

[root@rocky86 ~]# ll f[a-c]
-rw-r--r-- 1 root root 0 Nov  7 09:46 fa
-rw-r--r-- 1 root root 0 Nov  7 09:46 fA
-rw-r--r-- 1 root root 0 Nov  7 09:46 fb
-rw-r--r-- 1 root root 0 Nov  7 09:46 fB
-rw-r--r-- 1 root root 0 Nov  7 09:46 fc

[root@rocky86 ~]# ll f{a..c}
-rw-r--r-- 1 root root 0 Nov  7 09:46 fa
-rw-r--r-- 1 root root 0 Nov  7 09:46 fb
-rw-r--r-- 1 root root 0 Nov  7 09:46 fc
~~~
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/39b11a18-48f3-0afc-bef3-547253b8f0a0.png)
### 2.8 Copy files and directories
~~~
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...

#よく使われる
-i|--interactive        #対象ファイルがすでに存在する場合は、上書きするかどうかメッセージが表示されます。
-n|--no-clobber         #ターゲットファイルがすでに存在する場合、このファイルのコピーをスキップします
-R|-r|--recursive       #再帰的コピー、ディレクトリのコピーに使用可能
-a|--archive            #すべての属性を保持 dpR オプションの組み合わせと同等
-s|--symbolic-link      #ファイルをコピーする代わりにリンクを作成します
-p                      #アクセス時間、変更時間、権限などの属性を同時にコピーします。
--preserve[=ATTR_LIST]  #属性を選択します。デフォルトはモード、所有権、タイムスタンプです。
-u|--update             #コピー操作は、ソース ファイルがターゲット ファイルよりも新しい場合にのみ実行されます。
-v|--verbose            #コピープロセスを表示   
-b                      #バックアップしてから上書き
--backup=numbered       #ターゲットが存在する場合は、上書きする前にバックアップし、filename.~#~ の形式で数値サフィックスを追加します。複数のバージョンを保持できます。
~~~
例：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/e7a0c542-c3ad-9d06-1ee1-5bd629db111e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/283aa564-8962-f001-2e6b-eb593079d321.png)
例：コピー中に上書きする場合は、バックアップを行ってから上書きし
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/985b52bb-459e-51d9-d2a7-24715926053a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/e96fb1d2-ce2c-e130-3660-be96322c00d1.png)
*特殊なファイルをコピーするには、a オプションを追加する必要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/d31896d2-0f91-c831-841a-422e334397cf.png)