Linux 入門                        by H.Y   2001.4.2

第1章 HDDのパーテイションの分割

  購入したPCのハードディスクにはすでに、1個のパーティションへ、Windows98あるいは
WindowsXPがインストールされております。そこで、このハードディスクを複数のパーテ
ィションに分割してLinuxをインストールします。

方法1)システムコマンダー(SC)を使う

  (1)Windows98のエクスプロラーでインストールする。
(2)リブートする。
(3)SCのOS選択画面で Alt + O を押して「OSウイザード」に切替える。
(4)「キャンセル」 「スタート」「パーテイションの操作」を続けて選択する
(5)パーテイション画面になる。
(6)Windows98の領域を減らす。(4 − 5GB位)

方法2)fipsを使う

第2章 Linuxのインストール

  1)LinuxのインストールCDを挿入してリブートする。
2)メニューにしたがってインストールする。
(1)パッケージの選択では 「カスタム」
(2)パッケージのインストールでは hda2 / 3000M
hda3 swap 128M
(3)lilo は hda2 にインストールする。
hda にインスト−ルすると /dev/hda1 が hidden fat になるので
あとで fdisk で fat に変更すること。
これを忘れると、lilo からの Windowsの起動ができない。
(4)起動FDは必ず「作成」すること。

第3章 Linuxの基本操作

 

1。login の方法

       login:  ユーザー名 [enter]  
Passwod:パスワード [enter]

2。logout の方法

       logout [enter]

3。shutdown の方法

   方法1)
shutdown -h now (即shutdownする)。
init 0
teiinit 0

shutdown -r now shutdownした後リブートする。
init 6
telinit 6

shutdown -r +10 10分後にshutdownを開始する。
方法2)
[Ctl] + [Alt] + [Delete]

4。PCの電源を切るのは 「System halted」と表示されてから。

5。コンソールの切替え

   「Alt」 + [F1] ~ [F6]  で仮想コンソール1ー6までが切り替わる。

6。漢字コンソールへの切替え(kon がインストールされている場合)

    kon   漢字モードへ
exit 漢字モードから抜ける

7。XWindowとコンソールの切替え

    startx          : XWindowへきりかわる
[Ctl]+[Alt]+[BS]: コンソールへ戻る
[Alt]+[F7] : コンソールからログインしているXwindowへ戻る

8。Xwindow上でキイ入力する場合は端末エミュレータ(kterm)を使う。

9。Linuxの標準のシェルはBourne Again Shell(Bash)である。

    sh  Bourne Shell   bash は sh の拡張版
csh C Shell
ksh Kom Shell
echo $SHELL で現在のShellがわかる。

cat /etc/shells でインストールされているShellがわかる。
Linuxでは通常 sh は bash にリンクされていて、同じShellである。
exec csh で csh Shellへ切り替わる。

10。Shellの基本操作

   

1)[Tab]キイの補間機能

        [Tab]キイを使うとファイル名を全て入力しなくても補間してくれる。 

2)コマンド入力の履歴

      (1) 入力したコマンドはスタックに残っているのでその範囲でよみだせる。
↑ あるいは [Ctr]+P : 以前のコンマンド
↓ あるいは [Ctr]+N : その次のコマンド
(2) history で 過去のコマンドのリストが得られる。
(3) history は echo $HISTFILE で与えられるファイルにかきこまれる。
通常は /HOME/.bash_history

11。シェルコマンド

1) help   シェルコマンドを表示する。

2) cd

  cd dir-name  dir-nameへデイレクトリを移動する。
cd みを入力するとホームデイレクトリへ移動する。

3) pwd

  現在のデイレクトリを表示する。

4) ls dir-name

 デイレクトリ内のファイルを表示する。
オプッション は次の通り。
(1) -a (--all) 全てのファイル

