周辺知識

Linux コマンド 早見表

2018/11/01

WEBの開発を行っていると、SSHターミナルソフトを使ってLinuxコマンドで操作することがよくあります。

ただ、プログラミングは慣れているけど、Linuxなどのサーバー周りは苦手という人が結構多かったりします。

今回はLaravelプログラマーがよく使うLinuxコマンドをまとめてみました。

 

基本コマンド

sudoコマンド、pwdコマンド、cdコマンド、lsコマンド、mkdirコマンド、rmコマンド、cpコマンド、mvコマンド、chmodコマンド、chownコマンド、lnコマンド

sudo コマンド

スーパーユーザー(rootユーザー)の権限が必要なコマンドをsudoコマンド経由で実行させることができます。

例)「wget」パッケージのインストールを root 権限で実行したい場合


$ sudo yum install wget

POINT!

AWS Cloud9 はベースが Ubuntu(ウブントゥ)なのでインストールする際に必須になります。

 

pwdコマンド

現在自分がいるディレクトリを教えてくれます。


$ pwd
/home/laraweb

 

cdコマンド

他のディレクトリに移動する時に使います。

絶対パスで指定すると、自分がどのディレクトリにいても必ず移動できます。

チェック頭に / をつける事がポイントです。
なお、相対パスでの移動も可能。相対パスで指定する場合は、現在のディレクトリを起点に移動します。

$ pwd
/home/laraweb
$ cd /var/www
$ pwd
/var/www

 
~(チルダ)

~ は特殊な文字列で自分のホームに戻ります。


$ pwd
/home/laraweb/tutorial/app/Http
$ cd ~
$ pwd
/home/laraweb

 

lsコマンド

現在のディレクトリに存在するディレクトリやファイルを表示します。


$ ls
dir1 file.txt

 

mkdirコマンド

ディレクトリを作成します。


$ mkdir { ディレクトリ名 }

 

rmコマンド

ファイルやディレクトリを削除する時に使用します。

ファイルを削除したい場合


$ rm { ファイル名 }

 
ディレクトリを削除したい場合


$ rm -r { ファイル名 }

 
ディレクトリ内部の削除確認メッセージを飛ばす場合


$ rm -rf { ファイル名 }

 

cpコマンド

ファイルをコピーする時に使います。


$ cp { 元ファイル }   { 先ファイル }

チェックLaravel 初期設定のときに .env.example をコピーして.envファイルを作成するときに利用します。

 

mvコマンド

ファイルを移動させます。


$ mv { 移動元 }   { 移動先 }

 
リネームする際にも使用します。

例)file.txt を file_tmp.txt にリネーム


$ mv file.txt file_tmp.txt

 
正規表現も使えます。

例)「file*.txt」(※"file" とつくテキストファイル)を「dir1」へ移動


$ mv file*.txt dir1/

 

chmod コマンド

Linux は Windows よりもファイルやディレクトリの権限が厳しいかったりします。なので、何も考えずにファイルを作成すると見れない場合があります。その際に chmod で権限を与えます。


# 構文
$ chmod { パーミッション } { ファイル名/ディレクトリ名 }
# 例)test01.sh にすべての利用者に対してすべての権限を与える
$ chmod 777 work/test01.sh

 
パーミッションの確認

現在のパーミッションは -l オプションをつけた ls コマンドで見ることができます。


$ ls -l

 
ディレクトリ以下のファイルも全部変更

ディレクトリごとファイルの権限をまとめて変更するときには -R というオプションをつけます。


# dir というディレクトリと、その中身のファイル全ての権限が変更できます
$ chmod -R 777 dir

 

chown コマンド

指定したファイルやディレクトリのユーザー所有権(所有者)やグループ所有権(グループ)を変更します。


# 書式
$ chown -R {所有者名} {ディレクトリ名}

# ユーザー所有権を「root」に変更
$ chown root file

# ユーザー所有権「root」グループ所有権「root」に変更
$ chown root:root file

 

ln コマンド

シンボリックリンクを張るときに使います。そこに存在しないファイルを、存在するように見せたりするコマンドです。デプロイ周りで使われることが多いです。


$ ln -s { リンク元 }   { リンク先 }

 

ファイルを閲覧する

catコマンド、catコマンド&grepコマンド、lessコマンド、tailコマンド、viコマンド

catコマンド

ファイルの内容を全て表示することができます。


$ cat FooController.php 

