研究室の新入生向け覚えておきたいIT知識

## 目的
研究室のWikiに新入生向けのIT知識をまとめたが，IT初心者向けへの記事になると考え，共有する．


## Terminalとは
ターミナルとはCLI(Command Line Interface)でコンピューターに直接指示を出すことができるインタフェースのこと

対してFinderなどのマウスとかで操作するものはGUI(Graphical User Interface)

サーバーなどを利用する際にはSSH接続をターミナルで行うので，CLIでの操作，つまりunixコマンドを使える必要がある．

※Mac使ってる人はiterm2がおすすめ，色々カスタマイズできます．

## よく使うコマンド
[このページ](https://g-omr.github.io/unix.html)からよく使うものをピックアップ
| コマンド | 意味 | 
| ---- | ---- | 
|  cd (dir) | 指定ディレクトリへ移動(cdだけならホームディレクトリに行く) | 
|cd ..|１つ上の階層のディレクトリにいく|
|  mkdir (dir)  |  	新規ディレクトリを作成    |  
| ls           | 現在ディレクトリのファイル一覧表示    |
| ls -a        | -隠しファイルも含む全てのファイル表示 |
| touch (file) | 空のファイルを作成                    |
| cat (file)   | ファイルの内容表示                    |
| pwd             | 現在いる位置のPATHを表示   |

####  以前打ち込んだコマンドは↑(上矢印キー)で遡ることができる
####  Tabで現在の候補を見ることができる
    つまり，全部打たなくても途中までで良い

## Vim
ターミナル上でのファイル編集はVimというツールを主に利用する．
RosmasterではVimでファイル編集を行う．

`Vim (filename)`で編集可能

マウス操作は一切効きません(ターミナル全般に言える)

Vimにはインサートモードとコマンドモードがある．

- インサートモードにするためには，i のキーを押す
- コマンドモードにするためには esc (エスケープキー)を押す

#### 編集から保存の手順
1. `vim [file name]`でvimに入る
    - ex) `vim test.py`
1. i のキーを押して，インサートモードにする
    - 左下に--INSERT--と出力される
1. コードを書く
1. esc(エスケープキー)を押して，コマンドモードにする
1. `:wq`の順番に打つ
    - 普通のターミナルの画面に戻る

補足：　wが内容を保存，qがvimから出るを意味する

その他の便利なコマンドは[このページ](https://qiita.com/hide/items/5bfe5b322872c61a6896)を参考にする．


#### 左下が -- INSERT --となっていれば，インサートモード


## ターミナルの見方
```
taro@taro-MacBook-Pro ~ % 
```
taroはユーザー名，@のあとはコンピューター名　〜はホームディレクトリであることを意味する．

#### PATHについて
ファイルはディレクトリの配下に存在しており，ディレクトリはツリー構造になっている．
```
programing
├── images
└── src
    ├── main.py
    └── network.py
```
 `pwd`で現在いるPATHを確認可能
```
taro@taroMacBook-Pro src % pwd
/Users/taro/programing/src
```

PATHには
- 絶対PATH ：rootから全てを書く ex)`/Users/soichiro/programing/src`
- 相対PATH :現在の位置から書く　ex) `../images/hoge.png`
    - `../`は1つ前の階層を意味する

また特別に
- `~/`：ホームディレクトリ
- `./`：現在いるディレクトリ

を意味する．

なので，

- どのディレクトリにいようと`cd ~/Documents/◯◯`としたら ホームディレクトリからのパスを書けば良い

- `cd ./src/images/◯◯`のときは現在ディレクトリからのパスを書けば良い

- 絶対パスはrootの`/`から書かなきゃいけない．`cd /Users/Taro/app/scripts/main.py`みたいに長くなる

#### 余談
`python`や`vim`, `cd`というコマンドにも，コマンドを定義するファイルが存在している．

- `where cd`と打ち込むと`cd`というコマンドが定義されているファイルまでのPATHを確認できる
```
taro@taroMacBook-Pro ~ % where cd
cd: shell built-in command
/usr/bin/cd
```
ちなみに中身はshellスクリプトだったり，16進数で書かれていたり，，，

```
taro@taroMacBook-Pro ~ % cat /usr/bin/cd
#!/bin/sh
# $FreeBSD$
# This file is in the public domain.
builtin `echo ${0##*/} | tr \[:upper:] \[:lower:]` ${1+"$@"}
```

#### 余談2
コンパイラやコマンドをダウンロードしたのに，コマンドが使えず下記のような表示になることがある．
```
taro@taroMacBook-Pro ~ % python
zsh: command not found: python
```
本当にダウンロードをしたのに，このような表示になった場合には環境変数に定義されているPATHを確認すると良い．

ターミナルにコマンドを打って使えているのは，コマンドが定義されているファイルをコンピュータが探してくれているからである．

`echo $PATH`を確認してみる．
ちなみに$PATHなどは環境変数という．`env`というコマンドで設定されている環境変数を確認可能

```
taro@taroMacBook-Pro ~ % echo $PATH
/Users/taro/.local/bin:/usr/local/opt/tcl-tk/bin:/Users/taro/.pyenv/shims:/opt/homebrew/bin:/opt/homebrew/sbin/Library/Apple/usr/bin:/Library/TeX/texbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/soichiro/.cargo/bin:/Applications/iTerm.app/Contents/Resources/utilities
```
このような表示になっており，これに表示されるPATHをコンピュータは探索している．
ここにPATHが追加されていないなら，探索されないので利用できない．
つまり利用したいコマンドがあるなら，この環境変数にPATHを追加する必要がある．

(一応追加の手順)

1. ホームディレクトリに`.zshrc`というファイルを作成する．
    - `touch ~/.zshrc`
2. `.zshrc`に`export PATH="[追加したいPATH]:$PATH"` を入力する
    - ex) `export PATH="/Library/TeX/texbin:$PATH"`
3. 保存して，`source ~/.zshrc`

これでPATHが追加される．