株式会社TECH LUCKという会社で代表兼エンジニアをしている齊藤です。
DXプロジェクト、開発プロジェクト、Rails開発などでお困りごとがありましたら弊社HPからご相談をいただけますと幸いです。
以下のような問題に対応することが可能です。
- プロジェクトでRailsエンジニアが足りなくて困っている
- Railsのバージョンアップをしたいがノウハウ・リソースが足りなくて困っている
- オフショア開発をしているが、要件の齟齬やコード品質が悪いので改善したい
また、Railsエンジニアも募集しておりますので、興味がありましたら弊社HPからご連絡いただけますと幸いです。
前提
自分のローカル環境のPCでの作業では、実際にGUIでグラフィカルにファイルやディレクトリをいじることができます。
しかし、sshでログインしているサーバーではそうはいかず、CLI(ターミナル)だけでファイルやディレクトリを編集しなければならないこともあります。
本記事では、サーバーで何かする際によく使うと思われるコマンドを紹介します。
コマンド一覧
cat コマンド
ファイルの中身を表示するコマンド。
cat test.html #test.htmlの中身を表示する
cat -n test.html #test.htmlの中身を行番号と一緒に表示する
find コマンド:ターミナル
ファイルを検索するコマンド。
これはデフォルトで指定したファイル以下をすべて検索してくれます。
ファイルの読み込み権限がない場合は末尾にpermission denied
と表示されるので、これがでた場合にはsudo
をつけて実行しましょう。
find ディレクトリ 検索条件 アクション #このような形になっています
検索条件
find ディレクトリ -name "文字列" アクション #ディレクトリ以下から文字列にマッチするファイルを検索する
find ディレクトリ -name "文字列" アクション #ディレクトリ以下から大文字、小文字を区別せずに文字列にマッチするフィイルを検索する
find ディレクトリ -type d #ディレクトリを探し出す
find ディレクトリ -type f #ファイルを探し出す
アクション
find ディレクトリ 検索条件 -print #検索ファイルを表示する
find ディレクトリ 検索条件 -ls #検索ファイルを詳しく表示する)
実際に使ってみる
find . -type f -print #カレントディレクトリ以下のファイルを全て表示する
find . -type d -print #カレントディレクトリ以下のディレクトリをすべて表示する
find . −name "hoge" −print -type f #カレントディレクトリ以下から、hogeという文字列が含まれるファイルを検索して表示する
grep コマンド
ファイル内から指定した文字に一致する内容を含む行を検索する。
grep オプション 検索文字列 ディレクトリ名 #このような形になっています。
オプション
grep -r #指定したディレクトリ以下をたどって検索する
grep -i #大文字小文字を区別せずに検索する
grep -l #検索した文字列が含まれているファイル名のみを表示する
grep -n #検索した文字列が書いてある行番号を表示する。-lオプションと併用することはできない
grep -e #複数の検索条件を指定する
grep -v #パターンに一致しない行を表示する
実際に使ってみる
grep "hoge" *.html #拡張子がhtmlのファイルからhogeを検索
grep -n "hoge" text.html #test.htmlよりhogeを検索して行番号をつけて行を表示する)
grep -ir "hoge" . #カレントディレクトリ以下のすべてのファイルからhogeという文字列が含まれている行を表示する
ps コマンド
起動しているプロセスを表示するコマンド。
ps aux #起動しているすべてのプロセスを表示する
ps aux | grep hoge #上記のgrepコマンドと組み合わせて、psコマンドで検索したプロセスでhogeという文字が含まれるプロセスだけを表示する
ps aux | grep hoge | grep -v grep #上記のコマンドで、grepコマンド以外のプロセスでhogeが含まれるプロセスだけを表示する
ps --pid PID #特定のPIDだけを表示する
詳しい使い方などは以下のqiita記事を参考にしてみてください。
psコマンドまとめ
killコマンド
プロセスを終了させるコマンド。
kill PID #さきほど表示したpsコマンドで表示したプロセスを終了させる
kill -9 PID #プロセスIDのプロセスの強制終了させる
tail コマンド
ファイルの末尾を表示するコマンド。
tail -n 10 test.log #test.logというファイルを末尾から10行目までを表示する
tail -f test.log #test.logの内容を常に監視して表示を更新する
chown コマンド
ディレクトリやファイルの所有権を変えるコマンド。
chown testuser /usr/local/var/test.html #/usr/test.htmlのファイルの所有権をtestuserに変更する
chown -r testuser /usr/local/var #/usr/local/var以下のファイルの所有権をすべてtestuserに変更する
uname コマンド
システムの情報やバージョンなどを表示するコマンド。
uname -a #システムのすべての情報やバージョンを表示する
uname -n #ホスト名を表示する
uname -m #PCの種類を出力する
uname -r #OSのリリース番号を出力する
uname -s #OSの名称を出力する
uname -v #OSのバージョンを出力する
ln コマンド
ファイルやディレクトリへのリンクファイルを作成する。
ln file-a file-b #file-aのハードリンクfile-bを作成する
ln -s file-a file-b #file-aのシンボリックリンクのfile-bを作成する
ln -f ~~~ #すでにリンクが張られているリンクを上書きする
ln -v ~~~ #リンク作成前にファイル名を表示する
ハードリンク
あるファイルと全く同じ(別名だけどファイルの情報や中身まですべてが同じ)ファイルを別の場所に作ります。
参照元のファイルの情報(所有権でもファイルの中身でも)を変えたら、それに応じてリンクファイルの内容も変わり、その逆もまた同じことが起きます。
シンボリックリンク
シンボリックリンクは参照元と参照先の区別がはっきり存在します。
シンボリックリンクは参照先が存在しなくてもエラーにはなりません。
chown コマンド
そのファイルの所有権を決める
chown testuser test.html #test.htmlの所有者をtestuserに変更する
chown -R testuser test.html #test.htmlのディレクトリ以下のすべてのファイルとディレクトリの所有者をtestuserに変更する
chmod コマンド
そのファイルやディレクトリにに対して誰がどのような権限があるかを決める
chmod u+x test #testファイルにユーザーの実行の権限を与える
chmod u-r /usr/local/test #/usr/local/testファイルのユーザーの読み込み権限を取り去る
chmod -R g+w /usr/local #/usr/local以下の全てのファイルに対してグループの書き込み権限を与える
chmod -R 755 test #testディレクトリ以下のすべてのファイルとディレクトリにユーザーrwx/グループrx/その他rxの権限を与える
権限の見方
表示 | 意味 |
---|---|
-rw-r--r-- | 読み出し可能なファイル。所有者だけが書き込み可能 |
-rwx------ | 実行可能なファイル。所有者以外のアクセスはすべて不可 |
-rwxrwxrwx | すべてのユーザーが,すべての操作を行える |
-rwxrwxr-x | 所有者とグループ・ユーザーのみ書き込み可能 |
-rwsrwxr-x | ファイルを実行する際,所有者の権限で実行する |
-rwxrwsr-x | ファイルを実行する際,グループの権限で実行する |
-rwTrw-rw- | 全てのユーザーがファイルの変更はできるが,削除やファイル名の変更は所有者のみが行えるファイル |
drwxr-xr-x | ディレクトリ。他のユーザーは書き込み不可 |
drwx------ | プライベートなディレクトリ |
drwxrwxrwt | すべてのユーザーがディレクトリ内のファイルを作成・変更できるが,削除やファイル名変更は所有者のみが行えるディレクトリ |
lrwxrwxrwx | シンボリック・リンク。パーミッションはリンク先のものを引き継ぐ |
記号 | 意味 |
---|---|
r | 読み出し可能。マイナス(-)の場合は読み出し不可 |
w | 書き込み可能。マイナス(-)の場合は書き込み不可 |
x | 実行可能。マイナス(-)の場合は実行不可 |
t | ディレクトリへのスティッキ・ビット。所有者のみがディレクトリ内のファイル名の変更,削除を行える |
T | ファイルへのスティッキ・ビット。所有者のみがファイル名の変更,削除を行える |
s | セットID。その他のユーザーがファイルを実行する際,所有者またはグループの権限で実行する |
権限 | 数字 |
---|---|
rwx | 7(=4+2+1) |
rw- | 6(=4+2) |
r-x | 5(=4+1) |
-wx | 3(=2+1) |
r-- | 4 |
-w- | 2 |
--x | 1 |
--- | 0 |