チェックただし、長いファイルの場合はターミナルを埋め尽くしてしまいます。そのため、catコマンドはファイル閲覧の用途には向いていません。catコマンドはパイプ「|」を使ってgrepコマンドと組み合わせて使うことが多いです。

 
ファイルを作成


$ cat > { 新規ファイル名 } 
Hello,World. #ファイル内容を入力
# Ctrl + Dで終了

 

catコマンド&grepコマンド

catコマンドはパイプ「|」を使ってgrepコマンドと組み合わせて使うことができます。


# sample.txt内の「target」という文字列を含む行を検索して表示
$ cat sample.txt | grep target

 

less コマンド

テキストファイルの中身をターミナル上でスクロールしながら閲覧できるコマンドです。
ファイルを閲覧する場合は通常こちらのコマンドを使います。


$ less routes.php

POINT!
スペース・・・下にスクロール
b・・・上にスクロール
q ・・・lessコマンドを終了

 
「less」と「more」コマンドの違い

「more」はファイル末尾までいくと終了してしまうのに対して、「less」は「q」と入力するまで終了しません。

 

tail コマンド

ファイル末尾たけを表示してくれるコマンドです。
ログファイルの閲覧は通常、このコマンドを使います。


$ tail { ファイル名 }

チェック「-f」オプションを使うことで、ファイル末尾を表示しても終了せずにtailコマンドを起動状態にしておき、ファイル末尾が更新されると追加分を表示するといったように使えます。

 

vi コマンド

vi とは Linux を含む Unix ベースの OS で利用できるテキストエディタのことです。主にファイルを編集する時に使うコマンドです。

チェックvi を立ち上げようとすると vim が立ち上がるケースもあります。vim は vi に少々機能追加したもので、同じものだと思っておいて困ることはありません。

$ vi { ファイル名 }

vi には コマンドモードインサートモード があり、はじめはコマンドモードで起動されます。

 
インサートモードへ変更

キーボードの i(insert)を押すと編集モードに移行します。
(※他の方法でも移行できますが、ここでは割愛します。)

 
コマンドモードへ変更

escキー を押下するとコマンドモードへ戻ります。

 
viを閉じる

[ コマンドモード ] の状態で以下を実行。

:wq 保存して終了
:q! 編集内容を保存したくない場合
チェック保存していない状態では :q コマンドは受け付けられません。保存して終了するか、:q! コマンドで編集内容を破棄します。

 
削除

viコマンドで最もつまづくのが文字の削除です。入力モードのまま、上下左右へのカーソルの移動、delete、BackSpaceなどの文字をしようとすると、想定外の文字が入力されます。

1)「escキー」でコマンドモードへ変更
2)上下左右のカーソル移動後、「x」キーで一文字削除

ファイルの内容を変更するのではなく、閲覧、確認するだけなら次のコマンドを使用します。

cat 保存して終了
more 編集内容を保存したくない場合
less ファイルの内容を表示する。上下カーソルキーでスクロールができる。

 
検索

less や man コマンド内でも利用する標準操作です。コマンドモードで操作します。

キー入力 動作
/<文字列> 文字列を検索する(順方向)
?<文字列> 文字列を検索する(逆方向)
n 順方向へ検索する
n 逆方向へ検索する

 

パッケージ管理

yum では、RPMデータベースやRPMパッケージのリポジトリを使ってパッケージを管理しています。

 
yum install

パッケージをインストールします。

yum install { パッケージ名 }でパッケージをインストールします。


# 「ImageMagick」をインストールする
$ yum install ImageMagick

POINT!

rpm ⇒ 個々のパッケージを扱う
yum ⇒ リポジトリから依存関係を含めて管理

 
yum remove

パッケージをアンインストールします。

yum remove { パッケージ名 }でパッケージをアンインストールします。
アンインストール時に依存関係を考慮して安全に削除します。


# 「ImageMagick」をアンインストールする
$ yum remove ImageMagick

チェック
yum eraseも可。

 
yum update

システムにインストールされたパッケージをアップデートする

システムにインストールしたパッケージを全てアップデートするときは、yumコマンドを使用します。
依存関係や全体の管理などは yum が役割をはたします。


$ yum upate

 

WEBからファイルをダウンロード

 
wget

wget コマンドは、WEBサーバーからコンテンツを取得するためのコマンドです。

wget { ファイルのURL }でWEBサーバーからコンテンツを取得します。


$ wget http://hogemoge.com/example.zip

