2011/09/29

reboot

reboot
linux osの再起動
rebootコマンドは、linuxを再起動するコマンドです。
# reboot

shutdown コマンドにオプションを付けることで再起動できます。
# shutdown -r

initコマンドでも再起動できます。
# init 6

2011/09/28

w

w
ログインユーザのリスト

whoと同様、ログイン中のユーザ一覧を表示
[user@localhost tmp]$ w
 09:57:16 up 1 day, 13:52,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
user     pts/1    win7             09:22    0.00s  0.04s  0.01s w

2011/09/27

GRUB

grub
linuxの起動設定
GRUBは、linuxの起動設定です。GRUBはコマンドではありませんのでmanコマンドでは「man grub」でコマンドの使い方が表示されます。(大文字と小文字の変換くらいやってくれてもいいのに) またGRUBの設定方法は「info grub」で調べられます
$ man grub

$ info grub
File: grub.info,  Node: Top,  Next: Introduction,  Up: (dir)

GRUB manual
***********

This is the documentation of GNU GRUB, the GRand Unified Bootloader, a
flexible and powerful boot loader program for PCs.

   This edition documents version 0.97.

* Menu:

* Introduction::                Capturing the spirit of GRUB
* Naming convention::           Names of your drives in GRUB
* Installation::                Installing GRUB on your drive
* Booting::                     How to boot different operating systems
* Configuration::               Writing your own configuration file
* Network::                     Downloading OS images from a network
* Serial terminal::             Using GRUB via a serial line
* Preset Menu::                 Embedding a configuration file into GRUB
* Security::                    Improving the security
* Images::                      GRUB image files
--zz-Info: (grub.info.gz)Top, 38 行 --Top--------------------------------------
Info バージョン 4.8 にようこそ。? で使い方、m でメニュー鬆
関連項目
LILO

2011/09/26

top

top
全画面表示で、現在実行中のプロセスの状況を表示するコマンドです

top - 17:28:40 up 15:54,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 115 total,   2 running, 113 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1034708k total,   615628k used,   419080k free,    81856k buffers
Swap:  2097144k total,        0k used,  2097144k free,   410856k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      15   0  2160  644  556 S  0.0  0.1   0:00.93 init
    2 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
    4 root      10  -5     0    0    0 S  0.0  0.0   0:00.04 events/0
(以下省略)

「h」を押すとヘルプが出ます。
各リソースまたは、プロセスの詳細を確認したいときは、画面を切り替えて表示します。
Help for Interactive Commands - procps version 3.2.7
Window 1:Def: Cumulative mode Off.  System: Delay 3.0 secs; Secure mode Off.

  Z,B       Global: 'Z' change color mappings; 'B' disable/enable bold
  l,t,m     Toggle Summaries: 'l' load avg; 't' task/cpu stats; 'm' mem info
  1,I       Toggle SMP view: '1' single/separate states; 'I' Irix/Solaris mode

  f,o     . Fields/Columns: 'f' add or remove; 'o' change display order
  F or O  . Select sort field
  <,>     . Move sort field: '<' next col left; '>' next col right
  R,H     . Toggle: 'R' normal/reverse sort; 'H' show threads
  c,i,S   . Toggle: 'c' cmd name/line; 'i' idle tasks; 'S' cumulative time
  x,y     . Toggle highlights: 'x' sort field; 'y' running tasks
  z,b     . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
  u       . Show specific user only
  n or #  . Set maximum tasks displayed

  k,r       Manipulate tasks: 'k' kill; 'r' renice
  d or s    Set update interval
  W         Write configuration file
  q         Quit
          ( commands shown with '.' require a visible task display window )
Press 'h' or '?' for help with Windows,
any other key to continue

終了するときは、「q」キーを押します。

2011/09/25

tac

tac
ファイルを逆向きに表示する

見ての通り、catの逆の動きをするコマンドです。ファイルをcatとは逆に後ろから最初に向かって出力します。

[user@localhost tmp]$ tac tmp.txt

