<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/toyoken/">
    <title>toyoken @ ウィキ</title>
    <link>http://w.atwiki.jp/toyoken/</link>
    <atom:link href="https://w.atwiki.jp/toyoken/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>toyoken @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2015-01-24T22:19:07+09:00</dc:date>
    <utime>1422105547</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/toyoken/pages/26.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/toyoken/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/toyoken/pages/20.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/toyoken/pages/25.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/toyoken/pages/24.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/toyoken/pages/23.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/toyoken/pages/18.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/toyoken/pages/22.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/toyoken/pages/21.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/toyoken/pages/17.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/toyoken/pages/26.html">
    <title>Shell</title>
    <link>https://w.atwiki.jp/toyoken/pages/26.html</link>
    <description>
      ◆文字コード変換シェル
------------------------

#!/bin/sh

CMD=`find -type f`

for file in ${CMD}; do
  FILENAME1=${file}_tmp
  FILENAME2=${file}_tmp2

  sed -e &#039;s/¥r/¥n/&#039; ${file} &gt; ${FILENAME1}
  iconv -t UTF-8 ${FILENAME1} &gt; ${FILENAME2}

  rm -f ${file}
  rm -f ${FILENAME1}
  mv ${FILENAME2}  ${file}
  
  echo ${file} ...Exchange OK.
  chmod 775 ${0}
done    </description>
    <dc:date>2015-01-24T22:19:07+09:00</dc:date>
    <utime>1422105547</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/toyoken/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/toyoken/pages/2.html</link>
    <description>
      **開発
-[[viエディタ]]
-[[Linuxコマンド]]
-[[Shell]]
-[[gdb]]
-[[svn]]
-[[makefile]]
-[[低水準関数]]
-[[共有メモリ]]
-[[Stringクラス]]
-[[カレンダー(Excel)]]
-----
**メニュー
-[[トップページ]]
-[[プラグイン紹介&gt;プラグイン]]
-[[まとめサイト作成支援ツール]]
-[[メニュー]]
-[[他のサービス]]

