アットウィキロゴ

UNIX(コマンド)

telnet接続でのコマンド


最近わかってきたけど、いろいろなunix系OSの知識が混ざってるな。
その辺、整理できるように、いつかはなりたい。
基本的にsh/bashで確認している。


コマンドのヘルプをみる

man [command]
コマンド名が分かっていれば、これで使い方を調べるのが基本。
ここにメモした内容よりも、その環境のmanを調べるべき。
jman [command]
で日本語のヘルプ表示の場合もある(jmanをインストールしていれば)
少なくとも、うちのmacはこれ。


環境設定の確認

env


シェル変数の確認

set


ネットワークインターフェイスの確認

ifconfig -a 
 -a 停止しているものも含むらしい。要は全部?


各ユーザーのデフォルト設定

cat /etc/passwd
(どう見てもコマンドではない・・・。)


ディスクブロックおよびファイル数の確認

df
 -k 割り当てられているディスクの容量をKバイト単位に出力
 -h 見やすくなる。ただし、正確な値ではない。目安には良い。


ディレクトリの容量調査

du
 -k ファイルのサイズを1024バイト単位で出力(デフォルトは512バイト)
 -s 各ファイルの合計のみを出力
ややこしいが、カレントディレクトリ内の各ディレクトリ毎の容量だけを見たいときは
du -k | egrep "^[^\/]*\/[^\/]*$"
もっと簡単な方法があるんだろうなぁ。


ユーザー切替

su - [userid]
ENTER押下後パスワード入力
rootで入る場合は[userid]を省略してもよい
 "-"有りで、環境変数も切り替え後ユーザーで読み直す


ユーザー確認

whoami
正直、↓のidでいい気がする


ユーザーIDとグループ

id


現在のpath表示

pwd


コマンドやスクリプト等のパス確認

which [command]
その[command]にpathが通っていれば表示される。
(表示されれば、そのコマンドは使えると思えばよい?)



ディレクトリ内を一覧表示

ls [path]
 [path]省略でカンレントディレクトリ内の一覧を表示
また、[path]の存在確認にも使える。ファイルも指定可能(なければエラーとなる)
 -l 詳細一覧
 -t 時間の降順
 -a 隠しファイルも表示
 -R サブディレクトリ内も再起的に出力


ファイルを表示 一気に最後まで

cat [file]


ファイルを表示 viみたいな感じでみれる?

less [file]
 j/k 1行単位移動
 d/u 半ページ単位移動
 f/b ページ単位移動
 / で検索
等々


ファイルを表示 viで読み取り専用で開く。

view [file]
vi -R [file]
どっちでも一緒。(だよね?)


ファイルを画面ごとに表示

more [file]
処理結果をリダイレクトで受け取るとったりする ls -al | more とか
 enter 1行進む
 space 1ページ進む
 q 終了


コピー

cp [元ファイル/ディレクトリ] [先ファイル/ディレクトリ]
 -r ディレクトリ内もコピー
 -p タイムスタンプや属性情報等の情報も保持してcopy


ファイル削除

rm -rf [filename]
 -r ディレクリ内も削除
 -f 削除確認不要
 -i 削除確認を行う.bashrcでalias rm='rm -i'としておくと安全


ディレクトリ削除

rmdir [path]
 -r 空ディレクトリでなくても削除
 -f 削除確認をしない
rm -rでいいような?


数を数える(word count)

wc
 -l 行数を数える
grep結果をリダイレクトして数を出したり、
cat [file] | wc -l でファイルのレコード数を数えたり。。。


ファイル内容比較(DF)

diff [file1] [file2]
diff -C 1 [file1] [file2] が使いやすいと教えてもらったが、人それぞれ。


オブジェクトのグループと所有者を変更(スーパーユーザーで実行)

chown hogehoge:hoge log
logの所有者をhogeグループのhogehogeに変更


オブジェクトの属性変更

chmod 755 hoge
hogeの属性を755に変更
755は、前から順に「所有者:所有グループ:その他」に付与する権限
数値は付与したい権限の合計を設定
 1 実行 
 2 書込 
 4 読込 
だと思う。 755なら、所有者は実+書+読、他は実+読


オブジェクトの属性変更2

chmod o+r hoge
hogeの属性のotherにrを追加の意味。
左はu(user),g(group),o(other),a(all)のいずれかを指定
真ん中は+(追加),-(削除),=(置き換え)のいずれかを指定
右はrwxを指定(ls -lで表示されるままの意味)
[chomod ugo=rwx hoge] = [chmod a=rwx hoge] = [chmod 777 hoge]