zxcv
qwer
ghijkl
abcdef
123456

2011/09/24

fc

fc
コマンドの履歴を表示
historyと同様にコマンド履歴を表示します。 直近のコマンド12件を表示。件数を省略することも出来ます。
$ fc -l -12

lsコマンドの履歴を探す
$ fc -l ls

履歴番号の110件から120件までのコマンドを表示
$ fc -l 110 120

関連コマンド
history

2011/09/23

uname

uname
カーネルのバージョン確認

osとカーネルのバージョンを確認するコマンドですが、カーネルのバージョンを確認するときに使われます。CentOS 5.5では、
[root@localhost ~]# uname -r
2.6.18-238.19.1.el5

ちなみにCentOS 6.0では
[user@centos12 ~]$ uname -r
2.6.32-71.29.1.el6.i686

また、CentOSのバージョンはunameではなく以下のコマンドです。
[user@localhost ~]$ cat /etc/redhat-release
CentOS release 5.5 (Final)

2011/09/22

apropos

apropos(適切に)
マニュアル検索

マニュアルのキーワードを検索します

$ apropos directory
Cwd                  (3pm)  - get pathname of current working directory
DirHandle            (3pm)  - supply object methods for directory handles
FcConfigAppFontAddDir (3)  - Add fonts from directory to font database
FcConfigNormalizeFontDir (3)  - normalize a font directory
FcDirCacheValid      (3)  - check directory cache timestamp
FcDirSave            (3)  - save a directory cache
FcDirScan            (3)  - scan a font directory
FcStrDirname         (3)  - directory part of filename
File::Basename       (3pm)  - Parse file paths into directory, filename and suffix
(以下省略)

日本語も使える場合があるみたいです。
[user@centos55 tmp]$ apropos 'ディレクトリ'
acleandir            (1)  - netatalk の Apple Macintosh ファイルが含まれているディレクトリを掃除する。
alphasort [scandir]  (3)  - ディレクトリを走査する
basename             (1)  - ファイル名からディレクトリと拡張子を取り去る
chacl                (1)  - ファイルまたはディレクトリのアクセス制御リスト (Access Control List) を変更する
chdir                (2)  - 作業ディレクトリの変更
chroot               (1)  - ルートディレクトリを変更してコマンドを実行する。
chroot               (2)  - ルート・ディレクトリを変更する
closedir             (3)  - ディレクトリをクローズする
copydir [mirrordir]  (1)  - 変更された最小の部分のみを用いて (ローカル、FTP 経由、安全な tcp 接続経由で) ディレクトリツリーをコピーまたはミラーする
cp                   (1)  - ファイルやディレクトリをコピーする
(以下省略)


2011/09/21

diff

diff
ファイル(やディレクトリ)の差分を表示

2つのファイル(ディレクトリ)の間で差分を比較し表示する。

オプション
「-b」 複数の空白を1つとみなし比較
「-c」 差分の前後3行を表示
「-i」 大文字と小文字を同じものとする
「-y」 結果を左右に2列で表示


$ diff file1.txt file2.txt

通常は、ファイルの比較に使われますが、diffはディレクトリの比較も出来ます。
$ diff dir1 dir2
dir1だけに発見: dir11
dir2だけに発見: file1
dir2だけに発見: file2

2011/09/20

fuser

fuser
ファイル、ディレクトリを使用中のプロセス情報を表示

ファイルを変更したいときや、umountでマウントを外したいときなど、プロセスがファイルを使用中でにエラーとなる場合があります。
このとき、誰がファイルを使用しているのか、確認するためのコマンドです。

[root@localhost ~]# fuser /home/user/tmp
/home/user/tmp:       7465c  7492c

プロセスのあとの記号はアクセスの区分で、以下の通り
c カレントディレクトリ
e 実行ファイル
f ファイルオープン
r ルートディレクトリ
m 共有ディレクトリ

