2007年11月27日火曜日

VIM(GVIM)常用命令

在 文 本 中 查 找 一 个 单 词
假设你在文本中看到一个单词 "TheLongFunctionName" 而你想找到下一个相同的单词。
你可以输入 "/TheLongFunctionName",但这要输入很多东西。而且如果输错了,Vim 是
不可能找到你要找的单词的。
有一个简单的方法:把光标移到那个单词下面使用 "*" 命令。Vim 会取得光标上的
单词并把它作为被查找的字符串。
"#" 命令在反向完成相同的功能。你可以在命令前加一个计数:"3*" 查找光标下单
词第三次出现的地方。

查 找 整 个 单 词
如果你输入 "/the",你也可能找到 "there"。要找到以 "the" 结尾的单词,可以用:
/the\> "\>" 是一个特殊的记号,表示只匹配单词末尾。类似地,"\<" 只匹配单词的开头。 这样,要匹配一个完整的单词 "the",只需: /\ 这不会匹配 "there" 或者 "soothe"。注意 "*" 和 "#" 命令也使用了 "词首" 和
"词尾" 标记来匹配整个单词 (要部分匹配,使用 "g*" 和 "g#")

你可以用如下命令取得所有的标记的列表:
:marks 你会注意到有一些特殊的标记,包括:
' 跳转前的光标位置
" 最后编辑的光标位置
[ 最后修改的开始位置
] 最后修改的结束位置

快 捷 键
有些 "操作符-动作" 命令由于经常被使用,所以被设置为单字符命令:
x 表示 dl (删除当前光标下的字符)
X 表示 dh (删除光标左边的字符)
D 表示 d$ (删除到行尾)
C 表示 c$ (修改到行尾)
s 表示 cl (修改一个字符)
S 表示 cc (修改一整行)

在 什 么 地 方 加 入 计 数 前 缀
命令 "3dw" 和 "d3w" 都是删除 3 个单词。如果你非要寻根问底,那么:"3dw" 表示删
除一个单词 3 次,而 "d3w" 表示删除三个单词一次。这是一个没有分别的分别。实际上
你可以放两个计数前缀,例如,"3d2w" 删除两个单词三次,共计六个单词。

可视模式
你可以用 "v" 命令启动可视模式
如果你想对整行做操作,可以使用 "V" 命令来启动可视模式。
如果你要处理一个矩形块内的文本,可以使用 CTRL-V 启动可视模式。这在处理表格时非
常有用。

移 动 到 另 一 端
如果你在可视模式下选中了一些文字,然后你又发现你需要改变被选择的文字的另一端,
用 "o" 命令即可 (提示:"o" 表示 other end),光标会移动到被选中文字的另一端,现
在你可以移动光标去改变选中文字的开始点了。再按 "o" 光标还会回到另一端。
当使用列块可视模式的时候,你会有四个角,"o" 只是把你移到对角上。而用 "O" 则能
移到同一行的另一个角上。
备注: "o" 和 "O" 在可视模式下与在普通模式下的作用有很大的不同;在普通模式下,
它们的作用是在光标后或前加入新的一行。

拷贝文本
注意:"yw" 命令包括单词后面的空白字符。如果你不想要这个字符,改用 "ye" 命令。
"yy" 命令拷贝一整行,就像 "dd" 删除一整行一样。出乎意料地是,"D" 删除到行尾而
"Y" 却是拷贝一整行。要注意这个区别!"y$" 拷贝到行尾。

使用剪贴板
如果你用的不是 GUI,或者你根本不喜欢用菜单,你只能用其它办法了。你还是可以用普
通的 "y" (yank) 和 "p" (put) 命令,但在前面必须加上 "* (一个双引号加一个星
号)。例如,要拷贝一行到剪贴板中:
"*yy 要粘贴回来:
"*p 这仅在支持剪贴板的 Vim 版本中才能工作。

文本对象
如果你在一个单词的中间而又想删掉这个单词,在你用 "dw" 前,你必须先移到这个单词
的开始处。这里还有一个更简单的方法:"daw"。
"daw" 的 "d" 是删除操作符。"aw" 是一个文本对象。提示:"aw" 表示 "A Word" (一个
单词),这样,"daw" 就是 "Delete A Word" (删除一个单词)。确切地说,该单词后的空
格字符也被删除掉了。

使用文本对象是 Vim 中执行修改的第三种方法。我们已经有 "操作符-动作" 和可视模
式两种方法了。现在我们又有了 "操作符-文本对象"。
这种方法与 "操作符-动作" 很相似,但它不是操作于从当前位置到移动目标间的内
容,而是对光标所在位置的 "文本对象" 进行操作。文本对象是作为一个整体来处理的。
现在光标在对象中的位置无关紧要。

用 "cis" 可以改变一个句子。看下面的句子:

Hello there. This
is an example. Just
some text.

移动到第二行的开始处。现在使用 "cis":

Hello there. Just
some text.

现在你输入新的句子 "Another line.":

Hello there. Another line. Just
some text.

"cis" 包括 "c" (change,修改) 操作符和 "is" 文本对象。这表示 "Inner Sentence"
(内含句子)。还有一个文本对象是 "as",区别是 "as" 包括句子后面的空白字符而 "is"
不包括。如果你要删除一个句子,而且你还想同时删除句子后面空白字符,就用 "das";
如果你想保留空白字符而替换一个句子,则使用 "cis"。

你还可以在可视模式下使用文本对象。这样会选中一个文本对象,而且继续留在可视模
式,你可以继续多次执行文本对象命令。例如,先用 "v" 启动可视模式,再用 "as" 就
可以选中一个句子。现在重复执行 "as",就会继续选中更多的句子。最后你可以使用一
个操作符去处理这些被选中的句子。

你可以在这里找到一个详细的文本对象的列表:|text-objects|。
动作和操作符

