2011/10/06

lsmod

lsmod
モジュールの情報を表示
モジュールの情報を一覧表示します。
# lsmod
Module                  Size  Used by
autofs4                29253  3
hidp                   23105  2
(以下省略)

2011/10/05

modprobe

modprobe
Linux カーネルにモジュールを追加または削除
モジュール間の依存関係をチェックして追加または削除する。
「-i」 モジュールをインストール
「-c」 設定を表示
「-r」 モジュールを削除

$ modprobe -i mod-id

2011/10/04

LILO

LILO
以前のlinuxブートの仕組み
最近のlinuxはGRUBになっていますが、以前はLILOを使っていました。 設定ファイルは、「/etc/lilo.conf」にあります。
 設定コマンド
# /sbin/lilo

関連項目
GRUB

2011/10/02

init

init
ランレベルの変更
linuxを再起動するときの、ランレベルを指定します。 ランレベルは以下のとおりです。
0
シャットダウン
1
シングルユーザモード、システムの変更作業など他のユーザがログインしていない環境を作りたいときに使用します
2
ネットワークなしのマルチユーザモード
3
マルチユーザモード、通常はこれで起動しています。
4
未使用
5
グラフィカルログイン可能なマルチユーザモード、
6
システムの再起動、このモードを指定すると再起動します
「/etc/inittab」を変更したとき、再起動せずに反映したい場合
# init q

2011/10/01

break

break
bashの組み込みコマンド
for while until selectのループから抜ける

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]$ !!        # 直前のコマンドを実行
もちろん「↑」キーでコマンドを呼び出すこともできますが、「!」キーならキーボードのホームポジションから手を離すことなく打つことが出来ます。

2011/08/31

viエディタ、初級編8(vimtutor)

viエディタ、初級編8(vimtutor)
viの使い方、tutor

viは、vimのエイリアスになっています。そのvimの初心者向けtutor(家庭教師)テキストがあります。CentOS 5.5では日本語になっていますのでぜひ一度読んで下さい。作業時間は流して見て30分程度です。もしvi操作に慣れていないなら、操作しながらだと2時間以上かかるかもしれません。でも、このテキストでviの使い方の概略がわかるようになります。もちろん、途中で止めてもテキストは毎回変更がクリアされるので安心です。
一度に2時間が無理なら、15分くらいに分けて最後まで一通り操作することをお勧めします。そうすれば、viのキー操作や、viで何が出来るか、やりたいがあったとき何をすれば良いか、概略が理解できます。

$ vimtutor

出力例
===============================================================================
=    V I M 教 本 (チュートリアル) へ よ う こ そ        -    Version 1.7      =
===============================================================================

     Vim は、このチュートリアルで説明するには多すぎる程のコマンドを備えた非常
     に強力なエディターです。このチュートリアルは、あなたが Vim を万能エディ
     ターとして使いこなせるようになるのに十分なコマンドについて説明をするよう
     なっています。

     チュートリアルを完了するのに必要な時間は、覚えたコマンドを試すのにどれだ
     け時間を使うのかにもよりますが、およそ25から30分です。

     ATTENTION:
     以下の練習用コマンドにはこの文章を変更するものもあります。練習を始める前
     にコピーを作成しましょう("vimtutor"したならば、既にコピーされています)。

     このチュートリアルが、使うことで覚えられる仕組みになっていることを、心し
     ておかなければなりません。正しく学習するにはコマンドを実際に試さなければ
     ならないのです。文章を読んだだけならば、きっと忘れてしまいます!。

     さぁ、Capsロック(Shift-Lock)キーが押されていないことを確認した後、画面に
     レッスン1.1 が全部表示されるところまで、j キーを押してカーソルを移動しま
     しょう。
"/tmp/tutorCb9398" 975 行, 43875 文字

終了するときは、viエディタと同様に、escキーでコマンドモードにして「:q!(enter)」(保存せずに終了)です。

viエディタが使えるとlinux上での作業が楽になります。
vimtutorの練習は出来れば2回以上やることをお勧めします。

なお、linux上で日本語入力が出来ないときは英語版で作業しましょう。
$ vimtutor en



viエディタ、初級編7(tips)

viエディタ、初級編7(tips)
viエディタを使うとき知っておくと便利な操作

viエディタを使うとき知っておくと便利な操作がいくつかあります。

起動オプション
vi +20 tmp.txt
viエディタの起動時に、行指定ができます。
また「+/abcd」とすることで文字(abcd)を検索したあと、カーソルをその行でとめることも出来ます。

コマンドもあります。
u
コマンドモードで編集中に、直前の操作を取り消す。 あまり多用すると何をやっているのか混乱するのでほどほどに。

xp
コマンドモードで編集中に、カーソルの下の文字とカーソルの次の文字を入れ換える。 スペルミスなどで文字の順番を入れ替えるときに便利です。

ddp
コマンドモードで編集中に、カーソルの下の行とカーソルの次行を入れ換える。 入力ミスなどで行の順番を入れ替えるときに便利です。

ctrl-G
ファイル内のカーソル位置を表示します。大きいファイルを編集しているとき、編集箇所を確認するために使います。

:set number
テキストの行番号を表示
表示を消すときは、「:set nonoumber」

2011/08/30

viエディタ、初級編6(man,help)

viエディタ、初級編6(man,help)
viエディタのマニュアル

viエディタのマニュアルは、「man vi」で呼び出すとviコマンドの使い方の説明が表示されます。
また、viは、現在vimのエイリアスになっています。
例 manコマンドで表示されるviの説明
VIM(1)                                                                  VIM(1)

NAME
       vim - Vi IMproved, a programmers text editor

SYNOPSIS
       vim [options] [file ..]
       vim [options] -
       vim [options] -t tag
       vim [options] -q [errorfile]

       ex
       view
       gvim gview evim eview
       rvim rview rgvim rgview

DESCRIPTION
       Vim  is a text editor that is upwards compatible to Vi.  It can be used
       to edit all kinds of plain text.  It is especially useful  for  editing
       programs.

       There  are a lot of enhancements above Vi: multi level undo, multi win-
       dows and buffers, syntax highlighting, command line  editing,  filename
:

viエディタの操作方法を知りたい場合、viエディタを起動したあと、コマンドモードにて以下の操作をして下さい。また、F1キーを押してヘルプ画面が出る設定になっていることもあります。
$ vi tmp.txt             # viエディタを起動

