[Unix] XAMPPプログラマが最低限覚えておきたいシェルコマンド

現在携わっているWeb系の開発は、WindowsのXAMPP環境で行っている。ローカルである程度動作確認してから、本番サーバーのプライベートエリアにアップして結合テストを行い、問題が無ければ公開エリアにコピーする、というのがディプロイの手順。

それゆえに本番サーバーのUnix環境での作業はあまり多くない。それでも場合によっては、シェルスクリプトを書いてバッチで処理したい作業も出てくる。シェルプログラミングはたまにしかやらないので、都度調べてもすぐ忘れてしまう。というわけで、良く使いそうなコマンドを覚え書きしておく。

ファイル名に本日日付を入れる

フォルダやアーカイブを作るときに、本日日付や現在日時をフォルダやファイルの名前にしたいことがある。

たとえばフォルダの作成。

たとえばアーカイブの作成。

日時のフォーマットはstrftimeのマニュアルを参照。

Man page of STRFTIME
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/strftime.3.html

アーカイブ操作

僕が使いそうなものだけ。

arc_dirディレクトリ内のファイルを書庫ファイル(arch.tar)にする。

書庫ファイルを展開する。

gzip方式で圧縮した書庫ファイルを作成する (圧縮された書庫ファイルにはファイルの追加はできなくなる)。

既にある書庫にファイル(add_file)を追加する

書庫ファイルの内容を一覧する

書庫ファイルからreadme.txtファイルのみを削除する

Linuxコマンド集 – 【 tar 】 ファイルを書庫化・展開する(拡張子.tarなど):ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230896/

ファイルやディレクトリの存在をチェックする

[Bash] ファイルやディレクトリの存在をチェックする方法
http://sweng.web.fc2.com/ja/program/bash/bash-check-file.html

[Bash] Bashに関するTIPS
http://sweng.web.fc2.com/ja/program/bash/index.html

ディレクトリだけ一覧する

linuxでディレクトリだけを表示させる方法 – Linux系OS – 教えて!goo
http://oshiete.goo.ne.jp/qa/2760104.html

シンボリックリンクの実体をコピーする

cpコマンドに -d オプションをつければ良い。

Linuxコマンド集 – 【 cp 】 ファイルやディレクトリをコピーする:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230734/

[Unix] df コマンド覚え書き

なかなか覚えないので覚え書き。自分が良く使いそうなオプションは以下ぐらいか。

  • -T ファイルシステムの種別を表示する
  • -k 容量をKB単位で表示する
  • -m 容量をMB単位で表示する
  • -h 容量を人間が読みやすい単位で表示する

実行例

[Unix] viエディタの使い方指南

Unixサーバー上での作業にはviエディタを使うことが多い。だけど、普段のコーディングはWindowsマシン上でNetBeansを使ってサーバー上のファイルを直接更新しているので、viエディタの操作方法は結構忘れてる。それでも簡単は編集ならばいまだ何とかなっているのは、昔取った杵柄のお陰。いざというときに備えて、わかりやすくviエディタの操作を説明してくれているサイトのリンクを覚え書き。

viエディタの操作
http://www.geocities.jp/woodwood77777/vi.htm

vi エディタ
http://www14.plala.or.jp/campus-note/vine_linux/operation/vi.html

vi – Wikipedia
http://ja.wikipedia.org/wiki/Vi

[Unix] ファイル名で使えない文字種とは

Unixベースのウェブサーバーでの話。ユーザが指定した名前のディレクトリに関連ファイルを管理することを考えた場合、ディレクトリ名として使えない文字が入力された場合には蹴らなければならない。どんな種類の文字が使えないのか参考情報を探してみたら以下のウェブページがヒットしたので参考サイトとしてリンクしておく。

デザクロ技術メモ(HP・CSS・SEO): ファイル名・フォルダ名の使用禁止文字〜使わない方が無難な文字(1)|デザインクロス〔山形県鶴岡市=庄内のホームページ制作会社|通称デザクロ〕
http://internet.designcross.jp/2010/02/blog-post.html

UNIXの部屋 コマンド検索:ファイル制限まとめ (*BSD/Linux)
http://x68000.q-e-d.net/~68user/unix/pickup?%A5%D5%A5%A1%A5%A4%A5%EB%C0%A9%B8%C2%A4%DE%A4%C8%A4%E1

[CakePHP] よく使うグローバル関数

とりあえず以下の3つはよく使うので覚え書き。

