【Trainer's Recipe】覚えておきたいUNIXコマンド入門

このEntryは、<a href="http://gsacademy.tokyo/" target="_blank" style="text-decoration: none;">G's ACADEMY TOKYO</a>のトレーナー/チューターによる投稿記事です。
授業の中で出たちょっとした質問や疑問、トレーナーが関心のある新技術等を脈絡なく綴っていきます。

![command_prompt_img01.png](https://qiita-image-store.s3.amazonaws.com/0/104065/694096d3-9f5e-bd40-5d57-b55f09d48d76.png)


#覚えておきたいUNIXコマンド入門#

ジーズアカデミーチューターの牛尼です。

開発したアプリケーショーンを動かすときに、Webサーバーにssh(mac)やTera Term(Windows)等でいろいろ設定する事があると思います。そんな時にUNIXコマンドを使う機会が出てくると思います。その時に、覚えておきたいUNIXコマンドを紹介します。


![覚えておきたいUNIXコマンド入門](https://qiita-image-store.s3.amazonaws.com/0/104065/09a48f7d-ed99-2346-8097-4b30d47ee273.png)

詳しく知りたい方は、以下のリンク等を覗いて見てください。
http://www.k4.dion.ne.jp/~mms/unix/

また、macを使っている方は、ターミナルでUNIXコマンドが使えますので、そこでいろいろ試してみるのもいいと思います。
Windowsには、PowerSell等がありますが、UNIX系ではないのでコマンドが違ったり使えなかったりする場合ありますので、仮想環境等に接続して試してみるといいと思います。


# 覚えておきたいUNIXコマンド
ターミナルにて以下のコマンドを入力し実行ます。

##ファイル管理
### pwd
```
$ pwd
$ /home/hoge/www
```
「print working directory」（作業しているディレクトリを表示）の略称になり、今、自分が作業しているディレクトリを表示します。
### cd
``` 
$ cd [移動したいディレクトリ名]
```
「change directory」（ディレクトリを変更）の略称になり、作業しているディレクトリを移動します。
### ls
``` 
$ ls
$ MailBox　index.html www　
```
「list segments」（区分けして一覧表示）の略称になり、作業しているディレクトリあるファイル（またはディレクトリ）を一覧表示します。
lsコマンドのオプションがあるのですが、「a」と「l」があり、そのオプションを使うと、下の様に。lsコマンドでは表示されなかった隠しファイルが表示され、詳細情報が表示されます。

``` 
$ ls -la
$ drwx---r-x  10 hoge  users   512 Jan 27  2016 .
$ drwxr-xr-x  98 root  wheel  3072 Apr  4 13:46 ..
$ -rw-r--r--   1 hoge  users   773 Jan  7  2009 .cshrc
$ -rw-------   1 hoge  users  1180 Aug 25 19:54 .history
$ drwx------   4 hoge  users   512 Jan  9  2014 MailBox
$ -rw-rw-rw-   1 hoge  users  5862 Sep  3 14:35 index.html
$ drwxr-xr-x  15 hoge  users  1024 Aug 19 22:48 www
```
### mkdir　
```
$ mkdir [作成したいディレクトリ名]　
```
「make directory」（ディレクトリを作成）の略称で、指定した名前のディレクトリを作成出来ます。
### cp
```
 cp [コピーしたいファイル] [コピー先]
```
「copy」（複製）の略称で、指定したファイルを指定先にコピーすることが出来ます。
ディレクトリをコピーするときは、「-r」オプションをつけます。
### mv
```
$ mv [移動・変更したいファイル] [移動先・変更後の名前]
```
「move」（移動）の略称で、指定したファイルを指定先に移動とリネームすることが出来ます。
### rm
```
$ rm [削除したいファイル]
```
「remove」（削除）の略称で、指定したファイルを指定先に移動とリネームすることが出来ます。
ディレクトリを削除するときは、「-r」オプションをつけます。
削除してしまうと復元は難しいので、気を付けて実行してください。
特に`$ rm -r *`を実行すると、今、作業しているディレクトリ以下のファイル・ディレクトリをすべて削除するので気を付けてください。
### chmod
```
$ chmod 764 [表示したいファイル]
```
change mode（チェンジモード）の略称で、指定したファイルやディレクトリのパーミッション(アクセス権)を変更できます。
詳細は以下のリンク等を覗いて見てください。
https://ja.wikipedia.org/wiki/Chmod
http://qiita.com/masashi-t-h/items/5f4c4fa768642aad9e06
##プロセス管理
### ps
```
$ ps
$ PID TT  STAT    TIME COMMAND
$ 44937  0  R+   0:00.00 ps
$ 83564  0  Ss   0:00.03 -csh (csh)
```
process（プロセス）の略称で、実行中のプロセス一覧を表示します。
##テキストファイル操作
### cat
```
$ cat [表示したいファイル]
```
catenate（連結）の略称で、複数のファイルを指定することで、それぞれの内容を繋げて表示させることも出来ます。
### vi
```
$ vi [表示したいファイル]
~
~
~
~
~
Interrupted
```
vi (VIsual extended editor) は多くのUNIX系OSの標準エディタでテキストを表示・編集できます。
ただ、モードを切り替えやキー操作が特殊なので、使い方を覚える必要があります。
慣れるとサーバーで設定ファイルの変更やちょっとしたファイルの修正等が出来るので便利です。
使い方は以下のリンク等を覗いて見てください。
https://ja.wikipedia.org/wiki/Vi
http://wadap.hatenablog.com/entry/20080107/1199716341
http://www.gi.ce.t.kyoto-u.ac.jp/user/susaki/command/vi.html

簡単ですが覚えておきたいUNIXコマンドになります。
慣れてくるとUNIXコマンドでファイル操作をする方が、ファインダーやエクスプローラーなどのGUIによる操作よりもやり易くなるかもしれません。
他にもいろいろなコマンドがあるので、必要に応じて使ってみてください。

また、UNIXコマンドを使っているとシェルスクリプトを使って見たりする様になったりするかもしれません。
http://qiita.com/zayarwinttun/items/0dae4cb66d8f4bd2a337
http://motw.mods.jp/shellscript/tutorial.html


以上、<a href="http://gsacademy.tokyo/" target="_blank" style="text-decoration: none;">G's ACADEMY TOKYO</a>チューターの牛尼によるUNIXコマンドの豆知識でした。