画面がリフレッシュされて、ファイルの内容が表示されたら、コマンドモードの状態で
「:help (enter)」
: help

vi操作のヘルプが開きます。
help.txt*      For Vim version 7.0.  Last change: 2006 Jun 16

                        VIM - main help file
                                                                         k
      Move around:  Use the cursor keys, or "h" to go left,            h   l
                    "j" to go down, "k" to go up, "l" to go right.       j
Close this window:  Use ":q".
   Get out of Vim:  Use ":qa!" (careful, all changes are lost!).

Jump to a subject:  Position the cursor on a tag (e.g. |bars|) and hit CTRL-].
   With the mouse:  ":set mouse=a" to enable the mouse (in xterm or GUI).
                    Double-click the left mouse button on a tag, e.g. |bars|.
        Jump back:  Type CTRL-T or CTRL-O (repeat to go further back).

Get specific help:  It is possible to go directly to whatever you want help
                    on, by giving an argument to the |:help| command.
                    It is possible to further specify the context:
                                                        *help-context*
                          WHAT                  PREPEND    EXAMPLE      ~
                      Normal mode command      (nothing)   :help x
help.txt [ヘルプ][RO]                                         1,1           先頭
abcdef
tmp.txt                                                      2,1            20%
"help.txt" [読込専用] 214L, 7883C

help画面の終了は、「:q (enter)」です。これで、viの編集画面に戻れます。
ヘルプ画面で編集モードになっていることもありますので、「esc」キーを押したあとに「:q (enter)」の操作をする方が安全です。


なお、 vi のtutorもあります。日本語表記なのでこちらの方が見やすいかもしれません。
$ vimtutor

viエディタ、初級編5(変更)

viエディタ、初級編5(変更)
テキストの変更操作

以下のコマンドモードのとき、テキストを変更することが出来ます。
訂正箇所が一部のときに、モードを切り替えなくていいので便利です。

r(x)
カーソルの文字を1文字置き換える、(x)は任意の文字です。実行後は、コマンドモードになる。(挿入モードではありません)

cw
カーソルの文字を1単語置き換える。実行後は、挿入モードになるのでカーソル移動のためには、コマンドモードにするためキーを押して下さい。

c$
カーソル以降行末までの文字を置き換える。実行後は、挿入モードになるのでカーソル移動のためには、コマンドモードにするためキーを押して下さい。

2011/08/29

viエディタ、初級編4(取り消し、再実行)

viエディタ、初級編4(取り消し、再実行)
viエディタの入力作業で、変更を取り消しすることが出来ます

u
直前の変更を取り消し
U
直前の変更を1行分まとめて取り消し

ctrl-R
直前の変更を取り消ししたものの再実行

viエディタ、初級編3(繰り返し)

viエディタ、初級編3(繰り返し)
viエディタを使うとき知っていると効率が上がる操作

viエディタのコマンドは、以下の構成になっています。
「繰り返し回数」「コマンド」「モーション」

ここではviエディタで効率を上げる機能のうち、繰り返し回数の指定について説明します。
viエディタは各操作を行う上で、繰り返し回数の指定が出来ます。指定回数nは数字です。

n「x」
n文字分削除

n「w」
n回分後方に単語単位で移動

n「yy」またはn「Y」
カーソルからn行分をヤンクバッファにコピー

その他各操作で回数の指定が出来ます。

2011/08/28

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

viエディタ、初級編2(ヤンクバッファ)
viエディタの編集コマンド2

windowsで使用するコピー&ペーストのバッファーを、viエディタではヤンクバッファと呼びます。
コマンドモードで、ヤンクバッファを使った行単位のコピーペースト機能があります。

「yy」または「Y」
カーソルの行をヤンクバッファに保存
「p」
カーソルの行の下にヤンクバッファの内容をペースト
「P」
カーソルの行の上にヤンクバッファの内容をペースト

2011/08/27

viエディタ、初級編1(挿入モード、削除、移動)

viエディタ 初級編1(挿入モード)
viエディタで入力編集のコマンド

viエディタでコマンドモードのときに使える編集用コマンド
  1. 挿入
  2. 削除
  3. 移動
  1. 挿入(テキストを入力するためのモードです)
    コマンドモードから挿入の操作では、この操作のあと挿入モードになります。
    「i」キー
    カーソルの前に文字を挿入
    「a」キー
    カーソルの後に文字を挿入
    「I」キー
    行の先頭に移動し文字を挿入
    「A」キー
    行末に移動し文字を挿入
    「o」キー
    カーソルの上に1行挿入
    「O」キー
    カーソルの下に1行挿入
  2. 削除
    削除の操作後もコマンドモードのままです。
    「x」キー
    カーソルの下にある文字を1文字削除
    「d0」キー
    カーソルから行頭まで削除
    「dw」キー
    カーソルからスペースを含む次の単語の区切りまで削除
    「de」キー
    カーソルからスペースを含まない次の単語の区切りまで削除
    「df?」キー
    次の「?」キーまで削除
    「D」キー、「d$」
    カーソルから行末まで削除

  3. 移動
    移動操作のあともコマンドモードのままです。
    「H」キー
    ファイルの先頭に移動
    「G」キー
    ファイルの最後に移動
    「w」キー
    単語単位でファイルの後方に移動
    「b」キー
    単語単位でファイルの前方に移動
    「0」キー
    行頭に移動
    キーボードがら手が離れてしまいますが、「HOME」キーでも同じ動作をします
    「$」キー
    行末に移動
    キーボードがら手が離れてしまいますが、「END」キーでも同じ動作をします
    「/文字列」キー
    文字列を検索
    「?文字列」キー
    文字列を逆方向に検索
    「n」キー
    文字列を再検索
    「N」キー
    文字列を逆方向に再検索

2011/08/26

正規表現の演算子

正規表現の演算子には以下のものがあります。


.「ドット」 1文字に相当
$            行末
^            行頭
*            0文字以上の繰り返し
\            エスケープ(特殊文字の前に置くことで特殊文字の機能を打ち消す)
[文字]     括弧内の文字に該当
              たとえば[0-9]なら[0123456789]と同じで、数字を表します。 