(2) -l (--format=long) 属性を詳しく
---------------------------------------------------------------
アクセス権 リン 所有 グルー サイズ タイムス ファイ
ク数 者名 プ名 バイト スタンプ 名
-rw-r--r-- 1 root root 665 Feb 9 19:16 ping.txt
最初の記号(ファイルタイプ)
d:デイレクトリ自体の情報を表示
l:リンク
c:キャラクタ型デバイスファイル
b:ブロック型デバイスファイル
s:ソケット
p:パイプ
次の3文字:所有者のアクセス権
r: 読み込み許可
w: 書き込み許可
x: 実行権あり
2番目の3文字はグループのアクセス権
3番目の3文字はユーザーのアクセス権
----- SUID、SGID、スティキィービット----------------
1番目2番目の3文字目が s になっている場合は次の意味がある。
(a)-rws-r--r-- の時
SUID がセットされている。
SUIDがセットされているコマンドは、誰もがコマンドの所有者の権限で実行できる。
例えば /usr/bin/passwd は -r-s--x--x 1 root root
なので、root 以外のユーザが root 権限で実行できる。
(b)-rwxr-sr-- の時
SGID がセットされている。
SGID がセットされているコマンドは 実行時にコマンドの所有グループの権限が与えられる。
最期に t が付いて居る場合 は スティキィービットばセットされている。
/tmp は drwxrwxrwxt root root で t がセットされている。
この場合このディレクトリーの中では、ファイルの削除は、そのファイルの所有者もしくはディレクトリの所有者しか実行できない。
----------------------------------------------------------------
(3) -F(--classify) ファイルの種類を追加して示す。
/ : デイレクトリ
* : 実行ファイル
@ : シンボリックリンク
(4) -t 日付順でソート
(5) -d デイレクトリの情報のみを表示
(6) -R デイレクトリ以下のファイルを再帰的に表示
(7) --color ファイルタイプを色付きで表示


ls -l . : . はカレントデイレクトリ
ls -al .. : .. は親デイレクトリ
ls -F ../.. : 2つ上のデイレクトリを表示する。

5)mkdir デイレクトリの作成


mkdir test1
mkdir -p /usr/src/test1 :下層のデイレクトも直接作成する。

6)rmdir デイレクトリの削除


7)cp ファイルのコピー

          cp  -option  source   destination
オプションは次の通り
(1) -i 確認してコピー
(2) -R ,-r デイレクトリを再帰的にコピー
(3) -p アクセス権やタイムスタンプをそのままコピー
(4) -u 新しいファイルのみコピー
(5) -b バックアップを作成してコピー
(6) -d シンボリックリンク自体をコピー
(7) -f 強制的に上書きする。
(8) -a -dpR と同じ

8)rm ファイルの削除

       (1) -i      確認付き削除
(2) -r,-R デイレクトリを再帰的に削除
(3) -f 強制的に削除(十分注意して使うこと)

9)mv ファイルの移動やリネーム

       オプション -i, -b, -f は cp と同じ
mv file1 file2 file1 が file2 にリネームされる
mv file1 /dir2 カレントデイレクトリからfile1を
/dir2へ移動する

10)cat ファイルの内容を表示する。

             複数のときは連結(concatenate)する。
-n 行番号をつける。
-b 空白行以外に行番号をつける。
-v

11)more テキストファイルを1画面毎表示する。

         [Enter]で1行 [space] で1画面すすむ。
[Q],[q]で終了。
12)less テキストファイルを1画面づつ表示。
ファイルがないときは標準入力から読み込む。
[Enter]で1行 [space] で1画面すすむ。
↑ ↓で画面スクロール。
[Q],[q]で終了。
13)strings ファイルから表示可能な文字列をさがす。
例 strings -n 10 /bin/bash
14)find 指定デイレクトリ以下のファイルを検索する。
方法 :find directory 条件 アクション
[Crl]+C :中止
[Ctl]+Z :バックグランドで実行

(1) デイレクトリのみ
find /bin /usr/bin
(2)条件
-name ,-type
find / -name lilo.conf 条件付き
find / -name -name "man*" -type d 条件付き
ファイルタイプは4)lsのファイルタイプと同じ
(3)アクション: -exec コマンド \;
-ok コマンド \; 確認付き
実行例
find . -name test2.txt -exec rm {} \;
find . -name test2.txt -ok rm {} \;
(4)他の実行例
find / -usr username -ls
usename が所有している各ファイルを表示。
find / -mtime -l \! -type d -print >/tmp/filelist.daily
-mtype -l : 過去24時間以内に変更のあった全てのファイル
find /tmp \! -type d -atime +3 -exec rm -f {} \;
最初のアクセスから3日以上経過しているファイル
find . -name "*.txt" -o -name "*.doc"
-o (-or) は条件を組み合わせる
find . \( -name "*.txt" -o -name "*.doc" \) -type f
find . -not -name "*.txt" -type f
-not 否定 \! と同じ
find -type d -maxdepth 2
find -type d -mindepth 2 maxdepth 2
(5)ソースファイルから関数を探す
cd /usr/src/linux
find . -type f | xargs grep -i 関数名
これは grep 関数名 ファイル名 を全ファイルについて実行
15)locate ファイルをさがす。正規表現が使えない。
ワイルドカードは使える。
updatedb あるいは /etc/cron.daily/slocate.cronを実行して
データベースを作成する。
例: locate file1
16)grep ファイルに指定の文字列が含まれている行を表示する。
正規表現がつかえる。
grep option pattern file1 file2 ....
Option:
-i 大文字小文字の区別なし
-l パターンを含むファイル名のみ表示
-v 一致しない行を表示
-vl パターンを含まないファイル名を表示