[path]の中のファイルを表示。検索もできる。

find [path]
 -name [pattern]  [pattern]にマッチするファイルのみ表示。ワイルドカードは¥*
 -print ファイル名を表示。省略可能かも


grep検索

grep [pattern] [file]
[file]の中から、[patterb]に一致する行を出力する。
他のコマンドと組み合わせて使うといろいろ便利。
ls -l | grep [pattern] とか。
-v [pattern]を満たすものを排除する。
-n 結果に行番号をつける

正規表現を使いたい場合は
egrep か grep -e
どっちが使えるかは環境による。(どっちも使えないかも)


複数のソースの中身をまとめてgrep

find [dir_path] -name [file_pattern] -print | xargs grep -n [pattern]
例:カレントフォルダ以降の*.shについて、xxxxを含む列を調査
find ./ -name *.sh -print | xargs grep -n xxxx


列の抽出(AWK)

awkというスクリプト言語を使うことで可能。
ここでは、自分がよく使う、列の抽出について記述。
 awk '{print $1}' hoge    hogeから1列目のみを抽出(区切りはspaceかtab)
 awk 'BEGIN{FS=","}{print $2 "," $1}' hoge    hogeをカンマ区切りとみなし、「2列目,1列目」で出力。
 awk -F , {print $2 "," $1}' hoge   でも同意。ちなみに、FS(-F)はField Separatorという意味。
awkは、他にも条件分岐や繰り返しも可能。wikipediaの説明が見やすかった。
ほかにも、「何列目が300以上の行を抽出」なんてことも可能。正規表現による抽出はgrepでよいが、
数値比較による抽出はこっちかも。


フィールドの抽出

cut
 -c 文字数指定
 -b バイト数指定
 -f 区切り文字(デフォルトはtab)で区切られたフィールド単位
 -d 区切り文字指定。-f とセットで使用
例:
cut -c1-10 <FILE> 1文字目から10文字目まで
cut -d " " -f2 <FILE> 半角空白を区切り文字とし、2フィールド目を抽出



結果をソート

sort
 -n 数値としてソート
 -k number   numberカラム目をソートキーにする
 -r 逆順でソート
例:aaa.tmpを、2カラム目の数値列で逆順にソートして標準出力に出す
sort -nkr 2 aaa.tmp


*



tarの作成

tar -cvf [tarファイル名] [対象のディレクトリ]
で作成
tar -tvf [tarファイル名]
でtarファイルの中身を表示
tar -xvf [tarファイル名]
で解凍
tarファイル作成時に絶対パス指定なら、そのパスに解凍
相対パスしていないなら、カレントパスから相対パスに従い解凍
・・・かな?
オプションよく知らんが、上記と以下を覚えれば十分っぽい。
tar -zcvf [tar.gzファイル名] [対象のディレクトリ]
で作成(gzipにする)
tar -ztvf [tar.gzファイル名]
でtar.gzipファイルの中身を表示
tar -zxvf [tar.gzファイル名]
で解凍(tar.gzipをいっきに解凍)


gzip

solarisはtar -zが使えない。(私の環境では使えなかった)
gzip [file]
[file]をgzに圧縮する。
gunzip [file.gz]
[file.gz]を解凍する。


loggerによるlog出力

/bin/logger -p local7.crit -i -t "hoge" "hogehoge"
/etc/syslog.confの設定従いログをはく。
(あきらかにコマンドではない・・・)
(ログをはくアプリをシェルで組みたいなら知っておくべき?)


IPレベルの疎通確認

ping [ip]
ip先への疎通確認。
ping -s [ip] [byte]
[byte]が[ip]に届くかどうか確認したいとき。

IPへのルートを確認する。

traceroute [ip]
pingが届かない時、どこまで届いたか確認できる。



リモートシェルを利用した、他のサーバでのコマンド実行。ファイルコピー

リモートサーバの./rhostsに、ローカルサーバのhost名、ユーザー名が記述されていることが条件。

他のサーバでのコマンド実行

rsh リモートサーバIPorHOST名 "コマンド"

他のサーバからファイルコピー

rcp リモートサーバIPorHOST名:ファイルパス COPY先パス
逆もOK
最終更新:2010年08月24日 10:31
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。