あとは、プロセス番号から、実行ファイルを調べて下さい。
例えば、
[root@localhost ~]# ps -ef | grep 7465
user      7465  6873  0 16:58 pts/1    00:00:00 bash
user      7492  7465  0 16:58 pts/1    00:00:00 vim tmp.txt
root      7991  7770  0 17:10 pts/2    00:00:00 grep 7465

2011/09/19

info

info
情報の表示

コマンドやキーワードの情報を表示します。
manコマンドとは違った情報が得られます。

$ info directory

2011/09/18

ファイル名メタキャラクタ

ファイル名メタキャラクタ
bashでファイル名、ディレクトリ名を展開するときに使用するメタキャラクタ(文字)

*
0文字以上の任意の文字

?
任意の1文字

[abc...]
括弧内の1文字(abc..)に一致、「-」も使用可能([a-z],[A-Z],[0-9]など)

[!abc...]
括弧内の1文字(abc..)以外、正規表現の[^abc...]との違いに注意

|
or どちらかのパターンに一致

その他、シェル変数の表現
~+
現在のディレクトリ、シェル変数「PWD」

~-
直前のディレクトリ、シェル変数「OLDPWD」

2011/09/17

who

who
システムにログインしているユーザ

システムにログインしているユーザの確認
システムをシャットダウンするとき、ログイン中のユーザがいないか確認するときにも使います。

$ who
user     pts/1        2011-08-10 15:30 (192.168.226.1)

2011/09/16

clear

clear
画面をクリアする

端末の画面をクリアする。画面上改ページしたようなもの。

2011/09/15

wc

wc
ファイルの行数、単語数、文字数を調べる

ファイルサイズから、ファイルの大きさがだいたい想像できます。
あえてこのコマンドを使って行数、単語数、文字数を調べることは、シェルスクリプト(プログラム)を作るとき以外では少ないと思われます。

使い方の例
$ cat tmp.txt
123
abc def ghi
abcdefg

$ wc tmp.txt
 4  5 25 tmp.txt
結果は、4行、5ワード、25文字です。
tmp.txtファイルの4行目の改行だけの行も1行としてカウントされています。

ファイルが設定ファイルの場合、設定ファイルを読み込むプログラムによっては、ファイルの最後に改行があるときと無いときで動きが変わるものもあります。

2011/09/14

logout

logout
ログオフします

logoutコマンドは、telnetでログオンした状態から、ログオフするときに使います。
ログオンしたときに起動したシェルを終了させます。
exitコマンドでもログオフできます。

2011/09/13

シスログ

シスログ
linuxシステムのログ

linuxシステムは、OS上で色々なプログラムが動いています。それぞれのプログラムはログを持っていますが、OSとしてログも書かれています。
ログの定義は、/etc/syslog.confに定義されています。なお、この設定ファイルを読むためにはrootユーザで操作する必要があります。

例 シスログの定義を表示
[root@localhost ~]# cat /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
(以下省略)
デフォルトでシスログは、/var/log/messagesに書かれています。
まず、ファイルの大きさを確認します。

例 シスログの表示
[root@localhost ~]# ls -l /var/log/messages
-rw------- 1 root root 187507  8月  5 08:42 /var/log/messages
[root@localhost ~]# wc /var/log/messages
  2376  25204 187507 /var/log/messages
[root@localhost ~]# tail -5 /var/log/messages
Aug  5 08:29:37 localhost ntpd[3871]: synchronized to LOCAL(0), stratum 10
Aug  5 08:31:11 localhost ntpd[3871]: synchronized to 219.117.196.238, stratum 2
Aug  5 08:42:52 localhost dhclient: DHCPREQUEST on eth0 to 192.168.226.254 port 67
Aug  5 08:42:52 localhost dhclient: DHCPACK from 192.168.226.254
Aug  5 08:42:52 localhost dhclient: bound to 192.168.226.132 -- renewal in 816 seconds.
この例では、ファイルサイズ、行数行があります。catコマンドなどで全部表示させるとテキストが流れてしまうので、tailコマンドでシスログの最後だけ表示させるか、lessコマンドでシスログを画面単位に見ながら確認しましょう。
関連コマンド
dmesg