find /etc -name "*.conf" -type f
find /etc -type f -exec grep "ifconfig" {} \;
find で見付けたファイルの内容でifconfigを含む行をさがす。
{}の中にはファイル名が挿入される。

fgrep,grep -F :正規表現なし
egrap、grep -E :拡張正規表現が使える。

17)chmod アクセス権(パーミッション)の変更。ファイルやディレクトリのアクセス権を変更する。
(1)chmod 777 ファイル名 を実行すると、このファイルのアクセス権は
-rwxrwxrwx になる。
chmod の後の値はオクタルで表示する。
(2)chmod 1777 /ディレクトリ名 を実行すると
drwxrwxrwxt スチィキィビットがセットされる。
(3)4桁のオクタルの最初の数字の意味
1 スティキィビット
2 SGID
4 SUID
6 SUID+SGID
(4)シンボルでの指定の仕方
chmod u+x filename を実行すると 所有者の実行権が追加される。
chmod -s filename を実行すると SUID/SGID を解除する。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ユーザーの指定 u:所有者
g:所有グループ
o:その他のユーザー
権限の操作 +:権限の追加
-:権限の削除
=:権限の完全指定
権限の種類 r:読み込み権
w:書き込み権
x:実行権
t:スティキィービット
s:SUID/SGIDビット

12。シェルコマンドのメタキャラクタと正規表現
1) * : ワイルドカード
ヌル(空文字、文字数ゼロ)を含めた任意の文字列と対応する。
ls test* は test1, test2, test123 testabc 全てに対応する。
2) ? : 任意の1文字と対応する。
ls test? は test1, testb には対応するが、test12には対応しない。
3) [] :[]内の任意の1文字と対応
ls test[ab2] は testa,testb,test2 と対応する。
4) {} :{}内の文字列と対応する。
ls test{ab,cdef} は testab,testcdef と対応する。
13。メタ文字(特種文字)とエスケープ
\ :シェルはこのあとの1文字を展開しない。
' ' :シェルはこの中の ! を除く全てのメタ文字を展開しない。
" " :シェルはこの中の !,$,` を除く全てのメタ文字を展開しない。
14。リダイレクト コマンドの結果の出力先を変更
ls . > ls.txt ファイル ls.txt へ出力される。
ls .. >> ls.txt 追加される。(append)
find . -name "*.doc" -print >doclist 2>err
find . -name "*.doc" >& doclist
2> エラーリストのリダイレクト
>& 全てのリダイレクト
15。パイプ
前の標準出力を次のコマンドの標準入力に繋げる。
find . -name "*.txt" -print 2>err | less
16。コマンドの並列処理
find . -name ; cat test.txt
17。コマンドの結果を渡す バッククオート(`)を使う。
ls -l `cat blist`
cat blist の結果のデイレクトリを ls する。
blist が 下記の内容だと
/bin
/sbin
それぞれの内容を ls する。
18。コマンドを複数行へ
find . \
-name "*.txt" \
-print \

第4章 正規表現

1。基本正規表現
1) \ :メタチャラクタのケスケープ
2) . :任意の1文字
3) * :直前の文字の0回以上の繰り返し
4) ^ :行の先頭
5) $ :行の最後
6) \( \) :グループ化された正規表現の保存
7) \n :保存された正規表現のよびだし。
8) [ ] :文字クラス内に定義された任意の1文字
9) ^ :[の直後の置くと否定をいみする。
2。拡張正規表現 正規+次の表現
1) + :直前の文字の1回以上の繰り返し
2) ? :直前の文字が1つかあるか無いか
3) | :左右におかれた正規表現の選択
4) [: :] :文字クラス
[:alnum:] : [0-9A-Za-z] と等価
[:alpha:] : [A-Za-z]
[:digit:] : [0-9]
[:blank:] : スペースとタブ
[:cntrl:] : 制御文字
[:lower:] : 英小文字
[:upper:] : 英大文字
[:space:] : スペース
[:xdigit:] : 16進数 [0-9A-Fa-f]
5) \< :単語の最初
6) \> :単語の最後
6) \b :単語の端
7) \B :単語の端以外
8) ( ) :グループ化

