最初のよくわからない時期よく使ったなぁと思うコマンドをまとめたもの
前提はMac,Linux(CentOS7)
Linux編(というかUNIX系?)
ディレクトリを移動する(cd)
Windowsならエクスプローラーあるし、Macならファインダーがあるけど、
CUIに慣れる意味で、ファイルを探す際もCUIで行うといい。
慣れるとこっちの方が早いし楽。
# 文法
cd 移動先ディレクトリ
# 一個下のsubディレクトリに潜る
cd ./sub
# 一個上のディレクトリに戻る
cd ../
# 繋げて書けばどこまででも潜れる
cd ./sub/sub2/sub3
ディレクトリ内のファイル・ディレクトリを確認する(ls)
cd
で移動したはいいけど、今自分はどこにいて、ここには何があるのか?
現状把握は重要だ。何事においても。
# 文法も何も...これだけ
ls
# -lを使うとちょっと見やすくなる
ls -l
# -alとすると隠しファイルも見える
ls -al
# カレントだけでなく、パスさえ指定すれば他のディレクトリも見られる
ls -al ./sub
ファイルを編集する(vi)
サーバーのファイルを編集したいんだけど、ローカルのファイルと違って、
どう編集すればいいのかわからない!初心者あるある。
そういう時はvi
を使う。指定したファイルが存在しない場合は、新規作成になる。
開いたら上書きしたり、閉じたりの操作が必要になるけどそれはvi
で調べるの推奨。
# 文法
vi 編集したいファイル
# hoge.txtを開く例、ない場合はhoge.txtができる
vi hoge.txt
ファイルを閲覧する(less)
vi
でもファイル開けるし、見られるんだけど、本来の用途は編集だし、
間違って編集してしまっても怖い。なので閲覧には見るだけのコマンドを使う
# 文法
less 閲覧したいファイル
# hoge.txtを開く例
less hoge.txt
# +Fオプションをつけると、hoge.txtを開いてる途中で編集された内容も閲覧できる
less +F hoge.txt
ファイルをコピーする(cp)
ファイルを編集したいけど、元のファイルもバックアップとして残しておこう。
そんな時によく使う。
別名としてコピーしたり、そのままの名前で違うディレクトリにコピーしたり、
あるいは同じ拡張子のファイルをまとめて違うディレクトリにコピーしたり、
コピーだけでも色々できる。
# 文法
cp ファイル名
# hoge.txtをカレントにhoge.txt.orgとしてコピーする
cp hoge.txt hoge.txt.org
# カレントにsubディレクトリを作って、subディレクトリ内にhoge.txtをコピー
mkdir sub
cp hoge.txt ./sub
# カレントのtxt拡張子のファイルを全てsubディレクトリ内にコピー
cp *.txt ./sub
# ディレクトリ丸ごとコピー、中に入ってるファイルもコピーする
cp -R ./sub ./sub2
ファイルを移動・リネームする(mv)
移動とリネームは同じコマンド。
コピーと違って、元のファイルはなくなり、場所が変わったり、名前が変わったりする。
破壊的なコマンドなので、cpよりも注意が必要
# 文法
mv 変更前のファイル名 変更後のファイル名
# hoge.txtをfuga.txtにリネームする場合
mv hoge.txt fuga.txt
# hoge.txtをsubディレクトリに移動する場合
mv hoge.txt ./sub/hoge.txt
# まとめて移動もできる
mv *.txt ./sub
ファイルを削除する(rm)
一時的に使ったファイルは片付ける。
それがマナー。サーバーに不要なファイルをそのままにしておいてはいけない。
そんな時は削除コマンド。
キャッシュの削除なんかにもよく使う。
しかし、mvなんかと違って、打ったら跡形もなく消えてしまうので、さらに注意が必要
ファイルだけではなく、ディレクトリももちろん削除できる
# 文法
rm ファイル名
# hoge.txtを削除する
rm hoge.txt
# subディレクトリを削除する
rm -r ./sub
ファイルを新規作成する(touch)
vi
でもできるけど空のファイルを作りたいだけなのに一々編集が開くのは面倒。
というわけで、新規にファイルを作りたいだけならtouch
を使う。
# 文法
touch ファイル名
# hoge.txtを新規作成する、既にファイルがある場合は作成されず、元のファイルがそのまま
touch hoge.txt
ファイルの権限を変更する(chmod)
たまに出るPermission Denied系のエラーの時とかに使ってる
tmp以下のlogファイルに書き込もうとしてるけど権限ないから書き込めないよ!
とかがよくある。具体的な権限については割愛
# 文法
chmod 権限 ファイル名
# hoge.txtの権限を変更する
chmod 755 hoge.txt
# subディレクトリ内の全てのディレクトリ、ファイルの権限を変更する
chmod -R 755 ./sub
ファイルの所有者・グループを変更する(chown)
ファイル・ディレクトリの所有者を変更したい時に使う。
ファイルの出力先の所有者をapacheに変更したりとか。
# 文法
chown 所有者 ファイルorディレクトリ名
chown 所有者:グループ名 ファイルorディレクトリ名
# hoge.txtの所有者をapacheに変更する
chown apache hoge.txt
# hoge.txtの所有者をapache、グループをapacheに変更する
chown apache:apache hoge.txt
# subディレクトリ以下のファイルやディレクトリの所有者をapache、グループをapacheに変更する
chown -R apache:apache ./sub
ファイルを検索する(find)
あのファイル探してるんだけどどこにあるのかわからない。
よしコマンド打って探してみよう。
# 文法
find 検索したいディレクトリ -name ファイル名
# subディレクトリ以下のディレクトリからhoge.txtを検索する
find ./sub -name hoge.txt
# カレントディレクトリ以下からcsv拡張子のファイルを検索する
find . -name *.csv
# 更新日からファイルを見つける
## 更新日が10日以内
find . -mtime -10
## 10以上前
find . -mtime +10
## ちょうど10日前
find . -mtime 10
絞り込みをしたい(grep)
コマンドの実行結果を絞り込みしたい時に使えるコマンド。
皆大好きgrep
# 文法
コマンド | grep 絞り込みワード
# ls結果を201809というワードで絞り込み
ls -al | grep 201809
過去に打ったコマンドを見たい(history)
過去にこだわらない男はかっこいいが、ちょっとは気にした方が少し陰があってかっこいい。
そう思わないですか?
# 文法も何もこれだけ
history
# grepと一緒に使えば、指定のワードだけ入った履歴を抜き出せたりもする。
history | grep mysql
サーバーに入る(ssh)
基本のき。サーバー入ってごにょごにょは毎日のようにする。
test_userの部分はサーバーに入るユーザー
@以降はホスト名と呼ばれる部分で、サーバーのIPアドレスもしくはドメイン
-i ではサーバーに設定されている公開鍵に対応する秘密鍵
-p ではポート番号を指定
# 文法
ssh ユーザー名@ホスト名 オプション
# 実例
ssh test_user@192.168.33.5
# 秘密鍵を指定する場合
ssh test_user@192.168.33.5 -i example.key
# 名前解決できればもちろん下記でもいける
ssh test_user@example.com -i example.key
# SSHのポートを22から変更している場合は
ssh test_user@example.com -i example.key -p 2222
ただこれを毎回指定するのは怠いので、設定ファイルに書くと良い
# .ssh/configを開く
sudo vi ~/.ssh/config
Host example.com
HostName 192.168.33.5
User test_user
Port 2222
IdentityFile /.ssh/example.key(鍵が置いてあるPath)
# これだけでSSH接続できる
ssh example.com
サーバーにファイルをあげる、あるいは落としてくる(scp)
サーバーになんかあげたり、落としてくる操作は割とやるので、覚えておくと便利。
ちなみに.ssh/configに設定を書いておくと、Hostを指定するだけでscpできる。
-P はポート番号
-i は秘密鍵
サーバー側に繋ぐ場合は、ssh同様、ユーザー名@ホスト名
サーバー側ディレクトリの指定は、ホスト名:
以降にパスを書く
# 文法
scp ファイルパス ファイルのコピー先
# ローカルのカレントにあるhoge.txtをサーバーの/tmpにあげる例
scp -P 2222 -i example.key ./hoge.txt test_user@192.168.33.5:/tmp
# あるいはローカルのカレントにサーバー側の/tmp/hoge.txtを落とす例
scp -P 2222 test_user@192.168.33.5:/tmp/hoge.txt ./
# .ssh/configを設定していればこうもかける
scp ./hoge.txt example.com:/tmp
scp example.com:/tmp/hoge.txt ./
Apache編
詳しくないし特にない。
MySQL編
SQL文というより、ローカルからリモートに接続したり、
mysqlで入らなくてもMySQLを操作したり、ddl流したりという所が主題。
-uと-pの後はスペース空けないとこがポイント。
MySQLにログイン
一応念の為これぐらいは。
# 文法
mysql -u ユーザー名 -p DB名 -h ホスト名
# mysqlにtest_userでパスワード有りで、ログインしますよの例
mysql -u test_user -p
# ちなみにこうするとpasswordを聞かれずにログインできるが、コマンド履歴に残る
mysql -utest_user -ppassword
# ローカルからリモートのmysqlに接続する場合
mysql -utest_user -ppassword testdb -h 192.168.33.5
# あるいはホスト名でも可能
mysql -utest_user -ppassword testdb -h example.com
SQLを直接流す
毎回毎回mysql -u user -p
でログインするのも結構面倒。
なので直接実行できると便利だなぁ。できます。
# testdbにusersテーブルがある場合、下記のように直接SQLを実行可能
mysql -utest_user -ppassword testdb -h example.com -e 'SELECT * FROM users'
# SQLファイルを流すこともできる
mysql -utest_user -ppassword testdb -h example.com < insert_users.sql
バックアップを取る(mysqldump)
作業前にバックアップは取っとこうの巻き。
既存のレコードに変更を加えるのはほんと怖い。
# testdbを丸ごとバックアップ
mysqldump -utest_user -ppassword testdb > dump_testdb.sql
# testdbのusersテーブルをバックアップ
mysqldump -utest_user -ppassword testdb users > dump_testdb_users.sql
# testdbのusersテーブルのレコードのみをバックアップ
mysqldump -t -utest_user -ppassword testdb users > dump_testdb_users_records.sql
PHP編
面倒なのでまとめる
# バージョン確認
php -v
# PHPのモジュール確認
php -m
# grepすると目的のものが入ってるかわかりやすい
php -m | grep intl
# コマンドラインからPHPの実行
php -r 'echo "Hello World!";'
# PHPを対話式で実行する。あとはecho 'Hello World';とか打ったら実行される
# ctrl + c か exitとコマンドすると抜けられる
php -a
# phpinfo()とかするのが面倒なので、代わりに使ったり?
php -i
# php -mと同様にgrepすると便利
php -i | grep php
その他
追加したくなったら更新予定。
ApacheだとVirtualHostとかhttpd.confとか.htaccessとか周りが、
初心者的に躓きの連続だったので、そのうちちゃんとまとめたい。
間違ってたり、他にもこういういいのあるよーとかあれば教えていただければ幸いです。