= Linuxの使い方(中級者) = <> == 概要 == == コマンドの便利な実効方法 == === リダイレクトとパイプ === === 出力テキストの分析 === <> == 例:開発プロジェクトの作業 == コンピュータはいろいろな用途に使うことができる。自分でまとまった文書(論文、レポート、発表用資料など)を書く、特定のプログラミング言語の練習をする、ソフトウェアを開発する、データを解析する等、いろいろな用途が考えられる。それぞれの作業で用いるファイルを別々にまとめて管理するために、それぞれの作業用にディレクトリを用意してその下にファイルを管理することが多い。 ここでは、ソフトウェア開発やデータ解析等、プログラム開発を伴うプロジェクトに関して、ディレクトリ構造と環境設定の方法の一例を示す。 いろいろな作業を行うために自分が使えるディスク領域(WORKAREA)があるとする。ここではWORKAREAと書くが、それは/home/$USER、/home/$USER/workarea、/eos/atlas/$USER/work等かもしれない。 まずはWORKAREAの下に、このプロジェクト (projectA)用のディレクトリを作成して、その下にさらにいくつかのサブディレクトリを作成する。 {{{ cd WORKAREA mkdir projectA cd projectA mkdir scripts work dev sw analysis }}} ここで作成したサブディレクトリの用途は以下の通りである。 || '''ディレクトリ''' || '''用途''' || || scripts || スクリプトを保存する。 || || work || 作業用ディレクトリ || || dev || プログラムを開発する場合、ソースコードを保存するディレクトリ || || dev/build || プログラムのコンパイル作業をするためのディレクトリ(最近はcmakeを使うことが多いので) || || sw || コンパイル済みプログラムを保存するディレクトリ || || analysis || データ解析をするときのディレクトリ || ==== 作業の流れ ==== 1. ターミナルを立ち上げて、作業ディレクトリWORKAREA/projectAに移動する。 1. 作業に取り掛かるときには{{{ source ./scripts/setup.sh }}}を一度実行して作業環境の初期設定をする。 1. プログラムを書く。{{{ emacs ./dev/.../a.cxx& }}}でテキスト・エディタを開いてソース・ファイルを編集する。 1. buildディレクトリに移動({{{cd build}}})してコンパイルする({{{make}}})。コンパイルが成功したらプログラムをswディレクトリにインストールする({{{make install}}})。 1. プログラムを実行するためにworkディレクトリに移動({{{cd work}}})する。プログラムを実行する({{{a.exe}}})。 このような流れで作業をするためには、初期設定ファイル({{{scripts/setup.sh}}})やCMakeLists.txtファイルを適切に書かなければならない。 設定ファイル({{{scripts/setup.sh}}})でやることは以下のようなものである。 {{{ projectDir=WORKAREA/projectA export SWDIR=${projectDir}/sw export PATH=${SWDIR}/bin:$PATH export LD_LIBRARY_PATH=${SWDIR}/lib:${LD_LIBRARY_PATH} export PYTHONPATH=${SWDIR}/lib:${PYTHONPATH} }}} ==== 作業の効率化 ==== * 不必要にディレクトリを移動しない。 * projectAディレクトリにいる状態で他のディレクトリにあるファイルへは、./scripts/setup.shのようにファイルへ至る相対パスを指定してアクセスできる。 * emacsウィンドウを何個も開かない。ウィンドウの起動に時間が掛かるので、emacsでは一つのウィンドウで複数のファイルを開く。サクッとテキストファイルの中身を見たい場合には{{{less}}}コマンドを使う。{{{less ./scripts.setup.sh}}}のように。 * buildディレクトリでのコンパイルも{{{(cd build; make)}}}のように、複数のコマンドを「;」で区切って全体を「()」で囲むことでディレクトリ移動をしないですむ。 * ファイルを探したい場合 * {{{find . -name setup.sh}}}のようにすると今いるディレクトリ(「.」)以下のどこかにsetup.shという名前のファイルが無いか探してくれる。 * テキストファイルからの情報の抽出や加工。 * grep, sed, sort, cut, awk, diff, cat, echo等のコマンドとパイプを組み合わせるといろいろなことができる。 == バージョン管理(Git) ==