2011/09/12

dmesg

dmesg
linuxの起動ログを表示

linuxの起動時になんらかの問題が発生したときは、rootユーザにてdmesgコマンドで起動ログを確認して下さい。
解決のヒントとなるメッセージがあるかもしれません。ログは少し長いのですが、一通り見ましょう。シスログも解決の手がかりになることもあります。もし、特定のサービスが障害を起こしているのが判っている場合、各サービスのログも見ましょう。

例 dmesg

[root@localhost ~]# dmesg
Linux version 2.6.18-238.19.1.el5 (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-50)) #1 SMP Fri Jul 15 07:32:29 EDT 2011
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000010000 - 000000000009f800 (usable)
 BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000ca000 - 00000000000cc000 (reserved)
(以下省略)

2011/09/11

passwd

passwd
パスワード変更

パスワードを変更します。

例 パスワード変更
$ passwd
Changing password for user user.
Changing password for user
(current) UNIX password:         # 現在のパスワード
New UNIX password:               # 新しいパスワード
Retype new UNIX password:        # 確認のため新しいパスワードを再入力
passwd: all authentication tokens updated successfully.
$

また、rootユーザは、ユーザidを指定して他ユーザのパスワードを変更することが出来ます。
# passwd user1

2011/09/09

suコマンドのログ

suコマンドのログ
suでユーザを切り替えたときのログ参照方法
セキュリティ対策としてログの参照が使われます

centosでは、suコマンドでユーザを切り替えたとき、誰が操作したのかログが取得されています。
まず、「/etc/syslog.conf」を確認します。
# cat /etc/syslog.conf
(途中省略)
# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure
(このあとも省略)

 また、切り替えの状況は、ファイル「/var/log/secure」に記録されています。
# cat /var/log/secure
(途中省略)
Aug  5 14:10:44 localhost su: pam_unix(su-l:session): session opened for user root by user(uid=500)
Aug  5 14:11:05 localhost su: pam_unix(su-l:session): session closed for user root
(このあとも省略)
この例だと、14:10:44にuserユーザがrootユーザになり、14:11:05にrootユーザの操作を終了しています。

2011/09/08

viエディタ、中級編9(外部コマンド)

viエディタ、中級編9(外部コマンド)
ファイルを編集中に外部コマンドが実行できます

ファイルを編集していて、ディレクトリの内容を確認したり、ファイルの名前を確認したいとき、ウインドウをもう一つ開けることで確認できますが、viエディタでもコマンドモードで外部コマンドを実行することで確認出来ます。

:!(command) ENTER
(command)に外部コマンドを入れると外部コマンドの実行ができます。引数も記述できます。viに戻るときはenterキーを押します
例えば、ファイルの内容確認なら「:!cat tmp.txt」です

2011/09/07

viエディタ、中級編8(テキストの書き出しと読み込み)

viエディタ、中級編8(テキストの書き出しと読み込み)
テキストを編集中に、ファイルに書き出したり、ファイルを読み込んだり出来ます

あまり使用頻度は高くないかもしれませんが、編集中のファイルの一部をファイルに保存したり、保存してあるファイルを編集中のファイルに読み込んだり出来ます。
telnetを使っていると、telnetの画面からカット&ペーストして、テキストファイルに保存したりするので、viの画面内でやる必要性は高くないかもしれません。

v
テキスト選択開始、このあと移動コマンドの操作の間が選択範囲になります。 選択範囲は強調表示されます。なおテキストは行単位で選択されます。選択を取り消すときは再度「v」キーを押します。

:w (filename) ENTER
選択範囲をファイルに書き出す

:r (filename) ENTER
カーソル位置の下にファイルを読み込む

2011/09/06

viエディタ、中級編7(ヤンクバッファ)

viエディタ、中級編7(ヤンクバッファ)
コピー&ペーストで使用するヤンクバッファ