动作命令出现在操作符之后,从而使操作符作用于被该动作所跨越的文本之上。也就 是,在动作之前和之后的光标位置之间的文本。一般的,操作符用来删除或者改变文本。 下面列出所有的操作符: |c| c 修改 (change)
|d| d 删除 (delete)
|y| y 抽出 (yank) 到寄存器 (不改变文本)
|~| ~ 变换大小写 (只有当 'tildeop' 置位时有效)
|g~| g~ 变换大小写
|gu| gu 变为小写
|gU| gU 变为大写
|!| ! 通过外部程序过滤
|=| = 通过 'equalprg' (若为空,C-indenting) 过滤
|gq| gq 文本排版
|g?| g? ROT13 编码
|>| > 右移
|<| < 左移 |zf| zf 定义折叠
|g@| g@ 调用 'operatorfunc' 选项定义的函数
预 定 义 标 记
当你跳转到另一个文件后,有两个预定义的标记非常有用:
`" 这个标记使你跳转到你上次离开这个文件时的位置。
另一个标记记住你最后一次修改文件的位置:
`.
假设你在编辑 "one.txt",在文件中间某个地方你用 "x" 删除一个字符,接着用 "G" 命
令移到文件末尾,然后用 "w" 存盘。然后你又编辑了其它几个文件。你现在用 ":edit
one.txt" 回到 "one.txt"。如果现在你用 `",Vim 会跳转到文件的最后一行;而用 `.
则跳转到你删除字符的地方。即使你在文件中移动过,但在你修改或者离开文件前,这两
个标记都不会改变。

文 件 标 记

在第四章,我们介绍过使用 "mx" 命令在文件中增加标记,那只在一个文件中有效。如果
你编辑另一个文件并在那里加了标记,这些标记都是这个文件专用的。这样,每个文件都
有一个自己的标记集,并只能在该文件中使用。
到此为止,我们都用小写字母的标记。实际上还可以使用大写字母标记,这种标记是
全局的,它们可以在任何文件中使用。例如,你在编辑一个文件 "foo.txt"。在文件的中
间 (50%) 并建立一个 J 标记 (J 表示甲):

50%mJ
现在编辑文件 "bar.txt" 并在文件的最后一行放一个标记 Y (Y 表示乙):

GmY
现在你可以使用 "`J" 命令跳回到 foo.txt 的中间。或者在另一个文件中输入 "`Y" 跳
回到 bar.txt 的末尾。

文件标记会被一直记住直到被重新定义。这样,你可以在一个文件中留下一个标记,然后
任意做一段时间的编辑,最后用这个标记跳回去。
让文件标记符和对应的位置建立一些关系常常是很有用的。例如,用 H 表示头文件
(Head File),M 表示 Makefile 而 C 表示 C 的代码文件。

要知道一个标记在什么地方,在 ":marks" 命令中加上标记名作为参数即可:

:marks M
你还可以带多个参数:

:marks MCP
别忘了你还可以 CTRL-OCTRL-I 在整个跳转序列中前后跳转。
用 vimdiff 显示文件差异

有一种特殊的启动 Vim 的方法可以用来显示两个文件的差异。让我们打开一个 "main.c" 并插入一些字符。在设置了 'backup' 选项的情况下保存这个文件,以便产生 "main.c~" 备份文件。 在命令行中输入如下命令:(不是在 Vim 中) vimdiff main.c~ main.c Vim 会用垂直分割的方式打开两个文件。你只能看到你修改过的地方和上下几行的地方。
折 叠 栏

每个窗口在左边都有一个颜色略有不同的显示栏,图中标识为 "VV"。你会发现每个折叠
在那个位置都有一个加号。把鼠标移到那里并按左键可以打开那个折起,从而让你看到里
面的内容。
对于打开的折叠,折叠栏上会出现一个减号。如果你单击那个减号,折叠会被重新关
闭。
当然,这只能在你有鼠标的情况下使用。如果你没有,可以用 "zo" 打开一个折叠。
关闭使用 "zc"。

用 Vim 做 比 较

启动比较模式的另一种方法从 Vim 内部开始:编辑 "main.c" 文件,然后分割窗口显示
区别:

:edit main.c
:vertical diffsplit main.c
":vertical" 命令使窗口用垂直的方式分割。如果你不写这个命令,结果会变成水平分
割。

如果你有一个当前文件的补丁或者 diff 文件,你可以用第三种方法启动比较模式:先编
辑这个文件,然后告诉 Vim 补丁文件的名称:

:edit main.c
:vertical diffpatch main.c diff
警告:补丁文件中必须仅包括为一个目标文件所做的补丁,否则你可能会得到一大堆错误
信息。还可能有些你没打算打补丁的文件也被打了补丁。
补丁功能只改变内存中的文件备份,不会修改你硬盘上的文件 (除非你决定写入改
动)。

滚 动 绑 定

当文件中有很多改动时,你可以用通常的方式滚动屏幕。Vim 会尽可能保持两个文件对
齐,以便你可以并排看到文件的区别。
如果暂时想关闭这个特性,使用如下命令:

:set noscrollbind

跳 转 到 修 改 的 地 方

如果你通过某种方法取消了折叠功能,可能很难找到有改动的地方。使用如下命令可以跳
转到下一个修改点:

]c
反向跳转为:

[c
加上一个计数前缀可以跳得更远。

消 除 差 异

你可以把文本从一个窗口移到另一个,并以此来消除差异,或者为其中一个文件中增加几
行。Vim 有时可能无法及时更新高亮显示。要修正这种问题,使用如下命令:

:diffupdate
要消除差异,你可以把一个高亮显示的块从一个窗口移动到另一个窗口。以上面的
"main.c" 和 "main.c~" 为例,把光标移到左边的窗口,在另一个窗口中被删除的行的位
置,执行如下命令:

:dp
这将把文字从左边拷到右边,从而消除两边的差异。"dp" 代表 "diff put"。
你也可以反过来做:把光标移到右边的窗口,移到被 "改动" 了的行上,然后执行
如下命令:

:do
这把文本从左边拷到右边,从而消除差异。
由于两个文件已经没有区别了,Vim 会把所有文字全部折叠起来。"do" 代表 "diff
obtain"。本来用 "dg" (diff get) 会更好。可是它已经有另外的意思了 ("dgg" 删除从
光标为止到首行的所有文本)。
标签页
假设你正在编辑文件 "thisfile"。下面的命令可以建立新的标签页:

:tabedit thatfile
这会在一个窗口中编辑文件 "thatfile",这个窗口会占满整个 Vim 窗口。你会注意到在
顶部有一个含有两个文件名的横条:
你可以通过单击顶端的标签切换标签页。如果没有鼠标或者不想用它,可以使用 "gt" 命
令。助记符:Goto Tab。

现在,让我们通过下面的命令建立另一个标签页:

:tab split
这会建立一个新的标签页,包含一个窗口,编辑和刚才所在窗口中的缓冲区相同的缓冲
区:
在任何打开窗口的 Ex 命令前面,你都可以放上 ":tab"。这个窗口在新标签页中打开。
另一个例子:

:tab help gt
它将在新的标签页中显示关于 "gt" 的帮助。

使用标签页可以完成更多的工作:

- 在末尾标签后面的空白处单击鼠标
选择下个标签页,同 "gt"。

- 在右上角的 "X" 处单击鼠标
关闭当前标签页,除非当前标签页中的改变没有保存。

- 在标签行上双击鼠标
建立新标签页。

- "tabonly" 命令
关闭除了当前标签页以外的所有标签页,除非其它标签页中的改变没有保存。

关于标签页更多的信息,参见 |tab-page|。
反转行顺序

|:global| 命令可以和 |:move| 命令联用,将所有行移动到文件首部。结果是文件被按 行反转了次序。命令是: :global/^/m 0 缩写: :g/^/m 0 正则表达式 "^" 匹配行首 (即使该行是一个空行)。|:move| 命令将匹配的行移动到那个 神秘的第 0 行之后。这样匹配的行就成了文件中的第一行。由于 |:global| 命令不会被 改变了的行号搞混,该命令继续匹配文件中剩余的行并将它们一一变为首行。 这对一个行范围同样有效。先移动到第一行上方并做标记 't' (mt)。然后移动到范围的 最后一行并键入: :'t+1,.g/^/m 't

单词统计

有时你要写一些有最高字数限制的文字。Vim 可以帮你计算字数。 如果你需要统计的是整个文件的字数,可以用这个命令:

g CTRL-G

不要在 "g" 后面输入一个空格,这里只是方便阅读。 它的输出是:

Col 1 of 0; Line 141 of 157; Word 748 of 774; Byte 4489 of 4976 (译者注:中文是:
第 1/0 列; 第 141/157 行; 第 748/774 个词; 第 4489/4976 个字节 )

你可以看到你在第几个单词 (748) 上以及文件中的单词总数 (774)。
如果你要知道的是全文的一部分的字数,你可以移到该文本的开头,输入 "g CTRL-G",
然后移到该段文字的末尾,再输入 "g CTRL-G",最后心算出结果来。
这是一种很好的心 算练习,不过不是那么容易。比较方便的办法是使用可视模式,选中你要计算字数的文 本,然后输入 "g CTRL-G",结果将是: Selected 5 of 293 Lines; 70 of 1884 Words; 359 of 10928 Bytes (译者注:中文是: 选择了 5/293 行; 70/1884 个词; 359/10928 个字节 ) 要知道其它计算字数,行数和其它东西总数的方法,可以参见 |count-items|。
查阅 man 信息

编辑一个脚本文件或者 C 程序的时候,有时你会需要从 man 手册中查询某个命令或者函
数的用法 (使用 Unix 的情况下)。让我们先用一个简单的方法:把鼠标移到对应的单词
上然后输入:

K
Vim 会在对应的单词上执行外部命令:man。如果能找到相应的手册,那个手册页就会被
显示出来。它常常用 more 一类的程序显示页面。在手册滚动到文件末并回车,控制就会
回到 Vim 中。

这种方法的缺点是你不能同时查看手册和编辑文档。这里有一种办法可以把手册显示到一
个 Vim 的窗口中。首先,加载 man 文件类型的外挂:

:runtime! ftplugin/man.vim
如果你经常用到这种方法,可以把这个命令加到你的 vimrc 文件中。现在你可以用
":Man" 命令打开一个显示 man 手册的窗口了:

:Man csh
你可以在这个新的窗口中上下滚动,而手册的本文会用语法高亮的形式显示。这样,你可
以找到需要的地方,并用 CTRL-W w 跳转到原来的窗口中继续工作。
要指定手册的章节,可以在手册名称前面指定。例如,要找第三章的 "echo":

:Man 3 echo
要跳转到另一个由 "word(1)" 形式定义的手册,只要在上面敲 CTRL-]。无论怎样,
":Man" 命令总使用同一个窗口。

要显示当前光标下的单词的手册,这样:

\K
(如果你重定义了 ,用那个字符代替上面命令的反斜杠)。
例如,你想知道下面语句中的 "strstr()" 函数的返回值:

if ( strstr(input, "aap") == )

可以把光标移到 "strstr" 并输入 "\K"。手册使用的窗口会显示 strstr() 的信息。

使 用 XXD
一个真正的二进制编辑器用两种方式来显示文本: 二进制和十六进制格式。你可以在 Vim
里通过转换程序 "xxd" 来达到这效果。该程序是随 Vim 一起发布的。
首先以二进制方式编辑这个文件:

vim -b datafile
现在用 xxd 把这个文件转换成十六进制:

:%!xxd
文本看起来像这样:

0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI
0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0
0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59.

现在你可以随心所欲地阅读和编辑这些文本了。 Vim 把这些信息当作普通文本来对待。
修改了十六进制部分并不导致可显示字符部分的改变,反之亦然。
最后,用下面的命令把它转换回来:

:%!xxd -r
只有十六进制部分的修改才会被采用。右边可显示文本部分的修改忽略不计。

欲知更多详情,参见 xxd 手册。

补 全 特 定 文 本

如果你知道你要找什么,那么你可以用这些命令来补全某种类型的文本:

CTRL-X CTRL-F 文件名
CTRL-X CTRL-L 整行
CTRL-X CTRL-D 宏定义 (包括包含文件里的)
CTRL-X CTRL-I 当前文件以及所包含的文件
CTRL-X CTRL-K 字典文件内的单词
CTRL-X CTRL-T 同义词词典文件内的单词
CTRL-X CTRL-] 标签
CTRL-X CTRL-V Vim 命令行
    CTRL-X CTRL-O 全能补全的热键

每个命令之后,CTRL-N 可以用来搜索下一个匹配,而 CTRL-P 则用于搜索前一个匹配。
重复一次插入
如果你按 CTRL-A,编辑器就把你上次在插入模式下输入的文本再输入一次。
比如,假定你有个文件,开头是这样的:

"file.h"
/* Main program begins */

你在第一行开始处插入 "#include ":

#include "file.h"
/* Main program begins */

你再用命令 "j^" 往下来到下一行的开始处。现在你开始插入一个新的 "#include" 行。
所以你键入:

i CTRL-A
结果就像下面这样:

#include "file.h"
#include /* Main program begins */

"#include " 被插入是因为 CTRL-A 会插入上次插入过的文本。现在你键入 "main.h"
以结束这一行:


#include "file.h"
#include "main.h"
/* Main program begins */

CTRL-@ 命令会完成 CTRL-A 的操作后退出插入模式。这是一个快速重复插入一模一样的
文本的一个方法。
从另一行拷贝
CTRL-Y 命令插入光标上方的字符。当你复制前一行文本的时候,这个命令很有用。例
如,你有这么一行 C 代码:

b_array[i]->s_next = a_array[i]->s_next;

现在你需要把这一行再键入一次,并以 "s_prev" 取代 "s_next"。换行以后,按 14 次
CTRL-Y,直到光标位于 "next" 的 "n" 上:

b_array[i]->s_next = a_array[i]->s_next;
b_array[i]->s_

现在你键入 "prev":

b_array[i]->s_next = a_array[i]->s_next;
b_array[i]->s_prev

继续按 CTRL-Y 直到下一个 "next":

b_array[i]->s_next = a_array[i]->s_next;
b_array[i]->s_prev = a_array[i]->s_

现在键入 "prev;" 以结束这一行。

CTRL-E 命令操作起来跟 CTRL-Y 一样,只不过它插入光标下方的字符。
插入一个寄存器内容
命令 CTRL-R {register} 插入寄存器里的内容。它的用处是让你不必键入长词。例如,
你要输入下面这些:

r = VeryLongFunction(a) + VeryLongFunction(b) + VeryLongFunction(c)

这个函数的定义见于另一个文件。编辑那个文件并把光标移到该函数名上,然后把文件名
摄入寄存器 v:

"vyiw
"v 指定寄存器,"yiw" 意思是拷贝一个词,不含空格 (yank-inner-word)。现在编辑那
个要插入一行代码的文件,先键入开头几个字符:

r =

现在用 CTRL-R v 来插入函数名:

r = VeryLongFunction

你接下来在函数名后面键入其它必要字符,然后再用两次 CTRL-R v。
你也可以用补全功能来完成同样的工作。但当你有好几个词,其开头几个字符都一样
的时候,寄存器就有用多了。

如果寄存器存放着诸如 或其它特殊字符,这些字符就被解释成好像它们本来是从键
盘键入的。如果你不要这样解释 (你确实要在文本中插入 ),那么要命令 CTRL-R
CTRL-R {register}

2007年11月26日月曜日

Xming使用技巧

  1. -[no]keyhook: 缺省状态下WINDOWS的一些特殊键或者键的组合会被XMING忽略掉(比如WIN键,ALT+TAB等)这个参数可以让你使用这些特殊键。

2007年11月21日水曜日

摸清Linux日志处理的来龙去脉

每个使用UNIX/LINUX的人都知道日志的用处,那你是否清楚LINUX这些日志信息处理的来龙去脉呢?

我们可以看到LINUX系统信息日志的途径基本有以下2种:

(1)dmesg查看----这个命令比较常见

(2)/var/log/下的文件

那下面我们就从这个2个途径着手,一步步的走下去.

(一)

首先,我们来看dmesg这个常见的命令背后隐藏的是什么!!

从LINUX提供的手册,我们可以得知一条最重要的信息dmesg是从kernel 的ring buffer(环缓冲区)中读取信息的.

(2)那什么是ring buffer呢?

在LINUX中,所有的系统信息(包内核信息)都会传送到ring buffer中.而内核产生的信息由printk()打印出来。系统启动时所看到的信息都是由该函数打印到屏幕中。 printk()打出的信息往往以 <0><2>...这的数字表明消息的重要级别。高于一定的优先级别会打印到屏幕上, 否则只会保留在系统的缓冲区中(ring buffer)。

至于dmesg具体是如何从ring buffer中读取的,大家可以看dmesg.c源代码.很短,比较容易读懂.

(二)

dmesg怎么搞的大家应该很明白了吧.至于/var/log/下的文件更是大家熟悉得不能再熟悉了!

(1)/var/log/..下为什么有这么多文件呢?

一句话解释: 是syslogd这个守护进程根据/etc/syslog.conf,将不同的服务产生的Log记录到不同的文件中.

这里的/etc/syslog.conf我就不细说了,很多这方面的信息(去查吧).

(2)既然知道了,/var/log/..是由syslogd这个守护进程产生的.那就再顺着这条线走下去.

LINUX系统启动后,由/etc/init.d/sysklogd先后启动klogd,syslogd两个守护进程。

其中klogd会通过syslog()系统调用或者读取proc文件系统来从系统缓冲区(ring buffer)中得到由内核printk()

发出的信息.而syslogd是通过klogd来读取系统内核信息.

我想至此,大家心理应该对log产生,读取等一系列的动作有所感觉.

总结

(1)所有系统信息是输出到ring buffer中去的.dmesg所显示的内容也是从ring buffer中读取的.

(2)LINUX系统中/etc/init.d/sysklogd会启动2个守护进程:Klogd&&Syslogd

(3)klogd是负责读取内核信息的,有2种方式:

syslog()系统调用(这个函数用法比较全,大家去MAN一下看看)

直接的对/proc/kmsg进行读取(再这提一下,/proc/kmsg是专门输出内核信息的地方)

(4)Klogd的输出结果会传送给syslogd进行处理,syslogd会根据/etc/syslog.conf的配置把log

信息输出到/var/log/下的不同文件中。

Linux操作系统命令操作小知识

1、单用户模式进系统

启动linux出现grub画面时选中linux按e键

kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ 按E键

在ro前面加入single

kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/

回车,按B键进入系统.

注意:freebsd下再多加一个命令 mount -a

2、解压文件

tar.bz 2 文件的解压 #tar jxvf *.tar.bz 2

tar.gz 文件的解压 #tar xzpf *.tar.gz

rpm 文件的解压 #rpm -ivh *.rpm

3、激活ssh服务

/etc/rc.d/init.d/sshd start

service sshd start

ubuntu开启ssh服务

studo apt-get install ssh

$sudo passwd root

4、关闭防火墙

/etc/rc.d/init.d/iptables stop

Linux防火墙的关闭和开启

1) 重启后生效

开启: chkconfig iptables on

关闭: chkconfig iptables off

2) 即时生效,重启后失效

开启: service iptables start

关闭: service iptables stop

需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。

在开启了防火墙时,做如下设置,开启相关端口,

修改/etc/sysconfig/iptables 文件,添加以下内容:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

5、查看开放的服务 netstat –tl

启动自动加载的服务 ntsys v

6、设置网卡IP netconfig

查看网卡IP ifconfig

或者进入 /etc/sysconfig/network-scrips/目录下

cat ifcfg-eth0

FreeBSD中修改网络配置: #ee /etc/rc.conf

FC4的网卡IP修改 #vi /etc/sysconfig/network-scripts/ifcfg-eth0

己编译的网卡驱动的安装

#tar –zxvf e1000-6.0.54.tar.gz

#cd e1000-6.0.54/src

Make install

Inwmod e1000

#/etc/rc.d/init.d/network reload

#reboot

修改/etc/modules.conf 加一行

Alias eth0 e1000

7、重起网卡 service network restart

查看进程: ps aux

8、禁用图形界面 #vi inittab

将ID后面的 5改为3就可以了

9、加载光驱软驱 mount /mut/cdrom

Mount /mut/floppy

先用pwd查看所在目录是否为挂载点,如果是,则无法挂载

如果要卸载则 M mount /mnt/cdrom

M mount /mnt/floppy

10、打开redhat自带的ftp工具

# /sbin/service vsftpd start

查看安装ftp的版本及安装情况

# rpm –qa | grep vsftpd

看谁登陆了FTP,并杀死它的进程

Ps –xf | grep ftp 如ps –aux|grep 运行程序

Kill 进程号如 kill -9 进程号

新建一个文件如” # touch /etc/vsftpd.chroot_list

卸载: rpm –e packge name

安装 rpm –ivh *.rpm

卸载mysql 依次加上- -nodeps.- -(注意为了显示故中间有空隔)force它们相互依赖,不加参数无法卸载

Rpm –e mysql –client - -nodeps (- -force加上这个参数不行就不加)

Rem –e mysql

redhat卸载自带的mysql

#rpm –e perl –DBD –mySQL -2.1021-3 - -lodeps

#rpm –e mysql

11、使用mkswap命令建立swap分区再使用swapon命令启用swap分区

#mkswap /dev/sad7

#swapon /dev/sad7

12、改名命令 # mv

删除文件 #rm

删除文件夹 #rm –rf

13、linux做禁ping

# vi /proc/sys/net/ip/ipv4/icmp_echo_ignore_all

将其值改为1为禁ping 改为0为解禁ping

2007年11月20日火曜日

如何查看Linux系统的文件类型

不同版本的Linux所支持的文件系统类型和种类都有所不同,如何知道自己使用的Linux发行版的文件系统类型呢?下面以Mandrake Linux为例,讲解如何操作。

以超级用户权限登陆Linux,进入/Lib/modules/2.4.18-6mdk/kernel/fs目录,执行下面命令:

#ls

注意,不同Linux发行版本的fs目录的位置可能有些不同。/Lib/modules/2.4.18-6mdk/kernel/fs中会显示当前系统所支持的文件系统种类。

文件系统是操作系统用于明确磁盘或分区上文件的方法和数据结构,即在磁盘上组织文件的方法。文件系统是整个操作系统中重要的组成部分,是操作系统正常运行的基本条件。了解Linux文件系统对于深入学习、研究Linux是非常重要的。

Linux系统核心可以支持十多种文件系统类型:JFS、 ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。

在Linux系统中,每个分区都是一个文件系统,都有自己的目录层次结构。Linux的最重 要特征之一就是支持多种文件系统,这样它更加灵活,并可以和许多其它种操作系统共存。Virtual File System(虚拟文件系统)使得Linux可以支持多个不同的文件系统。由于系统已将Linux文件系统的所有细节进行了转换,所以Linux核心的其 它部分及系统中运行的程序将看到统一的文件系统。Linux的虚拟文件系统允许用户同时能透明地安装许多不同的文件系统。虚拟文件系统是为Linux用户 提供快速且高效的文件访问服务而设计的。

关于Linux操作系统启动的问题

1、系统启动需要的文件

/boot/grub/grub.conf
/etc/inittab /etc/rc.d/rc.sysinit /etc/rc.d/rc /etc/rc.d/rc?.d /etc/rc.d/rc.local /etc/fstab

grub.conf 文件错误的拯救方式:

grub>root (hd0,0)

grub> kernel /kernel2.6.18-8.el5 ro root=LABEL=/ (root=/dev/VolGroup00/LogVol00) 系统其他目录的挂载点此文件根据启动是来确定,或者看/etc/fstab文件 如:/etc /lib /dev 等

grub> initrd /initrd-2.6.18-8.el5.img (initrd-2.6.18-8.el5.img是一个gz的压缩包)

grub> boot

2、解开 文件initrd-2.6.18-8.el5.img

首 先initrd-2.6.18-8.el5.img 改名为initrd-2.6.18-8.el5.gz 然后运行gunzip initrd-2.6.18-8.el5.gz 解压缩为initrd-2.6.18-8.el5,用file命令查看initrd-2.6.18-8.el5,为cpio压缩文件,用cpio -idvm <>

[root@aly cpiotest]# ll

total 5188

drwx------ 2 root root 4096 Nov 5 20:59 bin

drwx------ 3 root root 4096 Nov 5 20:59 dev

drwx------ 3 root root 4096 Nov 5 20:59 etc

-rwx------ 1 root root 2431 Nov 1 19:30 init

-rw------- 1 root root 5267456 Nov 5 20:56 initrd-2.6.18-8.el5

drwx------ 2 root root 4096 Nov 5 20:59 lib

drwx------ 2 root root 4096 Nov 1 19:30 proc

lrwxrwxrwx 1 root root 3 Nov 5 20:59 sbin -> bin

drwx------ 2 root root 4096 Nov 1 19:30 sys

drwx------ 2 root root 4096 Nov 1 19:30 sysroot

3、系统引导重新安装

grub-install /dev/hda 此安装一般要在linux rescue模式下运行

4、备份磁盘主引导记录

[root@aly boot]# dd if=/dev/hda of=/boot/grubbak bs=512 count=1

1+0 records in

1+0 records out

512 bytes (512 B) copied, 1e-09 seconds, 512 GB/s

出现问题的时候可以用dd命令恢复前466个字节文件 可以用od -x 查看文件会以aa55结束。其实有用的就是前466个字节。

5、pstree查看系统进程树,init进程是启动进程,是其他进程的父进程。

6、ntsysv 、setup、system-config-services chkconfig

chkconfig --list |grep smartd

chkconfig --list 2345 smartd on|off

chkconfig --add /etc/init.d/oracle.sh

然后加入到启动项,在设置在那个启动级别启动,然后下次启动的时候就可以启动了。

Linux用户需要知道的官方网站

1、opensuse,众多linux版本里我认为最好的,对硬件支持最佳,3CD的安装就知道对用户的支持最好。
  官方主页:http://www.opensuse.org/

  2、kde,个人比较喜欢的linux的桌面,基于QT的软件都是经典。
  官方主页:http://www.kde.org/

  3、openoffice,linux下的文字处理软件,全面兼容office。Writer、Impress、Mass、Draw、Calc、Base六个功能模块。
  官方主页:http://www.openoffice.org/

  4、amarok,linux最好的音乐播放器了吧,买了ipod的朋友就选它吧,对ipod支持极佳。
  官方主页:http://amarok.kde.org/

  5、mplayer,用过linux的好像没人没听说过它,几乎的文件格式它都支持。
  官方主页:http://www.mplayerhq.hu/

  6、smplayer。mplayer的最好的图形前端,下载的人次也最多。
  官方主页:http://smplayer.sourceforge.net/

  7、pidgin,gaim的新版,集多种聊天软件于一身的聊天软件,可惜对QQ的支持不是很好。
  官方主页:http://pidgin.im/

  8、eclipse,现在最流行的ide了,任何平台上都可使用,linux当然不能例外。
  官方主页:http://www.eclipse.org/

  9、konqueror,kde下的网页浏览器,可能很多人都没听说它,但是苹果新出的浏览器Safari确实是基于konqueror的。
  官方主页:http://www.konqueror.org/

  10、scim,linux下的输入法,只要你母语不是英语,不管是哪国人都需要它。
  官方主页:http://www.scim-im.org/

  11、xpdf,创建pdf文件用的,功能及其强大,一些在国外发表论文的教授们都知道它。
  官方主页:http://www.foolabs.com/xpdf/

  12、d4x,多线程下载工具。很多人都已国货迅雷为傲,其实只是简单使用了md5,国外技术那么发达为什么没有类似的软件诞生?这是因为国外的法律非常严格,一般人要下盗版电影歌曲软件都会悄悄的用p2p软件,而不是明目张胆使用http、ftp。
  官方主页:http://www.krasu.ru/soft/chuchelo/

  13、KTorrent,kde下的BT下载工具,个人感觉极其好用!
  官方主页:http://ktorrent.org/

  14、MLdonkey,linux下的电驴,如果用好它,你会发现作为linux用户是多么令人愉悦。kde下还得装个KMLdonkey 。
  官方主页:http://mldonkey.sourceforge.net/

  15、kcontact,kde下的日程处理软件。我需要它。
  官方主页:http://kontact.kde.org/korganizer/

  16、k3b,kde下的光盘烧录软件,口碑极佳。
  官方主页:http://k3b.plainblack.com/

  17、wine。到最后万不得已的时候才会用到它。平时坚决不用。
  官方主页:http://www.winehq.org/

  18、sopcast。linux下的看网上直播的软件!在IT里,许多老外知道中国是因为他们用sopcast看中国电视台的足球赛!算法感觉非常先进,即使看得人少也不会卡。
  官方主页:http://www.sopcast.org/

  19、dosbox。个人比较怀旧,喜欢玩一些dos老游戏,所以,它是必不可少的。
  官方主页:http://dosbox.sourceforge.net/

  20、virtualbox。linux下的虚拟机软件,你可以装个xp试试。
  官方主页:http://www.virtualbox.org/

Linux操作系统中的文件目录结构详细介绍

目录结构及主要内容

  “/”根目录部分有以下子目录:

  /usr 目录包含所有的命令、程序库、文档和其它文件。这些文件在正常操作中不会被改变的。这个目录也包含你的Linux发行版本的主要的应用程序,譬如,Netscape。

  /var 目录包含在正常操作中被改变的文件:假脱机文件、记录文件、加锁文件、临时文件和页格式化文件等。

  /home 目录包含用户的文件:参数设置文件、个性化文件、文档、数据、EMAIL、缓存数据等。这个目录在系统省级时应该保留。

  /proc 目录整个包含虚幻的文件。它们实际上并不存在磁盘上,也不占用任何空间。(用ls –l 可以显示它们的大小)当查看这些文件时,实际上是在访问存在内存中的信息,这些信息用于访问系统

  /bin 系统启动时需要的执行文件(二进制),这些文件可以被普通用户使用。

  /sbin 系统执行文件(二进制),这些文件不打算被普通用户使用。(普通用户仍然可以使用它们,但要指定目录。)

  /etc 操作系统的配置文件目录。

  /root 系统管理员(也叫超级用户或根用户)的Home目录。

  /dev 设备文件目录。LINUX下设备被当成文件,这样一来硬件被抽象化,便于读写、网络共享以及需要临时装载到文件系统中。正常情况下,设备会有一个独立的子目 录。这些设备的内容会出现在独立的子目录下。LINUX没有所谓的驱动符。

  /lib 根文件系统目录下程序和核心模块的共享库。

  /boot 用于自举加载程序(LILO或GRUB)的文件。当计算机启动时(如果有多个操作系统,有可能允许你选择启动哪一个操作系统),这些文件首先被装载。这个 目录也会包含LINUX核(压缩文件vmlinuz),但LINUX核也可以存在别处,只要配置LILO并且LILO知道LINUX核在哪儿。

  /opt 可选的应用程序,譬如,REDHAT 5.2下的KDE (REDHAT 6.0下,KDE放在其它的XWINDOWS应用程序中,主执行程序在/usr/bin目录下)

  /tmp 临时文件。该目录会被自动清理干净。

  /lost+found 在文件系统修复时恢复的文件

  “/usr”目录下比较重要的部分有:

  /usr/X11R6 X-WINDOWS系统(version 11, release 6)

  /usr/X11 同/usr/X11R6 (/usr/X11R6的符号连接)

  /usr/X11R6/bin 大量的小X-WINDOWS应用程序(也可能是一些在其它子目录下大执行文件的符号连接)。

  /usr/doc LINUX的文档资料(在更新的系统中,这个目录移到/usr/share/doc)。

  /usr/share 独立与你计算机结构的数据,譬如,字典中的词。

  /usr/bin和/usr/sbin 类似与“/”根目录下对应的目录(/bin和/sbin),但不用于基本的启动(譬如,在紧急维护中)。大多数命令在这个目录下。

  /usr/local 本地管理员安装的应用程序(也可能每个应用程序有单独的子目录)。在“main”安装后,这个目录可能是空的。这个目录下的内容在重安装或升级操作系统后应该存在。

  /usr/local/bin 可能是用户安装的小的应用程序,和一些在/usr/local目录下大应用程序的符号连接。

  /proc目录的内容:

  /proc/cpuinfo 关于处理器的信息,如类型、厂家、型号和性能等。

  /proc/devices 当前运行内核所配置的所有设备清单。

  /proc/dma 当前正在使用的DMA通道。/proc/filesystems 当前运行内核所配置的文件系统。

  /proc/interrupts 正在使用的中断,和曾经有多少个中断。

  /proc/ioports 当前正在使用的I/O端口。

  举例,使用下面的命令能读出系统的CPU信息。

  cat /proc/cpuinfo

  /bin
  bin是binary的缩写。这个目录沿袭了UNIX系统的结构,存放着使用者最经常使用的命令。例如cp、ls、cat,等等。

  /boot
  这里存放的是启动Linux时使用的一些核心文件。

  /dev
  dev是device(设备)的缩写。这个目录下是所有Linux的外部设备,其功能类似DOS下的.sys和Win下的.vxd。在Linux中设备和文件是用同种方法访问的。例如:/dev/hda代表第一个物理IDE硬盘。

  /etc
  这个目录用来存放系统管理所需要的配置文件和子目录。

  /home
  用户的主目录,比如说有个用户叫wang,那他的主目录就是/home/wang也可以用~wang表示。

  /lib
  这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的.dll文件。几乎所有的应用程序都须要用到这些共享库。

  /lost+found
  这个目录平时是空的,当系统不正常关机后,这里就成了一些无家可归的文件的避难所。对了,有点类似于DOS下的.chk文件。

  /mnt
  这个目录是空的,系统提供这个目录是让用户临时挂载别的文件系统。

  /proc
  这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里。

  /root
  系统管理员(也叫超级用户)的主目录。作为系统的拥有者,总要有些特权啊!比如单独拥有一个目录。

  /sbin
  s就是Super User的意思,也就是说这里存放的是系统管理员使用的管理程序。

  /tmp
  这个目录不用说,一定是用来存放一些临时文件的地方了。

  /usr
  这是最庞大的目录,我们要用到的应用程序和文件几乎都存放在这个目录下。其中包含以下子目录;

  /usr/X11R6
  存放X-Window的目录;

  /usr/bin
  存放着许多应用程序;

  /usr/sbin
  给超级用户使用的一些管理程序就放在这里;

  /usr/doc
  这是Linux文档的大本营;

  /usr/include
  Linux下开发和编译应用程序需要的头文件,在这里查找;

  /usr/lib
  存放一些常用的动态链接共享库和静态档案库;

  /usr/local
  这是提供给一般用户的/usr目录,在这里安装软件最适合;

  /usr/man
  man在Linux中是帮助的同义词,这里就是帮助文档的存放目录;

  /usr/src
  Linux开放的源代码就存在这个目录,爱好者们别放过哦!

  /var
  这个目录中存放着那些不断在扩充着的东西,为了保持/usr的相对稳定,那些经常被修改的目录可以放在这个目录下,实际上许多系统管理员都是这样干的。顺带说一下系统的日志文件就在/var/log目录中。

  总结来说:

  · 用户应该将文件存在/home/user_login_name目录下(及其子目录下)。

  · 本地管理员大多数情况下将额外的软件安装在/usr/local目录下并符号连接在/usr/local/bin下的主执行程序。

  · 系统的所有设置在/etc目录下。

  · 不要修改根目录(“/”)或/usr目录下的任何内容,除非真的清楚要做什么。这些目录最好和LINUX发布时保持一致。

  · 大多数工具和应用程序安装在目录:/bin, /usr/sbin, /sbin, /usr/x11/bin,/usr/local/bin。

  · 所有的文件在单一的目录树下。没有所谓的“驱动符”。

2007年11月18日日曜日

Vim的编码及字体问题详解

和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括UCS-2、UTF-8 等流行的 Unicode 编码方式。然而不幸的是,和很多来自 Linux 世界的软件一样,这需要你自己动手设置。

Vim 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding (这些选项可能的取值请参考 Vim 在线帮助 :help encoding-names),它们的意义如下:

* encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。默认是根据你的locale选择.用户手册上建议只在 .vimrc 中改变它的值,事实上似乎也只有在.vimrc 中改变它的值才有意义。你可以用另外一种编码来编辑和保存文件,如你的vim的encoding为utf-8,所编辑的文件采用cp936编码,vim会 自动将读入的文件转成utf-8(vim的能读懂的方式),而当你写入文件时,又会自动转回成cp936(文件的保存编码).

* fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。

* fileencodings: Vim自动探测fileencoding的顺序列表,启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。

* termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。如果vim所在的term与vim编码相同,则无需设置。如其不然,你可以用vim的termencoding选项将自动转换成term 的编码.这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。

好了,解释完了这一堆容易让新手犯糊涂的参数,我们来看看 Vim 的多字符编码方式支持是如何工作的。

1. Vim 启动,根据 .vimrc 中设置的 encoding 的值来设置 buffer、菜单文本、消息文的字符编码方式。

2. 读取需要编辑的文件,根据 fileencodings 中列出的字符编码方式逐一探测该文件编码方式。并设置 fileencoding 为探测到的,看起来是正确的 (注1) 字符编码方式。

3. 对比 fileencoding 和 encoding 的值,若不同则调用 iconv 将文件内容转换为encoding 所描述的字符编码方式,并且把转换后的内容放到为此文件开辟的 buffer 里,此时我们就可以开始编辑这个文件了。注意,完成这一步动作需要调用外部的 iconv.dll(注2),你需要保证这个文件存在于 $VIMRUNTIME 或者其他列在 PATH 环境变量中的目录里。

4. 编辑完成后保存文件时,再次对比 fileencoding 和 encoding 的值。若不同,再次调用 iconv 将即将保存的 buffer 中的文本转换为 fileencoding 所描述的字符编码方式,并保存到指定的文件中。同样,这需要调用 iconv.dll由于 Unicode 能够包含几乎所有的语言的字符,而且 Unicode 的 UTF-8 编码方式又是非常具有性价比的编码方式 (空间消 耗比 UCS-2 小),因此建议 encoding 的值设置为utf-8。这么做的另一个理由是 encoding 设置为 utf-8 时,Vim 自动探测文件的编码方式会更准确 (或许这个理由才是主要的 ;)。我们在中文 Windows 里编辑的文件,为了兼顾与其他软件的兼容性,文件编码还是设置为 GB2312/GBK 比较合适,因此 fileencoding 建议设置为 chinese (chinese 是个别名,在 Unix 里表示 gb2312,在 Windows 里表示cp936,也就是 GBK 的代码页)。

以 下是我的 .vimrc(见附件) 中关于字符编码方式设置的内容,这个设置比较有弹性,可以根据系统中的环境变量 $LANG (当然,Windows 中的写法是 %LANG%) 的值来自动设置合适的字符编码方式。此时,推荐设置 %LANG% = zh_CN.UTF-8,可以通过后面的 Windows 注册表脚本文件来方便的做到。

注1: 事实上,Vim 的探测准确度并不高,尤其是在 encoding 没有设置为 utf-8 时。因此强烈建议将 encoding 设置为 utf-8,虽然如果你想 Vim 显示中文菜单和提示消息的话这样会带来另一个小问题。

注2: 在 GNU 的 FTP 上可以下载到 iconv 的 Win32 版(http://mirrors.kernel.org/gnu/libiconv/libiconv-1.9.1.bin.woe32.zip),不推荐去GnuWin32(http://gnuwin32.sourceforge.net/) 下载 libiconv,因为那个版本旧一些,并且需要自己改名 dll 文件。

注3: 查看帮助 :h iconv-dynamic

On MS-Windows Vim can be compiled with the |+iconv/dyn| feature. This means Vim will search for the "iconv.dll" and "libiconv.dll" libraries. When neither of them can be found Vim will still work but some conversions won't be possible.

附1:vimrc文件

" Multi-encoding setting, MUST BE IN THE BEGINNING OF .vimrc!
"
if has("multi_byte")
" When 'fileencodings' starts with 'ucs-bom', don't do this manually
"set bomb
set fileencodings=ucs-bom,chinese,taiwan,japan,korea,utf-8,latin1
" CJK environment detection and corresponding setting
if v:lang =~ "^zh_CN"
" Simplified Chinese, on Unix euc-cn, on MS-Windows cp936
set encoding=chinese
set termencoding=chinese
if &fileencoding == ''
set fileencoding=chinese
endif
elseif v:lang =~ "^zh_TW"
" Traditional Chinese, on Unix euc-tw, on MS-Windows cp950
set encoding=taiwan
set termencoding=taiwan
if &fileencoding == ''
set fileencoding=taiwan
endif
elseif v:lang =~ "^ja_JP"
" Japanese, on Unix euc-jp, on MS-Windows cp932
set encoding=japan
set termencoding=japan
if &fileencoding == ''
set fileencoding=japan
endif
elseif v:lang =~ "^ko"
" Korean on Unix euc-kr, on MS-Windows cp949
set encoding=korea
set termencoding=korea
if &fileencoding == ''
set fileencoding=korea
endif
endif
" Detect UTF-8 locale, and override CJK setting if needed
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
set encoding=utf-8
endif
else
echoerr 'Sorry, this version of (g)Vim was not compiled with "multi_byte"'
endif

附2:

Supported 'encoding' values are: *encoding-values*
1 latin1 8-bit characters (ISO 8859-1)
1 iso-8859-n ISO_8859 variant (n = 2 to 15)
1 koi8-r Russian
1 koi8-u Ukrainian
1 macroman MacRoman (Macintosh encoding)
1 8bit-{name} any 8-bit encoding (Vim specific name)
1 cp437 similar to iso-8859-1
1 cp737 similar to iso-8859-7
1 cp775 Baltic
1 cp850 similar to iso-8859-4
1 cp852 similar to iso-8859-1
1 cp855 similar to iso-8859-2
1 cp857 similar to iso-8859-5
1 cp860 similar to iso-8859-9
1 cp861 similar to iso-8859-1
1 cp862 similar to iso-8859-1
1 cp863 similar to iso-8859-8
1 cp865 similar to iso-8859-1
1 cp866 similar to iso-8859-5
1 cp869 similar to iso-8859-7
1 cp874 Thai
1 cp1250 Czech, Polish, etc.
1 cp1251 Cyrillic
1 cp1253 Greek
1 cp1254 Turkish
1 cp1255 Hebrew
1 cp1256 Arabic
1 cp1257 Baltic
1 cp1258 Vietnamese
1 cp{number} MS-Windows: any installed single-byte codepage
2 cp932 Japanese (Windows only)
2 euc-jp Japanese (Unix only)
2 sjis Japanese (Unix only)
2 cp949 Korean (Unix and Windows)
2 euc-kr Korean (Unix only)
2 cp936 simplified Chinese (Windows only)
2 euc-cn simplified Chinese (Unix only)
2 cp950 traditional Chinese (on Unix alias for big5)
2 big5 traditional Chinese (on Windows alias for cp950)
2 euc-tw traditional Chinese (Unix only)
2 2byte-{name} Unix: any double-byte encoding (Vim specific name)
2 cp{number} MS-Windows: any installed double-byte codepage
u utf-8 32 bit UTF-8 encoded Unicode (ISO/IEC 10646-1)
u ucs-2 16 bit UCS-2 encoded Unicode (ISO/IEC 10646-1)
u ucs-2le like ucs-2, little endian
u utf-16 ucs-2 extended with double-words for more characters
u utf-16le like utf-16, little endian
u ucs-4 32 bit UCS-4 encoded Unicode (ISO/IEC 10646-1)
u ucs-4le like ucs-4, little endian
The {name} can be any encoding name that your system supports. It is passed
to iconv() to convert between the encoding of the file and the current locale.
For MS-Windows "cp{number}" means using codepage {number}.
Several aliases can be used, they are translated to one of the names above.
An incomplete list:
1 ansi same as latin1 (obsolete, for backward compatibility)
2 japan Japanese: on Unix "euc-jp", on MS-Windows cp932
2 korea Korean: on Unix "euc-kr", on MS-Windows cp949
2 prc simplified Chinese: on Unix "euc-cn", on MS-Windows cp936
2 chinese same as "prc"
2 taiwan traditional Chinese: on Unix "euc-tw", on MS-Windows cp950
u utf8 same as utf-8
u unicode same as ucs-2
u ucs2be same as ucs-2 (big endian)
u ucs-2be same as ucs-2 (big endian)
u ucs-4be same as ucs-4 (big endian)
default stands for the default value of 'encoding', depends on the
environment

xfs中安装字体

xfs 是另一种字体服务器的选择。它已经包含在以 RedHat 为基础的 distribution 中。xfs 是基於 FreeType Font library,提供了类似於 xfstt 的功能。xfs 不只能处理 TrueType 和 Type 1 字体,也可以对付原本的 X 字体。
安装

第一步是将 TrueType 字体加入您的 linux 里。su 为超级使用者,建一个目录来存放这些字体:

mkdir /usr/share/fonts/ttfonts

然后将字体放入这个目录里。您可以从您的 Windows 系统中拷贝过去

cp /mnt/win/path_to_fonts/*ttf /usr/share/fonts/ttfonts/

或是从 Microsoft 直接下载。

这些字体是自解压缩的 zip 档。您仍可在 linux 中安装

unzip

注意字体的文件名必须小写。一个快速又容易的转换方法是将他们拷贝到一个 DOS(FAT16) 文件系统中,然后再拷贝回来。DOS 不处理大写。另一个较像 linuxer 会用的方法是先进入到存放字体的目录下,然后键入:

ls *TTF | while read f
do
[ -f "$f" ] && mv -f "$f" "`echo /"$f/" | tr A-Z a-z`"
done

您在键入每一行得时候会有 ">" 的提示符号,在上述每一行的最后按下 return。 注意标点符号 -- 那些 "backquotes" 很重要。当 TrueType 字体正确安装後,以超级使用者执行:

ttmkfdir -o fonts.scale
mkfontdir

当您字体目录下的内容改变後,重新执行上面的命令。接下来,编辑您的 xfs 字体设定文件 /etc/X11/fs/config 在您字体表中加入您的 TrueType 字体:

catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled,
/usr/X11R6/lib/X11/fonts/100dpi:unscaled,
/usr/X11R6/lib/X11/fonts/75dpi:unscaled,
/usr/X11R6/lib/X11/fonts/misc,
/usr/X11R6/lib/X11/fonts/Type1,
/usr/X11R6/lib/X11/fonts/Speedo,
/usr/share/fonts/default/Type1,
/usr/share/fonts/ttfonts,
/usr/X11R6/lib/X11/fonts/100dpi,
/usr/X11R6/lib/X11/fonts/75dpi

或是您也可以用 'chkfontpath --add ' 命令来加入字体。当使用时,您或许也会想要更改您的字体的缺省点数。

default-point-size = 140

这让我从缺省的 12 点字变为 14 点字。有些 X 的应用程序使用这个,有些则否。接下来,确定您的 XF86Config 档中的 FontPath 是

FontPath "unix/:-1"

注 意 "unix/:7100" 也可以做到,但是在刚出来时无法使用。将所有的 FontPath 用 '#' 让它变成注解,反正你也不用它们了。 xfs 的 packages 应该和其它 XFree 的 packages 一起安装了。要确定它是缺省的服务,您可以使用 'ntsysv' 或是

chkconfig --add xfs

现在 xfs 在您每一次开机的时候都会启动。 现在重新启动 X 来读入新的 FontPath。用下面的的方式 启动/重新启动 xfs

/etc/rc.d/init.d/xfs restart

现在您应该有个可以使用的字体服务器了。您可以检查那些字体有被使用

xlsfonts | less

或用 xfontsel 甚至更好的 gfontsel 来检查它们。

フォントをインストールする時に便利なプログラム

  • "mkfontdir directory" は X サーバーが使用する font ディレクトリを準備します。 これはディレクトリにフォントをインストールした後に 実行する必要があります。
  • "xset fp+ directory" は X サーバーのカレントフォントパスに directory を追加します。恒久的にディ レクトリを追加するのであれば、/etc/XF86Config ファイルの "Files" セクショ ンに "FontPath" 行を追加します。
  • "xset fp rehash" を mkfontdir を呼びだしたあとに実行する必要があります。これはフォントパ スを現在値にリセットし、カレントフォントパスのフォントデータベースを X サーバに再読み込みさせます。
  • "xfontsel" で、インストールされている各種フォントのプロパティをマウスで選択して ブラウズすることができます。
  • "xlsfonts -fn fontpattern" は fontpattern にマッチしている全てのフォントをリスト表示し、各種フォント のプロパティを表示します。"xlsfonts -ll -fn font" を実行すると、フォント プロパティ CHARSET_REGISTRY と CHARSET_ENCODING をリスト表示します。 これらのプロパティはフォントのエンコーディングを決定します。
  • "xfd -fn font" はページ毎に font を表示します。

2007年11月12日月曜日

gdm の起動または再起動について(参考まで)

すでに gdm が起動している場合
root 権限で、
# kill -HUP `cat /var/run/gdm.pid`
と実行して、gdm をリセットしてください。
なお、`cat /var/run/gdm.pid` の前後の括弧はシングルクォートではなく、 いわゆる逆シングルクォート (106キーボードでは、Shift+@) です。ご注意ください。
gdm が立ち上がっていない場合

root 権限で、

# /usr/bin/gdm
を実行してください。 または、
# init 5
とコマンド入力して、ランレベルを 5 にすると gdm がたちあがります。

コンソールで GUI を起動したくない場合は、 /etc/X11/gdm/gdm.conf の中の、

[servers]
# These are the standard servers. You can add as many you want here
# and they will always be started. Each line must start with a unique
# number and that will be the display number of that server. Usually just
# the 0 server is used.
0=Standard
の "0=Standard" の冒頭を、"#" でコメントアウトしたのち、gdm の起動を行ってください。

Xmingを使用してFedoraCore6に接続する方法(サーバー側の設定)

●Xディスプレイマネージャの設定(gdm)
  /etc/gdm/custom.conf を以下のように修正
    [securiry]
    
AllowRemoteRoot=true(Option)
    [xdmcp]
    Enable=true

●gdm を再起動する
  #
gdm-restart  → gdmすでに起動している場合
  #gdm       → gdm起動していない場合

Xフォントサーバの設定(xfs)
  /etc/X11/fs/config を以下のように修正
    #no-listen = tcp;

●Xフォントサーバ再起動
  # service xfs restart

●ファイアウォールの設定(iptables)
  /etc/sysconfig/iptables に以下の行を追加
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 7100 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 177 -j ACCEPT
  注:1、XFSはTCPの7100ポートを使用
    2、
XDMCPはUDPの177ポートを使用

●iptables再起動
  # /etc/init.d/iptables restart

● SELinux の設定は Permissive または Disabled とします。

2007年11月11日日曜日

完全用Linux工作(ZT)

●Shell: bash。它结合了 csh 和 ksh 的优点,并且有 readline 功能,你可以随意绑定自己的键盘。
●编辑器: VIM, Emacs。
●程序开发: GCC, make, ld, Scheme48, j2sdk, Perl, Python, Tcl/Tk ...
●论文,幻灯工具:LaTeX, ConTeXt
●绘图工具:MetaPost。这个语言太强了,以至于我只用它了。你不熟悉的话可以用xfig, dia 来画一些流程图之类的图片。
●图像处理:ImageMagick。其中的 import 程序可以屏幕抓图,convert 程序可以转换图像格式,display 可以显示图片和简单编辑(缩放,换质量,转格式,简单绘图,简单虑镜)。通常我就这么点需要。如果你要更强大的图像工具可以用 Gimp, 它几乎和Photoshop差不多。
●自动管理工具:make。我可以用make来自动编译程序,自动编译文档,自动更新插图…… 全自动,而且不会重复劳动。
●数值计算程序:SciLab。这个程序基本上可以代替 Matlab。
●代数计算程序:MAXIMA。这个程序基于世界上最老的计算机代数系统之一: 由美国能源部(DOE)发行的 MIT Macsyma 系统。它是用 Common Lisp 实现的。很多现在的符号计算程序比如 Maple 都从 MAXIMA 身上学到很多东西。它现在经过 DOE 批准以GPL发行,永远是一个自由软件。
●加密程序:GnuPG。我的 PGP 密钥就是它搞出来的。
●打包,压缩程序。什么都有: tar, gzip, bzip2, zip, rar, ...
●虚拟光驱程序。Linux 不需要虚拟光驱程序,直接 mount 就行了。
●ftp 服务器:proftpd, vsftpd。proftpd 功能很强,但是我只用了最简单的一种设置。
●WWW 服务器:apache。
●ftp 客户程序:lftp,ncftp。它们都是文本方式操作的,但是比起图形界面的方便的多。比如 lftp 几乎具有 bash 的所有方便功能,Tab 补全,bookmark, queue, 后台下载,镜像…… Linux 也有图形界面的 ftp 客户程序,但是大多不稳定,有很多问题。这就是很多人抱怨 Linux 不如 Windows 的一个小原因。还有很多人用 Wine 模拟 Windows 的leapftp,其实 lftp 比 leapftp 好很多,你需要的只是适应一下。
●自动下载工具: wget。它非常稳定,有一次我下载一个程序,用 IE 和 Mozilla 下载回来的文件都是坏的,最后还是 wget 可靠的传输了数据。用它甚至可以镜像整个网站,比起WebZip 这样的 Windows 程序强多了,而且不会因为你不付钱就在下载回来的网页里强制插入广告。
●虚拟终端:rxvt, xterm, gnome-terminal, mlterm, ...
●X server: XFree86
●窗口管理器:FVWM。编译加入了 libstroke。
●中文输入:XSIM。被我修改过以适应 FVWM 的需要。另外推荐你还可以用 SCIM。
●email 处理:Mutt + Postfix + fetchmail
●看 PDF, PS, DJVU 文件:Acrobat Reader, xpdf, GhostScript, gv, djvu工具包和netscape 插件。
●看CAJ文档。我从来不看CAJ之类的文档,如果找不到PDF或PS,直接去图书馆借最好。
●看网页:Mozilla, Phoenix, lynx。Mozilla-Xft 的显示效果比IE 好很多。
●英汉字典:IBM智能词典,星际译王。
●编辑网页:我用VIM 直接写 HTML。你如果想要图形方式的可以用其它的比如screem, BlueFish。
●登录其它 UNIX, Linux 机器:openSSH, telnet。 我喜欢用 openSSH 把其它机器的X 程序通过 ssh 加密的隧道传到我机器上显示。
●登录 Windows2000 server 的 display service: rdesktop,...我有一天试了一下,不错。后来就没有用过了。
●同步程序:rsync。我用 rsync 通过 ssh 来跟某些机器同步数据,或者做自己机器上不同目录间的同步。
●上BBS:rxvt(或任何一种终端) + telnet + chatbot(helloooo 机器人的程序)
●QQ, ICQ: 我没有 QQ 或 ICQ。不过你可以用 Gaim, 它同时支持 QQ, ICQ 和很多其它的即时通信方式。ICQ 用户也可以用 Licq。
●放录像:MPlayer, RealPlayer。MPlayer 太好了,直接就可以放 VCD, DVD, divx, wma, wmv ... 用 Windows 的同学都很羡慕我。

Linuxのrootのパスワードを忘れてしまった!(ZT)

解決方法:single user modeでパスワードを再設定する。(Fedora Core 6で検証済み)

以下、メモ。
1、FedoraのGRUB画面で「e」を押して、ブートメニューの編集画面へ。
2、kernel と書いてある行へ矢印キーで移動して「e」 を押して、その行の編集画面へ。
3、行の最後にへsingle と書いてEnter。最後に「b」で終了。
4、sh-3.00#というルートなプロンプトが出るので、passwd でEnterしてパスワード設定。
5、reboot書いてEnterで再起動。

簡単すぎ、、、。やはりGRUBのパスワードも設定しておくべきかも<それを忘 れたらどうする^^?<忘れるなよっ。