POINT!

wgetコマンドは CentOS などではデフォルトでインストールされていない場合があります。インストール自体は難しくありませんが、代わりに curl(カール)を使うことができます。

 
curl

curl コマンドも、ファイルをダウンロードしたりアップロードしたりするためのコマンドです。最近のLinuxディストリビューションではデフォルトでインストールされています。

curl { ファイルのURL }でWEBサーバーからコンテンツを取得します。


# composerのインストール
$ curl -sS https://getcomposer.org/installer | php

POINT!

-sSのオプションは「進捗は表示されないけどエラーは表示する」という意味です。

 

バージョンの確認

 
PHP


$ php -v

 
MySQL


$ mysql --version

 

アプリケーションの起動

 
Apache


# Apacheを起動する
$ service httpd start
# Apacheを停止する
$ service httpd stop
# Apacheを再起動する
$ service httpd restart
# Apacheの状態を確認する
$ service httpd status
# サービス(Apache)の自動起動を有効にする
$ chkconfig httpd on

チェックAWSだとsudoをつけて実行します。
sudo service httpd start

 
MySQL


# MySQLの起動
$ service mysqld start
# MySQLの停止
$ service mysqld stop
# MySQLの再起動
$ service mysqld restart
# MySQLの確認
$ service mysqld status
# MySqlの自動起動
$ chkconfig mysqld on

チェックAWSだとsudoをつけて実行します。
sudo service httpd start

 

curl(カール)コマンド

 
基本形

アクセスできたかどうかの確認だけならば、わざわざブラウザを開かずとも黒い画面から curl コマンドだけで確認が可能です。


# 基本形
$ curl http://127.0.0.1:8080/

 
GET や POST を指定する場合


# GET送信
$ curl -X GET http://loclhost:8080/test?name=Taro
# POST送信
$ curl -X POST -d 'name=Taro' http://localhost:8080/test

 

オプションについての解説

-Xは GET や POST を指定します。
-dは POST のデータを指定します。形式は 'value=name' です。

 
HTTPヘッダを指定


$ curl -X POST -H 'Content-Type: application/json' -d '{"name" : [ "Yamada" , "Taro" ] , "Age" : 36 }' http://localhost:8080/

 

H オプションについての解説

HTTP ヘッダを指定します。ユーザエージェントとかリファラとか

 

ファイルの圧縮、解凍コマンド

 
tar.gz


# tar.gz 圧縮
$ tar -zcvf xxxx.tar.gz 圧縮対象ディレクトリ
# tar.gz 解凍
$ tar -zxvf xxxx.tar.gz

 

オプションについての解説

-c 新しいtarファイルを作る(create)
-v 圧縮・解凍状況を表示(基本的にvは指定しなくてもOK)
-f 圧縮ファイル名指定(filename)
-x 解凍(extract)
-z 拡張子 tar.gz
-j 拡張子 tar.bz2
-J 拡張子 tar.xz

 
zip


# 圧縮
$ zip -r xxxx.zip 圧縮対象ディレクトリ
# 解凍
$ unzip xxxx.zip

 

リダイレクションとパイプ

Unix、Linuxのコマンドで、標準出力の結果を何かに渡したいときには、リダイレクションである「>」「>>」やパイプ「|」をよく使います。

リダイレクション

リダイレクションは、標準出力をテキストファイルに渡したいときに使用します。

「>>」リダイレクション

ファイルへの追記するときに使います。


# sample.list に追記
$ echo 3 tarou tarou@sample.com >> sample.list

$ cat sample.list
1 Ichiro ichiro@sample.com
2 Jiro jirosample.com
3 tarou tarou@sample.com

 
「>」リダイレクション

ファイルへの上書きをするときに使います。


# sample.list を上書き
$ echo 3 tarou tarou@sample.com > sample.list

$ cat sample.list
3 tarou tarou@sample.com

 
パイプ

パイプは、標準出力をコマンドに渡したいときに使用します。

形式


# コマンド1の結果をコマンド2へ渡して結果を出力します
$ コマンド1 | コマンド2

 
例)ps auxで実行中のプロセスを出力し(ターミナルには出力されない)、その中からキーワードhttpdにマッチする行を出力する


$ ps aux | grep httpd

 
僕がよく使うLinuxコマンドは以上になります。

本庄マサノリ

仕事でLaravelを使っています。気づいたことや新しい発見など情報を発信していきます。メールはこちら

 

-周辺知識