[^文字]    括弧内の文字以外に該当
              たとえば[^0-9]なら[0-9]以外と同じです。数字以外を表します。 

正規表現は、シェルを扱うときなどに使います。必要なときに思い出して下さい。
ファイルを扱うときのメタキャラとは異なります。

2011/08/25

bash

bash
bash(Bourneアゲインシェル)は、KornシェルとCシェルの機能を取り込んでいます。
さらに、KornシェルはBourneシェルの機能が取り込まれています。

CentOSでは、標準のログインシェルはbashです。
現在のシェルを知る方法
[user@localhost ~]$ ps
  PID TTY          TIME CMD
 7197 pts/1    00:00:00 bash
 7225 pts/1    00:00:00 ps

bashのプロンプト

bashのプロンプト
bashのプロンプトについて

telnetで接続したときの端末画面では、bashのシェルによりコマンドの入力を受け付けられるようになっています。
このコマンド入力待ちの表示がプロンプトです。

[user@localhost ~]$ id 
uid=500(user) gid=500(user) 所属グループ=10(wheel),500(user) 
[user@localhost ~]$ pwd 
/home/user 

プロンプトは、一般ユーザと、rootユーザでは異なっています。

[root@localhost ~]# id 
uid=0(root) gid=0(root) 所属グループ=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) 
[root@localhost ~]# pwd
/root 

一般ユーザでは「#」、rootユーザでは「#」が使われます。
linuxでは、どのユーザで作業しているか常に意識しましょう。

また、bashのプロンプトは環境変数PS1に設定されています。
[root@localhost ~]# echo $PS1
[\u@\h \W]\$
特殊記号の意味は、以下の通りです。
\u ユーザ名
\h ホスト名
\W カレントディレクトリ
\$ rootユーザなら「#」一般ユーザなら「$」

その他有用なもの
\w カレントディレクトリ(フルパス)
\d 日付
\t 時刻
\! ヒストリ番号

2011/08/24

su、その2

su
他のユーザでログイン、コマンド実行

ログインしているユーザを切り替えてコマンドを実行するなど作業したいときに使用、多くはrootユーザへの切り替えに使用する。
「-」は、ログオン後に新しいユーザの環境変数を使用します。
「-」をつけない場合、su実行前のユーザの環境変数が使われます。

また、「-c」オプションでコマンド実行も可能
[user@localhost ~]$ su - -c 'service httpd restart'
パスワード:
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

head

head
ファイルの先頭行を表示

ファイルの先頭行だけを表示したいとき、headコマンドを使います。
catコマンドだとファイルが大きいと画面が流れてしまいます。ファイルの先頭だけを確認したいならheadコマンドを使います。
もちろんlessコマンドでも最初に先頭が表示され、さらに全体も確認できます。
コマンドは、以下のとおり。
head -行数 ファイル

例 「.bash_profile」ファイルの先頭5行を表示
[user@localhost ~]$ head -5 .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
行の指定がないときは、10行表示されます。

2011/08/23

tail

tail
ファイルの最後の行を表示

シスログなど、サイズの大きいファイルを見るとき、catコマンドで表示させると画面が流れて今います。こんなときファイルの最後だけ表示させるコマンドがtailです。
コマンドは、以下のとおり。
tail -行数 ファイル

例 ファイルのサイズを確認して、最後を20行表示
[user@localhost ~]$ ll /etc/syslog.conf
-rw-r--r-- 1 root root 694  4月  3  2010 /etc/syslog.conf
[user@localhost ~]$ wc /etc/syslog.conf
 26  93 694 /etc/syslog.conf
[user@localhost ~]$ tail -20 /etc/syslog.conf
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog


# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 *

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
wcコマンドでsyslog.confファイルの行数(この例だと26行)を確認し、ファイルの最後を表示します。
行数の指定がないときは、tailコマンドは最後の10行を表示します。

その他の使い方として、ログファイルの監視をするときに「-f」オプションがあります。
ログファイルの最後を表示したあと、そのまま、ログが追記されるに従い表示されます。
ログが書かれるタイミングと、サーバの動きを同期させて確認したいときに有効です。
表示を終了するときは、ctrl-cを押します。
[root@localhost ~]# tail -f /var/log/messages

viエディタ、入門編3

viエディタ、入門編3
最初によくやる間違いの対応
事象
viのあとにファイル名を入れたつもりになっていて、実は入力していないときもあります。
viエディタを起動するとき、ファイル名を指定しないで起動したため終了できない。(:q)でエラーになる。
E37: 最後の変更が保存されていません (! を追加で変更を破棄)

原因
viエディタを起動するとき、ファイル名を付けずに起動することも出来ます。
$ vi
しかし、ファイル名が決まっていないので、せっかくテキストを作成しても保存、終了できません。

解決策
(1)コマンドモードでファイル名を指定して保存(:w file.txt)。そのあとに終了(:q)する。
(2)テキストを入力していても、全て破棄して一度終了(:q!)してから、再度、ファイル名を指定してviエディタを起動する。
$ vi file.txt

2011/08/22

viエディタ、入門編2

viエディタ 入門編2
linuxで使用するviエディタの入門編です。viを使う上で最低限の機能です。

linuxでは、環境設定など設定ファイルを変更する場合viエディタでテキストの編集をします。
これから、いくつかの項目に分けてviの説明を記述します。
まず、今回は入門編で最低限の機能の紹介です。

そのエディタviは、windowsで使用するノートパッドやワードとは異なり、カーソルの移動はマウスでは出来ません。まず、マウスを使わない操作に慣れましょう。
viエディタで、マウスを使わないでカーソルを動かすためには、キー操作が必要になります。
また、viエディタはメニューがありません。メニュー操作に該当するのがviエディタのコマンドモードです。

viエディタは2つのモードがあります。
  • コマンドモード
  • 入力モード(テキスト入力モード)
コマンドモード
コマンドモードのとき、テキスト入力はできません。コマンド入力のみです。 このモードのときは、テキストの左下に何も表示されていないか、入力中のコマンドが表示されています。 入力モードに移るためには、テキスト挿入のためのキー(i,aなど)を押します
入力モード
入力モードのときは、テキストの入力が出来ます。いわゆる入力作業です。 また、テキストの左下に「-- 挿入 --」が表示されています。 コマンドモードに移るためには「esc」キーを押します。モードが判らなくなったら、とりあえず「esc」キーを押してコマンドモードに戻るクセをつけると良いです。

