ターミナル 入門 おぼえがき

#ターミナルの基本
<img width="603" alt="sakki_—_-bash_—_80×24_と_「ターミナル_入門_まとめ」を編集_-_Qiita.png" src="https://qiita-image-store.s3.amazonaws.com/0/216761/bcaa8550-3bce-e6f4-7776-c209556704d5.png">
##ホスト名:~ ユーザ名$（①）

 - **$**（prompt）
 - **~**（チルダ） = **$Users**（$ HOME）

`sakki:~ sakki$`　ならば......
ホスト名：sakki
ユーザー名：sakki
カレントディレクトリ：/Users/sakki

##echo **$**PATH（②）
「**＄**」から始まる文字は「**後に続く文字列と同じ名前の設定項目の中身を表示する**」という機能。
「＄」がないと、引数はただの文字列として扱われる。
「：」は、区切りを表している。

##ls  **`** pwd **`**（③）
「`」（バッククォート）で文字を囲うと、その文字をコマンドとして実行して、引数に置き換える。

`sakki:~ sakki$`　ならば......
 ls ｀pwd｀ = ls /Users/sakki


## 引数・変数
###引数（argument）
プログラムに渡す文字

###変数（variable）
$PATHのように中身を変更できるもの

###環境変数（environment variable）
最初から設定されている変数
## - オプション
引数で、「**-**（ハイフン）」から始まっているもの

アルファベット一文字だと覚えにくいので、
–(ハイフン)二つから始まる全く同じ機能を持つオプションがある。

 - short name option（例）````$ command -f /tmp/foo````
 - long name option （例）````$ command --file=/tmp/foo````
  - long name optionに文字を渡す場合、空白の代わりに「**=**」を用いる。
 

|オプション|説明|
|----|----|
|````-h```` ````–-help````|そのコマンドの使い方が表示されます|
|````-v```` ````–-version````|そのコマンドのバージョン番号が表示されます|

# コマンド command
````/bin```` (binary)　に入っている基本的なコマンド (プログラム)一覧

|コマンド|説明|
|----|----|
|````ls```` |ファイルやディレクトリの一覧を表示（LiSt）
|````pwd```` |現在いるディレクトリのパスを表示（Print Working Directory）
|````echo````|引数として与えた文字をそのまま画面に表示
|````cd```` |ディレクトリを移動する　（Change Directory）
|````curl```` |引数にURLを指定するとネットから取ってきて表示（Client for URLs）
|````open ````|その名の通り開くコマンド
|````mkdir````　|ディレクトリの作成（MaKe DIRectory）
|````cp```` |ファイルをコピーする（CoPy）|
|````rm```` |ファイルを削除する（ReMove）
|````cat```` |ファイルを表示する （conCATenate）

##コマンドの応用
###`ls`　一覧
````$ls -a```` 
.(ドット)から始まる名前のファイルやディレクトリを表示
###`rm`　削除
````$ rm -r foo````
rオプションを付けるとディレクトリを丸ごと削除してくれる
###`cd`　ディレクトリの移動
````$ cd ../..````
二つ上のディレクトリに移動したい場合
###`cp`　コピー
````$ cp foo /tmp````
fooファイルを/tmpディレクトリにコピー

````$ cp foo bar````
「foo」をコピーした、ファイル名「bar」を作成。

````$ cp -r foo /tmp````
-rオプションを付ければディレクトリを丸ごとコピーできる
###`mv` ファイルの移動
````$ mv foo bar````
「foo」を「bar」に移動。
###`mkdir` ディレクトリの作成
````$ mkdir -p foo/bar/buz````
-pオプションで深い階層を持つディレクトリも一気に作れる。mkdir
###`curl` 引数にURLを指定するとネットから取ってきて表示
````$ curl http://example.com -o foo.html````　
-oオプションにファイル名を渡すと、そのファイル名で保存してくれる。
###`open` 開く
`$ open .`
カレントディレクトリを開く

#基本的なdirectory（フォルダ）一覧
|directory　　 (フォルダ)| 説明 |
|--------------------- |---|
|````/````|ルートディレクトリ。一番上の階層。|
|_````Applications/```` | GUIアプリ置き場|
|__````Users/ ````       | ユーザー毎のディレクトリが置かれる
|___````sakki/````    | ユーザー毎のディレクトリ(人によって違います)
|____````Documents/````  | 書類置き場
|____````Movies/````     | 動画置場
|_````bin/````          | 最低限必要なコマンド置き場
|_````sbin/ ````        | システム管理者が使うコマンド置き場
|_````etc/ ````         | etceteraの略で種々のものという意味。現在は実質設定ファイル置き場に使われてる。
|_````tmp/````          | temporaryの略で一時的なという意味。再起動したら消えちゃってもいいような一時的なファイルの置き場所。
|_````usr/ ````         | userの略。元々は現在のUsersのような用途の為にあったが、システムの起動に必要なもの以外のファイル置き場程度の用途になってしまった。
|__````bin/ ````        | システムの起動に必要でないコマンド置き場
|__````sbin/  ````      | システムの起動に必要でない管理者用コマンド置き場
|__````local/  ````     | このコンピューターのみで使うプログラム置き場 |

#スクリプトの実行や権限のこと
##interpreter（インタプリタ）
shやphpのようにスクリプトを実行する種類のプログラムのこと。

##　`#!`　shebang
ターミナルで実行しようとしたファイルの1行目の最初の二文字が「#!」だった場合、その後に続くコマンドを2行目以降の全てに渡す

##ユーザー・所有者・管理者
`whoami`
自分のユーザー名を表示するコマンド。（Who am I?）
`chmod`
ファイルの権限を変更するコマンド。（Change MODe）
`sudo`
引数に渡したコマンドを管理者権限で実行するコマンド。