linuxコマンド集  まとめる


## 初めに
webにはコマンド毎に情報が散らばっているが一向に覚えられず、調べるのに時間を取るので
自分が使用したコマンドをアウトプットします。
あちこちの記事で検索するより、1ページがでまとめてしまえば楽と思いました。
触りながらメモしているので間違いあれば、遠慮なく指摘してもらえると嬉しいです。
動作環境：mac,linux

## ファイル 操作
### ファイルをコピー
cp [コピー元ファイル名] [コピーしたファイル名]
`cp .env.example .env`

###ファイル・ディレクトリ削除

``` yaml
rm -i [ファイル名] 
#ディレクトリ削除
rm -rf [ディレクトリ]
#カレントディレクトリ削除
rm -rf * 
```

r ... ディレクトリを再帰的に
f ... 強制的に(forceから来てる）
i ... 削除前に確認

### パーミッション変更
`chmod -R  ***`

| 記号 | 番号 | 内容 |
|:----|--:|:------:|
| r   | 4 | 読み込み     |
| w   | 2 | 書き込み・変更 |
| x   | 1 | 実行        |

777 書き込み、実行、読み込み
666 読み込み、書き込み
111 実行

### ファイルの中身を確認

``` yaml
cat [ファイル名]    #表示
cat -n [ファイル名] #行番号をつけて表示する
cat -b [ファイル名] #行番号あり、空白行を除外して表示

less [ファイル名]
```

### ファイルAの内容をファイルBに上書き
`cat fileA > fileB`

### ファイルAの内容をファイルBに追加
`cat fileA >> fileB`

### ファイル内の文字列を検索
`grep "検索したいワード"  -rl`

https://eng-entrance.com/linux-command-grep

### zipを圧縮する
`zip [圧縮するzip名] -r [対象のフォルダ・ファイル]`
r ... ディレクトリを再帰的に圧縮

### zipを展開(解凍)する
`unzip [展開するzip]`
オプションはそこまで使わなさそう。

## ユーザー 操作

### ユーザーPW変更
`passwd [ユーザー名]` 
rootなどのスーパーユーザーのみ変更可能

### ユーザーのPW変更履歴 確認
`chage -l [ユーザー名]`

``` yaml
Last password change                                    : Jul 01, 2020
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

//日本語訳
パスワード期限:			
パスワード無効化中			
アカウント期限切れ			
パスワードが変更できるまでの最短日数	
パスワードを変更しなくてよい最長日数	
パスワード期限が切れる前に警告される日数	
```

https://qiita.com/niiyz/items/53aa4195dcc69db2052b

### 現在のユーザー情報(uid,gid) 確認
``` yaml
id
# ユーザのuid、グループid, その他所属しているグループを確認できる
uid=501(nao) gid=20(staff) groups=20(staff),12(everyone),61(localaccounts),79(_appserverusr),80(admin),81(_appserveradm),98(_lpadmin),
```

### グループ一覧 確認
`cat /etc/group`


## シンボリックリンクを貼る
ファイル・フォルダへのリンク(ショートカットみたいなもの？)を設定する
`ln [オプション] リンク元... ディレクトリ`

``` yaml
ln -s universal-darwin20 universal-darwin19
ln [オプション] リンク元　[リンク先]
#リンク元にはファイルかディレクトリを指定し、リンク先にはリンクの名前を指定します。

#オプション
#-f	指定したリンクファイルが存在した場合は、既存のリンクを強制的に削除する
#-i	指定したリンクファイルが存在した場合は、既存のリンクを削除するか確認を行う
#-n	リンクファイルを指定した場合、普通のファイルとして扱う
#-s	ハードリンクではなく、シンボリックリンクを作成する
#-v	 リンクの作成時にリンクの情報を表示する

```
確認は lsコマンドを使用する

https://uxmilk.jp/51271

## その他

### コンソールをクリア
`clear`
windows は `cls`

### ディスク容量を調べる
`du -hs /var/www/shop`
-s ... 合計容量を表示する
-h ... 読みやすいデータ容量に変換  

### フォルダ容量を調べる
`df -h —-total`
--total ...合計値を表示
-h      ...読みやすいデータ容量に変換  

### ロケールについて

``` yaml
locale
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL=
```

**一時的なロケール変更方法**
`export Key名=設定する値`

**恒久的なロケール変更方法**
`vi ~/.zprofile` で Key名=設定する値` を追記し
設定完了後　source ~/.[ファイル名]　でシェルの設定を反映させる
※使用するシェルで設定するファイルは異なります(bash,zsh)


### コマンド入力履歴の表示
入力履歴の保存はデフォルトでは500件
mac(Catalina)で使用時、`history`だけだと 10件しか表示されない

``` yaml
history [整数値]   #履歴の末尾から指定した行数を表示
history -c    	  #入力履歴から全ての履歴を削除する
history-d [番号]	 #指定した番号の履歴項目を削除する
```

``` yaml
#history -100 で実行すると番号が表示
972  ;s
973  ls
974  cd ../
975  ls
976  ls -la
977  ls
978  cd Users
979  ls
980  cd nao
981  ls
982  ls -la
983   vi ~/.zprofile
```

`![番号]`でコマンドを再度実行できる


### 現在使用中のシェルの確認
`echo $SHELL`
※linuxのディストリビューションでは基本bashが使用されているが
macのCatalinaから zshが使用されていた。


https://qiita.com/hirokishirai/items/5a529c8395c4b336bf31


### 使用できるシェル一覧を確認
``` yaml
cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
```

### 環境PATHを設定する
profile
bash使用している場合
`vi ~/.bash_profile`
`vi ~/.bashrc`

zsh使用している場合
`vi ~/.zprofile`
`vi ~/.zshrc`

設定完了後　`source ~/.[ファイル名]　`でシェルの設定を反映させる
***_profile  ...ログイン時にのみ実行、具体的な用途は:環境変数を設定する

###設定された環境変数(PATH)を確認する
`echo [PATH名]`

```
echo $ANDROID_HOME
/Users/********/Library/Android/sdk
```

## サーバー系
### DNSサーバー トラブルなどの確認
`nslookup [ドメイン名]`   windowsはこれ
`dig [ドメイン名]`    UNIX,Linuxはこっち

### ポート
```
lsof -i -P | grep :3000
com.docke 12907  nao  143u  IPv6 0xd3f44593650a09ef      0t0  TCP *:3000 (LISTEN)
// 12907とはPID
```

### プロセスを切る(Port開放方法)
`kill [PID]`