phpを書き始めるとコマンドラインを使うことが増えてきたので、自分用アンチョコとしてまとめることにしました。まるっきり初心者です。
使いそうと思ったものは都度更新していくつもりです。
cd 移動コマンド
移動コマンド、cd(カレントディレクトリ)のみ入力すればホームディレクトリに移動、もしくはcd ~/
基本、相対パスの書き方と同じようです。
#file/testフォルダへ移動
$ cd file/test/
一つ上の階層のファイルに移動する
$ cd ..
ls 表示コマンド
カレントディレクトリにあるファイルやディレクトリを表示する。移動した後は確認の為よく使います。
$ ls
オプション
-a:隠しファイルも含めファイルやディレクトリを全て表示する
$ ls -a
-l:ファイルやディレクトリの詳細も同時に表示する、パーミッションや更新日時も確認できます
rwx表示です
$ ls -l
-la:隠しファイルを含む全てのファイルやディレクトリの詳細を表示する
$ ls -la
pwd 現在のパスを表示コマンド
現在いる場所のパスを表示する、パスの指定をしたい時便利
$ pwd
touch ファイル作成コマンド
$ touch ファイル名.拡張子
複数のファイルを一度に作成
$ touch sample.text sample.js sample.css
連番でファイル作成
$touch file{1..6}.html
cp コピーコマンド
cp:ファイルをコピー
$ cp 「コピー元ファイル」 「コピー先ファイル」
#test.txtを相対パスでfile/というディレクトリの中にtest2.txtとしてコピーする
$ cp test.txt file/test2.txt
複数ファイルコピー
$ cp 「コピー元その1」 「コピー元その2」 「コピー先のディレクトリ名」
-r オプション:ディレクトリごとコピー
#fileというディレクトリとその中身をfile2にそっくりコピーする
$ cp −r file file2/
mv ファイル移動・名前変更コマンド
$ mv 「移動したいファイル」 「移動先のディレクトリ」
$ mv test.txt file/
ファイル名を変えるのもmvコマンド、ただし全角、スペースが入っていると変換できないので注意
test.txtというファイルをtest2.txtに名前変更する
$ mv test.txt test2.txt
mkdir ディレクトリを生成する
#fileというディレクトリを作る
$ mkdir file
unzip zip解凍
大容量の圧縮データはコマンドラインで解凍した方が早いらしいので、意外と用途があるかもしれません。
$ unzip test.zip
zip zip圧縮
$ zip -r 「圧縮時のファイル名」 「圧縮したいフォルダ名」
$ zip -r testdir.zip testdir/
rm ファイルを削除
$ rm text.txt
複数のファイルを削除
$ rm text2.txt text3.txt
rmdir ディレクトリを削除
$ rmdir folder
ただし、ディレクトリ内にリードオンリーのファイルなどがあると以下のようなメッセージが表示される。
「rmdir: `file' を削除できません: ディレクトリは空ではありません」
-fオプションを付けると強制的に削除できる
$ rm -rf file
サーバに不明なファイルが置かれた時、FTPで削除できなくてコマンドラインで削除できたので助かりました
XサーバにてSSH接続
「SSH」は「Secure Shell」の略称で、この技術を使うとサーバーとの通信が暗号化できます。
サーバ側で秘密鍵を発行してパスフレーズを設定。
鍵はDLしてローカルに保存。
Users/username/.ssh/鍵のファイル名
.sshは隠しフォルダなので「コマンド+shift+.」で表示させる。
その際chmodコマンドで権限も変更しておく
chmod パーミッションを変更
アクセス権限の使用頻度多いです。
フォルダは700 秘密鍵は600
$ chmod 700 Users/username/.ssh$ chmod 600 Users/username/.ssh/秘密鍵
-R:オプションとして対象がフォルダの時は、-Rを入力するとフォルダ内のフォルダ、ファイル全てのパーミッションを変更することが可能です。これは重宝します。
$ chmod -R 777 Sample
ssh サーバ接続
以下、Xサーバでの接続です。ポート番号が10022がミソ
$ ssh -l サーバーID -i 秘密鍵パスとファイル名 ホスト名(svXXXX.xsrv.jp) -p 10022
この後パスフレーズを要求されるので鍵用パスワードを入力します。
configファイルで接続を簡略
.sshにconfigファイルを作成しておくと接続が楽になります。
Host short #任意の名前
HostName サーバーID.xsrv.jp
Port 10022
User サーバーID
IdentityFile ~/.ssh/秘密鍵のファイル名
ServerAliveInterval 60 #sshの自動切断を防ぐために記述
以下のようにHostで付けた名前で入力すると接続できます
$ ssh short
※サーバに接続して終了するには必ずexitもしくはlogoutのコマンドで終わらせる
SCPコマンド(ファイルアップロード・ダウンロード)
scp ファイルアップロード
$ scp -i 鍵のファイルパス -P ポート番号 アップ元ファイルパス ユーザー名@ホスト名(もしくはIP):アップ先ファイルパス
$ scp -i /Users/username/.ssh/key -P 10022 /Users/username/Desktop/sample.png username@サーバー.xsrv.jp:/home/****/****/sample.png
ポート番号指定オプションについて
SSHコマンドでは小文字で「-p」となり、
SCPコマンドでは大文字で「-P」となります。間違えるとエラー。
ローカルから接続する
sshでサーバに接続した後、そのままscpでアップしようとすると秘密鍵が無いと出てアップロードできない。
よくよく考えてみると秘密鍵があるのはローカル環境。
ということはローカルに戻ってアクセスすれば出来るのでは?
exitしてscpコマンド打ち込んで、アップロード成功しました。
でもこのままじゃサーバ内のファイルを確認できない。いちいちサーバにアクセスする?それとも何かコマンドが?
何のことない、ウィンドウをローカルとサーバの2つを開き、それぞれ作業すれば済むことでした。恥ずかしい話、アップロードが出来なくて2日程悩みました。
SCP ダウンロード
ダウンロードはファイルを入れ替えるだけ
$ scp -i 鍵のファイルパス -P ポート番号 ユーザー名@ホスト名(もしくはIP):DLしたいファイル DLを置きたいファイルパス
$ scp -i /Users/username/.ssh/key -P 10022 username@サーバー.xsrv.jp:/home/****/****/sample.png /Users/username/Desktop/sample.png
フォルダごとの場合
-rオプションを使用
DLも同じ
$ scp -i /Users/username/.ssh/key -P 10022 -r /Users/username/Desktop/sample/ username@サーバー.xsrv.jp:/home/****/****/sample/
※ アップロードしたいフォルダの末尾にはアップ元にもアップ先にも末尾スラッシュを指定する。
下記のサイトを参考にさせて貰いました。
https://original-game.com/mac-terminal-command/
https://techtech-note.com/1559/