**リンク
-[[@wiki&gt;&gt;http://atwiki.jp]]
-[[@wikiご利用ガイド&gt;&gt;http://atwiki.jp/guide/]]

// リンクを張るには &quot;[&quot; 2つで文字列を括ります。
// &quot;&gt;&quot; の左側に文字、右側にURLを記述するとリンクになります
//**更新履歴
//#recent(20)

&amp;link_editmenu(text=ここを編集)    </description>
    <dc:date>2015-01-24T22:17:49+09:00</dc:date>
    <utime>1422105469</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/toyoken/pages/20.html">
    <title>Makefile</title>
    <link>https://w.atwiki.jp/toyoken/pages/20.html</link>
    <description>
      ■ソースと同階層のMakefile
#!/bin/make 

TARGET   = Sample01
SRCS     = $(shell ls *.cpp)
OBJS     = $(SRCS:.cpp=.o)
CXX      = g++
CXXFLAGS = -g -O2 -Wall
LDFLAGS  = -lm -lrt -L/Develop/lib -lCmnFunc
INCLUDE  = -I../inc -I../../CmnInc
DEST     = ../../../bin

.cpp.o:
	$(CXX) $(CXXFLAGS) $(INCLUDE) -c $&lt;

$(TARGET): $(OBJS)
	$(CXX) $(LDFLAGS) -o $(TARGET) $(OBJS)
	cp $(TARGET) $(DEST) 

clean:
	$(RM) $(TARGET) $(OBJS)
	$(RM) $(DEST)/$(TARGET)

◆ライブラリのmakefile
#!/bin/make 

TARGET   = libCmnFunc.so
SRCS     = $(shell ls *.cpp)
OBJS     = $(SRCS:.cpp=.o)
CXX      = g++
CXXFLAGS = -g -O2 -Wall -fPIC
LDFLAGS  = -lm -lrt -shared -Wl
INCLUDE  = -I../../CmnInc
DEST     = /Develop/lib/

.cpp.o:
	$(CXX) $(CXXFLAGS) $(INCLUDE) -c $(SRCS) 

$(TARGET): $(OBJS)
	$(CXX) $(LDFLAGS) -o $(TARGET) $(OBJS)
	cp $(TARGET) $(DEST)

clean:
	$(RM) $(TARGET) $(OBJS)

■上位階層のMakefile
#!/bin/make
MAKE = make --no-print-directory

SUBDIR = $(shell find ./*/src/ -type d)

all:
	list=&#039;$(SUBDIR)&#039;; for subdir in $$list; do \
	$(MAKE) -C $$subdir; \
	done

clean:
	list=&#039;$(SUBDIR)&#039;; for subdir in $$list; do \
	$(MAKE) clean -C $$subdir; \
	done    </description>
    <dc:date>2014-07-27T01:24:36+09:00</dc:date>
    <utime>1406391876</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/toyoken/pages/25.html">
    <title>Stringクラス</title>
    <link>https://w.atwiki.jp/toyoken/pages/25.html</link>
    <description>
      ■ヘッダ

#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

class TString
{
  private:
    std::string _str;                     // 文字列 
    std::vector&lt;std::string&gt; _splitItem;  // 分解文字列
  public:
    TString( const char* pcData );                 // コンストラクタ
    ~TString();                                    // デストラクタ
    std::string GetString();                       // 文字列取得
    const char* GetCString();                      // 文字列取得
    int         SetString( const char* pcData );   // 文字列設定
    int         AddString( const char* pcData );   // 文字列追加
    void        Clear();                           // 文字列初期化
    int         GetSize();                         // 文字列のサイズ取得
    int         Replace( const char* pcBefor,
                         const char* pcAfter );    // 文字列初期化
    int         Split( const char* pcDelim );      // 文字列の分解
    std::string GetSplitItem( unsigned int nNum ); // 分解した文字列の要素数取得
};

■ソース
#include &quot;TString.h&quot;

/**************************************************/
// コンストラクタ
/**************************************************/
TString::TString( const char* pcData )
{
  _str = pcData;
}

/**************************************************/
// デストラクタ
/**************************************************/
TString::~TString()
{
}

/**************************************************/
// 文字列を取得する(String型)
/**************************************************/
std::string TString::GetString()
{
  return _str;
}

/**************************************************/
// 文字列を取得する(char型)
/**************************************************/
const char* TString::GetCString()
{
  return _str.c_str();
}

/**************************************************/
// 文字列を設定する
/**************************************************/
int TString::SetString( const char* pcData )
{
  _str = pcData;
  return 0;
}

/**************************************************/
// 文字列を後ろに追加する
/**************************************************/
int TString::AddString( const char* pcData )
{
  _str += pcData;
  return 0;
}

/**************************************************/
// クリアする
/**************************************************/
void TString::Clear()
{
  _str = &quot;&quot;;
}

/**************************************************/
// 文字列のサイズを返却
/**************************************************/
int TString::GetSize()
{
  return _str.size();
}

/**************************************************/
// Replaceする
/**************************************************/
int TString::Replace( const char* pcBefor, const char* pcAfter )
{
  std::string strBefor( pcBefor );
  std::string strAfter( pcAfter );
  unsigned int nPoint = 0;

  /* 一致する文字列を検索して位置を取得 */
  while( std::string::npos != (nPoint = _str.find( strBefor, 0 ) ) )
  {
    /* 置き換え */
    _str.replace( nPoint, strBefor.size(), strAfter );
  }
 
  return 0;
}

/**************************************************/
// Splitを行い、トークンの数を返却する
/**************************************************/
int TString::Split( const char* pcDelim )
{
  std::string strDelim( pcDelim ); 
  std::string strBuff = _str; 
  std::string strToken(&quot;&quot;); 
  unsigned int nPoint = 0;

  /* デリミタがない場合 */
  if( std::string::npos == strBuff.find(strDelim, 0) )
  {
    /* クリア */
    _splitItem.clear();

    /* 要素数を返却 */
    return _splitItem.size();
  }
   
  /* デリミタを検索 */
  while( std::string::npos != (nPoint = strBuff.find(strDelim, 0)) )
  {
    /* デリミタまでの文字列を設定 */
    strToken = strBuff.substr( 0, nPoint );

    /* Tokenが空となる場合は設定しない(デリミタが連続する場合はTokenが空となる) */
    if( false ==  strToken.empty() )
    {
      /* デリミタまでの文字列を設定 */
      _splitItem.push_back( strToken ); 
    }

    /* デリミタまでの文字を削除 */
    strBuff.erase( 0, (nPoint + strDelim.size()) );
  }

  /* 文字列の最後にデリミタがある場合は空となるため設定しない */
  if( false == strBuff.empty() )
  {
    /* 最後の要素を設定 */
    _splitItem.push_back( strBuff ); 
  }

  /* 要素数を返却 */
  return _splitItem.size();
}

/**************************************************/
// Splitしたトークンを返却する(指定要素)
/**************************************************/
std::string TString::GetSplitItem( unsigned int nNum )
{
  std::string str = &quot;&quot;;

  /* トークン数より大きい値を指定された場合 */
  if( nNum &gt;= _splitItem.size() )
  {
    return str;  
  }

  /* 指定トークンを設定 */
  str = _splitItem[nNum];

  return str;
}    </description>
    <dc:date>2014-07-21T02:23:59+09:00</dc:date>
    <utime>1405877039</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/toyoken/pages/24.html">
    <title>カレンダー(Excel)</title>
    <link>https://w.atwiki.jp/toyoken/pages/24.html</link>
    <description>
      [[カレンダー生成ツール&gt;http://cdn54.atwikiimg.com/toyoken/?cmd=upload&amp;act=open&amp;page=%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%28Excel%29&amp;file=Calendar.xls]]    </description>
    <dc:date>2014-02-03T00:09:07+09:00</dc:date>
    <utime>1391353747</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/toyoken/pages/23.html">
    <title>共有メモリ</title>
    <link>https://w.atwiki.jp/toyoken/pages/23.html</link>
    <description>
      #include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/ipc.h&gt;
#include &lt;sys/shm.h&gt;
#include &quot;CmnDefine.h&quot;
#include &quot;CmnStruct.h&quot;
#include &quot;CmnFunc.h&quot;

/* ã§óLÉÅÉÇÉäÉAÉ^ÉbÉ` */
int Shm_Attach( key_t key, T_SHM_DATE** ptShmData, int* piShmID )
{
	/* ÉpÉâÉÅÅ[É^É`ÉFÉbÉN */
	if( NULL == piShmID || NULL == ptShmData )
	{
		ERRLOG( &quot;piShmID=[%x]&quot;, piShmID );
		return RET_NG;
	}
	
	/* ã§óLÉÅÉÇÉäópKeyéÊìæ */
	//key = ftok( &quot;&quot;, &#039;R&#039; );
	//if( key == -1 )
	//{
	//	ERRLOG(&quot;ftok Error.&quot;);
	//	return RET_NG;
	//}
	
	/* ã§óLÉÅÉÇÉäIDéÊìæ */
	*piShmID = shmget( key, sizeof(T_SHM_DATE), IPC_CREAT | 0666 );
	if( *piShmID &lt; 0 )
	{
		ERRLOG(&quot;shmget Error.&quot;);
		return RET_NG;
	}
	
	DBGLOG( &quot;*piShmID=[%d]&quot;, *piShmID );
	
	/* ã§óLÉÅÉÇÉäÇ…ÉAÉ^ÉbÉ` */
	*ptShmData = (T_SHM_DATE*)shmat( *piShmID, 0, 0 );
	if( *ptShmData == (void*)-1 )
	{
		ERRLOG(&quot;shmat Error.&quot;);
		return RET_NG;
	}
	
	DBGLOG( &quot;*ptShmData=[%x]&quot;, *ptShmData );
	
	return RET_OK;
}

/* ã§óLÉÅÉÇÉäÉfÉ^ÉbÉ` */
int Shm_Dettach( T_SHM_DATE* ptShmData, int iShmID )
{
	int iRet = 0; // ï‘ãpíl
	
	DBGLOG( &quot;ptShmData=[%x]&quot;, ptShmData );
	
	/* ã§óLÉÅÉÇÉäÉfÉ^ÉbÉ` */
	iRet = shmdt( (void*)ptShmData );
	if( iRet == -1 )
	{
		ERRLOG(&quot;shmat Error.&quot;);
		ERRLOG(&quot;errno=[%s]&quot;, ERRNO);
		return RET_NG;
	}
	
	/* ã§óLÉÅÉÇÉä */
	//iRet = shmctl( iShmID, IPC_RMID, 0 );
	//if( iRet == -1 )
	//{
	//	ERRLOG(&quot;shmat Error.&quot;);
	//	return RET_NG;
	//}
	
	return RET_OK;
}    </description>
    <dc:date>2014-01-31T09:06:53+09:00</dc:date>
    <utime>1391126813</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/toyoken/pages/18.html">
    <title>gdb</title>
    <link>https://w.atwiki.jp/toyoken/pages/18.html</link>
    <description>
      ◆事前準備
「-g」オプションを付けてコンパイルすると、gdbでデバッグ可能となります。
&gt;gcc -g（ソースファイル）

◆デバッグファイル指定
&gt;gdb （実行ファイル名）

◆プロセスID指定でデバッグ
&gt;gdb -p（プロセスID）
&gt;sudo gdb -p（プロセスID）

◆デバッグを終了
&gt;q

◆ブレークポイントを貼る
&gt;b（関数名）
&gt;b（行数）
&gt;b（ファイル名）:（行数）

◆ブレークポイントを削除する
&gt;delete

◆実行ファイルを実行
&gt;r

◆デバッグ
&gt;n　次の行へ進む（Next）
&gt;s　関数の中へ入る（Step In）
&gt;c　継続（continue）
&gt;finish　関数の最後まで実行

◆表示
&gt;p（変数名）　変数データを表示
&gt;p *（ポインタ）　ポインタが示すデータを表示
&gt;list　ソースを表示

◆設定
&gt;set（変数）=（値）

◆coreファイルを利用
&gt;gdb（実行ファイル）（coreファイル）

◆関数のコールスタックを表示
&gt;bt

◆ヘルプ
&gt;help（コマンド名）    </description>
    <dc:date>2013-12-14T11:59:49+09:00</dc:date>
    <utime>1386989989</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/toyoken/pages/22.html">
    <title>低水準関数</title>
    <link>https://w.atwiki.jp/toyoken/pages/22.html</link>
    <description>
      #include &lt;pwd.h&gt;
#include &lt;grp.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;unistd.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;string.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/stat.h&gt;
#include &lt;dirent.h&gt;

int RmDir( const char* pSrc );
int ViewFile( const char* pSrc );
int RemoveFile( const char* pSrc );
int ChownFile( const char* pSrc, const char* tOwner, const char* tGroupe );
int ChmodFile( const char* pSrc, mode_t tMode );
int RenameFile( const char* pSrc, const char* pDst ); // Moveも同様
int MakeDir( const char* pDir );
int CopyFile( const char* pSrc, const char* pDst );

#define ERRLOG()  printf( &quot;Error Line=[%d]\n&quot;, __LINE__ );

int main(int argc, char* argv[])
{
  char* pCmd    = argv[0];
  char* pParam1 = argv[1];
  char* pParam2 = argv[2];

  printf(&quot;argv[0]=[%s]\n&quot;, pCmd );
  printf(&quot;argv[1]=[%s]\n&quot;, pParam1);
  printf(&quot;argv[2]=[%s]\n&quot;, pParam2);

  printf(&quot;main() start\n&quot;);

  RmDir( &quot;test&quot; );

  /**********************************/
  /* chmod */
//  char* endptr = NULL;
//  mode_t mode = 0;
//  mode = strtol( pParam1, &amp;endptr, 8 );
//  if( endptr == pParam1 )
//  {
//    ERRLOG();
//    return -1;
//  }
//  ChmodFile( &quot;test1.txt&quot;, mode );

  /**********************************/
//  ViewFile( &quot;Makefile&quot; );
//  RemoveFile( &quot;test1.txt&quot; );
//  ChownFile( &quot;test1.txt&quot;, &quot;toyo&quot;, &quot;toyo&quot; ); 
//  RenameFile( &quot;test3.txt&quot;, &quot;testDir2/test3.txt&quot; );
//  MakeDir( &quot;testDir&quot; );
//  CopyFile( &quot;test1.txt&quot;, &quot;test2.txt&quot; );

  return 0;
}

int RmDir( const char* pSrc )
{
  int iRet = 0;
  struct dirent* dir;

  printf( &quot;File=[%s]\n&quot;, pSrc );

  DIR* dp = opendir( pSrc );
  if( dp == NULL )
  {
    ERRLOG();
    return -1;
  }

  iRet = chdir( pSrc );
  if( iRet != 0 )
  {
    printf( &quot;dir=[%s]&quot;, pSrc );
    ERRLOG();
    return -1;
  }

  while( NULL != (dir = readdir( dp ) ) )
  {
    if( dir-&gt;d_type == 4 )
    {
      if( (0 == strcmp( &quot;.&quot;, dir-&gt;d_name )) || (0 == strcmp( &quot;..&quot;, dir-&gt;d_name )) )
      { continue; }
      else
      {
        RmDir( dir-&gt;d_name );
      }
      printf( &quot;dell : dir=[%s]\n&quot;, dir-&gt;d_name ); // rmdirに置き換える
    }
    else
    {
      printf( &quot;dell : type=[%d] name=[%s]\n&quot;, dir-&gt;d_type, dir-&gt;d_name ); //remove に置き換える
    }
  }

  closedir( dp );
  return 0;
}

int ViewFile( const char* pSrc )
{

  int iRet       = 0;
  int fdSrc      = 0;
  int iReadSize  = 0;
  char cBuff[10] = {0};
  struct stat tStat;

  /* Check File Exists */
  iRet = stat( pSrc, &amp;tStat ); 
  if( iRet != 0 )
  {
    ERRLOG();
    return -1;
  }

  /* File Open */
  fdSrc = open( pSrc, O_RDONLY );
  if( fdSrc &lt; 0 )
  {
    ERRLOG();
    return -1;
  }

  while( 0 &lt;  ( iReadSize = read(fdSrc, cBuff, sizeof(cBuff)-1) ) )
  {
    if( iReadSize &lt; (int)(sizeof(cBuff)-1) )
    {
       cBuff[iReadSize] = 0x00;
    }

    printf( &quot;%s&quot;,cBuff );
  }

  printf(&quot;\n&quot;);

  return 0;
}

int RemoveFile( const char* pSrc )
{
  int iRet = 0;

  iRet = remove( pSrc );
  if( iRet != 0 )
  {
    ERRLOG();
    return -1;
  }

  return 0;
}

int ChownFile( const char* pSrc, const char* pcOwner, const char* pcGroupe )
{
  int iRet = 0;
  uid_t tUid;
  gid_t tGid;
  struct passwd* ptPasswd;
  struct group*  ptGroupe;

  ptPasswd = getpwnam( pcOwner );  // POSIX
  tUid = ptPasswd-&gt;pw_uid;

  ptGroupe = getgrnam( pcGroupe ); // POSIX 
  tGid = ptGroupe-&gt;gr_gid;

  printf( &quot;tUid=[%d]\n&quot;, tUid );
  printf( &quot;tGid=[%d]\n&quot;, tGid );

  iRet = chown( pSrc, tUid, tGid  );
  if( iRet != 0 )
  {
    ERRLOG();
    return -1;
  }

  return 0;
}

int ChmodFile( const char* pSrc, mode_t tMode )
{
  int iRet = 0;

  iRet = chmod( pSrc, tMode );
  if( iRet != 0 )
  {
    ERRLOG();
    return -1;
  }
  return 0;
}

int RenameFile( const char* pSrc, const char* pDst )
{
  int iRet = 0;
  struct stat tStat;
  
  /* Check File Exists */
  iRet = stat( pDst, &amp;tStat ); 
  if( iRet == 0 )
  {
    ERRLOG();
    return -1;
  }

  iRet = rename( pSrc, pDst );
  if( iRet != 0 )
  {
    ERRLOG();
    return -1;
  }
  return 0;
}

int MakeDir( const char* pDir )
{
  int iRet = 0;

  iRet = mkdir( pDir, 00755 );
  if( iRet != 0 )
  {
    ERRLOG();
    return -1;
  }

  return 0;
}

int CopyFile( const char* pSrc, const char* pDst )
{
  int iRet       = 0;
  int fdSrc      = 0;
  int fdDst      = 0;
  int iReadSize  = 0;
  int iWriteSize = 0;
  struct stat tStatSrc;
  struct stat tStatDst;

  char cBuff[10] = {0};

  /* Check File Exists */
  iRet = stat( pSrc, &amp;tStatSrc ); 
  if( iRet != 0 )
  {
    ERRLOG();
    return -1;
  }

  /* Check File Exists */
  iRet = stat( pDst, &amp;tStatDst ); 
  if( iRet == 0 )
  {
    ERRLOG();
    return -1;
  }

  /* File Open */
  fdSrc = open( pSrc, O_RDONLY );
  if( fdSrc &lt; 0 )
  {
    ERRLOG();
    return -1;
  }

  /* File Open */
  fdDst = open( pDst, O_CREAT | O_WRONLY, tStatSrc.st_mode );
  if( fdDst &lt; 0 )
  {
    ERRLOG();
    return -1;
  }

  /* File Read */
  while( 0 &lt;  ( iReadSize = read(fdSrc, cBuff, sizeof(cBuff)) ) )
  {
    iWriteSize = write( fdDst, cBuff, iReadSize );
    printf( &quot;FileSize=[%d]\n&quot;, iWriteSize );
  }

  /* File Close */
  close( fdSrc );
  close( fdDst );

  return 0;
}    </description>
    <dc:date>2013-12-01T18:52:51+09:00</dc:date>
    <utime>1385891571</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/toyoken/pages/21.html">
    <title>makefile2</title>
    <link>https://w.atwiki.jp/toyoken/pages/21.html</link>
    <description>
      
&lt;p&gt;■ソースと同階層のMakefile&lt;/p&gt;
&lt;table cellspacing=&quot;1&quot; cellpadding=&quot;1&quot; width=&quot;451&quot; border=&quot;1&quot; style=&quot;height:479px;width:451px;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;p&gt;#!/bin/make&lt;/p&gt;
&lt;p&gt;TARGET   = Sample01&lt;br /&gt;
SRCS     = $(shell ls *.cpp)&lt;br /&gt;
OBJS     = $(SRCS:.cpp=.o)&lt;br /&gt;
CXX      = g++&lt;br /&gt;
CXXFLAGS = -g -O2 -Wall&lt;br /&gt;
LDFLAGS  = -lm -lrt -L/Develop/lib -lCmnFunc&lt;br /&gt;
INCLUDE  = -I../inc -I../../CmnInc&lt;br /&gt;
DEST     = ../../../bin&lt;/p&gt;
&lt;p&gt;.cpp.o:&lt;br /&gt;
 $(CXX) $(CXXFLAGS) $(INCLUDE) -c $&amp;lt;&lt;/p&gt;
&lt;p&gt;$(TARGET): $(OBJS)&lt;br /&gt;
 $(CXX) $(LDFLAGS) -o $(TARGET) $(OBJS)&lt;br /&gt;
 cp $(TARGET) $(DEST)&lt;/p&gt;
&lt;p&gt;clean:&lt;br /&gt;
 $(RM) $(TARGET) $(OBJS)&lt;br /&gt;
 $(RM) $(DEST)/$(TARGET)&lt;br /&gt;
 &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;■上位のMakefile&lt;/p&gt;
&lt;table cellspacing=&quot;1&quot; cellpadding=&quot;1&quot; width=&quot;394&quot; border=&quot;1&quot; style=&quot;height:376px;width:394px;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;p&gt;#!/bin/make&lt;br /&gt;
MAKE = make --no-print-directory&lt;/p&gt;
&lt;p&gt;SUBDIR = $(shell find ./*/src/ -type d)&lt;/p&gt;
&lt;p&gt;all:&lt;br /&gt;
 list=&#039;$(SUBDIR)&#039;; for subdir in $$list; do \&lt;br /&gt;
 $(MAKE) -C $$subdir; \&lt;br /&gt;
 done&lt;/p&gt;
&lt;p&gt;clean:&lt;br /&gt;
 list=&#039;$(SUBDIR)&#039;; for subdir in $$list; do \&lt;br /&gt;
 $(MAKE) clean -C $$subdir; \&lt;br /&gt;
 done&lt;br /&gt;
 &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
    </description>
    <dc:date>2013-10-22T00:36:50+09:00</dc:date>
    <utime>1382369810</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/toyoken/pages/17.html">
    <title>Linuxコマンド</title>
    <link>https://w.atwiki.jp/toyoken/pages/17.html</link>
    <description>
      よく使うコマンドを列挙

|ファイルを表示|ls|
|ファイルを検索|find|
|ファイルを圧縮・解凍|tar|
|ファイルのアクセス権を変更|chmod|
|ファイルの所有者を変更|chown|
|ファイルをコピー|cp|
|リモートコピー|scp|
|ファイル移動|mv|
|ファイル名を変更|rename|
|ファイルの数を数える|wc|
|ファイルサイズを表示|du|
|現在のパスを表示|pwd|
|文字列の編集|Perl|

◆ファイルの表示（ls）
&gt;ls -la　全ファイルを詳細表示
&gt;ls -lrt　ファイルをタイムスタンプ順に詳細表示
&gt;ls -lR　サブディレクトリを含めた詳細表示
|[a]|すべてのファイル|
|[l]|ファイルの詳細|
|[r]|逆順にソート|
|[t]|タイムスタンプ順|
|[R]|ディレクトリ内を再帰的に|
&gt;【ファイル表示の詳細解説】
&gt;①　　　　 ②  ③　④　  ⑤          ⑥　 　 ⑦
&gt;drwxr-xr-x   3 toyo  staff  102  8 24 00:54 test.txt
&gt;drwxr-xr-x   5 toyo  staff  170  7   4 01:30 myShell
&gt;①権限、②リンク、③ユーザ、④グループ、⑤ファイルサイズ、⑥タイムスタンプ、⑦ファイル名

◆ファイルを検索（find）
&gt;find -name (ファイル名)　ファイル名で検索
&gt;find -name &amp;u(){text.txt}
|[name]|ファイル名を指定（*も使用可）|

◆ファイルを圧縮・解凍（tar）
&gt;tar cvf（固めた後のファイル名）（固める前のファイル名）　ファイルを固める
&gt;tar cvf  test.tar  test
&gt;tar xvf（ファイル名）　ファイルを展開
&gt;tar jcvf（ファイル名）　ファイルを圧縮（bzip2形式）
&gt;tar jxvf（ファイル名）　ファイルを展開（bzip2形式）
&gt;tar tvf（ファイル名）　ファイルを表示
|[c]|固める|
|[v]|詳細表示|
|[x]|展開する|
|[f]|ファイル名指定|
|[j]|bzip2形式|
|[t]|表示する|

◆ファイルのアクセス権を変更（chmod）
&gt;chmod 775（ファイル名）　ファイルのアクセス件を変更


◆ファイルの所有者を変更（chown）
&gt;chown （ユーザ名）:（グループ名）（ファイル名）　ファイルの所有者を変更する

◆ファイルをコピー（cp）
&gt;cp（コピー元ファイル）（コピー先）　ファイルをコピーする
&gt;cp -rf（コピー元ファイル）（コピー先）　ディレクトリをコピー（上書き時警告しない）
|[r]|ディレクトリをコピー（再帰的）|
|[a]|属性を保持してコピー|
|[p]|オーナー、グループ、パーミッション、タイムスタンプを保持してコピー|
|[f]|上書きの際、警告しない|

◆リモートコピー（scp）
&gt;scp（コピー元ファイル）（コピー先ユーザー名）@（コピー先パス）
&gt;scp -P 22 -r（コピー元パス）（ユーザ）@（ホスト名）:（コピー先パス）　※22はポート番号

◆ファイル移動（mv）
&gt;mv（移動元ファイル名）（移動先ファイル名）
&gt;find -name（ファイル名）| xargs -i mv {} （移動先パス）　検索ファイルを移動

◆ファイル名を変更（rename）
&gt;rename（変更前）（変更後）（ファイルパス）

◆ファイルの数を数える（wc）
&gt;ls | wc -l　表示ファイル数をカウント
&gt;find * | wc -l　検索したしたファイル数をカウント
|[l]|行数を集計して表示|

◆ファイル容量を表示（du）
&gt;du -sh ファイルの総計サイズを適当な単位で表示
|[h]|適当な単位表示する|
|[s]|ファイルの総計容量を表示|
|[S]|サブディレクトリを含めない|

◆現在のパスを表示（pwd）
&gt;pwd　現在のパスを表示

◆Perl
&gt;perl -p -i.bak -e ‘s/（変換前）/（変換後）/g’ （ファイル名）　ファイル内の指定文字列を置換（同時にバックアップファイル(.bak)を作成）　    </description>
    <dc:date>2013-10-13T04:21:03+09:00</dc:date>
    <utime>1381605663</utime>
  </item>
  </rdf:RDF>
