=============== UNIX コマンド =============== | .. contents:: 目次 :depth: 3 | | 相対パスと絶対パス  ====================== | 一番上の階層(windowsで言うところのC:\\)からのパスを全部書くのが絶対パス。 | 今いる場所からの移動を考えるのが相対パス。 | | 絶対パス ---------- | パス名がスラッシュ( / )で始まる場合はルートディレクトリからの相対位置を示す。 | これを **絶対パス名** とか、フルパス名と呼ぶ。 .. note:: ディレクトリはフォルダって意味だよ! .. note:: ルートディレクトリ:ディレクトリ階層構造の一番上のディレクトリ。スラッシュ(/)一文字がルートディレクトリを表わす。 相対パス ---------- | パス名がスラッシュ(/)以外で始まる場合はカレントディレクトリからの相対位置を示す。これを **相対パス名** と呼ぶ。 .. note:: カレントディレクトリ:ユーザが現在作業を行っているディレクトリ。コマンドやファイル名などを入力する際に、相対パスの基準となる。 .. note:: 自分が現在いる場所のパスは『./』。ひとつ上の階層は『../』。これは『/』(スラッシュ)から始まっていないので、相対パス!(たぶん) | | ワイルドカード =============== | ファイルの検索などに使用することが出来る、正規表現のこと。 | | ワイルドカードまとめ↓ .. csv-table:: ワイルドカード :file: ./csv/UNIXwildcard.csv :delim: tab :widths: 20, 50 | - 使用例 (javaファイルを検索) :: find ./ -name '*.java' | | 標準入力/標準出力/標準エラー出力 ============================================= | 『標準入力』:ターミナル(コンソール)上からコマンドの値(もしくはコマンド)を入力すること | 『標準出力』:ターミナル(コンソール)上にコマンドの結果を出力すること | 『標準エラー出力』:ターミナル(コンソール)上にコマンドのエラー結果を出力すること | | コレに関しては、 :ref:`リダイレクト` を読んだ方がわかる気がする。 | | 詳しい解説はこちら: 標準入出力_ | | .. _標準入出力: http://www.creatology.jp/unix/outin.html .. _redirect: リダイレクト =============== | 標準入出力に対してコマンドの入出力をファイルを使用して行うこと。 | - コマンドの結果をファイルに出力するとき :: [command] > [filename] :上書き保存 [command] >> [filename] :ファイル末尾に追記保存 - コマンドの入力をファイルから行うとき :: [command] < [filename] :ファイルから入力 | おまけ -------- | ファイル出力について | エラー出力の表示先を設定することが出来る。 .. warning:: > や >> をそのまま使うと、ターミナル上にエラーが出力される(標準エラー出力)ので、log(書き出しファイル)に記録が残らない! - **エラー表示方法** :: [command] >& [filename] ※sh, bash, csh, tcshに使用可能 | または :: [command] > [filename] 2>&1 ※sh, bashに使用可能 | | 上記2種類のコマンドは、標準出力および標準エラー出力をファイルに書き出してくれる。 | | **※2つ目のコマンドについて補足** | sh, bashでは、標準出力と標準エラー出力は下記のように番号付けされています。 :: 1 = 標準出力 2 = 標準エラー出力 | | | | パイプ =============== .. TODO:: かく alias(コマンドだけど意味を知っててほしい) ============================================================ .. TODO:: かく root =============== .. TODO:: かく .. _permission: パーミッション(権限) ============================== .. TODO:: かく | | | | | | | | | | | | | | | | | | | | | | コマンド各種 =============== ディレクトリ移動 ------------------------ :: cd [directory name] | アクセス権設定 ------------------ :: chmod (option) [a+w] [file name] chmod (option) [644] [file name] | アクセス権に関しては、 :ref:`パーミッション(権限)` を参照。 | コピー ------------- :: cp (option) [source file] [target file] | ディスクの使用状況参照 ---------------------------- :: df [-a] [-k] [-T] [-t FSType] [-l] [Linux] df [-a] [-k|-m|-g] [-t FSType] [-l] [FreeBSD] df [-a] [-k] [-F FSType] [-l] [Solaris] よく使うのは :: df -kP | -k : 1キロバイト単位で表示 | -P : POSIX準拠の512バイトブロックで表示 | ディレクトリのディスク使用量を再帰的に表示 ---------------------------------------------------------------- :: du [-a] [-k] [-m] [-s] [DIR...] | ファイル検索 ------------------- :: find [search directory] (option) | | 使用方法 :: find ./ -name '*.java' | 『./』ディレクトリ(現在いるディレクトリ)のなかのファイル名が『\*.java』のものを検索 | ファイルからパターン検索(Grep) ------------------------------------------------------ :: grep (option) [検索文字列] [file name] | コマンド履歴の表示 ------------------------------------------------------- :: history (option) [number] | テキストを見る --------------- :: less (option) [file name] | more・catとの違いは :ref:`ファイル表示(more・less・cat)の違い` を参照。 | ファイル・ディレクトリの情報を表示 --------------------------------------------- :: ls (option) [directory name] .. note:: オプションに-laをつけると全ファイル詳細表示。-lrtもよく使う。 | | **オプションの説明** - 『-l』:ファイルやフォルダを一行で表示する - 『-a』:全てのファイルを表示 - 『-r』:逆順にソートして出力 - 『-t』:修正時刻でソート。最新の修正が先頭。 - 『-R』:再帰的に表示(フォルダのなかもみていく) | フォルダの作成 ----------------------- :: mkdir (option) [directory name] | ファイル・ディレクトリ移動・名前変更 --------------------------------------------- :: mv (option) [old file] [new file] | プロセス状態の表示 ---------------------------- :: ps [a][f][u][x][-e][-l|l] | | プロセスの状態を一覧形式で表示します。 - オプション + a : 全ユーザのプロセスの状態を表示します。 + f : プロセスの親子関係をツリー状にして表示します。 + u : プロセスのユーザ名と開始時刻を表示内容に付加します。 + x : 制御端末を持たないデーモンなどのプロセスも合わせて表示します。 + -e : 全プロセスの情報を表示します。 + -l : 詳細情報を表示します。 | 現在のディレクトリの場所を表示 -------------------------------------- :: pwd | ファイル・ディレクトリを削除 --------------------------------------- :: rm (option) [file name] | 文字列の置換を行う ----------------------------- :: sed .. TODO:: 説明ちゃんとかく | 行を並び替える(ソート) ------------------------------------- :: sort (option) [file] | ユーザーの切替、管理権限の取得 ------------------------------------- :: su (option) [user name] | sudo (管理者権限で実行) とかよくする | ファイルの末尾部分を表示する --------------------------------------- :: tail [-c BYTE] [-n LINE] [FILE...] | ログアウト(というかエディタの終了?) ---------------------------------------- :: exit | その他コマンド(ここから下は普通のコマンド集MEMO!課題とは関係ないよ!) ===================================================================================================================================================== 使用されているシェルの種類を調べる -------------------------------------------- :: echo $SHELL | | シェルの種類によってコマンドや記載方法が変わる。 | シェルスクリプトは一般的にbashで記載。 | | 各シェルの詳細はこちら:http://www2u.biglobe.ne.jp/~hsaka/docs/shell.html | .. note:: ちなみにzOSはbashでした。 | | ファイルのバイト数/単語数/行数を出力する ------------------------------------------------------------------------ :: wc [-c] [-l] [-w] [-L] [FILE...] | **オプションめも** | | **-c** | FILE...に指定したファイルの総バイト数を出力します。改行コードやタブコードなどの制御コードも1バイトとします。 | | **-l** | FILE...に指定したファイルの総行数を出力します。 | | **-w** | FILE...に指定したファイルの総単語数を出力します。 | | **-L** | FILE...に指定したファイルの内容で、もっとも長い行のバイト数を出力します。改行コードのバイト数は含みません。 | コマンドまとめ(TABLE形式) ================================================= .. csv-table:: UNIXcmd :file: ./csv/UNIXcmd.csv :widths: 20, 50, 30 その他TIPS(ここから下は普通のTIPS集!課題とは関係ないよ!) ========================================================================================================================================================== コードの行数を確認する ========================= :: find ./ -name '*.java' | xargs cat | wc -l | 『./』ディレクトリの『\*.java』ファイルにあるコードの行数を検索 | .. _more_less_cat: ファイル表示(more・less・cat)の違い ===================================================== .. csv-table:: ファイル表示(more・less・cat)の違い :file: ./csv/more_less_cat.csv :header-rows: 1 :widths: 20, 50, 50, 50 シェルスクリプトで使用シェルを宣言 =========================================== | シェルの種類によってシェルのコマンドや記載方法に差異がある。 | そのため、シェルスクリプト作成の際は、 | 先頭行にて使用するシェルを宣言し、動作を統一させる必要がある。 | bash(シェルスクリプトで一般的なシェル)を使用する場合は、 | シェルスクリプトファイルの先頭に↓を記載する。 :: #!/bin/sh | | あるディレクトリ内のファイルをGrep =============================================== :: grep -nIR hoge ./dev | ./devディレクトリのなかのファイルに対して"hoge"文字列を再帰的に検索する | オプションについて - n : 対象文字列がある行数を表示する - I : バイナリファイルを除いて検索する - R : 再帰的に検索 | 複数行を検索する方法 =============================== :: grep -P 'bbb[\s\S]*?ddd' test.txt | | 「bbbで始まってdddで終わる文字列」 | - -Pオプションは、Perl風の正規表現を使うという意味。 - ``[\s\S]`` は改行文字も含めたすべての文字1文字にマッチ。 - \*?で、 ``[\s\S]`` の繰り返しのうちもっとも短いものにマッチ。 | | 求める文字列を含む行ごとすべて表示されてしまっている。もし厳密にマッチする部分のみが欲しいのなら、grepに-oオプション(only-matchingの意味)をさらに追加すればよい。 :: grep -oP 'bbb[\s\S]*?ddd' test.txt | | ディレクトリの中のファイルを一括置換する ============================================= | hogeをfugaに置換 :: find . -type f | xargs sed -i 's/hoge/fuga/g' | |