よく使うLinuxコマンド

Linuxサーバーの操作するときに、ちょっとした操作の備忘録です
追記増えるため度に更新していきます


##cdコマンド [移動]
指定のパスに移動するためのコマンド

```
[vagrant@vagrant ~]$ cd /var/www
[vagrant@vagrant www]$
```

##pwdコマンド [現在位置を把握する]
現在の場所を確認するためのコマンド

```
[vagrant@vagrant ~]$ pwd
/home/vagrant
```


##cpコマンド [複製]
コピーコマンド。
ファイルやフォルダなど複製するためのコマンド

>cp コピー元ファイル コピー先ファイル
```cp fileA.txt fileA_copy.txt```


よく使うオプション

| オプション |内容|
|:---------------|:------------------|
| -a |元ファイルの属性とディレクトリの構成を保持してコピーする。可能な限り。|
| -r |ディレクトリごとコピーする（再帰的）|


>フォルダごとコピー
```cp -r コピー元ディレクトリ コピー先ディレクトリ```

その他オプション参考URL
https://eng-entrance.com/linux_command_cp




##mvコマンド [移動/名前変更]
ファイルなど場所移動や名前変更を行う

#####ファイル名変更
>mv　対象ファイル 変更したいファイル名
```mv file1 file2```

ファイル名を変更したいファイル名に変更したいときに使用します
※また、フォルダ名の変更でも動きます

#####移動
>mv ファイル1 ファイル2 ファイル3 ディレクトリA
```mv file1 file2 file3 ./dir```
ファイルを対象のフォルダに移動します

##rmコマンド [削除する]
ファイルやディレクトリを削除する時に使用します。

```
rm ファイル名
```

ディレクトリを削除したい場合

```
rm -r ディレクトリ名
```

##chmodコマンド [権限を変更する]
Linuxを使っていると、権限（パーミッション）が許可されてなくファイル等が変更できないなどエラーがでることがあります
そのために、権限を変更する必要があることがあります

```
# 全ての権限を与える。
$ chmod 777 ファイル名/ディレクトリ名

# フォルダ内のファイル、ディレクトリも同じ指定権限にする
$ chmod -r 777 ディレクトリ名


# 全てのユーザーに実行権限だけ与える
$ chmod +x ファイル名/ディレクトリ名
```

## chownコマンド [所有権を変更する]
chmodよりは頻度が低いものの、所有権の違いなどで変更できないことがあるので、
ファイルやディレクトリの所有権を変更する必要があります

```
chown user:group ファイル名/ディレクトリ名
※ apache: apache = 所有者をアパッチに変更する時はuser:groupをこれに
```

## rsyncコマンド [同期する]
リモート環境とファイルやディレクトリを「同期（sync）する」というコマンド
>rsync -[オプション] 同期元/ 同期先/

よく使うオプション

| オプション |内容|
|:---------------|:------------------|
| -a |アーカイブモード|
| -v |動作内容を表示する|
| -z |転送中のデータを圧縮する|


パーミッション関係のオプション

| オプション |内容|
|:---------------|:------------------|
| -e|実行可能属性を保持する|
| -p |パーミッションを保持する|
| -g |所有グループをそのまま保持する|
| -o |所有者をそのまま保持する（自分以外の所有者を保持するにはroot権限が必要）|

シンボリックリンク関係のオプション

| オプション |内容|
|:---------------|:------------------|
| -l|シンボリックリンクをシンボリックリンクのままコピーする|

その他詳しい詳細はこちらを参照ください
https://www.atmarkit.co.jp/ait/articles/1702/02/news031.html


##### sshを使用し自身のPCに同期する例
```
rsync -avz -e 'ssh -i ~/Documents/login/[キー名].pem'  --rsync-path='sudo rsync'  [sshユーザー]@[ドメイン]:/var/www/html/[サーバー対象ディレクトリ] ./[ローカル対象ディレクトリ名]
```

※サーバー上フォルダのファイルを自身のPC、または別サーバーにバックアップとるときに使います。


## dfコマンド[ディスクの空き領域表示]
ディスクの空き領域が表示することができます

※ディクスの容量不足が起きるとファイルがアップロードできないなど起こるため容量を確認するなど定期的に行ったりします

よく使うオプション

| オプション |内容|
|:---------------|:------------------|
| -h|サイズに応じて読みやすい単位で表示する|
| --total |空き領域の合計を表示|



## duコマンド [使用量]
ディスクの使用量を表示
>du [オプション] [ファイルまたはディレクトリ]

※ディクスの容量不足の際の原因探しなどに使用する事が多いです


よく使うオプション

| オプション |内容|
|:---------------|:------------------|
| -s|指定したディレクトリの合計のみを表示 (サブディレクトリは含めない)|
| -d深さ|集計するディレクトリの深さを指定|
| -h|サイズに応じて読みやすい単位で表示|

#####ディレクトリ直下のフォルダのみ容量表示
du -sh ./* | sort -nr


## findコマンド[検索]
ファイルやディレクトリを検索する

```
find dir_name
```
| オプション |内容|
|:---------------|:------------------|
| -name|ワイルドカードを使用して、ファイルやディレクトリ名の一部のみ指定した検索ができる|
| -type f|ファイルのみを対象とし検索するf=ファイル d=ディレクトリ (ex. type f）|
| -size|ファイル容量を指定し検索する|
| -exec|検索結果に対してコマンドを実行する|
| -mtime|任意の日数に更新されたファイルやディレクトリを検索する|
※オプション一部抜粋

※ファイル検索して削除　[使用例]

```
find dir_name -name "*.org"|xargs rm
```


## which [実行コマンドのフルパスを表示]

使用コマンドのフルパスを表示します。
自身の環境で必要なコマンドが含まれているか探す際など使用します

```
which [オプション] コマンド名
```

## その他
### apacheになりすます
```shell
su -s /bin/bash - apache
```