UNIX コマンド


目次



相対パスと絶対パス

一番上の階層(windowsで言うところのC:\)からのパスを全部書くのが絶対パス。
今いる場所からの移動を考えるのが相対パス。


絶対パス

パス名がスラッシュ( / )で始まる場合はルートディレクトリからの相対位置を示す。
これを 絶対パス名 とか、フルパス名と呼ぶ。

注釈

ディレクトリはフォルダって意味だよ!

注釈

ルートディレクトリ:ディレクトリ階層構造の一番上のディレクトリ。スラッシュ(/)一文字がルートディレクトリを表わす。

相対パス

パス名がスラッシュ(/)以外で始まる場合はカレントディレクトリからの相対位置を示す。これを 相対パス名 と呼ぶ。

注釈

カレントディレクトリ:ユーザが現在作業を行っているディレクトリ。コマンドやファイル名などを入力する際に、相対パスの基準となる。

注釈

自分が現在いる場所のパスは『./』。ひとつ上の階層は『../』。これは『/』(スラッシュ)から始まっていないので、相対パス!(たぶん)



ワイルドカード

ファイルの検索などに使用することが出来る、正規表現のこと。

ワイルドカードまとめ↓
ワイルドカード
? 任意の1文字
* 任意の文字列
[...] カッコ内の文字のうちのどれか1文字。[01234]は[0-4]、[bcdefg]は[b-g]のようにも書ける。
[^...] カッコ内の文字以外の1文字。[...] の逆。
{... , ...} コンマで区切られた文字列のうちのどれか。
~ ファイル名先頭において、ユーザーのホームディレクトリへの絶対パス

  • 使用例 (javaファイルを検索)
find ./ -name '*.java'


標準入力/標準出力/標準エラー出力

『標準入力』:ターミナル(コンソール)上からコマンドの値(もしくはコマンド)を入力すること
『標準出力』:ターミナル(コンソール)上にコマンドの結果を出力すること
『標準エラー出力』:ターミナル(コンソール)上にコマンドのエラー結果を出力すること

コレに関しては、 リダイレクト を読んだ方がわかる気がする。

詳しい解説はこちら: 標準入出力


リダイレクト

標準入出力に対してコマンドの入出力をファイルを使用して行うこと。

  • コマンドの結果をファイルに出力するとき
[command] > [filename]  :上書き保存
[command] >> [filename] :ファイル末尾に追記保存
  • コマンドの入力をファイルから行うとき
[command] < [filename]  :ファイルから入力

おまけ

ファイル出力について
エラー出力の表示先を設定することが出来る。

警告

> や >> をそのまま使うと、ターミナル上にエラーが出力される(標準エラー出力)ので、log(書き出しファイル)に記録が残らない!

  • エラー表示方法
[command] >& [filename]    ※sh, bash, csh, tcshに使用可能
または
[command] > [filename] 2>&1   ※sh, bashに使用可能

上記2種類のコマンドは、標準出力および標準エラー出力をファイルに書き出してくれる。

※2つ目のコマンドについて補足
sh, bashでは、標準出力と標準エラー出力は下記のように番号付けされています。
1 = 標準出力
2 = 標準エラー出力




パイプ

課題

かく

root

課題

かく

コマンド各種

ディレクトリ移動

cd [directory name]

アクセス権設定

chmod (option) [a+w] [file name]
chmod (option) [644] [file name]
アクセス権に関しては、 パーミッション(権限) を参照。

コピー

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バイトブロックで表示

ファイル検索

find [search directory] (option)

使用方法
find ./ -name '*.java'
『./』ディレクトリ(現在いるディレクトリ)のなかのファイル名が『*.java』のものを検索

ファイルからパターン検索(Grep)

grep (option) [検索文字列] [file name]

コマンド履歴の表示

history (option) [number]

テキストを見る

less (option) [file name]
more・catとの違いは ファイル表示(more・less・cat)の違い を参照。

ファイル・ディレクトリの情報を表示

ls (option) [directory name]

注釈

オプションに-laをつけると全ファイル詳細表示。-lrtもよく使う。