viエディタを使う上で、今どちらのモードで操作しているのか、常に意識している必要があります。なぜなら、同じキーを押してもモードが異なると違う意味(コマンド、動き)になるからです。
viエディタを扱うためには、このモードの理解と認識が最初のハードルです。

viエディタの起動
$ vi tmp.txt ファイル名を指定して起動すると、エディタが開きます。 viエディタを起動した直後は、コマンドモードになっています
モードの切り替え
コマンドモード→入力モードへの切り替えは、i,aキーなど 入力モード→コマンドモードへの切り替えは、「esc」キー
カーソル移動
2つ目のハードルがカーソル移動です。 コマンドモードでカーソルの移動が出来ます。カーソル移動は、次の4つのキーで行います。 「h」 カーソルを左に移動(←) 「j」 カーソルを下に移動(↓) 「k」 カーソルを上に移動(↑) 「l」 カーソルを右に移動(→)
設定によっては、矢印キーが使えることもありますが、「h」「j」「k」「l」だとキーボードから手を離さずに使えるので慣れると便利です。
カーソルの移動でテキストの入力位置がきまったら、次は入力モードへの切り替えです。

入力モードへ
入力モードへの切り替えは次の2つのキーです 「i」キーは、カーソルの位置で入力モードになります。 「a」キーは、カーソルの次の位置で入力モードになります。 間違ったテキストを作らないために、違いをよく認識して下さい。 入力モードに切り替わったら、テキストの入力ができます。 テキストを修正するときなど、カーソルを移動させたくなったら「esc」キーでコマンドモードにしてから、カーソルを移動させます。
コマンドモードへ
テキストの入力が終わったら、「esc」キーでコマンドモードへ切りかえます。
コマンドモードでのコマンド(終了)
「ZZ」(または:wq)で、編集中のテキストをファイルに保存して終了します。 「:q!」で、編集中のテキストを廃棄、テキストは保存せずに終了します。
文字の削除
間違った文字を削除したい場合は、コマンドモードで削除対象の文字にカーソルを合わせて「x」キーを押します また入力モードで、「Backspace」キーが使える場合もあります。

viエディタ、入門編

viエディタ、入門編
viエディタの超入門として起動と終了
とりあえず、起動方法と終了方法は以下のとおりです。
viエディタの使い方入門はこちら

viエディタはマウスが使えません。カーソルの移動を含めて全ての操作をキーボードからの入力で行います。まず、マウスから手を離すことから始めて下さい。

起動方法、ファイル名を指定して起動します。
$ vi  file.txt
ファイルを指定しないと、viを起動できますが、終了するときファイルを書き出ししていないというエラーが表示されます。(ファイルの書き出しが出来るユーザは初心者から卒業しています)
起動直後は、コマンドモードになっています。「i」または「a」で入力モードにしてテキストを入力します。

終了方法、コマンドモードにして終了します。
コマンドモードのときは
「ZZ」または、「:wq(enter)」  編集中のテキストを保存したあと、終了
「:q!」  編集中のテキストは保存せず終了
(viエディタは、編集中のテキストを保存するかしないか決めないでただ終了させるということはできません)

入力モードのときは、「esc」でコマンドモードにしてから終了します。
入力モードのままでは終了できません。
(プロセスを強制終了させることも出来ますが、そこまでやらなくても普通に終了させましょう)

2011/08/21

bashのhelp

bashのhelp
bashのhelpコマンド

一般ユーザがtelnet接続でログインしているとき、ユーザからのコマンド入力を処理しているものはシェルと呼ばれています。
ここで使用しているのはbashシェルですが、centosに限らずbashには、helpコマンドがありbashの組み込みコマンドが表示できます。
manコマンドでもいいのですが、簡単なことの確認ならhelpコマンドで確認可能です。
日本語にはなっていませんが簡単なので理解できるのではないでしょうか。

[user@localhost ~]$ help
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
These shell commands are defined internally.  Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list.

