find, grepでキーワードを含むファイルを検索する

趣の異なる同名の関数が複数ファイルで見つかった場合に組んだシェル

 

>|sh|

#!/bin/sh

class=HogeClass

echo "検索するクラス: "$class

find . -type f -name *.php | xargs grep $class | awk -F':' '{print $1}' > target_file.txt

for file in `cat target_file.txt`

do

    echo $file

    for func in `cat function_file.txt`

    do

        echo "検索する関数: "$func grep -n $func $file

    done

done

 

ORACLE テーブルの制約を確認する

SET LINESIZE 500;
COL TABLE_NAME FOR a30;
COL COLUMN_NAME FOR a30;
COL CONSTRAINT_TYPE FOR a5;


SELECT
C.TABLE_NAME, CC.COLUMN_NAME, C.CONSTRAINT_NAME, C.CONSTRAINT_TYPE
FROM
USER_CONSTRAINTS C, USER_CONS_COLUMNS CC
WHERE
C.TABLE_NAME = CC.TABLE_NAME
AND
C.CONSTRAINT_NAME = CC.CONSTRAINT_NAME
AND
C.TABLE_NAME = 'xxx'
ORDER BY
CC.TABLE_NAME, CC.COLUMN_NAME, C.CONSTRAINT_TYPE;

Oracle 運用作業 Tips

●テーブル作成のDDLを抽出する

set long 3000;
select dbms_metadata.get_ddl('TABLE', 'HOGE_TABLE') from dual;

●シーケンス作成のDDLを抽出する

select dbms_metadata.get_ddl('SEQUENCE','HOGE_SEQ') from dual;

●全体の表示形式を整える

set pages 500 lines 1000 trims on;

●カラムごとの長さを指定する

col hoge_column for a30; 

※30文字で折り返しが発生するようになる

●カラムごとの指定を解除する

col hoge_column clear;

rm * で注意すること

イタい目みたので備忘録。

 

結論からすると、ファイル数が多くなる(1,000件を超えるような)場合は

 rm *

で削除するべきではない。

正解はこちら。

 echo * | xargs rm

 

コマンドを発行する際に引数の長さに最大数(ARG_MAX)が設定されていて

 rm *

で対応しようとすると、この最大数の制限にヒットしてしまう可能性があるから。

*に該当するファイル一覧を作って削除するみたい。

以下の様なコマンドを実行してるイメージなのかな?

 rm aaa bbb ccc

 

正解の方だと、「echo」コマンドでは引数の長さをチェックしないので

どれだけあってもファイルを削除してくれる。

「getconf ARG_MAX」

とか意識したこと有りませんでした。…反省。

 

参考サイト:

http://assimane.blog.so-net.ne.jp/2011-01-15

http://d.hatena.ne.jp/srkzhr/20080427/1209279113

素敵なエディタ Sublime Text 2

最近流行っている(?)らしいエディタです。

仕事で使っていますが、もうeclipseさん、さようならですね。

Tip的な情報を記載していきます。

Subversion と連動する

Sublime Tortoise」をインストールすると、TortoiseSVNと連動して

TortoiseSVNのUIでsvn管理できます。

※※※※※※※

インストールはPackage Controllを使いました。

これがうまくいかなくて、設定ファイルを参照したら

Preferences → Package Settings → Package Control → Setting User

==============================

"repository_channels":

[

"https://sublime.wbond.net/repositories.json",

install

]

==============================

となっていました。上記の「install」を削除したら、

Package Control が機能してくれるようになりました。

ごちゃごちゃいじった時にごみが紛れ込んだようですね。