Myターミナルコマンド一覧(Mac環境)

phpを書き始めるとコマンドラインを使うことが増えてきたので、自分用アンチョコとしてまとめることにしました。まるっきり初心者です。<br>使いそうと思ったものは都度更新していくつもりです。<br>
## cd 移動コマンド
移動コマンド、cd(カレントディレクトリ)のみ入力すればホームディレクトリに移動、もしくはcd ~/
基本、相対パスの書き方と同じようです。
<pre><code>#file/testフォルダへ移動
$ cd file/test/ </code></pre>
一つ上の階層のファイルに移動する
<pre><code>$ cd .. </code></pre>

## ls 表示コマンド
カレントディレクトリにあるファイルやディレクトリを表示する。移動した後は確認の為よく使います。
<pre><code>$ ls</code></pre>
オプション
<b>-a</b>：隠しファイルも含めファイルやディレクトリを全て表示する
<pre><code>$ ls -a</code></pre>
<b>-l</b>：ファイルやディレクトリの詳細も同時に表示する、パーミッションや更新日時も確認できます<br>rwx表示です
<pre><code>$ ls -l</code></pre>
<br>
<b>-la</b>：隠しファイルを含む全てのファイルやディレクトリの詳細を表示する
<pre><code>$ ls -la</code></pre>


## pwd 現在のパスを表示コマンド
現在いる場所のパスを表示する、パスの指定をしたい時便利
<pre><code>$ pwd</code></pre>


## touch ファイル作成コマンド
<pre><code>$ touch ファイル名.拡張子</code></pre>
複数のファイルを一度に作成
<pre><code>$ touch sample.text sample.js sample.css</code></pre>
連番でファイル作成
<pre><code>$touch file{1..6}.html</code></pre>


## cp コピーコマンド
cp：ファイルをコピー
$ cp 「コピー元ファイル」 「コピー先ファイル」
<pre><code>#test.txtを相対パスでfile/というディレクトリの中にtest2.txtとしてコピーする
$ cp test.txt file/test2.txt</code></pre>
複数ファイルコピー
$ cp 「コピー元その1」 「コピー元その2」 「コピー先のディレクトリ名」
<b>-r</b> オプション：<b>ディレクトリごと</b>コピー
<pre><code>#fileというディレクトリとその中身をfile2にそっくりコピーする
$ cp −r file file2/</code></pre>

## mv ファイル移動・名前変更コマンド
$ mv 「移動したいファイル」 「移動先のディレクトリ」
<pre><code>$ mv test.txt file/</code></pre>
ファイル名を変えるのもmvコマンド、ただし全角、スペースが入っていると変換できないので注意<br>test.txtというファイルをtest2.txtに名前変更する
<pre><code>$ mv test.txt test2.txt</code></pre>

## mkdir ディレクトリを生成する
<pre><code>#fileというディレクトリを作る
$ mkdir file</code></pre>

## unzip zip解凍
大容量の圧縮データはコマンドラインで解凍した方が早いらしいので、意外と用途があるかもしれません。
<pre><code>$ unzip test.zip</code></pre>

## zip zip圧縮
$ zip -r 「圧縮時のファイル名」 「圧縮したいフォルダ名」
<pre><code>$ zip -r testdir.zip testdir/</code></pre>

## rm ファイルを削除
<pre><code>$ rm text.txt</code></pre>
複数のファイルを削除
<pre><code>$ rm text2.txt text3.txt</code></pre>