viエディタでは、コピー&ペーストで使用するバッファはヤンクバッファと呼ばれています。
通常デフォルトで使用するヤンクバッファは1つです。
また、名前つきのヤンクバッファは26個(a-z)あります。

デフォルトのヤンクバッファは、「x」や「dd」で削除したときもヤンクバッファに入ります。しかし、デフォルトのヤンクバッファは1つしかないので、削除するたびに上書きされ最新のものしか残っていません。

また、ヤンクのしかたによってバッファの内容も変わり、文字単位と行単位があります。

ヤンクバッファへの入れるコマンドは「y」「yy」「x」「d」「dd」などです。
また、ヤンクバッファから取り出すときのコマンドは「p」「P」です。

ヤンクの例
[user@localhost tmp]$ cat tmp.txt
123456
abcdef
ghijkl
qwer
zxcv

[user@localhost tmp]$ vi tmp.txt
123456
abcdef     # この行にカーソルを置き、削除「dd」
ghijkl
qwer
zxcv

# vi 削除(ヤンク)後
123456
ghijkl     # カーソルがこの行に移ります、「p」でペースト
qwer
zxcv

# vi ペースト後
123456
ghijkl
abcdef     # ヤンクバッファの内容がペーストされました。
qwer
zxcv

名前つきヤンクバッファの操作は、コマンドの前に「"?」(?はa-zのうち1文字)を付けます。
例えば「"add」とすると、名前つきヤンクバッファ「a」にカーソル行の内容を入れます。

ペーストするときは、「"ap」で名前つきヤンクバッファの内容をカーソルの下に挿入します。

2011/09/05

viエディタ、中級編6(変更)

viエディタ、中級編6(変更)
テキストの変更コマンド

コマンドモードで、テキストの変更には「r」コマンドがありますが、それ以外に以下のコマンドもあります。

s
カーソルの下の文字が削除され、挿入モードになる。「esc」を押すまで挿入モードのまま
(n)s
カーソルからn文字分削除され、挿入モードになる。「esc」を押すまで挿入モードのまま

c(?)
「c」の後に(?)でカーソルの移動範囲を指定して変更するコマンド、機能は「s」コマンドと同じ

cw
カーソルの下の単語を削除して、挿入モードになる

c$
カーソルの下から行末まで削除して、挿入モードになる

c5l
カーソルの下から→に5文字削除して、挿入モードになる

viエディタ、中級編5(置換)

viエディタ、中級編5(置換)
テキストの変更(置換)をするコマンドです

文字数の少ないときは、以下のコマンドを使用します。
r(x)
カーソルの下の文字を1文字(x)に置き換えます。
R
カーソル位置から、文字入力が上書きされます。上書きをやめるときはを押すことでコマンドモードになります。


テキストを修正するとき、変更対象があらかじめ決まっていたり、変更対象の数が多い場合に使用するコマンドです。また、置換コマンドを使用することで、1つひとつ修正した場合のケアレスミスを防げます。

:s/two/three ENTER
文字列「two」を「three」に1回変更します。

:s/two/three/g ENTER
カーソルのある行で、文字列「two」を「three」に複数回変更します。

:#1,#2s/two/three/g ENTER
「#1,#2」の範囲の行で、文字列「two」を「three」に複数回変更します。

:%s/two/three/g ENTER
ファイル全体で、文字列「two」を「three」に複数回変更します。

:%s/two/three/gc ENTER
ファイル全体で、毎回確認しながら文字列「two」を「three」に複数回変更します。

2011/09/04

viエディタ、中級編4(削除)

viの操作に慣れてきたら、次のコマンドを覚えるとさらに便利になります。
・削除
コマンドには、繰り返し回数を指定出来ます。
(一部初級編と重複があります)

(1)コマンドモードでの削除
x
カーソル上の1文字削除
3x
カーソルから3文字削除(繰り返し回数が指定出来ます)
X
カーソルの左を1文字削除

