自分で覚えたいUNIXコマンドその1


#今回記事を書いたきっかけ
私は、プログラミングを本格的に勉強し始めた時から、
MacBookを使用しているのですが、
よくよく考えてみると、ターミナルでの操作に最近は慣れたものの、
まだまだコマンドを使いこなせていないことに気付きました。。

Finder頼みの部分も多く、ターミナルで操作した方が
捗る作業も多いことに最近気づいたので、
こちらで自分のメモ代わりと頭の整理の意味で書いていきます。
あと、AWSも勉強中なので、コマンドを覚えるのは前提中の前提なので、
私も勉強の意味でしっかりと一緒に覚えていきます。
こちらから引用させていただきました。

引用
>https://techacademy.jp/magazine/6406



##pwd
絶対パスを表す場所。
現在のディレクトリを表示してくれ、
自分が今どこにいるのかの道筋を教えてくれる。
cdで移動後にどこにいるのか思い出せない時は、ここで確認しよう。

```
$ pwd
```

##cd
移動したい階層まで連れてってくれるコマンド。
プログラミング初心者が一番最初に覚えるコマンドではないでしょうか？
ちなみに私はJavaをはじめて覚えたときにこのコマンドを覚えました。
カレントディレクトリやチェンジディレクトリなんて読んだりします。

```
$ cd Users/[ユーザー名]/[ファイル名]/
```

##ls
現在のディレクトリにあるファイルなどを一覧で出してくれるコマンド。
今の居場所で何が入っているか確認したいときのコマンド。
迷ったらとりあえずこれで何があるか確認。

```
$ ls
```

##cp
ファイルをコピーしたいときにつかうコマンド。
コピー先名がそのディレクトリに無い名前の場合は新たに中身が同じファイルが生成されます。
同名ファイルが既にあって上書きする場合は```cp -f [ファイル名] [ファイル名]```と入力します。
勝手に上書きされるのが不安な場合は```cp -i [ファイル名] [ファイル名]```というふうにして上書きしますかと確認されるようにしましょう。
OKの場合はyでEnterで上書きされます。
コピーしたいファイルをフォルダを指定してコピーする場合は、
```cp [ファイル名] [ディレクトリ]/```と指定しましょう。
ちなみに1個上の階層に並んでいるフォルダを指定したい場合は、
```cp [ファイル名] ../[ディレクトリ]/```と指定してあげると
一旦上の階層に戻ってくれ、そこで指定されたディレクトリを探してくれます。


```
$ cp [コピーしたいファイル] [コピーする先のファイル]
$ cp -f [ファイル名] [ファイル名]
$ cp -i [ファイル名] [ファイル名]
$ cp [ファイル名] [ディレクトリ]/
$ cp [ファイル名] ../[ディレクトリ]/
```

##mv
ファイルの移動およびリネームを行うコマンド。
つまり、ファイルを移動したり、　名前を変えることができる。
```mv [ファイル名] [ディレクトリ]/```と入力すれば指定したディレクトリへファイルを移動できる。
```mv [現在のファイル名] [新しいファイル名]```と入力すればファイル名を変えることができる。こちらのコマンドもcpと同様、同名ファイルが既にあって上書きする場合は```mv -f [現在のファイル名] [新しいファイル名]```と入力すると重複した名前がある場合は上書きされます。
また、```mv -i [現在のファイル名] [新しいファイル名]```で上書きしてもよいかの確認がされます。

```
$ mv [ファイル名] [ディレクトリ]/
$ mv [現在のファイル名] [新しいファイル名]
$ mv -f [現在のファイル名] [新しいファイル名]
$ mv -i [現在のファイル名] [新しいファイル名]
```
##rm
ファイルを削除するコマンド。
```rm [削除するファイル]```と入力すれば完全削除されます。
ゴミ箱を経由せず、即時に削除されてしまうので要注意。
空のディレクトリを削除したい場合は```rm -d [空のディレクトリ]/```と入力す。ただ、この場合はあくまでも空の場合です。
ディレクトリの中にファイルがある場合は、```rm -r [中身があるディレクトリ]/```と入力すると中身含めて全て削除となります。
 

```
$ rm [削除するファイル]
$ rm -d [空のディレクトリ]
$ rm -r [中身があるディレクトリ]
```

##mkdir
ディレクトリを作成するコマンド。
```mkdir [新しいディレクトリ]```と入力すると新しいディレクトリが生成されます。
```mkdir [ディレクトリ]/[新しいディレクトリ]```と指定してあげればそのディレクトリの配下に新しいディレクトリが生成されますが、存在しないディレクトリが途中で指定されているとエラーになりますので注意しましょう。
```mkdir -p [新しいディレクトリ]/[新しいディレクトリ]```と入力すれば途中のディレクトリも含めてエラー無く生成されます。

```
$ mkdir [新しいディレクトリ]
$ mkdir [ディレクトリ]/[新しいディレクトリ]
$ mkdir -p [新しいディレクトリ]/[新しいディレクトリ]
```

##touch
ファイルの変更日時が更新される。
存在しないファイルを指定すると、そのファイルが空状態で生成されます。

```
$touch [ファイル名]
```

##chmod
ファイルのパーミッションを変更するコマンド。
とはなんのことぞや、、、と思うかもしれませんが、
Macでいうこれのことです。
![スクリーンショット 2020-06-04 0.14.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614057/321692c1-ba51-b289-5fce-8513b3b53999.png)
下にある共有とアクセス権を変更するんですね。
上から
__ユーザー__
__グループ__
__その他__
と権限があり、
これをコマンドで変更することができます。
通常、デフォルトだとこんな感じで権限が与えられていますのはMacユーザーさんならご存知だと思います。
パーミッションのパターンは７パターンあり、
ウィンドウ上から操作できるのは、
０と４のみです。

|アクセス権|数値|説明|
|---|---|---|
|```---```|0|読み/書き|
|```--x```|1|実行のみ|
|```-w-```|2|書き込みのみ|
|```-wx```|3|書き込み実行のみ|
|```r--```|4|読み込みのみ|
|```r-x```|5|読み込み実行のみ|
|```rw-```|6|読み込み書き込みのみ|
|```rwx```|7|読み込み書き込み実行ができる|

ターミナルからの変更方法としては、
```$chmod [自分][グループ][その他] [ファイル名]```
となり、
デフォルトではこうなります。
```chmod 744 App.js```
なので、この表に照らし合わせて
全部の人オールOK！と言う場合は、
```chmod 777 App.js```
と入力してしまえば、
![スクリーンショット 2020-06-04 0.57.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614057/88d9577e-505f-1754-02a4-0cd700e69326.png)
このように全ての人にアクセス権が許可されたことになります。
これをコマンド上で確認する場合は、
```ls -l App.js```
と入力すればこんな感じでコマンド上で確認することができます！

```
$ ls -l App.js
-rwxrwxrwx@ 1 fujishimahiroki  staff  491  3 26 20:59 App.js
```


とまあ、基礎の基礎でも盛り沢山ですね！
次回もさらにコマンドの内容を増やしていこうと思います。