基礎編 †
UNIXコマンドの利用 †
- ローカル開発環境
- レンタルサーバーのうちSSH接続
- MacOS X
ログイン、ログアウトをしよう †
Terminal.appからyuji.devにログインする
ssh yuji@yuji.dev
password:
[yuji@localhost ~]$
- 「[yuji@localhost ~]$」部分はプロンプトと呼ばれる
- 「localhost」はサーバーが自分自身を指す用語
- 「~」はホームフォルダの意味
- 「$」は一般ユーザーの意味
$ exit
パスワードを変更しよう †
$ passwd
ディレクトリを移動する (1) †
$ pwd
$cd
$ cd /
$ cd ~
ディレクトリを移動する (2) †
$ cd ..
$ cd ../..
ディレクトリの中身をみよう †
$ ls
$ ls -l
- 隠しファイルも表示する ※複数のオプションを組み合わせることも可能
$ ls -a
ディレクトリの詳細情報を読み解こう †
$ ls -l
drwxr-xr-x 20 root root 4096 Dec 19 00:20 var
- 「d」はディレクトリか否か
- 「rwxr-xr-x」はパーミッション
- 「rwx」は所有者「r-x」はグループ「r-x」は全ての人のパーミッション
- r : read
- w : write
- x : 実行
- 1つ目の「root」は所有者
- 2つ目の「root」はグループ名
- 「4096」サイズ
- 「Dec 19 00:20」は最終更新日
- 「var」は名前
パーミッションを理解する †
$ chmod 755
- 数字は「r」「w」「x」の足し算
- 4: r : read
- 2: w : write
- 1: x : 実行
ディレクトリの作成、削除 †
$ mkdir test1
$ rmdir test1
ファイルの作成、削除、コピー、移動 †
- 「test」ディレクトリおよび「test.txt」ファイルを作成
$ mkdir test
$ vi test.txt
- 「test.txt」のコピー「text2.txt」を作成
$ cp test.txt test2.txt
- ディレクトリ「test」配下にコピー「test3.txt」を作成
$ cp test.txt test/test3.txt
$ rm test3.txt
$ rm ../test.txt
$ mv test.txt test/
- 「text.txt」の名前を「text2.txt」に変更
$ mv test.txt test2.txt
ファイルの中身をみよう †
- 「test2.txt」ファイルの中身を全て表示する
$ cat test2.txt
$ more test2.txt
$ less test2.txt
- 最初の10行を表示する (オプションで行数を指定可)
$ head test2.txt
- 最後の10行を表示する (オプションで行数を指定可)
$ tail test2.txt
ワイルドカードについて †
- 「*」:任意の文字いくつでも
- 「?」:任意の一文字
$ rm *.txt
$ rm test6.te?t
findを使ってみよう †
- カレントディレクトリから「test_」を含むファイルを検索
$ find . -name "test_*" -type f
- カレントディレクトリから「test_」を含むディレクトリを検索
$ find . -name "test_*" -type d
grepを使ってみよう †
- 使い方は「grep -[option] [文字列] [対象ファイル]」
- 「111」という文字列を含むファイルを検索
$ grep 111 *
- 「111」という文字列がマッチした回数をカウントする
$ grep -c 111 *
$ grep -r 111 *
- 「111」且つ「222」という文字列を含むファイルを検索
$ grep 111 * | grep 222
コマンドラインの便利な使い方 †
- [tab]キーを一回押すとコマンドの候補を表示する
- [tab]キーを二回押すと候補一覧を表示する
- 矢印キーを押すと過去に実行したコマンドを遡ることができる
$ history
- (history実行後)コマンド番号「255」を指定して再実行
$ !255
$ !!
$ !gr
$ !gr:p
便利な小技いろいろ †
- manコマンドでgrepのマニュアルを見る ※スペースキーでスクロール「q」で終了
$ man grep
$ tree
$ date
$ cal
$ cal -y 2030
$ wc test1.txt
$ wc -l test1.txt
lsコマンドのカラーリング †
$ cd $HOME
$ vim .bashrc
alias ls = 'ls -G'
$ cd $HOME
$ vim .bash_profile
source .bashrc
$ source .bash_profile
コマンド実行履歴検索(reverse-i-search) †
改行コード †
chr(13) : CR (キャリッジリターン) : MacOS ver.9まで
chr(10) : LF (ラインフィード) : UNIX系システム
chr(13)||chr(10) : CRLF : Windows系
// 正規表現
\r : CR (キャリッジリターン)
\n : LF (ラインフィード)
\r\n : CRLF
応用編 †
ログファイルgrep検索方法 †
- 対象:~/log_dir/logfile.201410*
- 条件:keyword1かつkeyword2を含みkeyword3またはkeyword4またはkeyword5を含むログを表示
- zgrepは圧縮ファイルも検索
$ zgrep keyword1 ~/log_dir/logfile.201410* grep keyword2 | egrep "(keyword3|keyword4|keyword5)" | less
時系列別500系エラー出力数表示 †
- 対象:/usr/local/apache2/logs/logfile.201410*
$ egrep -v '(\.gif|\.png|\.jpg|\nagios-plugins)' /usr/local/apache2/logs/logfile.201410* | awk '{if ($10 ~ /^(500|502|503)/ ) print $0}' | awk '{print $4}'| awk -F: '{print $1,$2}'|sort|uniq -c|sed "s/\[//"
PostgreSQLスロークエリ(duration)ログのヒット数をカウント †
- 対象:/var/log/pgsql/postgresql-2014-10-**_*.log
- 条件:keyword1かつkeyword2を含む
$ grep duration /var/log/pgsql/postgresql-2014-10-**_*.log | grep keyword1 | grep keyword2 | wc -l
home配下からkeywordを含むファイルをfind検索 †
$ find ~/ -type f -print | xargs grep "keyword"
rsyncによるファイル同期(デプロイ) †
- 同期元ディレクトリ:/home/src/
- 同期先ホスト名:host
- 同期先ディレクトリ:/home/www/
- 「n」オプションは「dry-run」のため実行時には除外
$ rsync -n -vazc /home/src/ host:/home/www/
シンボリックリンク †
$ ln -s [path]
$ find . -type l
$ readlink [symlink]