h(string $text, boolean $double = true, string $charset = null)
htmlspecialchars() の便利なラッパー。

debug(mixed $var, boolean $showHtml = null, $showFrom = true)
アプリケーションの DEBUG レベルがゼロ以外の場合に $var が出力されます。 $showHTML が true あるいは null のままであればデータはブラウザ表示に相応しいように描画されます。 $showFrom が false にセットされない場合、それがコールされた行の情報を伴ってデバッグ情報の出力が始まります。

pr(mixed $var)
出力を <pre> タグでラップする機能を追加した print_r() の便利なラッパー。

参考サイト

グローバル定数およびグローバル関数 — CakePHP Cookbook 2.x ドキュメント
http://book.cakephp.org/2.0/ja/core-libraries/global-constants-and-functions.html

デバッグ — CakePHP Cookbook 2.x ドキュメント
http://book.cakephp.org/2.0/ja/development/debugging.html

[CakePHP] トップページを設定する (Routesの設定)

CakePHPには、URLとコントローラ/アクション/パラメータのマッピングを定義するRoutingという仕組みが用意されている。Routingを使うと、サイトのホームページとして任意のコントローラ/アクション/パラメータを割り当てることが可能だ。

Routingは、app/Config/routes.phpで設定する。

第一引数はURL、第二引数はコントローラ/アクション/パラメータ。この例では、pagesコントローラのdisplayアクションがホームページに割り当てられる。

4.3. Routes の設定
http://cakephp.jp/old_doc/ch04s03.html

[CakePHP] DebugKitをセットアップする

Debug Kitはデバッグに役立つCakePHP用プラグイン。

以下に組み込み手順を覚え書き。

1. GitHubからDebug Kitをダウンロード

cakephp/debug_kit · GitHub
https://github.com/cakephp/debug_kit

2. app/Plugin/DebugKitに解凍

3. app/Config/bootstrap.phpでプラグインをロードするように変更

4. app/Controllers/AppController.phpでDebugKitを読み込む

すると、ブラウザでページを表示して右上にアイコンが表示されるようになる。

debugkit1

アイコンをクリックすると機能メニューが表示される。

debugkit2

GitHubのリポジトリ中にあるREADMEに若干の説明がある程度だけど、動かしてみれば機能は明白。

[CakePHP] SQLをダンプする (デバッグレベルの設定)

CakePHPをインストールしたばかりの状態では、デフォルトで画面下部にSQLダンプが表示される。

たとえば以下のように。

CakePHP-the-rapid-development-php-framework-Scaffold-Index-Products-Mozilla-Firefox_00

これはデバッグ支援機能の1つで、app/Config/core.phpでデバッグレベルを変更することによりオンオフできる。

debugを0にするとメッセージは表示されない。

debugを1にするとエラーと警告のメッセージが表示される。

debugを2にすると更にSQLがダンプされる。CakePHPをインストールした時点ではこれがデフォルト。

[CakePHP] バリデーションルールを正規表現で定義する

バリデーションルールには正規表現が書ける。

参考サイト

データのバリデーション(Data Validation) — CakePHP Cookbook 1.3 ドキュメント
http://book.cakephp.org/1.3/ja/The-Manual/Common-Tasks-With-CakePHP/Data-Validation.html

[CakePHP] プレフィックスルーティングを使って管理者ページを作成する

管理者ページを作成したいときに役立つのがプレフィックスルーティング。

たとえば admin 以下を管理者ページとして、通常ページとレイアウトを切り替えたりできる。

1. プレフィックスルーティングを有効にする

デフォルトでは無効になっている。以下の行のコメントを外して有効にする。

2. コントローラにadminのプレフィックスをつけたメソッドを作成する

このメソッドは /admin/products/index のURLで呼び出される。

3. ビューファイルを作成する

メソッド名と同じ名前でビューファイルを作成する。app/Views/Products/admin_index.ctp

4. アクセスに応じてレイアウトを切り替える

まずはadmin用のレイアウトを作る。app/View/Layouts/admin.ctp

アクセスに応じてレイアウトを切り替えるには、adminのプレフィックスが付いたメソッドでレイアウトを指定する。

これは手軽だけど、全てのadminメソッドで指定しないといけないので手間。

基底クラスに以下のように書いておくと簡単で確実。

参考サイト

Routing — CakePHP Cookbook 2.x documentation
http://book.cakephp.org/2.0/en/development/routing.html#prefix-routing