## rmdir ディレクトリを削除
<pre><code>$ rmdir folder</code></pre>
ただし、ディレクトリ内にリードオンリーのファイルなどがあると以下のようなメッセージが表示される。<br>
「rmdir: `file' を削除できません: ディレクトリは空ではありません」<br>
<b>-fオプションを付けると強制的に削除できる</b>
<pre><code>$ rm -rf file</code></pre>
サーバに不明なファイルが置かれた時、FTPで削除できなくてコマンドラインで削除できたので助かりました
<br>

# XサーバにてSSH接続
「SSH」は「Secure Shell」の略称で、この技術を使うとサーバーとの通信が暗号化できます。
サーバ側で秘密鍵を発行してパスフレーズを設定。<br>
鍵はDLしてローカルに保存。<br>Users/username/.ssh/鍵のファイル名<br>
.sshは隠しフォルダなので「コマンド＋shift＋.」で表示させる。<br>その際chmodコマンドで権限も変更しておく
## chmod パーミッションを変更
アクセス権限の使用頻度多いです。
フォルダは700 秘密鍵は600
<pre><code>$ chmod 700 Users/username/.ssh<br>$ chmod 600 Users/username/.ssh/秘密鍵</code></pre>
<b>-R</b>：オプションとして対象がフォルダの時は、<b>-R</b>を入力するとフォルダ内のフォルダ、ファイル全てのパーミッションを変更することが可能です。これは重宝します。
<pre><code>$ chmod -R 777 Sample</code></pre>
## ssh サーバ接続
以下、<b>Xサーバでの接続</b>です。ポート番号が10022がミソ
<pre><code>$ ssh -l サーバーID -i 秘密鍵パスとファイル名 ホスト名(svXXXX.xsrv.jp) -p 10022</code></pre>
この後パスフレーズを要求されるので鍵用パスワードを入力します。
### configファイルで接続を簡略
.sshにconfigファイルを作成しておくと接続が楽になります。
<pre><cpde>Host short #任意の名前
HostName サーバーID.xsrv.jp
Port 10022
User サーバーID
IdentityFile ~/.ssh/秘密鍵のファイル名
ServerAliveInterval 60 #sshの自動切断を防ぐために記述</cpde></pre>
以下のようにHostで付けた名前で入力すると接続できます
<pre><code>$ ssh short</code></pre>
※サーバに接続して終了するには必ず<b>exit</b>もしくは<b>logout</b>のコマンドで終わらせる
## SCPコマンド(ファイルアップロード・ダウンロード)
### scp ファイルアップロード
$ scp -i 鍵のファイルパス -P ポート番号 アップ元ファイルパス ユーザー名@ホスト名(もしくはIP):アップ先ファイルパス
<pre><code>$ scp -i /Users/username/.ssh/key -P 10022 /Users/username/Desktop/sample.png username@サーバー.xsrv.jp:/home/****/****/sample.png</code></pre>
<b>ポート番号指定オプションについて</b>
SSHコマンドでは小文字で「-p」となり、
SCPコマンドでは大文字で「-P」となります。間違えるとエラー。<br>
<b>ローカルから接続する</b>
sshでサーバに接続した後、そのままscpでアップしようとすると秘密鍵が無いと出てアップロードできない。
![nofile.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641189/cd062561-9a83-b7b1-a444-05744afb3678.png)
よくよく考えてみると秘密鍵があるのはローカル環境。<br>
ということはローカルに戻ってアクセスすれば出来るのでは?<br>
exitしてscpコマンド打ち込んで、アップロード成功しました。<br>でもこのままじゃサーバ内のファイルを確認できない。いちいちサーバにアクセスする?それとも何かコマンドが?<br>
何のことない、ウィンドウをローカルとサーバの2つを開き、それぞれ作業すれば済むことでした。恥ずかしい話、アップロードが出来なくて2日程悩みました。
## SCP ダウンロード
ダウンロードはファイルを入れ替えるだけ<br>
$ scp -i 鍵のファイルパス -P ポート番号 ユーザー名@ホスト名(もしくはIP):DLしたいファイル DLを置きたいファイルパス
<pre><code>$ scp -i /Users/username/.ssh/key -P 10022 username@サーバー.xsrv.jp:/home/****/****/sample.png　/Users/username/Desktop/sample.png</code></pre>
### フォルダごとの場合
<b>-r</b>オプションを使用<br>DLも同じ
<pre><code>$ scp -i /Users/username/.ssh/key -P 10022 -r /Users/username/Desktop/sample/ username@サーバー.xsrv.jp:/home/****/****/sample/</code></pre>
※ アップロードしたいフォルダの末尾にはアップ元にもアップ先にも末尾スラッシュを指定する。<br>
下記のサイトを参考にさせて貰いました。
https://original-game.com/mac-terminal-command/
https://techtech-note.com/1559/