オプションの説明
  • 『-l』:ファイルやフォルダを一行で表示する
  • 『-a』:全てのファイルを表示
  • 『-r』:逆順にソートして出力
  • 『-t』:修正時刻でソート。最新の修正が先頭。
  • 『-R』:再帰的に表示(フォルダのなかもみていく)

フォルダの作成

mkdir (option) [directory name]

プロセス状態の表示

ps [a][f][u][x][-e][-l|l]

プロセスの状態を一覧形式で表示します。
  • オプション
    • a : 全ユーザのプロセスの状態を表示します。
    • f : プロセスの親子関係をツリー状にして表示します。
    • u : プロセスのユーザ名と開始時刻を表示内容に付加します。
    • x : 制御端末を持たないデーモンなどのプロセスも合わせて表示します。
    • -e : 全プロセスの情報を表示します。
    • -l : 詳細情報を表示します。

文字列の置換を行う

sed

課題

説明ちゃんとかく


行を並び替える(ソート)

sort (option) [file]

ユーザーの切替、管理権限の取得

su (option) [user name]
sudo (管理者権限で実行) とかよくする

ファイルの末尾部分を表示する

tail [-c BYTE] [-n LINE] [FILE...]

その他コマンド(ここから下は普通のコマンド集MEMO!課題とは関係ないよ!)

使用されているシェルの種類を調べる

echo $SHELL

シェルの種類によってコマンドや記載方法が変わる。
シェルスクリプトは一般的にbashで記載。

各シェルの詳細はこちら:http://www2u.biglobe.ne.jp/~hsaka/docs/shell.html

注釈

ちなみにzOSはbashでした。



ファイルのバイト数/単語数/行数を出力する

wc [-c] [-l] [-w] [-L] [FILE...]
オプションめも

-c
FILE...に指定したファイルの総バイト数を出力します。改行コードやタブコードなどの制御コードも1バイトとします。

-l
FILE...に指定したファイルの総行数を出力します。

-w
FILE...に指定したファイルの総単語数を出力します。

-L
FILE...に指定したファイルの内容で、もっとも長い行のバイト数を出力します。改行コードのバイト数は含みません。

コマンドまとめ(TABLE形式)

UNIXcmd
cd ディレクトリ移動  
chmod アクセス権設定  
cp コピー  
df ディスクの使用状況参照 df -kP
du ディレクトリのディスク使用量を表示  
find ファイル検索  
grep ファイルからパターン検索(Grep)  
history(!) コマンド履歴の表示  
less テキストを見る  
ls ファイル・ディレクトリの情報を表示 ls -la
mkdir フォルダの作成  
mv ファイル・ディレクトリ移動・名前変更  
ps プロセス状態の表示  
pwd 現在のディレクトリの場所を表示  
rm ファイル・ディレクトリを削除  
sed 文字列の置換を行う  
sort 行を並び替える(ソート)  
su ユーザーの切替、管理権限の取得  
tail ファイルの末尾部分を表示する  
exit ログアウト(というか終了?)  
wc ファイルのバイト数/単語数/行数を出力する ※課題範囲外

コードの行数を確認する

find ./ -name '*.java' | xargs cat | wc -l
『./』ディレクトリの『*.java』ファイルにあるコードの行数を検索

ファイル表示(more・less・cat)の違い

ファイル表示(more・less・cat)の違い
  more less cat
機能 ファイルの中身を表示する。 ファイルの中身を表示する。 ファイルの中身を連結して表示する。
特記事項 スクロールできるが、末行まで表示すると表示が終了。 スクロールできる。qを入力するまで表示は終了しない。 一画面分しか見ることができない。(スクロールはできない)
使い方例 more aaa.php less bbb.cgi cat ccc.txt ddd.php > eee.txt

シェルスクリプトで使用シェルを宣言

シェルの種類によってシェルのコマンドや記載方法に差異がある。
そのため、シェルスクリプト作成の際は、
先頭行にて使用するシェルを宣言し、動作を統一させる必要がある。
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'