dw
カーソル上の1単語削除
3dw
カーソルから3単語削除(繰り返し回数が指定出来ます)
de
カーソル上の空白の前まで1単語削除
d$
カーソルから行末まで削除
d
「d」はオペレータと呼ばれるもので、「(n)d(m)(x)」というフォーマットで削除できます。(n)(m)は回数指定、(x)は移動コマンドが使えます。 同様のコマンドとして「c」置換「y」ヤンクがあります。

dd
カーソルのある行を削除
5dd
カーソルのある行から5行を削除


(2)入力モードでの削除
BackSpace
カーソルの左を1文字削除
Ctrl-w
カーソルの左を1単語削除
Ctrl-k
カーソルから行末まで削除
Ctrl-u
カーソル行削除

2011/09/03

viエディタ、中級編3(検索)

viエディタ、中級編3(検索)
ファイル内の検索とカーソル移動

ファイル内の修正箇所を検索し、カーソルを移動するコマンドです。

/(string) ENTER
検索対象文字列(string)を検索し、カーソルを移動します。「ENTER」はENTERキーです。
?(string) ENTER
「/」と逆方向に検索対象文字列(string)を検索し、カーソルを移動します。「ENTER」はENTERキーです。

n
同じ検索を繰り返す場合、次の候補を探します

N
同じ検索を繰り返す場合、次の候補を探しますが、検索方向が逆です。

ctrl-O
検索を戻る。行き過ぎたときに使います。

ctrl-I
逆方向の検索を戻る。(検索Nの戻りです)

%
括弧(「( )」「{ }」「[ ]」)の対応を検索。

2011/09/02

viエディタ、中級編2(画面移動)

viエディタ、中級編2(画面移動)
画面移動のコマンド

コマンドモードでは、カーソル移動のほかに画面移動のコマンドがあります。

ctrl-d
半画面のスクロール。
全画面スクロールだと、迷子になってしまうときは、半画面づつのスクロールが便利です

ctrl-f
全画面のスクロール

ctrl-u
半画面の逆スクロール

ctrl-b
全画面の逆スクロール

viエディタ、中級編1(カーソル移動)

viの操作に慣れてきたら、次のコマンドを覚えるとさらに便利になります。
・カーソルの移動
作業を効率的に進めるため、コマンドには繰り返し回数が指定出来ます。

(1)コマンドモードでのカーソル移動
h
カーソルを←に移動
3h
カーソルを←に3文字移動(繰り返し回数を指定出来ます)
Ctrl-h
カーソルを(行を超えて)←に移動
l
カーソルを→に移動
3l
カーソルを→に3文字移動(繰り返し回数を指定出来ます)
Space
カーソルを(行を超えて)→に移動
3Space
カーソルを(行を超えて)→に3文字移動(繰り返し回数を指定出来ます)
w
カーソルを1単語→(単語の先頭)に移動
4w
カーソルを4単語→に移動(繰り返し回数を指定出来ます)
b
カーソルを1単語←に移動
3b
カーソルを3単語左に移動(繰り返し回数を指定出来ます)
e
カーソルを右へ単語の最後に移動
2e
カーソルを右に2単語移動(繰り返し回数を指定出来ます)
0
カーソルを行頭に移動
^
カーソルを(スペース以外の)行頭に移動
$
カーソルを行末に移動
j
カーソルを↓の行に移動
k
カーソルを↑の行に移動
+, RETURN
カーソルを次の行の最初の文字に移動
-
カーソルを前の行の最初の文字に移動

gg
ファイルの最初に移動
G
ファイルの最後に移動
nnG
nn行目に移動(Gは大文字)
Ctrl-g
編集中のカーソル位置を画面の下に表示


(2)入力モードでのカーソルの移動
Ctrl-f
カーソルを→に移動
Ctrl-b
カーソルを←に移動
Ctrl-a
カーソルを行の先頭に移動
Ctrl-e
カーソルを行の最後に移動
おそらく、キーボードの矢印キーに対応しています

2011/09/01

viエディタで使える正規表現2