3。正規表現の実例  
grep star test.txt
grep "star sun" test.txt
grep "3.14" test.txt
grep "3\.24" test.txt
grep ".*" test.txt
egrep "^[1-5]/." test.txt
egrep -e "[1-3]\>\." test.txt
egrep -e "[^1-3]\." -e "[1-3]\>\." test.txt
egrep "[^1-9]" test.txt 数字以外の文字にマッチする。
egrep "[^A-Za-z]" test.txt 英文字以外も文字にマッチする
egrep "^$" test.txt 空行にマッチ
egrep "^./$" test.txt 行全体にマッチ
egrep "\<3.*4>" test.txt 単語の 最初3,最後4 にマッチ
egrep "\b3\.14\b" test.txt 単語 3.14 にマッチ
egrep "\b3\.14\B" test.txt 3.14... にマッチ
egrep "[[:lower:]]+://.+(\..+)*" test.txt URLにマッチ
(\..+)* = .と1文字以上の文字の繰り返し
egrep "会員\|番号" test.txt 会員 か 番号 にマッチ
egrep "(電話|学生|会員)番号" test.txt


第5章 sed (Stream Editor) 非対話型のテキストエデイター
日本語は不可。
1。動作
sed [option] <script> [対象file]
[ ]は省略可

2。オプション
- :POSIX 形式
--:GNU 形式のロングオプション
1) -v :バージョン
2) -e :コマンドを指定
3) -f :スクリプトファイルを用いる
4) -n :デフォルトの出力抑制

3。コマンド アルファベット1文字
0) # :コメント
1) d :削除
2) p :表示
3) q :終了
4) s :文字列の置換
置換コマンドのフラグ
(1)p :置換後のパターンスペースを表示
(2)g :マッチする文字列を全て置換
(3)n :n番目にマッチした文字列のみ置換
(4)w file1:置換後のパターンをfile1へ書き込む
5) y :変換(文字数は同じ)

[アドレス] コマンド [引数] の順
[ ]は省略可

4。実施例
1) sed -e "p" test.txt
2) sed -n -e "p" test.txt :-n -e の順番に注意
3) sed -n -e "1,3p" test.txt :1-3行を表示
4) sed -n -e "s/My/Your/p" test.txt :[My]を[Your]に置換
5) sed -n -f sc1.sed test.txt :スクリプトファイル使用
sc1.sed
/My/p
s/My/Your/p :[My]を[Your]に置換
6) sed -n -f sc2.sed test.txt
sc2.sed
/My/p :[My]を含む行を表示。
/My/s//Your/p :[My]を含む行の置換。//は[Your]が用いられる
7) sed -n -f sc3.sed test.txt
sc3.sed
/My/p
/My/s//Your/pg :[My]を全て[Your]で置き換える
8) sed -n -f sc4.sed test.txt
sc4.sed
/My/p
/My/s//Your/p2 :2番目の[My]を[Your]で置き換える
9) sed -n -f sc5.sed test.txt
sc5.sed
/My/p
/My/s//Your/p2w your.txt :置換パターンを your.txt へ書き込む
10) sed -e "5d" test.txt :5行目を削除
sed -e "1,15d" test.txt :1ー15行目を削除
11) sed -e '5,$dD' test.txt :5行目から最後まで削除
sed -e '5,\$dD' test.txt :5行目から最後まで削除
12) sed -e "/number/y/number/NUMBER/" test.txt
13) sed -e "/[a-z]/y/abcdefghijklmnopqrstuvwxyz/abcdefg\
hijklmnopqrstuvwxyz/" test.txt
:全角文字へ変換
14)暗号化 文字列の区切りに [!] を使用。
y や s の直後の記号がデリミタになる。
sed -f sc6.sed test.txt
sc6.sed
p
y!abcdefghijklmnopqrstuvwxyz!0123456789,._-=[];:@|^~{}`!
sc7.sed
p
y!0123456789,._-=[];:@|^~{}`!abcdefghijklmnopqrstuvwxyz!
15) sed -n -e 's!/usr/local/bin!/usr/bin!pg' test.txt :! デリミタ
16) sed -n -e 's#/usr/local/bin#/usr/bin#pg' test.txt :# デリミタ