A star (*) next to a name means that the command is disabled.

 JOB_SPEC [&]                       (( expression ))
 . filename [arguments]             :
 [ arg... ]                         [[ expression ]]
 alias [-p] [name[=value] ... ]     bg [job_spec ...]
 bind [-lpvsPVS] [-m keymap] [-f fi break [n]
 builtin [shell-builtin [arg ...]]  caller [EXPR]
 case WORD in [PATTERN [| PATTERN]. cd [-L|-P] [dir]
 command [-pVv] command [arg ...]   compgen [-abcdefgjksuv] [-o option
 complete [-abcdefgjksuv] [-pr] [-o continue [n]
 declare [-afFirtx] [-p] [name[=val dirs [-clpv] [+N] [-N]
 disown [-h] [-ar] [jobspec ...]    echo [-neE] [arg ...]
 enable [-pnds] [-a] [-f filename]  eval [arg ...]
 exec [-cl] [-a name] file [redirec exit [n]
 export [-nf] [name[=value] ...] or false
 fc [-e ename] [-nlr] [first] [last fg [job_spec]
 for NAME [in WORDS ... ;] do COMMA for (( exp1; exp2; exp3 )); do COM
 function NAME { COMMANDS ; } or NA getopts optstring name [arg]
 hash [-lr] [-p pathname] [-dt] [na help [-s] [pattern ...]
 history [-c] [-d offset] [n] or hi if COMMANDS; then COMMANDS; [ elif
 jobs [-lnprs] [jobspec ...] or job kill [-s sigspec | -n signum | -si
 let arg [arg ...]                  local name[=value] ...
 logout                             popd [+N | -N] [-n]
 printf [-v var] format [arguments] pushd [dir | +N | -N] [-n]
 pwd [-LP]                          read [-ers] [-u fd] [-t timeout] [
 readonly [-af] [name[=value] ...]  return [n]
 select NAME [in WORDS ... ;] do CO set [--abefhkmnptuvxBCHP] [-o opti
 shift [n]                          shopt [-pqsu] [-o long-option] opt
 source filename [arguments]        suspend [-f]
 test [expr]                        time [-p] PIPELINE
 times                              trap [-lp] [arg signal_spec ...]
 true                               type [-afptP] name [name ...]
 typeset [-afFirtx] [-p] name[=valu ulimit [-SHacdfilmnpqstuvx] [limit
 umask [-p] [-S] [mode]             unalias [-a] name [name ...]
 unset [-f] [-v] [name ...]         until COMMANDS; do COMMANDS; done
 variables - Some variable names an wait [n]
 while COMMANDS; do COMMANDS; done  { COMMANDS ; }

また、オプションの問い合わせも可能です。
例えば、aliasについてhelpコマンドは以下の通りです。

[user@localhost ~]$ help alias
alias: alias [-p] [name[=value] ... ]
    `alias' with no arguments or with the -p option prints the list
    of aliases in the form alias NAME=VALUE on standard output.
    Otherwise, an alias is defined for each NAME whose VALUE is given.
    A trailing space in VALUE causes the next word to be checked for
    alias substitution when the alias is expanded.  Alias returns
    true unless a NAME is given for which no alias has been defined.

2011/08/20

set

set
シェル変数の表示

telnetなどでログインしているとき、ログインシェルの環境で動いています。
この環境であらかじめ設定されている変数がシェル変数です。
シェル変数にはenvで表示できる環境変数も含まれます。
そのほかに、シェルの情報が保存されている特別変数と、ユーザが定義するプログラム変数があります。

例 
$ set
BASH=/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=()
BASH_SOURCE=()
(以下省略)

参照コマンド
env

2011/08/16

date

date
日付時刻の表示と日付時刻設定

通常、linuxシステムは、起動したら落とすことはそうたびたびありません。
しかし、vmwareでlinuxを使っているとPCを停止するときは、vmwareも落ちています。vmwareを停止するときサスペンドで落とすと、次回の起動で時刻は停止前の日付時刻を引き続いて使います。
このため、日付・時刻が違ってきてしまいますので、日付・時刻を合わせることになります。

操作はrootユーザで実行します。
$ su -
パスワード:
# date
2011年  7月 28日 木曜日 05:07:52 JST
# date -s "07/28 05:09 2011"
2011年  7月 28日 木曜日 05:09:00 JST
# date
2011年  7月 28日 木曜日 05:09:02 JST
# exit
logout
$ 

2011/08/15

id

id
ユーザの情報表示

ユーザIDとグループIDを表示します。
$ id user
uid=500(user) gid=500(user) 所属グループ=500(user)
ユーザ名を省略した場合は、ログインユーザの情報が表示されます。

ユーザは以下のファイルのユーザIDとグループIDで管理されています。
/etc/passwd - ユーザーアカウント情報
/etc/group - グループ情報

2011/08/14

chmod

chmod
ファイルとディレクトリの権限変更
chmodの書式は、以下のとおりです。
chmod  mod file
  • modの書き方は、2通りあります。
    1. シンボルモードの指定
    2. 数字モードの指定
  • 2番目のパラメータが対象ファイルです。
シンボルモードの指定方法
シンボルモードの指定は、対象と演算子とアクセス権です。
対象は、u,g,o,a(省略時はa)
演算子は、+,-,=
アクセス権は、r,w,x

例 シンボルモードの指定
$ ls -l tmp.txt
-rw-rw---- 1 user user 25  7月 29 15:30 tmp.txt
$ chmod o+rw tmp.txt
$ ls -l tmp.txt
-rw-rw-rw- 1 user user 25  7月 29 15:30 tmp.txt


数字モードの指定方法
数字モードの指定は、3桁の数字で指定します。
  • 1桁目 ファイルの所有者
  • 2桁目 グループ
  • 3桁目 その他ユーザ
3桁の並びは、ファイルの権限で説明した並びと同じです。

それぞれの桁の意味は以下のとおりです。
  • 4 書き込み権限
  • 2 読み込み権限
  • 1 実行権限
そして、それぞれの権限の和が1桁を表します。
例えば、書き込み権限と読み込み権限なら6、全アクセス権限指定であれば7です。

例 数字モードの指定
$ ls -l tmp.txt
-rw-rw---- 1 user user 25  7月 29 15:30 tmp.txt
$ chmod 666 tmp.txt
$ ls -l tmp.txt
-rw-rw-rw- 1 user user 25  7月 29 15:30 tmp.txt
この例で、数字モード指定の666は以下の意味になります。
1桁目 6 ファイルの所有者は、読み込み権限と書き込み権限
2桁目 6 グループは、読み込み権限と書き込み権限
3桁目 6 その他ユーザは、読み込み権限と書き込み権限

2011/08/13

権限

権限
linuxのファイルシステムはアクセス権限が設定されています

linuxのファイルシステムはアクセス権限が設定されています。
これは、ファイルとディレクトリに設定されています。

権限は、ファイルの属性をlsコマンドで確認出来ます。
例 ファイルの属性
$ ls -l
-rw-rw-r-- 1 user user   25  7月 29 15:30 tmp.txt

権限は、最初の「-」(d:ディレクトリ)の次の「rw-rw-r--」で表現される部分です。
この部分は3桁ごとに、ファイルの所有者(ユーザ)の権限、グループの権限、他のユーザの権限です。
ファイルの所有者権限 rw- (読み取り権限あり、書き込み権限あり)
グループの権限    rw- (読み取り権限あり、書き込み権限あり)
他のユーザの権限   r-- (読み取り権限あり)
3桁の意味は、読み取り権限、書き込み権限、実行権限となっています。

ファイルの所有者とグループは、「user」と「user」の部分です。
この例では、tmp.txtは、所有者userが読み取りと書き込み権限があり、グループuserも同様に読み取りと書き込み権限があり、他のユーザは、読み取り権限があります。

例 権限のないファイルの参照
$ ls -l /var/log/messages
-rw------- 1 root root 135678  7月 29 21:03 /var/log/messages
$ cat /var/log/messages
cat: /var/log/messages: 許可がありません
ユーザuserでログインしているとき、ユーザrootではないので、ファイルmessagesに関して参照権限がありません。

2011/08/12

dirs

dirs
ディレクトリスタックの表示

ディレクトリスタックの内容を表示します。


$ dirs
~/tmp ~
この例では、現在ディレクトリ「~/tmp」にいて、ディレクトリスタックにはディレクトリ「~」(ホームディレクトリ)が保存されています。

関連コマンド
pushd
popd

2011/08/11

pushd

pushd
カレントディレクトリの変更とスタックへの追加

pushdは、cd(chdir)と同様に使えます。その上ディレクトリをスタックに保存してくれます。
linuxで作業していると、ディレクトリを移動してコマンドを実行することがたびたびあります。
その都度ディレクトリパスをメモして、カット&ペーストしてもいいのですが、ディレクトリスタックに保存しておいて再利用する方法があります。

コマンドの説明
pushd dir
ディレクトリを指定した場合は、指定したディレクトリがスタックに保存されます
pushd +1
「+」と数字を指定した場合は、指定した数字のディレクトリスタックに移動します。ディレクトリスタックは0から始まります

使用例(環境)
ユーザ user
ディレクトリ /home/user/tmp/,/home/user/tmp/dir1/,/home/user/tmp/dir2/
この場合でログイン直後は、/home/userにいます。
tmpとtmp/dir1,tmp/dir2に移動して作業することを想定した使用例です。

使用例
$ pwd
/home/user
$ pushd tmp
~/tmp ~
$ dirs
~/tmp ~
$ pushd dir1
~/tmp/dir1 ~/tmp ~
$ pushd ../dir2
~/tmp/dir2 ~/tmp/dir1 ~/tmp ~

$ pushd +1
~/tmp/dir1 ~/tmp ~ ~/tmp/dir2

最初は、「~」(/home/user)ホームディレクトリにいます。
次にtmpディレクトリに移動します。するとスタックには「~/tmp」と移動前の「~」が残ります。今いるディレクトリは、dirsで表示される先頭のディレクトリです。
そして、dir1に移動します。スタックには追加された「~/tmp/dir1」と保存されていた「~/tmp」「~」が残ります。
さらに、dir2に移動します。スタックには追加された「~/tmp/dir2」と保存されていた「~/tmp/dir1」「~/tmp」「~」が残ります。

このディレクトリ間を作業で移動する場合、たとえば「~/tmp/dir1」に戻る場合は次のいずれかです。
(1)pushd +1
(2)pushd ~/tmp/dir1
「pushd +1」は、ディレクトリスタックの「+1」番目への移動です。現在の並びが「~/tmp/dir2」「~/tmp/dir1」 「~/tmp」 「~」となっています。スタックは「+0」から始まるので「+1」番目が「~/tmp/dir1」になります。
また、「~/tmp/dir1」を指定してもいいのですが、pushdを使うメリットが少なくなります。

使い方のお勧め
cdの代わりにpushdを使用し、ディレクトリスタックに何があるかわからなくなったらdirsで確認する。

2011/08/10

touch

touch
ファイルのアクセス時刻と修正時刻を変更

ファイルの属性情報を変更するコマンドですが、空(サイズが0)のファイルを作成するときに良く使われます。

例1 空のファイルを作成
$ touch file1
$ ls -l
-rw-rw-r-- 1 user user    0  7月 28 10:35 file1

例2 ファイルの日付、時刻を変更
$ touch -t1107010000 file1
$ ls -l
-rw-rw-r-- 1 user user    0  7月  1 00:00 file1

なおファイル名は英数字のみを使い、日本語は使用しないようにしましょう。
最近のlinuxは日本語ファイル名も扱えますが、全てのプログラムが日本語ファイル名を扱えるとは限りません。思わぬ障害を発生させないためのおまじないと思って、日本語ファイル名は使わないことをお勧めします。

2011/08/09

file

file
ファイルの形式を表示

catコマンドなどで、ファイルの内容を確認しているとき、バイナリファイルを表示してしまうことがあります。このような場合には、fileコマンドで事前に確認出来ます。
$ file .bash_history
.bash_history: ASCII text

2011/08/08

sudo

sudo
管理者権限によるコマンドの実行

linuxコマンドは、一般ユーザの権限では実行できないコマンドがあります。
こんなときは、rootユーザに切り替えて作業します。しかし、決まった作業のたびにrootユーザの切り替えをしないで実行できる方法があります。
この作業は、管理情報編集(visudoコマンド)でviを使うため、viの操作に慣れていない場合は実施しないほうが安全です。どうしても使いたい場合は、viエディタの使い方に慣れてから作業しましょう。

例 権限のない操作
$ date
2011年  7月 28日 木曜日 04:27:56 JST
$ date -s "07/28 04:30 2011"
date: 日時を設定できません: 許可されていない操作です
2011年  7月 28日 木曜日 04:30:00 JST
$ date
2011年  7月 28日 木曜日 04:29:34 JST

まず、rootユーザにてvisudoで管理者権限の情報を編集します。
$ su -
パスワード:
# visudo

編集画面で、以下の情報を変更します。
<変更前>
## Allows people in group wheel to run all commands
# %wheel  ALL=(ALL)       ALL

<変更後>
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
変更したら、viと同様保存して終了(:wq)して下さい。

次に、ユーザにwheelグループを追加します。
# id user
uid=500(user) gid=500(user) 所属グループ=500(user)
# usermod -G wheel user
# id user
uid=500(user) gid=500(user) 所属グループ=500(user),10(wheel)
# exit

これで、管理者権限でコマンドが実行できるようになりました。
$ date
2011年  7月 28日 木曜日 04:50:33 JST
$ sudo date -s "07/28 04:52 2011"
[sudo] password for user:
2011年  7月 28日 木曜日 04:52:00 JST
$ date
2011年  7月 28日 木曜日 04:52:39 JST
$

2011/08/07

history

history
コマンドの入力履歴を表示
コマンドを入力した履歴の表示をすることが出来ます。

例1 コマンドの履歴を全件表示
$ history


例2 コマンドの履歴を件数を指定して表示
$ history 11


例3 コマンドの再実行
$ !10
コマンド履歴の10番目のコマンドを実行
コマンドの打ち直しをするとき、過去の入力したものを参考に再実行することが出来ます。
historyで履歴を表示して、番号を確認その番号を参考に「!」を付けて実行します。

また、コマンドの履歴は、環境変数によって設定されています。
例4 環境変数の表示
$ env
(途中略)
HISTFILE=/home/user/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000

設定値の例
コマンドの履歴ファイル /home/user/.bash_history
(前回のログアウトまでの履歴)
履歴ファイルのサイズ 1000個
保存する履歴の数   1000個

関連コマンド
fc

2011/08/06

whereis

whereis
コマンドのパスを検索

linuxコマンドの実行は、シェル変数PATHで設定されたディレクトリを参照します。このディレクトリ以外にあるコマンドは、実行してもシェルがコマンドを見つけることが出来ません。
$ echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/user/bin

$ ifconfig
-bash: ifconfig: command not found

whereisは、「command not found」になった場合などのとき、コマンドのパスを検索するとき使います。
全てのパスを検索するのではないので、見つからないこともあります。
whereisが検索するパスは、whereisのマニュアルを参照して下さい。
$ whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz

$ /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          inet addr:192.168.226.132  Bcast:192.168.226.255  Mask:255.255.255.0
(省略)

2011/08/05

cp

cp
ファイルのコピー

ファイルのコピーコマンドです。

例1
$ cp file1 file2
ファイルfile1をファイルfile2にコピーする

例2
$ cp -R dir1 dir2
ディレクトリdir1とディレクトリに含まれるファイルを全て、dir2にコピーする

良く使うものとして、変更前のテキストのバックアップを取得するために使用。

2011/08/04

mv

mv
ファイルの移動

ファイルを移動する。また、ファイル名の変更でも使用。
linuxでは、ファイル名の変更コマンドはありません。mvコマンドで変更します。

例1 ファイルの移動
$ mv  dir1/file1 dir2/file1
ディレクトリdir1にあるファイルfile1を、ディレクトリdir2に移動する。
コピーではないので、元のディレクトリdir1にあるファイルfile1はなくなります。

例2 ファイルの移動
$ mv  dir1/file1 dir2
ディレクトリdir1にあるファイルfile1を、ディレクトリdir2に移動する。
ファイル名を省略した記述。

例3 ファイル名の変更
$mv file1  file2
ファイル名の変更、ファイルfile1のファイル名をfile2に変更する。

例4 ファイル名の変更
$ mv dir1/file1  dir1/file2
ファイル名の変更その2、ディレクトリdir1のファイルfile1のファイル名をfile2に変更する。
 (相対パス指定)

例5 ファイル名の変更
$ mv /home/user/dir1/file1  /home/user/dir1/file2
ファイル名の変更その3、ディレクトリdir1のファイルfile1のファイル名をfile2に変更する。
 (絶対パス指定)

2011/08/03

rmdir

rmdir
ディレクトリの削除

削除対象ディレクトリにファイルが残っている場合は、エラーになります。
linuxのディレクトリ削除は、windowsのフォルダ削除とは異なり、ごみ箱に入ることはありません。一度削除したものは元に戻せません。削除する前に削除してよいものかもう一度確認しましょう。

例1 空のディレクトリを削除
$ rmdir  dir1
現在のディレクトリの下位にある、空のディレクトリdir1を削除(相対パス指定)

例2 空のディレクトリを削除
$ rmdir  /home/user/dir1
空のディレクトリ「/home/user/dir1」を削除(絶対パス指定)

2011/08/02

mkdir

mkdir
ディレクトリを作成

例1 ディレクトリを作成
$ mkdir  dir1
現在のディレクトリの下にdir1ディレクトリを作成する(相対パス指定)
例えば、/home/userディレクトリでコマンドを実行したとすると、/home/user/dir1が作られる。

例2 ディレクトリを作成
$ mkdir  -p /home/user/dir1
ディレクトリ/home/user/dir1を作成する(絶対パス指定)
「-p」は、もし/home/userディレクトリが無ければ、/home/userディレクトリも作られます。

2011/08/01

df

df
ファイルシステムごとに使用量を表示

linuxのディスクは、ファイルシステムごとに管理されています。その使用量を表示するコマンドです。
開発環境ではディスク容量不足になることはほとんど有り得ませんが、最初の割り当てが少ない場合や、プログラムが暴走して極めて大きいファイルを作ってしまうことがまれにあります。
linuxシステムでは、コマンドの実行などで、一時ファイルを作るときがあります。

例 ディスク使用量の表示
$ df

オプションとして「-k」または「-m」としたほうが容量の確認がしやすい。

2011/07/31

less

less
ファイルの内容表示

catコマンドは、telnetなど端末にテキストを表示します。
一方、lessコマンドもファイルの内容をテキスト表示しますが、表示を1ページごとに止めてくれます。ページの移動は、矢印キーなどを使用します。


$ less file1

<移動のコマンド>
space、d、page down  1ページ進める
↓  1行進める
↑  1行戻る
b  1ページ戻る

<特殊なコマンド>
v   環境によっては、編集用のエディタ(vi)が起動する

その他のキーはマニュアルで確認して下さい。
$ man less

2011/07/30

man

man
マニュアルの表示

コマンドの使い方がわからないときは、とりあえずmanコマンドで確認しましょう。
コマンドにはオプションの解説があります。
マニュアルの表示で、カーソルキーが使えます。使い方はlessコマンドと同じです。
最初は読みづらい解説です、使い方の例が少ないのですが、慣れるしかありません。


例1 lsコマンドのマニュアル表示
man ls


例2 lessコマンドのマニュアル表示
man less

2011/07/29

ディレクトリの特殊な表現、その2

ディレクトリの特殊な表現、その2

「~-」(チルダとハイフォン)は、直近のカレントディレクトリを表します。
2つのディレクトリを移動して作業するとき、現在のディレクトリと直近のディレクトリを扱えるので便利です。

例 /usrと/home/user(~)で作業する場合
[user@localhost usr]$ pwd             # 現在/usrにいます
/usr
[user@localhost usr]$ ls
X11R6  etc    include   lib      local  share  tmp
bin    games  kerberos  libexec  sbin   src
[user@localhost usr]$ cd ~            # /home/userに移動しました
[user@localhost ~]$ pwd
/home/user
[user@localhost ~]$ ls
proj  tmp
[user@localhost ~]$ ls ~-             # 移動前のディレクトリを見ています
X11R6  etc    include   lib      local  share  tmp
bin    games  kerberos  libexec  sbin   src
[user@localhost ~]$
[user@localhost ~]$ cd ~-             # 再び前のディレクトリ(/usr)に移動しました
[user@localhost usr]$ pwd
/usr
[user@localhost usr]$ ls
X11R6  etc    include   lib      local  share  tmp
bin    games  kerberos  libexec  sbin   src
[user@localhost usr]$ ls ~-           # /usrに移動する前のディレクトリは/home/userです
proj  tmp
[user@localhost usr]$

なお、lsコマンドなどを使わず、cdコマンドだけで作業するなら「-」(ハイフォン)だけでも直近のディレクトリへの移動は出来ます。
$ cd -

ディレクトリの特殊な表現

ディレクトリには、特殊な表現をするものがいくつかあります。

「.」 (ピリオド、もしくはドット)
「..」 (ピリオド、もしくはドット2個)
「~」 (チルダー、もしくはチルド)

「.」 (ピリオド、もしくはドット)は、現在のディレクトリをあらわします。
例 「.」 (ピリオド、もしくはドット)
$ pwd
/home/user/tmp
$ ls -l .
-rw-rw----  1 user user   25  7月 29 15:30 tmp.txt

「..」 (ピリオド、もしくはドット2個)は、現在のディレクトリの1つ上のディレクトリをあらわします。
$ pwd
/home/user/tmp
$ cd ..
$ pwd
/home/user
ディレクトリ/home/user/tmpから、1つ上のディレクトリ/home/userへ移動

「~」(チルダー)は、ユーザのホームディレクトリ/home/userをあらわします。
例 「~」(チルダー)を使ったディレクトリの指定
$ pwd
/home/user/tmp/dir1
$ cd ~/tmp
$ pwd
/home/user/tmp

なお、cdコマンドは、ディレクトリ指定がない場合、ホームディレクトリになります。
例 ホームディレクトリへの移動
$ pwd
/home/user/tmp
$ cd 
$ pwd
/home/user

ls

ls
ファイル、ディレクトリの表示

例1 ファイル、ディレクトリを表示
$ ls
現在いるディレクトリにあるファイル、ディレクトリを表示
lsコマンドでディレクトリの指定を省略した場合、現在のディレクトリを表示します。

例2 ファイル、ディレクトリを一覧表示
$ ls -la
現在のディレクトリのファイル、ディレクトリの一覧表示

例3 指定ディレクトリのファイル、ディレクトリを一覧表示
$ ls -la /home
「/home」ディレクトリのファイル、ディレクトリを一覧表示

<オプション>
-l 一覧表示
-a .(ドット)で始まるファイルも表示
.(ドット)で始まるファイルは、-aオプションを付けないと表示されません。

<ファイル名>
ファイル・ディレクトリには「*」「?」が使えます。


lsコマンドのその他のオプションについては、manコマンドで詳細を見てください。
$ man ls

2011/07/28

su

su
管理者ユーザへの切り替え

linuxユーザは、管理者ユーザ(root)と一般ユーザに分かれます。
通常作業するのは、一般ユーザですが、一部のコマンドは管理者ユーザでないと使えません。
管理者ユーザに切り替えるのがsuです。
$ su -
パスワード:
# 

管理者ユーザから一般ユーザに戻るときは、exitコマンドです。
# exit
$ 

もちろん一般ユーザ同士で切り替えるときにも使えます。
$ su - user
パスワード:
$ 

pwd

pwd
現在いるディレクトリの位置を表示


例 ディレクトリの位置を表示
$ pwd
/home/user
コマンドを実行したときにいる現在のディレクトリの位置を表示します。

linuxコマンドの実行には、現在どことディレクトリ上で作業しているのか常に意識している必要があります。同じコマンドを実行しても、ディレクトリが異なることで実行結果が変わってしまうことはよくあります。

2011/07/27

chdir

cd chdir
ディレクトリの移動

linuxは通常コマンドラインのインターフェイスで使用することが多い。このとき、コマンドを入力する作業を何処(何処のディレクトリ上)で実施しているのか、常に意識して作業する必要がある。
コマンドを実行する際にディレクトリの位置により動作が異なることがあるので注意が必要。
コマンドはcd でも chdirでも良い。

例1 ホームディレクトリに移動
$ cd
ホームディレクトリに移動(たとえばユーザuserが実行した場合/home/user)

例2 ホームディレクトリに移動
$ cd ~
ホームディレクトリに移動(例1と同じ結果)
linuxでは、「~」(チルダー)はホームディレクトリを表します。

例3 指定ディレクトリに移動
$ cd /home/user
ディレクトリ/home/userに移動
ディレクトリの最初に「/」を付けると絶対パス指定になります。

例4 下位のディレクトリに移動
$ cd  dir1
現在のディレクトリから、相対的に下位のディレクトリdir1に移動

ディレクトリの最初に「/」がないと相対パス指定になります。

2011/07/26

cat

cat
ファイルの内容表示

catは連結「catenate」の略。
本来は、ファイルを結合して出力するコマンドだが、一般的にはファイルのテキスト表示に使われることが多い。

例1 ファイルを結合して出力
$ cat file1 file2 > file3
ファイルfile1とファイルfile2を結合してファイルfile3を作成する。

例2 ファイルのテキスト表示
$ cat file1
ファイルfile1の内容を端末に表示する。

2011/07/25

env

env
環境変数の表示

linuxでは、ユーザがコマンドを実行するときの環境で、あらかじめ初期値を設定しています。その初期値を環境変数と呼んでいます。環境変数はユーザごとに設定することができます。また、後から追加することもできます。
現在設定されている環境変数の内容を表示するコマンドがenvです。
たとえば、ユーザのホームディレクトリのパスを知ることが出来ます。

例1
$ env
HOSTNAME=localhost.localdomain
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
(以下省略)

環境変数の設定内容を1つ表示したいときは、echoコマンドのパラメータに「$」を付けて実行します。
例2
$ echo $HOME
/home/user

setコマンドでシェル変数を表示させるときも、環境変数は表示されます。

関連するコマンド
set

linux覚書

はじめまして。

開発作業をするにあたり、linuxのコマンドが必要になりましたが、メモを作成すると、PCごとになってしまうので、linuxのコマンドを1つづつブログに作成して行こうと考えています。

いつまで続くか予定はありませんが、なるべく長く続くようにしたいと考えています。

なお、linuxコマンドを実行するときは、なるべく一般ユーザでログインして動作確認するようにしましょう。
rootユーザでは、コマンドを間違って実行した場合にシステムに大きな影響を与える可能性があり、お勧めできません。