viエディタで使える正規表現2
正規表現の使用例

文字の説明だけだと理解しずらいので、具体例をあげます。

linux
文字列「linux」

\<host
「host」で始まる語

host\<
「host」で終わる語

\<host\>
単語「host」を検索

^linux
文字列「linux」で始まる行

linux$
文字列「linux」で終わる行

^linux$
文字列「linux」だけの行


[Ll]inux
文字列「Linux」または「linux」

l...x
「l」で始まり「x」で終わる5文字

^l...x$
「l」で始まり「x」で終わる5文字の行

^\.
「.」で始まる行

^\[^.]
「.」で始まらない行


linux*
「linu」「linux」「linuxx」など、「*」は最後の「x」の0回条の繰り返し

[a-z]*
0文字以上のアルファベット小文字 0文字の場合は全てに該当するので、この表現はあまり使わない。むしろ1文字以上にしたかったときに間違いで記述しているかもしれない。

[a-z][a-z]*
1文字以上のアルファベット小文字

[a-z].*
アルファベット小文字のあとに0文字以上の文字

[a-zA-Z]
英字(小文字、大文字)

[0-9a-zA-Z]
英数字

viエディタで使える正規表現

viエディタで使える正規表現
viエディタの検索(/)で使える文字表現です。正規表現は使うコマンド、プログラムによって少し表現(記述)方法が異なるものがあります。 grepなどとは微妙に異なるところがあるので注意が必要です。

.
改行以外の文字

*
0文字以上の繰り返し 1文字以上の繰り返しは「.*」となります

^
行の先頭

$
行末

\
エスケープ

[ ]
括弧内の任意の文字 [0-9],[a-z]などで使用

[^ ]
括弧内の任意の文字に一致しない

\<
直後の単語で始まる

\>
直前の単語で終わる

bashの履歴機能、直前のコマンドを参照して実行

直前のコマンドを参照して実行
履歴機能を使えば直前のコマンドを参照して実行することが出来ます

コマンドの履歴を見たいときはhistoryコマンドを使って下さい。

コマンドを実行していて、よく直前のコマンドを参照したいことがあります。
例えばviでファイルを編集し、そのあと内容を確認する場合、以下の作業になります。

例 ファイルを編集したあと、内容を確認
[user@localhost tmp]$ vi tmp.txt
[user@localhost tmp]$ cat tmp.txt
123

ここで、履歴機能をつかうと、このようになります。

[user@localhost tmp]$ vi tmp.txt
[user@localhost tmp]$ cat !!^
cat tmp.txt               # 最初にファイル名の置換機能が働いて展開されたものが表示されます
123

ここでは、ファイル名や、パスが短いので大した違いはありませんが、ファイル名やパス名が長かったり複雑な場合はタイプミスの原因になります。

履歴機能を使ったコマンドの解説
!! 直前のコマンド
^ 最初のパラメータ
!!:1 直前のコマンドの1番目のパラメータ(こちらの記述でもいい)

パラメータを引き継ぐもう一つの例(直前のコマンドの最後の引数を引き継ぐ)
[user@localhost tmp]$ ls -la tmp.txt
-rw-rw-r--   1 user user   10  8月 21 23:25 2011 tmp.txt
[user@localhost tmp]$ vi !$  
履歴機能を使ったコマンドの解説
!$ 直前のコマンドの最後の引数
!!:2 直前のコマンドの2番目のパラメータ(こちらの記述でもいい)


さらにもう一つの例として、viで編集したけど、終了してからもう一度編集をしたくなったとき,コマンドを打ち直してもいいのですが、履歴機能も使えます。
[user@localhost tmp]$ vi tmp.txt
[user@localhost tmp]$ vi tmp.txt

上記と同じ働き
[user@localhost tmp]$ vi tmp.txt
[user@localhost tmp]$ !!        # 直前のコマンドを実行
もちろん「↑」キーでコマンドを呼び出すこともできますが、「!」キーならキーボードのホームポジションから手を離すことなく打つことが出来ます。