Chinaunix

标题: Linux常用命令及基础知识介绍 [打印本页]

作者: compare2000    时间: 2011-02-25 10:07
标题: Linux常用命令及基础知识介绍
1        获取帮助
使用Linux时,可以随时通过以下命令,查询联机帮助,注意在Linux下是区分大小写,还有一点就是多按Tab键,经常有意想不到的收获,如果某个文本文件在Windows在创建和编辑过,在linux下使用时,最好使用dos2unix命令对这个文件格式进行转换。
1.1        whatis
指令名称:        whatis
使用权限:        所有使用者
使用方式:        whatis [-d] [-r|-w] [-m systems] [-M manpath] | [-h] | [-V] keyword ...
说    明:        查询某一命令的简要说明
参    数:       
范    例:        whatis ls
1.2        man
指令名称:        man
使用权限:        所有使用者
使用方式:        man [-c|-f|-k|-w|-tZT device] [-adlhu7V] [-Mpath] [-Ppager] [-Slist] [-msystem] [-pstring] [-Llocale] [-eextension] [section] page ...
说    明:        显示某一命令的联机帮助,如之功能相似的命令为info,阅读帮助手册的状态下,按q键退出
参    数:       
范    例:        man less

1.3        --help
指令名称:       
使用权限:        所有使用者
使用方式:        commad --help
说    明:        其实这并不是一个真正的命令,而是几乎所有命令都支持的一个标准参数,使用该参数可以列出该命令的简要的帮助信息
参    数:       
范    例:        ps --help
作者: compare2000    时间: 2011-02-25 10:07
2        文件操作
2.1        目录操作
2.1.1        pwd
指令名称:        pwd
使用权限:        所有使用者
使用方式:        pwd
说    明:        显示当前目录的绝对路径
参    数:       
范    例:        pwd
2.1.2        ls
指令名称:        ls
使用权限:        所有使用者
使用方式:        ls [-alrtAFR] [name...]
说    明:        显示指定工作目录下之内容(列出目前工作目录所含文件及子目录)。
参    数:        -a 显示所有档案及目录 (ls内定将档案名或目录名称开头为"."的视为隐藏档,不会列出)
-l 除档案名称外,亦将档案型态、权限、拥有者、档案大小等资讯详细列出
-r 将档案以相反次序显示(原定依英文字母次序)
-t 将档案依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的档案名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有档案,则以下之档案亦皆依序列出
范    例:        列出目前工作目录下所有名称是 s 开头的档案,愈新的排愈后面 :
                ls -ltr s*

                将 /bin 目录以下所有目录及档案详细资料列出 :
                ls -lR /bin

                列出目前工作目录下所有档案及目录;目录于名称后加 "/", 可执行档于名称后加 "*" :
                ls -AF
2.1.3        cd
指令名称:        cd
使用权限:        所有使用者
使用方式:        cd [dirName]
说    明:        变换工作目录至 dirName。 其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home directory (也就是刚 login 时所在的目录)。
另外,"~" 也表示为 home directory 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录。
参    数:       
范    例:        跳到 /usr/bin/ :
                cd /usr/bin

                跳到自己的 home directory :
                cd ~

               跳到目前目录的上上两层 :
               cd ../..
作者: compare2000    时间: 2011-02-25 10:08
2.1.4        cp
指令名称:        cp
使用权限:        所有使用者
使用方式:        cp [options] source dest
cp [options] source... directory
说    明:        将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。
参    数:        -a 尽可能将档案状态、权限等资料都照原状予以复制。
-r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。
-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。
范    例:        将档案 aaa 复制(已存在),并命名为 bbb :
cp aaa bbb

将所有的C语言程序拷贝至 Finished 子目录中 :
cp *.c Finished
2.1.5        mv
指令名称:        mv
使用权限:        所有使用者
使用方式:        mv [options] source dest
mv [options] source... directory
说    明:        将一个档案移至另一档案,或将数个档案移至另一目录,如果source为目录,则会递归移动该目录下所有文件及子目录。
参    数:        -i 若目的地已有同名档案,则先询问是否覆盖旧档。
范    例:        将档案 aaa 更名为 bbb :
mv aaa bbb

将所有的C语言程序移至 Finished 子目录中 :
mv -i *.c

2.1.6        mkdir
指令名称:        mkdir
使用权限:        于目前目录有适当权限的所有使用者
使用方式:        mkdir [-p] dirName
说    明:        建立名称为 dirName 之子目录
参    数:        -p 确保目录名称存在,不存在的就建一个
范    例:        在工作目录下,建立一个名为 AAA 的子目录 :
mkdir AAA

在工作目录下的 BBB 目录中,建立一个名为 Test 的子目录。若 BBB 目录原本不存在,则建立一个。(注:本例若不加 -p,且原本 BBB目录不存在,则产生错误。)
mkdir -p BBB/Test
作者: compare2000    时间: 2011-02-25 10:08
2.1.7        rmdir
指令名称:        rmdir
使用权限:        于目前目录有适当权限的所有使用者
使用方式:        rmdir [-p] dirName
说    明:        删除空的目录
参    数:        -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除
范    例:        将工作目录下,名为 AAA 的子目录删除 :
rmdir AAA

在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除。
rmdir -p BBB/Test

2.1.8        rm
指令名称:        rm
使用权限:        所有使用者
使用方式:        rm [options] name...
说    明:        删除档案及目录。
参    数:        -i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
范    例:        删除所有C语言程序档;删除前逐一询问确认 :
rm -i *.c

将 Finished 子目录及子目录中所有档案删除 :
rm -r Finished

删除名为-a的文件
rm ./-a
或者rm -- -a (参数“--”告诉rm这是最后一个选项)


删除名为\a的文件
rm \\a
作者: compare2000    时间: 2011-02-25 10:09
2.2        文件查找
2.2.1        find
指令名称:        find
使用权限:        所有使用者
使用方式:        find expression
说    明:        将档案系统内符合 expression 的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。

find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
参    数:        expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

-mount, -xdev : 只检查和指定目录在同一个档案系统下的档案,避免列出其它档案系统中的档案
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比档案 file 更晚被读取过的档案
-atime n : 在过去 n 天过读取过的档案
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比档案 file 更新的档案
-ctime n : 在过去 n 天过修改过的档案
-empty : 空的档案-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的档案,ipath 会忽略大小写
-name name, -iname name : 档案名称符合 name 的档案。iname 会忽略大小写
-size n : 档案大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-xtype c : 档案类型是 c 的档案。
d: 目录
c: 字型装置档案
b: 区块装置档案
p: 具名贮列
f: 一般档案
l: 符号连结
s: socket
-uid n : uid 是 n 的档案

你可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
范    例:        将目前目录及其子目录下所有延伸档名是 c 的档案列出来。
# find . -name "*.c"

在目前目录及其子目录下,查找文件名为aaa 或者AAA或者aAA的文件
# find –iname aaa

将目前目录其其下子目录中所有一般档案列出
# find . -xtype f
作者: compare2000    时间: 2011-02-25 10:10
2.2.2        grep
指令名称:        grep
使用权限:        所有使用者
使用方式:        grep [OPTION]... PATTERN [FILE] ...
说    明:        grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。

grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
参    数:        -?
同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行。

-b,--byte-offset
打印匹配行前面打印该行所在的块号码。

-c,--count
只打印匹配的行数,不显示匹配的内容。

-f File,--file=File
从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。

-h,--no-filename
当搜索多个文件时,不显示匹配文件名前缀。

-i,--ignore-case
忽略大小写差别。

-q,--quiet
取消显示,只返回退出状态。0则表示找到了匹配的行。

-l,--files-with-matches
打印匹配模板的文件清单。

-L,--files-without-match
打印不匹配模板的文件清单。

-n,--line-number
在匹配的行前面打印行号。

-s,--silent
不显示关于不存在或者无法读取文件的错误信息。

-v,--revert-match
反检索,只显示不匹配的行。

-w,--word-regexp
如果被\<和\>引用,就把表达式做为一个单词搜索。
作者: compare2000    时间: 2011-02-25 10:10
范    例:        要用好grep这个工具,其实就是要写好正则表达式,所以这里不对grep的所有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法。

$ ls -l | grep '^a'
通过管道过滤ls -l输出的内容,只显示以a开头的行。

$ grep 'test' d*
显示所有以d开头的文件中包含test的行。


$ grep 'myString'  -i -r *
在当前目录及其所有子目录中的所有文件中查找包含字符串“myString”,不区分大小写

$ grep 'test' aa bb cc
显示在aa,bb,cc文件中匹配test的行。

$ grep '[a-z]\{5\}' aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

$ grep 'w\(es\)t.*\1' aa
如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(\1),找到就显示该行。如果用egrep或grep -E,就不用"\"号进行转义,直接写成'w(es)t.*\1'就可以了。


2.3        文件浏览
2.3.1        less
指令名称:        less
使用权限:        所有使用者
使用方式:        less [Option] filename
说    明:        less 的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 允许使用者往回卷动,以浏览已经看过的部份,同时因为 less 并未在一开始就读入整个档案,因此在遇上大型档案的开启时,会比一般的文书编辑器(如 vi)来的快速。
参    数:       
范    例:        less /proc/cpuinfo
作者: compare2000    时间: 2011-02-25 10:11
2.3.2        more
指令名称:        more
使用权限:        所有使用者
使用方式:        more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
说    明:        类似 cat ,不过会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按h键,退出请按q键。
参    数:        -num 一次显示的行数
-d 提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔' 声
-l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
+/ 在每个档案显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示
fileNames 欲显示内容的档案,可为复数个数
范    例:        more -s testfile 逐页显示 testfile 之档案内容,如有连续两行以上空白行则以一行空白行显示。
more +20 testfile 从第 20 行开始显示 testfile 之档案内容。

2.3.3        cat
指令名称:        cat
使用权限:        所有使用者
使用方式:        cat [-AbeEnstTuv] [--help] [--version] fileName
说    明:        把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)
参    数:        -n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
范    例:        把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -n textfile1 > textfile2

把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
cat -b textfile1 textfile2 >> textfile3

清空/etc/test.txt档案内容
cat /dev/null > /etc/test.txt
作者: compare2000    时间: 2011-02-25 10:12
2.3.4        cut
指令名称:        cut
使用权限:        所有使用者
使用方式:        cut -cnum1-num2 filename
说    明:        显示每行从开头算起 num1 到 num2 的文字
参    数:       
范    例:        -c m-n 表示显示每一行的第m个字元到第n个字元。例如:

---------file-----------
liubi 23 14000
---------file-----------
# cut -c 3-9,12-20 file
liubi 14000

-f m-n 表示显示第m栏到第n栏(使用tab分隔)。例如:
---------file-----------
liubi 23 14000
---------file-----------
# cut -f 1,3 file
liubi 14000
2.3.5        head
指令名称:        head
使用权限:        所有使用者
使用方式:        head [OPTION]... [FILE]...
说    明:        查看某文件开始的n行
参    数:       
范    例:        如果你只想看文件的前5行,可以使用head命令,如:
head -5 /etc/passwd
作者: compare2000    时间: 2011-02-25 10:13
2.3.6        sed
指令名称:        sed
使用权限:        所有使用者
使用方式:        sed [OPTION]... {script-only-if-no-other-script} [input-file]...
说    明:        sed是一个强大的基于流的文本编辑工具,这里不做详细介绍,只是使用它的一项最基本的文件浏览功能
参    数:       
范    例:        查看文件中间一段,你可以使用sed命令,如:
sed -n '5,10p' /etc/passwd


2.3.7        tail
指令名称:        tail
使用权限:        所有使用者
使用方式:        tail [OPTION]... [FILE]...
说    明:        查看某文件结尾的n行
参    数:        -f使tail不停地去读最新的内容,这样有实时监视的效果
范    例:        如果你想查看文件的后10行,可以使用tail命令,如:
tail -10 /etc/passwd
tail -f /var/log/messages

2.4        文件编辑
2.4.1        Vi简介
vi 做为Linux 系统中一种编辑器,它的使用方法和界面与 Unix 平台十分相似。在 Linux 中有很多功能强大,界面友好的编辑器,但是vi 还是值得你学习它的使用方法。初步接触 VI,你觉得它的界面不太友好,不容易掌握,可是一旦你掌握了vi 的命令,你可以感觉到它强大的功能与高效。而且vi 相对来说较小,无论你使用任何 Linux系统,你总是可以使用vi的。在很多系统中,可能只有 vi 供你选择。
作者: compare2000    时间: 2011-02-25 10:36
2.4.2        进入与离开
要进入vi可以直接在系统提示字符下键入vi<文件名称>,vi可以自动帮你载入所要编辑的文件或是开启一个新文件。进入vi後屏幕左方会出现波浪符号,凡是列首有该符号就代表此列目前是空的。要离开vi可以在指令模式下键入:q, :wq指令则是存档後再离开(注意冒号)。要切换到指令模式下则是用[ESC]键,如果不晓得现在是处於什麽模式,可以多按几次[ESC],系统会发出哔哔声以确定进入指令模式。
2.4.3        Vi输入模式
如何输入资料呢?有好几个指令可以进入输入模式:
新增 (append)
a 从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。
A 从光标所在列最後面的地方开始新增资料。
插 入 (insert)
i 从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。
I 从光标列的第一个非空白字符前面开始插入资料。
开 始 (open)
o 在光标所在列下新增一列并进入输入模式。
O 在光标所在列上方新增一列并进入输入模式。
2.4.4        删除与修改
何谓编辑?在这里我们认为是文字的新增修改以及删除,甚至包括文字区块的搬移、复制等等。这里先介绍vi如何做删除与修改。(注意:在vi的原始观念里,输入跟编辑是两码子事。编辑是在指令模式下操作的,先利用指令移动光标来定位要进行编辑的地方,然後才下指令做编辑。)
x 删除光标所在字符。
dd 删除光标所在的列。
r 修改光标所在字符,r後接著要修正的字符。
R 进入取代状态,新增资料会覆盖原先资料,直到按[ESC]回到指令模式下为止。
s 删除光标所在字符,并进入输入模式。
S 删除光标所在的列,并进入输入模式。
下面列出 vi 中较常用的操作命令。
作者: compare2000    时间: 2011-02-25 10:37
2.4.5        输入模式命令
命令        作用
<a>        在光标后输入文本
<A>        在当前行末尾输入文本
<i>        在光标前输入文本
<I>        在当前行开始输入文本
<o>        在当前行后输入新一行
<O>        在当前行前输入新一行

2.4.6        光标移动命令
命令        作用
<b>        移动到当前单词的开始
<e>        移动到当前单词的结尾
<w>        向前移动一个单词
<h>        向前移动一个字符
<j>        向上移动一行
<k>        向下移动一行
<l>        向后移动一个字符

2.4.7        删除操作命令
命令        作用
<x>        删除光标所在的字符
<dw>        删除光标所在的单词
<d$>        删除光标至行尾的所有字符
<D>        同<d$>
<dd>        删除当前行
作者: compare2000    时间: 2011-02-25 10:38
本帖最后由 compare2000 于 2011-03-06 13:00 编辑

2.4.8        改变与替换操作命令
命令        作用
<r>        替换光标所在的字符
<R>        替换字符序列
<cw>        替换一个单词
<ce>        同<cw>
<cb>        替换光标所在的前一字符
<c$>        替换自光标位置至行尾的所有字符
<C>        同<c$>
<cc>        替换当前行

2.4.9        查询命令
命令        作用
</abc>        向前查询abc
<?abc>        向后查询abc
<n>        向前继续查询
<N>        向后继续查询

2.4.10        拷贝与粘贴命令
命令        作用
</yw>        将光标所在单词拷入剪贴板
<y$>        将光标至行尾的字符拷入剪贴板
<Y>        同<y$>
<yy>        将当前行拷入剪贴板
<p>        将剪贴板中的内容粘贴在光标后
<>        将剪贴板中的内容粘贴在光标前

2.4.11        文件保存及退出vi命令
命令        作用
<:q>        不包存退出
<:q!>        不保存强制性退出
<:w>        保存编辑
<:w filename>        存入文件 filename 中
<:w! filename>        强制性存入文件 filename 中
<:wq>        保存退出
<>        同 <:wq>
<ZZ>        同 <:wq>
作者: compare2000    时间: 2011-02-25 10:38
本帖最后由 compare2000 于 2011-03-06 13:00 编辑

2.5        文件归档及压缩
2.5.1        tar
指令名称:        tar
使用权限:        所有使用者
使用方式:        tar [主选项+辅选项] 文件或者目录
说    明:        使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。
tar可以为文件和目录创建档案。利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案,如软盘。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。Linux上的tar是GNU版本的。

参    数:        c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
r 把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。
t 列出档案文件的内容,查看已经备份了哪些文件。
u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。
x 从档案文件中释放文件。
辅助选项:
b 该选项是为磁带机设定的。其后跟一数字,用来说明区块的大小,系统预设值为20(20*512 bytes)。
f 使用档案文件或设备,这个选项通常是必选的。
k 保存已经存在的文件。例如我们把某个文件还原,在还原的过程中,遇到相同的文件,不会进行覆盖。
m 在还原文件时,把所有文件的修改时间设定为现在。
M 创建多卷的档案文件,以便在几个磁盘中存放。
v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。
w 每一步都要求确认。
z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。
作者: compare2000    时间: 2011-02-25 10:39
范    例:        例1:把/home目录下包括它的子目录全部做备份文件,备份文件名为usr.tar。
$ tar cvf usr.tar /home
例2:把/home目录下包括它的子目录全部做备份文件,并进行压缩,备份文件名为usr.tar.gz 。
$ tar czvf usr.tar.gz /home
例3:把usr.tar.gz这个备份文件还原并解压缩。
$ tar xzvf usr.tar.gz
例4:查看usr.tar备份文件的内容,并以分屏方式显示在显示器上。
$ tar tvf usr.tar | more
要将文件备份到一个特定的设备,只需把设备名作为备份文件名。
例5:用户在/dev/fd0设备的软盘中创建一个备份文件,并将/home 目录中所有的文件都拷贝到备份文件中。
$ tar cf /dev/fd0 /home
要恢复设备磁盘中的文件,可使用xf选项:
$ tar xf /dev/fd0
如果用户备份的文件大小超过设备可用的存贮空间,如软盘,您可以创建一个多卷的tar备份文件。M选项指示tar命令提示您使用一个新的存贮设备,当使用M选项向一个软驱进行存档时,tar命令在一张软盘已满的时候会提醒您再放入一张新的软盘。这样您就可以把tar档案存入几张磁盘中。
$ tar cMf /dev/fd0 /home
要恢复几张盘中的档案,只要将第一张放入软驱,然后输入有x和M选项的tar命令。在必要时您会被提醒放入另外一张软盘。
$ tar xMf /dev/fd0
2.5.2        gzip
指令名称:        gzip
使用权限:        所有使用者
使用方式:        gzip [选项] 压缩(解压缩)的文件名
说    明:        减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。
作者: compare2000    时间: 2011-02-25 10:48
参    数:        -c 将输出写到标准输出上,并保留原有文件。
-d 将压缩文件解压。
-l 对每个压缩文件,显示下列字段:
压缩文件的大小
未压缩文件的大小
压缩比
未压缩文件的名字
-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
-t 测试,检查压缩文件是否完整。
-v 对每一个压缩和解压的文件,显示文件名和压缩比。
-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。
范    例:        假设一个目录/home下有文件mm.txt、sort.txt、xx.com。
例1:把/home目录下的每个文件压缩成.gz文件。
$ cd /home
$ gzip *
$ ls
m.txt.gz sort.txt.gz xx.com.gz
例2:把例1中每个压缩的文件解压,并列出详细的信息。
$ gzip -dv *
mm.txt.gz 43.1%-----replaced with mm.txt
sort.txt.gz 43.1%-----replaced with sort.txt
xx.com.gz 43.1%-----replaced with xx.com
$ ls
mm.txt sort.txt xx.com
 
例3:详细显示例1中每个压缩的文件的信息,并不解压。
$ gzip -l *
compressed uncompr. ratio uncompressed_name
277 445 43.1% mm.txt
278 445 43.1% sort.txt
277 445 43.1% xx.com
$ ls
mm.txt.gz sort.txt.gz xx.com.gz
例4:压缩一个tar备份文件,如usr.tar,此时压缩文件的扩展名为.tar.gz
$ gzip usr.tar
$ ls
usr.tar.gz
作者: compare2000    时间: 2011-02-25 11:06
2.5.3        unzip
指令名称:        unzip
使用权限:        所有使用者
使用方式:        unzip [选项] 压缩文件名.zip
说    明:        用MS Windows下的压缩软件winzip压缩的文件如何在Linux系统下展开呢?可以用unzip命令,该命令用于解扩展名为.zip的压缩文件。
参    数:        -x 文件列表 解压缩文件,但不包括指定的file文件。
-v 查看压缩文件目录,但不解压。
-t 测试文件有无损坏,但不解压。
-d 目录 把压缩文件解到指定目录下。
-z 只显示压缩文件的注解。
-n 不覆盖已经存在的文件。
-o 覆盖已存在的文件且不要求用户确认。
-j 不重建文档的目录结构,把所有文件解压到同一目录下。
范    例:        例1:将压缩文件text.zip在当前目录下解压缩。
$ unzip text.zip
 
例2:将压缩文件text.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件。
$ unzip -n text.zip -d /tmp
 
例3:查看压缩文件目录,但不解压。
$ unzip -v text.zip
作者: compare2000    时间: 2011-02-25 11:07
2.6        文件链接
2.6.1        ln
指令名称:        ln
使用权限:        所有使用者
使用方式:        ln [options] source dist
其中 option 的格式为 :
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
说    明:        Linux/Unix 档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种 : 硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。
ln source dist 是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。
不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
参    数:        -f : 链结时先将与 dist 同档名的档案删除
-d : 允许系统管理者硬链结自己的目录
-i : 在删除与 dist 同档名的档案时先进行询问
-n : 在进行软连结时,将 dist 视为一般的档案
-s : 进行软链结(symbolic link)
-v : 在连结之前显示其档名
-b : 将在链结时会被覆写或删除的档案进行备份
-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
-V METHOD : 指定备份的方式
范    例:        将档案 yy 产生一个 symbolic link : zz
ln -s yy zz

将档案 yy 产生一个 hard link : zz
ln yy xx
作者: compare2000    时间: 2011-02-25 11:07
3        系统管理
3.1        查看系统信息
3.1.1        uname
指令名称:        uname
使用权限:        所有使用者
使用方式:        uname [OPTION]...
说    明:       
参    数:       
范    例:        查看系统内核版本:
uname -a
3.1.2        who
指令名称:        who
使用权限:        所有使用者
使用方式:        who - [husfV] [user]
说    明:        显示系统中有那些使用者正在上面,显示的资料包含了使用者 ID,使用的终端机,从那边连上来的,上线时间,呆滞时间,CPU 使用量,动作等等
参    数:        -h : 不要显示标题列
-u : 不要显示使用者的动作/工作
-s : 使用简短的格式来显示
-f : 不要显示使用者的上线位置
-V : 显示程序版本
范    例:        who

3.1.3        whoami
指令名称:        whoami
使用权限:        所有使用者
使用方式:        whoami
说    明:        查看你当前使用是以什么身份在使用系统,因为虽然你开始是用ims_omu登录,但在使用的过程中,你用su临时切换了身份,该命令可以查询你当前使用的身份。
参    数:       
范    例:        whoami
作者: compare2000    时间: 2011-02-25 11:36
3.1.4        df
指令名称:        df
使用权限:        所有使用者
使用方式:        df [选项]
说    明:        df命令可显示所有文件系统对i节点和磁盘块的使用情况。
参    数:        -a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。
-k 以k字节为单位显示。
-i 显示i节点信息,而不是磁盘块。
-h 以人类可读的方式显示文件大小
-t 显示各指定类型的文件系统的磁盘空间使用情况。
-x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。
-T 显示文件系统类型。
范    例:        列出各文件系统的磁盘空间使用情况。
df

列出文件系统的类型。
df -T

3.1.5        du
指令名称:        du
使用权限:        所有使用者
使用方式:        du [OPTION]... [FILE]...
说    明:        du可以查看UNIX下某个文件或文件夹的大小
参    数:        -h,用M字节为单位
-k,用k字节为单位
-b,使用bytes为单位
范    例:        du –b test.txt

3.1.6        free
指令名称:        free
使用权限:        所有使用者
使用方式:        free [-bkmotV][-s <间隔秒数>]
说    明:        free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
参    数:        -b  以Byte为单位显示内存使用情况。
 -k  以KB为单位显示内存使用情况。
 -m  以MB为单位显示内存使用情况。
 -o  不显示缓冲区调节列。
 -s<间隔秒数>  持续观察内存使用状况。
 -t  显示内存总和列。
范    例:        每三秒钟显示一次内存使用状况,结果以KB为单位
free -k -s 3
作者: compare2000    时间: 2011-02-25 11:36
3.1.7        procinfo
指令名称:        procinfo
使用权限:        所有使用者
使用方式:        procinfo [-abdDfhimsSv][-F <输出文件>][-n <间隔秒数>]
说    明:        procinfo指令从/proc目录里读取相关数据,将数据妥善整理过后输出到标准输出设备。
参    数:        -a  显示所有信息。
-b  显示磁盘设备的区块数目,而非存取数目。
-d  显示系统信息每秒间的变化差额,而非总和的数值。本参数必须配合"-f"参数使用
-D  此参数效果和指定"-d"参数类似,但内存和交换文件的信息为总和数值。
-f  进入全画面的互动式操作界面。
-F<输出文件>  把信息状态输出到文件保存起来,而非预设的标准输出设备。
-h  在线帮助。
-i  显示完整的IRP列表。
-m  显示系统模块和外围设备等相关信息。
-n<间隔秒数>  设置全画面互动模式的信息更新速度,单位以秒计算。
-s  显示系统的内存,磁盘空间,IRP和DMA等信息,此为预设值。
-S  搭配参数"-d"或"-D"使用时,每秒都会更新信息,不论是否有使用参数"-n"。
范    例:        procinfo -a


3.1.8        查看其它系统信息
cat /proc/cpuinfo - CPU 信息
cat /proc/interrupts - 中断
cat /proc/ioports - 设备IO端口
cat /proc/meminfo - 内存信息(i.e. mem used, free, swap size)
cat /proc/partitions - 所有设备的所有分区
cat /proc/pci - PCI设备的信息
cat /proc/swaps - 所有Swap分区的信息
cat /proc/version - Linux的版本号
作者: compare2000    时间: 2011-02-25 11:37
3.2        环境变量设置
3.2.1        export
指令名称:        export
使用权限:        所有使用者
使用方式:        [变量名]=[变量值]; export [变量名]
说    明:        使用export命令设置的环境变量,只在当前的shell下有效,一旦用户重新登录,该环境变量就会丢失,如果想永久的使用该环境变量,最好将该环境变量的定义放在~/.bashrc文件中,该文件每次Shell登录时都会得到执行。
参    数:       
范    例:        查看所有的环境变量及其值
export

查看某一变量值:
export [变量名](或者使用echo [变量名])


3.3        网络操作
3.3.1        ifconfig
指令名称:        ifconfig
使用权限:        root
使用方式:        ifconfig [-a] [-i] [-v] [-s] <interface> [[<AF>] <address>]
说    明:        查看或配置自己的网络,可以通过该命令查看自己的ip地址
参    数:       
范    例:        显示所有网络配置信息
ifconfig -a
3.3.2        finger
指令名称:        finger
使用权限:        所有使用者
使用方式:        finger [options] user[@address]
说    明:        finger 可以让使用者查询一些其他使用者的资料。不带参数使用时和who功能类似。
参    数:        -l :多行显示。
-s :单行显示。这个选项只显示登入名称,真实姓名,终端机名称,闲置时间,登入时间,办公室号码及电话号码。如果所查询的使用者是远端服务器的使用者,这个选项无效。
范    例:        查看所有在线用户信息:
finger

查询某个用户的详细信息:
finger p40068

3.3.3        telnet
指令名称:        telnet
使用权限:        所有使用者
使用方式:        telnet [option(s)] hostname or IP address [Port]
说    明:        在linux和Windows下,都可以使用该命令登录到远程机器
参    数:       
范    例:        登录到ip为10.70.38.55机器上
telnet 10.70.38.55

在windows下telnet到liunx下,可以使用putty工具软件,比起dos命令行下进行telnet操作,方便了很多。
3.3.4        ftp
指令名称:        ftp
使用权限:        所有使用者
使用方式:        ftp -v -d -i -n -g [主机名]
说    明:        FTP命令是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX操作系统下使用FTP,都会遇到大量的FTP内部命令。熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍之效。
作者: compare2000    时间: 2011-02-25 11:39
参    数:        -v 显示远程服务器的所有响应信息;
-d 使用调试方式;
-i 限制ftp的自动登录,即不使用;
-n etrc文件;
-g 取消全局文件名。

ftp使用的内部命令如下(中括号表示可选项):
  1. ![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip。
  2. $ macro-ame[args]:执行宏定义macro-name。
  3. account[password]:提供登录远程系统成功后访问系统资源所需的补充口令。
  4. append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。
  5. ascii:使用ascii类型传输方式。
  6. bell:每个命令执行完毕后计算机响铃一次。
  7. bin:使用二进制文件传输方式。
  8. bye:退出ftp会话过程。
  9. case:在使用mget时,将远程主机文件名中的大写转为小写字母。
  10. cd remote-dir:进入远程主机目录。
  11. cdup:进入远程主机目录的父目录。
  12. chmod mode file-name:将远程主机文件file-name的存取方式设置为mode,如: chmod 777 a.out 。
  13. close:中断与远程服务器的ftp会话(与open对应)。
  14. cr:使用asscii方式传输文件时,将回车换行转换为回行。
  15. delete remote-file:删除远程主机文件。
  16. debug[debug-value]:设置调试方式, 显示发送至远程主机的每条命令,如: deb up 3,若设为0,表示取消debug。
  17. dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件local-file。
  18. disconnection:同close。
  19. form format:将文件传输方式设置为format,缺省为file方式。
  20. get remote-file[local-file]: 将远程主机的文件remote-file传至本地硬盘的local-file。
  21. glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,同命令行的-g参数。
  22. hash:每传输1024字节,显示一个hash符号(#)。
  23. help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。
  24. idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。
  25. image:设置二进制传输方式(同binary)。
  26. lcd[dir]:将本地工作目录切换至dir。
  27. ls[remote-dir][local-file]:显示远程目录remote-dir, 并存入本地文件local-file。
  28. macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结束。
  29. mdelete[remote-file]:删除远程主机文件。
  30. mdir remote-files local-file:与dir类似,但可指定多个远程文件,如: mdir *.o.*.zipoutfile 。
  
作者: compare2000    时间: 2011-02-25 11:40
31. mget remote-files:传输多个远程文件。
  32. mkdir dir-name:在远程主机中建一目录。
  33. mls remote-file local-file:同nlist,但可指定多个文件名。
  34. mode[modename]:将文件传输方式设置为modename, 缺省为stream方式。
  35. modtime file-name:显示远程主机文件的最后修改时间。
  36. mput local-file:将多个文件传输至远程主机。
  37. newer file-name: 如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件。
  38. nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并存入本地硬盘的local-file。
  39. nmap[inpattern outpattern]:设置文件名映射机制, 使得文件传输时,文件中的某些字符相互转换,如:nmap $1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。该命令特别适用于远程主机为非UNIX机的情况。
  40. ntrans[inchars[outchars]]:设置文件名字符的翻译机制,如ntrans1R,则文件名LLL将变为RRR。
  41. open host[port]:建立指定ftp服务器连接,可指定连接端口。
  42. passive:进入被动传输方式。
  43. prompt:设置多个文件传输时的交互提示。
  44. proxy ftp-cmd:在次要控制连接中,执行一条ftp命令,该命令允许连接两个ftp服务器,以在两个服务器间传输文件。第一条ftp命令必须为open,以首先建立两个服务器间的连接。
  45. put local-file[remote-file]:将本地文件local-file传送至远程主机。
  46. pwd:显示远程主机的当前工作目录。
  47. quit:同bye,退出ftp会话。
  48. quote arg1,arg2...:将参数逐字发至远程ftp服务器,如:quote syst。
  49. recv remote-file[local-file]:同get。
  50. reget remote-file[local-file]:类似于get,但若local-file存在,则从上次传输中断处续传。
  51. rhelp[cmd-name]:请求获得远程主机的帮助。
  52. rstatus[file-name]:若未指定文件名,则显示远程主机的状态,否则显示文件状态。
  53. rename[from][to]:更改远程主机文件名。
  54. reset:清除回答队列。
  55. restart marker:从指定的标志marker处,重新开始get或put,如:restart 130。
  56. rmdir dir-name:删除远程主机目录。
  57. runique:设置文件名唯一性存储。
  58. send local-file[remote-file]:同put。
  59. sendport:设置PORT命令的使用。
  60. site arg1,arg2...:将参数作为SITE命令逐字发送至远程ftp主机。
  
作者: compare2000    时间: 2011-02-25 11:40
61. size file-name:显示远程主机文件大小,如:site idle 7200。
  62. status:显示当前ftp状态。
  63. struct[struct-name]:将文件传输结构设置为struct-name,缺省时使用stream结构。
  64. sunique:将远程主机文件名存储设置为唯一(与runique对应)。
  65. system:显示远程主机的操作系统类型。
  66. tenex:将文件传输类型设置为TENEX机的所需的类型。
  67. tick:设置传输时的字节计数器。
  68. trace:设置包跟踪。
  69. type[type-name]:设置文件传输类型为type-name,缺省为ascii,如:type binary,设置二进制传输方式。
  70. umask[newmask]:将远程服务器的缺省umask设置为newmask,如:umask 3。
  71. user user-name[password][account]:向远程主机表明自己的身份,需要口令时,必须输入口令,如:user anonymous my@email。
  72. verbose:同命令行的-v参数,即设置详尽报告方式,ftp服务器的所有响应都将显示给用户,缺省为on。
  73. ?[cmd]:同help。

范    例:        登录到一台机器,查看文件列表,下载一个文件,上传一个文件等操作:
ftp 10.70.38.55
user ims_omu ims_omu
ls
get test.txt
put mytest.txt
作者: compare2000    时间: 2011-02-25 11:41
3.4        用户管理
3.4.1        useradd
指令名称:        useradd
使用权限:        root
使用方式:        useradd [-c comment] [-d home_dir] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,...]] [-m [-k skeleton_dir] | -M] [-s shell] [-u uid [ -o]] [-n] [-r] login

useradd -D [-g default_group] [-b default_home] [-f default_inactive] [-e default_expire_date] [-s default_shell]
说    明:        帐号建立或更新新使用者的资讯
参    数:        -d home_dir
新帐号每次登入时所使用的home_dir 。 预设值为 default_home内login名 称,并当成登入时目录名称 。
-m
使用者目录如不存在则自动建立。如使用-k 选项skeleton_dir 内的档案将复制 至使用者目录下。然而在/etc/skel目录下的档案也会复制过去取代。任何在 skeleton_dir or /etc/skel的目录也相同会在使用者目录下一一建立。The -k同-m不建立目录以及不复制任何档案为预设值。
范    例:        创建用户p40068,并设置该用户的home路径为“/home/p40068”,如果不存在“/home/p4006”目录则自动创建该目录:
useradd –d /home/p40068 –m p40068
3.4.2        userdel
指令名称:        userdel
使用权限:        root
使用方式:        userdel [-r] login
说    明:        删除使用者帐号及相关档案
参    数:        -r:使用者目录下的档案一并移除。在其他位置上的档案也将一一找出并删除
范    例:        删除p40068用户:
userdel p40068

删除p40068用户的同时,删除该用户所拥有的所有文件及文件夹:
userdel –r p40068
作者: compare2000    时间: 2011-02-25 11:42
本帖最后由 compare2000 于 2011-03-06 13:04 编辑

3.4.4        passwd
指令名称:        passwd
使用权限:        所有使用者
使用方式:        passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]
说    明:        用来更改使用者的密码,如果不输入username,则表示更改自己的登录密码
参    数:        -d 关闭使用者的密码认证功能, 使用者在登入时将可以不用输入密码, 只有具备 root 权限的使用者方可使用.

-S 显示指定使用者的密码认证种类, 只有具备 root 权限的使用者方可使用.

[username] 指定帐号名称.
范    例:        清空p40068用户的密码:
passwd –d p40068

更改自己的密码:
passwd

3.4.5        groups
指令名称:        groups
使用权限:        所有使用者
使用方式:        groups [OPTION]... [USERNAME]...
说    明:        用来查询某用户所隶属的群组,输出的群组名列表中,第一个群组名为该用户的缺省群组
参    数:        如果指定用户名,则显示该用户所隶属的群组,如果不指定用户名,则查询当前用户所隶属的群组
范    例:        查询当前用户所隶属的群组:
groups

查询p40068用户所隶属的群组:
groups p40068


3.5        权限管理
3.5.1        chgrp
指令名称:        chgrp
使用权限:        root或文件拥有者
使用方式:        chgrp  [组名] [文件名]
说    明:        改变文件或目录所属的用户组,chown命令可以完全代表该命令的功能。
参    数:       
范    例:        将“mydir”目录的所属用户组改成root
chgrp root mydir
作者: compare2000    时间: 2011-02-25 11:42
3.5.2        chown
指令名称:        chown
使用权限:        root
使用方式:        chmod [-cfhvR] [--help] [--version] user[:group] file...
说    明:        Linux 是多人多工操作系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。
参    数:        user : 新的档案拥有者的使用者
IDgroup : 新的档案拥有者的使用者群体(group)
-c : 若该档案拥有者确实已经更改,才显示其更改动作
-f : 若该档案拥有者无法被更改也不要显示错误讯息
-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案
-v : 显示拥有者变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
范    例:        将档案 file1.txt 的拥有者设为 users 群组的使用者 p40068 :
chown p40068:users file1.txt

将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 p40068:
chown -R p40068:users *
3.5.3        chmod
指令名称:        chmod
使用权限:        所有使用者
使用方式:        chmod [-cfvR] [--help] [--version] mode file...
说    明:        Linux 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用,mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],具体参数含义见以下说明:
作者: compare2000    时间: 2011-02-25 12:16
参    数:        u 表示该档案的拥有者,
g 表示与该档案的拥有者属于同一个群体(group)者,
o 表示其他以外的人,
a 表示这三者皆是。
+ 表示增加权限、
- 表示取消权限、
= 表示唯一设定权限。
r 表示可读取,
w 表示可写入,
x 表示可执行,
X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
范    例:        将档案 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt

将档案 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt

将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt

将 ex1.py 设定为只有该档案拥有者可以执行 :
chmod u+x ex1.py

将目前目录下的所有档案与子目录皆设为任何人可读取 :
chmod -R a+r *

此外chmod也可以用数字来表示权限如 chmod 777 file
语法为:chmod abc file

其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。

r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。

范例:
chmod a=rwx file

chmod 777 file 效果相同

chmod ug=rwx,o=x file

chmod 771 file 效果相同

若用chmod 4755 filename可使此程序具有root的权限
作者: compare2000    时间: 2011-02-25 12:17
3.5.4        su
指令名称:        su
使用权限:        所有使用者
使用方式:        su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
说    明:        变更为其他使用者的身份,除 root 外,需要键入该使用者的密码
参    数:        f 或 --fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
-m -p 或 --preserve-environment 执行 su 时不改变环境变数
-c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
-s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
-,-l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
USER 欲变更的使用者帐号
ARG 传入新的 shell 参数
范    例:        su -c ls root 变更帐号为 root 并在执行 ls 指令后退出变回原使用者。
su root -f 变更帐号为 root 并传入 -f 参数给新执行的 shell。
su - clsung 变更帐号为 clsung 并改变工作目录至 clsung 的家目录(home dir)。

3.6        进程管理
3.6.1        ps
指令名称:        ps
使用权限:        所有使用者
使用方式:        ps [options]
说    明:        显示瞬间行程 (process) 的动态
参    数:        -e:列出所有进程,和参数-A功能相同
-f:full,完全的信息
范    例:        列出当前所有的进程信息,并显示起动该进程的命令行完整信息
ps -ef
3.6.2        top
指令名称:        top
使用权限:        所有使用者
使用方式:        top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
说    明:        实时显示 process 的动态
参    数:        d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
s : 安全模式,将交谈式指令取消, 避免潜在的危机
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
n : 更新的次数,完成后将会退出 top
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
范    例:        显示更新十次后退出 ;
top -n 10

使用者将不能利用交谈式指令来对行程下命令 :
top -s

将更新显示二次的结果输入到名称为 top.log 的档案里 :
top -n 2 -b
作者: compare2000    时间: 2011-02-25 12:18
3.6.3        kill
指令名称:        kill
使用权限:        所有使用者
使用方式:        kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]
说    明:        kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号
参    数:        -s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表著重跑, 砍掉, 结束; 详细的信号可以用 kill -l
-p : 印出 pid , 并不送出信号
-l (signal) : 列出所有可用的信号名称
范    例:        将 pid 为 323 的行程砍掉 (kill) :
kill -9 323

将 pid 为 456 的行程重跑 (restart) :
kill -HUP 456

3.7        日期和时间
3.7.1        date
指令名称:        date
使用权限:        所有使用者
使用方式:        date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
说    明:        date 可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下 :
作者: compare2000    时间: 2011-02-25 12:18
参    数:        时间方面 :

% : 印出 %
%n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区

日期方面 :
%a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期与时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)

若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数
参数 :

-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
--help : 显示辅助讯息
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间
--version : 显示版本编号
作者: compare2000    时间: 2011-02-25 13:36
范    例:        显示时间后跳行,再显示目前日期 :
date '+%T%n%D'

显示月份与日数 :
date '+%B %d'

显示日期与设定时间(12:34:56) :
date --date '12:34:56'

注意 :

当你不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date '+%-H:%-M:%-S' 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。

当你以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最新的正确值。
3.7.2        cal
指令名称:        cal
使用权限:        所有使用者
使用方式:        cal [-mjy] [month [year]]
说    明:        显示日历。若只有一个参数,则代表年份(1-9999),显示该年的年历。年份必须全部写出:``cal 89'' 将不会是显示 1989 年的年历。使用两个参数,则表示月份及年份。若没有参数则显示这个月的月历。
1752 年 9 月第 3 日起改用西洋新历,因这时大部份的国家都采用新历,有 10 天被去除,所以该月份的月历有些不同。在此之前为西洋旧历。
参    数:        -m : 以星期一为每周的第一天方式显示。
-j : 以凯撒历显示,即以一月一日起的天数显示。
-y : 显示今年年历。
范    例:        cal : 显示本月的月历。
cal 2001 : 显示公元 2001 年年历。
cal 5 2001 : 显示公元 2001 年 5 月月历。
cal -m : 以星期一为每周的第一天方式,显示本月的月历。
cal -jy : 以一月一日起的天数显示今年的年历。
3.7.3        clock
指令名称:        clock
使用权限:        所有使用者
使用方式:        hwclock [function] [options...]
说    明:        查看和设置硬件时钟
参    数:        --hctosys表示Hardware Clock to SYStem clock
--systohc表示SYStem clock to Hardware Clock
范    例:        硬件时钟与系统时钟同步:
clock --hctosys
上面命令中,--

系统时钟和硬件时钟同步:
clock --systohc
作者: compare2000    时间: 2011-02-25 13:37
3.8        系统管理
3.8.1        rpm
指令名称:        rpm
使用权限:        所有使用者
使用方式:        rpm options file1.rpm ... fileN.rpm
说    明:        RPM是Redhat Package Manager的缩写,是由RedHat公司开发的软件包安装和管理程序,同Windows平台上
的Uninstaller比较类似。使用RPM,用户可以自行安装和管理Linux上的应用程序和系统工具。
RPM可以让用户直接以binary方式安装软件包,并且可替用户查询是否已经安装了有关的库文件;在用RPM删
除程序时,它又会聪明地询问用户是否要删除有关的程序。如果使用RPM来升级软件,RPM会保留原先的配置
文件,这样用户就不用重新配置新的软件了。RPM保留一个数据库,这个数据库中包含了所有的软件包的资料,
通过这个数据库,用户可以进行软件包的查询。RPM虽然是为Linux而设计的,但是它已经移值到SunOS、
Solaris、AIX、Irix等其它UNIX系统上了。RPM遵循GPL版权协议,用户可以在符合GPL协议的条件下自由
使用及传播RPM。
参    数:        RPM共有10种基本的模式:它们是安装、查询、验证、删除等。

安装模式: rpm –i [安装选项]  
查询模式: rpm –q [查询选项]
验证模式: rpm –V 或 –verify [验证选项]
删除模式: rpm –e  

使用RPM的一般选项:
一般选项可以用于所有的模式。
-v:显示信息
-h:用“#”显示完成的进度
--keep-temps:保留临时文件,临时文件通常位于/tmp/rpm-*,这个选项要用于debug。
--quiet:安静工作,只有当出现错误时才给出提示信息
作者: compare2000    时间: 2011-02-25 13:38
范    例:        安装一个rpm包
rpm -ivh <rpm package name>

升级一个包
rpm -Uvh <rpm package name>

移走一个RPM包
rpm -e <rpm package name>

查询一个包是否被安装
rpm -q <rpm package name>

得到被安装的包的信息
rpm -qi <rpm package name>

列出该包中有哪些文件
rpm -ql <rpm package name>

列出所有被安装的包
rpm -qa <rpm package name>

列出一个未被安装进系统的RPM包的文件中包含哪些文件
rpm -qilp <rpm package name>

3.8.2        shutdown
指令名称:        shutdown
使用权限:        系统管理者
使用方式:        shutdown [-t seconds] [-rkhncfF] time [message]
说    明:        关机命令
参    数:        -t seconds : 设定在几秒钟之后进行关机程序
-k : 并不会真的关机,只是将警告讯息传送给所有只用者
-r : 关机后重新开机
-h : 关机后停机
-n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机
-c : 取消目前已经进行中的关机动作
-f : 关机时,不做 fcsk 动作(检查 Linux 档系统)
-F : 关机时,强迫进行 fsck 动作
time : 设定关机的时间
message : 传送给所有使用者的警告讯息
范    例:        立即关闭计算机
shutdown –h now
作者: compare2000    时间: 2011-02-25 13:38
3.8.3        reboot
指令名称:        reboot
使用权限:        系统管理者
使用方式:        reboot [-n] [-w] [-d] [-f] [-i]
说    明:        若系统的 runlevel 为 0 或 6 ,则重新开机,否则以 shutdown 指令(加上 -r 参数)来取代
参    数:        -n : 在重开机前不做将记忆体资料写回硬盘的动作
-w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
-f : 强迫重开机,不呼叫 shutdown 这个指令
-i : 在重开机之前先把所有网络相关的装置先停止
范    例:        reboot 重开机。
reboot -w 做个重开机的模拟(只有纪录并不会真的重开机)。

3.8.4        fdisk
指令名称:        fdisk
使用权限:        root
使用方式:        fdisk option
说    明:        观察硬盘之实体使用情形与分割硬盘用。
参    数:        m 显示所有命令列示。
p 显示硬盘分割情形。
a 设定硬盘启动区。
n 设定新的硬盘分割区。
e 硬盘为[延伸]分割区(extend)。
p 硬盘为[主要]分割区(primary)。
t 改变硬盘分割区属性。
d 删除硬盘分割区属性。
q 结束不存入硬盘分割区属性。
w 结束并写入硬盘分割区属性。
范    例:        在 console 上输入 fdisk -l /dev/hda1 ,观察硬盘之实体使用情形
在 console 上输入 fdisk /dev/hda,可进入分割硬盘模式
作者: compare2000    时间: 2011-02-25 13:39
3.8.5        mount
指令名称:        mount
使用权限:        root
使用方式:        mount [-hV]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
说    明:        将某个档案的内容解读成档案系统,然后将其挂在目录的某个位置之上。当这个命令执行成功后,直到我们使用 umnount 将这个档案系统移除为止,这个命令之下的所有档案将暂时无法被调用。

这个命令可以被用来挂上任何的档案系统,你甚至可以用 -o loop 选项将某个一般的档案当成硬盘机分割挂上系统。这个功能对于 ramdisk,romdisk 或是 ISO 9660 的影像档之解读非常实用。
参    数:        -o ro :用只读模式挂上。
-o rw :用可读写模式挂上。
范    例:        将 /dev/hda1 挂在 /mnt 之下。
#mount /dev/hda1 /mnt

将 /dev/hda1 用唯读模式挂在 /mnt 之下。
#mount -o ro /dev/hda1 /mnt
作者: compare2000    时间: 2011-02-25 13:39
4        GNU C++编程
4.1        g++
指令名称:        g++
使用权限:        所有使用者
使用方式:        g++ [options] file... –o outflle
说    明:        编译,连接源文件后生成可执行文件
参    数:        -g 产生gdb调试时所需要的符号信息
-pg 产生gprof性能分析工具所需的性能采集点信息
-o 生成的目标程序名
范    例:        假设有一个程序,只有一个test.cpp文件,要编译连接该文件后,生成可执行文件demo,可以输入如下命令:
g++ test.cpp -o demo

假设有一个程序,只有一个test.cpp文件,要编译连接该文件后,生成可执行文件demo,并且产生gdb调试时所需要的符号信息,可以输入如下命令:
g++ -g test.cpp -o demo

假设有一个程序,只有一个test.cpp文件,要编译连接该文件后,生成可执行文件demo,并且产生gprof性能分析工具所需要的性能采集点信息,可以输入如下命令:
g++ -pg test.cpp -o demo

假设有一个程序,只有一个test.cpp文件,要编译连接该文件后,生成可执行文件demo,并且既产生gdb调试时所需要的符号信息,又产生gprof性能分析工具所需要的性能采集点信息,可以输入如下命令:
g++ -g -pg test.cpp -o demo

要想运行该可执行文件demo,使用如下命令:
./demo
作者: compare2000    时间: 2011-02-25 13:40
4.2        gdb
指令名称:        gdb
使用权限:        所有使用者
使用方式:        gdb <program>
program也就是你的执行文件,一般在当前目录下。

gdb <program> core
用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件。

gdb <program> <PID>
如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,并调试他。program应该在PATH环境变量中搜索得到。
说    明:        GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具。具体的使用方法请参考相应的手册。
参    数:        请参考相应的手册
范    例:        调试4.1节所编译的demo程序,使用如下命令:
gdb demo

假如demo程序在运行时,产生了致命的错误,比如内存访问违例等异常,并生成了内存转储文件,要想调试该内存转储文件,使用如下命令:
gdb demo core

假如demo程序是服务性质的程序,长驻内存,那么我们可以先使用如下命令查看demo程序的pid:
ps –ef | grep demo
得到该进程的pid后,使用如下命令,attach进该程序,进行调试:
gdb demo [pid]

或者这样使用,先直接输入
gdb
进入gdb调试环境后,输入
attach [pid]
进行调试

【注意】
在Linux下,缺省的设置是不产生内存转储文件,要想程序异常时产生内存转储文件,请使用如下命令:
ulimit -c unlimited
在Windows下要想产生内存转储文件,请先在Dos命令行使用输入命令:
drwtsn32 –i
然后在Dos命令下输入“drwtsn32”命令,在弹出的对话框中,勾选“Create Crash Dump File”,并设置内存转储文件所存放的路径。

还有一点就是如果core文件产生得比较久了,你搞不清楚是哪个文件产生的core文件,可以使用如下命令进行查询:
gdb –core core.filename
该命令会返回如下信息:
Core was generated by `./demo'.
其中“./demo”就是产生该core文件的可执行文件名
作者: compare2000    时间: 2011-02-25 13:41
4.3        gprof
指令名称:        gprof
使用权限:        所有使用者
使用方式:        请参考相应的手册
说    明:        使用gprof包括三个步骤:
1、编译你的程序,让它能够使用gprof,参见4.1节所述
2、执行程序,产生一个分析的结果文件。
3、运行gprof,分析结果。
参    数:       
范    例:        假设有一个程序,只有一个test.cpp文件,要编译连接该文件后,生成可执行文件demo,并且产生gprof性能分析工具所需要的性能采集点信息,可以输入如下命令:
g++ -pg test.cpp -o demo

然后运行该可执行文件demo,使用如下命令:
./demo

使用gprof工具分析程序运行的性能采集结果:
gprof demo gmon.out

可以把结果重定向到一个文件中,以便于使用别的软件进行查看和分析:
gprof demo gmon.out > demo.txt

在Windows下,VC自带的性能分析工具为“Profile.Exe”

4.4        addr2line
指令名称:        addr2line
使用权限:        所有使用者
使用方式:        addr2line [option(s)] [addr(s)]
说    明:        将程序的线性地址转换成实际代码中哪一行的命令
参    数:        -e 可执行文件名
-f 显示函数名称
-C 使用用户可识别的名称报名符号信息
范    例:        假设有一个程序名叫demo,要想查看该程序的地址0x080488bc处于哪个源文件的哪一行,函数名称叫什么,可如下使用该命令:

addr2line -e demo -C -f 0x41e4660f
作者: compare2000    时间: 2011-02-25 13:43
4.5        nm
指令名称:        nm
使用权限:        所有使用者
使用方式:        nm [option(s)] [file(s)]
说    明:        将程序中所有的符号表信息导出的命令
参    数:        -a 显示调试符号信息
-l 显示文件名及行号信息
-n 按排地址排序符号信息
-C 使用用户可识别的名称报名符号信息
范    例:        假设有一个程序名叫demo,可以使用如下命令将该程序所有符号信息输出到文本文件symbols.txt中:

nm -a -l -n -C demo.so > symbols.txt

5        操作技巧
5.1        通配符
通配符标识        含义
?        完全匹配任一字符
*        匹配任意数目的字符
[set]        匹配在方括号中指定的字符组中的任一字符,这里用字符串“set”表示字符组
[!set]        匹配“set”标识符之外的任一字符。
作者: compare2000    时间: 2011-02-25 13:44
5.2        快键捷
快键捷        功能
[Tab]        命令行自动补全。使用 shell 提示时可使用这一命令。键入命令或文件名的前几个字符,然后按 [Tab] 键,它会自动补全命令或显示匹配你键入字符的所有命令,在gdb调试时也可使用这一功能。
[Tab] [Tab]        连续按两次[Tab]键,会对你所输入的未完成的命令,所有可能的形式进行联想提示。
[Ctrl] + [Alt] + [Fn]        切换屏幕。[Ctrl]+[Alt] + [功能键之一]会显示一个新屏幕。根据默认设置,从 [F1] 到 [F6] 是 shell 提示屏幕,[F7] 是图形化屏幕。
[Ctrl] + [Alt] + [←]        杀死你当前的 X 会话。杀死图形化桌面会话,把你返回到登录屏幕。如果正常退出步骤不起作用,你可以使用这种方法。
[Ctrl] + [Alt] + [Del]        关机和重新引导操作系统。关闭你当前的会话然后重新引导 OS。只有在正常关机步骤不起作用时才使用这种方法。
[Alt] + [Tab]        在图形化桌面环境中切换任务。如果你同时打开了不止一个应用程序,你可以使用 [Alt] + [Tab] 来在打开的任务和应用程序间切换。
[Ctrl] + [a]        把光标移到行首。它在多数文本编辑器和 Mozilla 的 URL 字段内可以使用。
[Ctrl] + [e]        把光标移到行尾。它在多数文本编辑器和 Mozilla 的 URL 字段内都可使用。
[Ctrl] + [u]        清除当前行。如果你在终端下工作,使用这一快捷操作可以清除从光标处到行首的字符。
[Ctrl] + [k]        清除当前行。如果你在终端下工作,使用这一快捷操作可以清除从光标处到行尾的字符。
[Esc] + [l]        将当前光标位置处的字转为小写,不移动光标
[Esc] + [u]        将当前光标位置处的字转为大写,不移动光标
[Esc] + [t]        将当前光标位置前的字与光标位置上的字交换,交将光标移至新的下一字后
[鼠标中间键]        粘贴突出显示的文本。使用鼠标左键来突出显示文本。把光标指向你想粘贴文本的地方。点击鼠标中间键来粘贴它。在两键鼠标系统中,如果你把鼠标配置成模拟第三键,你可以同时点击鼠标的左右两键来执行粘贴。
[↑][↓]        显示命令历史。当你使用 shell 提示时,按[↑]或 [↓]箭头来前后查看你在当前目录下键入的命令历史。当你看到你想使用的命令时,按 [Enter] 键。
[Ctrl] + [l]        清除终端。该快捷操作与在命令行键入 clear 作用相同。
作者: compare2000    时间: 2011-02-25 13:45
[Ctrl] + [d]        从 shell 提示中注销(并关闭)。使用该快捷键,你就不必键入 exit 或 logout。
clear        清除 shell 提示屏幕。在命令行下键入它会清除所有这个 shell 提示屏幕中显示的数据。
exit        注销。在 shell 提示中键入它会注销当前的用户或根用户帐号。
history        显示命令历史。在 shell 提示中键入它来显示你所键入的被编号的前 1000 个命令。要显示较短的命令历史,键入histor之后空一格,再键入一个数字。例如:history 20。
reset        刷新 shell 提示屏幕。如果字符不清晰或乱码的话,在 shell 提示下键入这个命令会刷新屏幕。
string+[Home]        输入一个历史命令的前几个字符,再按[Home]可以自动完成包含该字符串的最近的历史命令的输入,多按几次[Home]键,可以在包含该字符串的历史命令里面遍历。
string+[Page UP]
string+[Page Down]        输入一个历史命令的前几个字符,再按[Page UP]和[Page Down]键,可以在包含该字符串的历史命令里面上下遍历。

5.3        命令的别名
适当使用别名,即可以做到让比较长的命令更容易记住,也便于输入,从而可以提高工作效率。
5.3.1        alias
指令名称:        alias
使用权限:        所有使用者
使用方式:        alias [-p] [name[=value] ... ]
说    明:        为你经常使用的命名起个别名,特别是对于那些经常有着指定参数的命令,或者命令的名称及参数很长的命令,可以起一个易记的名字
参    数:        name:是你自己定义的名称
value:表示该别名关联的真实命令名及参数
范    例:        显示系统所定义的所有别名
alias

显示别名“dir”的定义:
alias dir

定义一个新的别名
alias mydir='ls -al'

注意:这儿定义的只是一个临时的别名,下次登录时,该别名便不存在了,要想定义的别名每次登录皆可使用,可以将别名定义在~/.alias文件中
作者: compare2000    时间: 2011-02-25 13:47
5.3.2        SuSE8.0内建别名
别名        定义        意义
+        pushd .        将当前目录压入目录栈中
-        popd        将目录栈底的目录弹出,并进入该目录
..        cd ..        进入上一级目录
...        cd ../..        进入上二级目录
dir        ls -l        以列表方式显示当前目录下的文件和文件夹
md        mkdir -p        以指定的路径名,创建目录
o        less        调用less命令查看文档
rd        rmdir        删除空目录的命令

5.3.3        为ims_omu扩展的别名
以下是为我们项目所建的别名,使用时,只需将这儿提供的.alias文件拷贝到/home/ims_omu/目录下,再重新登录,即可使用这些别名,当然你也可以扩充这儿定义的别名。
.alias文件内容如下:
cdbin  () { cd $IMAP_ROOT/bin/${1+"$@"}; }
cdcode  () { cd $IMS_INSTALL_DIR/codes/source/${1+"$@"}; }
alias startsvc='svc_adm -cmd startsvc${1+"$@"}'
alias stopsvc='svc_adm -cmd stopsvc${1+"$@"}'
alias status='svc_adm -cmd status'
alias admin='lem_admin'
alias pids='ps -ef|grep${1+"$@"}'
alias pid='svc_adm -cmd status|grep${1+"$@"}'
作者: compare2000    时间: 2011-02-25 13:47
别名        定义        意义
cdbin        cd $IMAP_ROOT/bin/${1+"$@"}        直接进入bin目录
cdcode        cd $IMS_INSTALL_DIR/codes/source/${1+"$@"}        直接进入codes目录
startsvc        svc_adm -cmd startsvc${1+"$@"}        开始某一进程,比如startsvc tm
stopsvc        svc_adm -cmd stopsvc${1+"$@"}        停止某一进程,比如stopsvc tm
status        svc_adm -cmd status        显示所有进程状态
admin        lem_admin        lem_admin别名
pid        svc_adm -cmd status|grep${1+"$@"}        查看某一进程主ID,比如
pid tm
pids        ps -ef|grep${1+"$@"}        查看某一进程所有ID,比如
pids tm
hs        history${1+"$@"}        history命令的别名
pd        pushd${1+"$@"}        pushd命令的别名

5.4        历史命令

5.4.1        history
指令名称:        history
使用权限:        所有使用者
使用方式:        history [选项][文件名]
说    明:        显示或操作历史命令列表
参    数:        N 仅显示历史命令列表中最后N条记录
-c 清空历史命令列表
范    例:        显示完整的历史命令列表
history

显示最后8条命令
history 8

清空历史命令列表
history -c
作者: compare2000    时间: 2011-02-25 13:48
5.4.2        history扩展
可以使用以下history扩展方法,操纵和重复执行历史命令:
事件指定符        意义        例子
!N        历史命令列表中第N个事件        !8 命令列表中第8个命令
!-N        当前行之前的第N行        !-6 6行之前的命令
!!        上一次执行的命令        !! 上一次执行的命令
!string        最近用到的以string开始的命令        !grep 最近使用的以字符串grep开始的命令(一般是最后使用的grep命令)
!?string[?]        最近使用的包含string的命令        !?cut? 最近使用包含cut字符串的命令
string +[Home]        自动完成该历史命令的输入。        ls再按[Home]键,自动完成以ls为首的最近的历史命令的输入
5.5        目录栈操作
灵活使用目录栈操作,可以在常用的目录之中漫游,减少目录切换时,过多的输入目录路径的工作量。
5.5.1        dirs
指令名称:        dirs
使用权限:        所有使用者
使用方式:        dirs [options][+n][-n]
说    明:        显示目录堆栈,从左到右列出目录椎栈中目录的绝对路径名,第一个是栈顶的目录(当前目录)
参    数:        +N 显示从栈顶算起的第n个目录项(栈顶的目录项索引号为0)
-N 显示从栈底算起的第n个目录项(栈底的目录项索引号为0)
-c 只将当前目录保留在堆栈中,清除目录堆栈中其余的目录项
-l 显示目录的绝对路径名
-v 显示堆栈项,每行一个,带索引号为
范    例:        显示当前的目录栈
dirs

带绝对路径,每行一个,带索引号的显示目录栈
dirs –l –v
作者: compare2000    时间: 2011-02-25 13:49
5.5.2        pushd
指令名称:        pushd
使用权限:        所有使用者
使用方式:        pushd [-n] [directory]
pushd [-n] [+N][-N]
说    明:        第一条语法:将directory压入目录堆栈;如果不带参数,则交换栈顶的两个目录项
第二条语法:循环移动目录堆栈,将第n项移到栈顶
参    数:        +N 循环移动堆栈,把从栈顶算起的第n项移到栈顶(栈顶项的索引号为0)
-N 循环移动堆栈,把从栈底算起的第n项移到栈顶(栈底项的索引号为0)
-n 不让新压入的目录成为当前目录
范    例:        参见5.5.4范例



5.5.3        popd
指令名称:        popd
使用权限:        所有使用者
使用方式:        popd[-n][+N][-N]
说    明:        从目录堆栈中删除目录,并进入到新的栈顶目录,如果不带参数,则删除栈顶目录
参    数:        +N 从目录堆栈中删除第n项目录(栈顶项的索引号为0)
-N从目录堆栈中删除第n项目录(栈底项的索引号为0)
-n 不改变当前目录
范    例:        参见5.5.4范例

5.5.4        范例
1、        创建以下目录
cd (不带参数,直接进入主目录)
mkdir -p a1/a2/a3
mkdir -p b1/b2/b3/b4/b5
mkdir -p c1/c2/c3/c4
2、        依次进入以下目录,并将目录压入栈中
cd a1/a2/a3
pushd . (或者使用别名“+”)
cd ~/b1/b2/b3/b4/b5
pushd . (或者使用别名“+”)
cd ~/c1/c2/c3/c4
pwd (这时当前目录为)
输出示例:
/home/p40068/c1/c2/c3/c4
dirs -l –v (查看目录栈)
输出示例:
0  /home/p40068/c1/c2/c3/c4
1  /home/p40068/b1/b2/b3/b4/b5
2  /home/p40068/a1/a2/a3
作者: compare2000    时间: 2011-02-25 13:51
3、        在目录栈中漫游
pushd +2 (或者pushd -0,直接切换到~/a1/a2/a3目录中)
pwd (这时当前目录为)
输出示例:
/home/p40068/a1/a2/a3
dirs -l –v (查看目录栈)
输出示例:
0  /home/p40068/a1/a2/a3
1  /home/p40068/c1/c2/c3/c4
2  /home/p40068/b1/b2/b3/b4/b5
pushd (再次切换到~/c1/c2/c3/c4目录中)
pwd (这时当前目录为)
输出示例:
/home/p40068/c1/c2/c3/c4
dirs -l –v(查看目录栈)
输出示例:
0  /home/p40068/c1/c2/c3/c4
1  /home/p40068/a1/a2/a3
2  /home/p40068/b1/b2/b3/b4/b5
popd (或者使用别名“-”,将当前目录从栈中弹出,并进行栈中下一目录)
pwd (这时当前目录为)
输出示例:
/home/p40068/a1/a2/a3
dirs -l –v(查看目录栈)
输出示例:
0  /home/p40068/a1/a2/a3
1  /home/p40068/b1/b2/b3/b4/b5
popd (或者使用别名“-”,将当前目录从栈中弹出,并进行栈中下一目录)
pwd (这时当前目录为)
输出示例:
/home/p40068/b1/b2/b3/b4/b5
dirs -l –v(查看目录栈)
输出示例:
0  /home/p40068/b1/b2/b3/b4/b5
作者: compare2000    时间: 2011-02-25 13:51
6        重定向和管道
6.1        重定向

操作符        作用
< file        输入重定向到文件file
> file        输出重定向到文件file
>> file        追加标准输出到文件file;如果文件不存在,就新建它
0 < file        输入重定向到文件file
1 > file        输出重定向到文件file
2 > file        错误重定向到文件file
1 >> file        追加标准输出到文件file
2 >> file        追加标准错误到文件file
<& m        关联标准加入到文件描述符m
>& m        将标准输出关联到文件描述符m
m >& n        关联文件描述符m到文件描述符n
<&-        关闭标准输入
>&-        关闭标准输出
m <&或m >&-        将文件描述符m关闭
> &file        标准输出和出错输出重定向到文件file
>| file        忽略noclobber变量将标准输出送到文件file
n >| file        忽略noclobber变量将文件描述符n强制输出到文件file
<> file        将标准输入和输出都分配给文件file
n < file        将文件file设为文件描述符n
n > file        将文件描述符n指向文件file
cmd1 | cmd2        将命令“cmd1”的输出送到命令“cmd2”的输入中

例如,如果要将编译和连接TestMap.cpp文件的正常结果输出到result.txt文件,而将编译时产生的错误输出到error.txt文件中,可以使用以下语句:
g++ -g TestMap.cpp -o TestMap 1> result.txt 2> error.txt
作者: compare2000    时间: 2011-02-25 13:53
6.2        管道
Linux系统允许一条命令的标准输出成为另外一条命令的标准输入。通过下面的命令句法,可以用管道字符“|”来实现。
语法:command1 | command2 | command3 | ... | commandN
目的:“命令1”的标准输出连接到“命令2”的标准输入,“命令2”的标准输出连接到“命令3”的标准输入,......,“命令N-1”的标准输出连接到“命令N”的标准输入。
所以管道允许用户将一条命令的标准输出作为另外一条命令的标准输入。用管道连接的那些命令叫做过滤器(filter)。一个过滤器是一组Linux的命令,它们从标准输入中得到输入,经过一系列指定方式的处理,将结果送到标准输出。一些经常用到的过滤器是:cat、compress、crypt、grep、gzip、lp、pr、sort、tr、uniq和wc。
7        正则表达式介绍
正则表达式,是linux操作系统比起windows操作系统,在操作易用性方面,占有优势的为数不多的几个特性之一,使用正则表达式的工具有:awk,ed,egrep,grep,sed和vi。不过这些工具对正则表达式的支持程序不尽相同,其中awk和egrep能较好地支持正则表达式,grep对正则表达式的支持则较少,了解正则表达式的定义,不仅可以在实际操作中,减少重复的工作量,在读别人开发的shell脚本时,也有很大的帮助。
7.1        基本元字符集及其含义
名称        操作符        使用举例        意义        支持的工具
析取        |        x|y|z        x、y或者z        awk,egrep
任意字符        .        /L..e/        Love,Live,Lose        所有工具
字符串首字符        ^        ^x        以字符x开始的串        所有工具
连接                xyz        xyz        所有工具
字符串尾字符        $        x$        以字符x结束的串        所有工具
转义字符        \        \*        *        ed,sed,vi
组合        ()或者\(\)        (xy)+        xy,xyxy,xyxyxy,...        所有工具
可选        ?        xy?        x,xy,xyy,xyyy,...        awk,egrep
重复(零次或更多)        *        xy*        xy,xyy,xyyy,...        所有工具
重复(一次或更多)        +        xy+        xy,xyy,xyyy,        所有工具
集合        []        [Hh]ello        Hello,hello        所有工具
补集        [^]        [^A-KM-Z]ove        Love        所有工具
        pattern\{n\}                用来匹配前面pattern出现次数。n为次数        所有工具
        pattern\{n,\}m                含义同上,但次数最少为n        所有工具
        pattern\{n,m\}                含义同上,但pattern出现次数在n和m之间        所有工具
注:其中集合类操作符[],表示匹配[]内任何字符。可以是一个单字符,也可以是字符序列。也可以使用-表示[]内字符序列范围,如用[1-5]代替[12345]。
作者: compare2000    时间: 2011-02-25 13:53
6.2        管道
Linux系统允许一条命令的标准输出成为另外一条命令的标准输入。通过下面的命令句法,可以用管道字符“|”来实现。
语法:command1 | command2 | command3 | ... | commandN
目的:“命令1”的标准输出连接到“命令2”的标准输入,“命令2”的标准输出连接到“命令3”的标准输入,......,“命令N-1”的标准输出连接到“命令N”的标准输入。
所以管道允许用户将一条命令的标准输出作为另外一条命令的标准输入。用管道连接的那些命令叫做过滤器(filter)。一个过滤器是一组Linux的命令,它们从标准输入中得到输入,经过一系列指定方式的处理,将结果送到标准输出。一些经常用到的过滤器是:cat、compress、crypt、grep、gzip、lp、pr、sort、tr、uniq和wc。
7        正则表达式介绍
正则表达式,是linux操作系统比起windows操作系统,在操作易用性方面,占有优势的为数不多的几个特性之一,使用正则表达式的工具有:awk,ed,egrep,grep,sed和vi。不过这些工具对正则表达式的支持程序不尽相同,其中awk和egrep能较好地支持正则表达式,grep对正则表达式的支持则较少,了解正则表达式的定义,不仅可以在实际操作中,减少重复的工作量,在读别人开发的shell脚本时,也有很大的帮助。
7.1        基本元字符集及其含义
名称        操作符        使用举例        意义        支持的工具
析取        |        x|y|z        x、y或者z        awk,egrep
任意字符        .        /L..e/        Love,Live,Lose        所有工具
字符串首字符        ^        ^x        以字符x开始的串        所有工具
连接                xyz        xyz        所有工具
字符串尾字符        $        x$        以字符x结束的串        所有工具
转义字符        \        \*        *        ed,sed,vi
组合        ()或者\(\)        (xy)+        xy,xyxy,xyxyxy,...        所有工具
可选        ?        xy?        x,xy,xyy,xyyy,...        awk,egrep
重复(零次或更多)        *        xy*        xy,xyy,xyyy,...        所有工具
重复(一次或更多)        +        xy+        xy,xyy,xyyy,        所有工具
集合        []        [Hh]ello        Hello,hello        所有工具
补集        [^]        [^A-KM-Z]ove        Love        所有工具
        pattern\{n\}                用来匹配前面pattern出现次数。n为次数        所有工具
        pattern\{n,\}m                含义同上,但次数最少为n        所有工具
        pattern\{n,m\}                含义同上,但pattern出现次数在n和m之间        所有工具
注:其中集合类操作符[],表示匹配[]内任何字符。可以是一个单字符,也可以是字符序列。也可以使用-表示[]内字符序列范围,如用[1-5]代替[12345]。
作者: compare2000    时间: 2011-02-25 13:55
7.2        常用正则表达式举例
语法        作用
^        行首
$        行尾
^[the]        以the开头行
[Ss]ignal[lL]        匹配单词signal,signaL,Signal,SignaL
[Ss]ignal[lL]\.        同上,但加一句点
[mayMAY]        包含may大写或小写字母的行
^USER$        只包含USER的行
[tty]$        以tty结尾的行
\.        带句点的行
^d..x..x..x        对用户,用户组及其他用户组成员有可执行权限的目录
^[^l]        排除关联目录的目录列表
[.*0]        0之前或之后加任意字符
[000*]        000或更多个
[iI]        大写或小写I
[iI][nN]        大写或小写i或n
[^$]        空行
^......$        包括6个字符的行
[a-zA-Z]        任意单字符
[a-z][a-z]*        至少一个小写字母
[^0-9\$]        非数字或美元标识
[^0-9A-Za-z]        非数字或字母
[123]        1到3中一个数字
[Dd]evice        单词device或Device
De..ce        前两个字母为De,后跟两个任意字符,最后为ce
\^q        以^q开始的行
^.$        仅有一个字符的行
^\.[0-9][0-9]        以一个句点和两个数字开始的行
‘”Device”’        单词device
De[Vv]ice\.        单词device或deVice
[0-9]\{2\}-[0-9]\{2\}-[0-9]{4\}        日期格式dd-mm-yyyy
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}        IP地址格式nnn.nnn.nnn.nnn
[^.*$]        匹配任意行
作者: compare2000    时间: 2011-02-25 13:55
8        Shell基础知识
8.1        Shell简介
Shell是一种具备特殊功能的程序, 它是介于使用者和linux 操作系统之核心程序(kernel)间的一个接口。为什么我们说 shell 是一种介于系统核心程序与使用者间的中介者呢?读过操作系统概论的读者们都知道操作系统是一个系统资源的管理者与分配者,当您有需求时,您得向系统提出;从操作系统的角度来看,它也必须防止使用者因为错误的操作而造成系统的伤害?众所周知,对计算机下命令得透过命令(command) 或是程序(program);程序有编译器(compiler)将程序转为二进制代码,可是命令呢?
其实shell 也是一支程序,它由输入设备读取命令,再将其转为计算机可以了解的机械码,然后执行它。
各种操作系统都有它自己的 shell,以 DOS 为例,它的 shell 就是 command.com文件,Linux 下的shell主要有下列几种,Suse8.0下缺省的shell是Bash,并且可以看到sh是链接到bash的,所以使用sh和bash效果相同。

Shell        系统中的位置        程序名
Bourne        /bin/sh        sh
Bourne Again        /bin/bash        bash
C shell        /bin/csh        csh
TC shell        /bin/tcsh        tcsh
Korn shell        /bin/ksh        ksh
Z shell        /bin/zsh        zsh

8.2        Bash简介
Bash不仅仅是一个命令解析程序。它本身拥有一种程序设计语言,使用这种语言,可以编写shell脚本来完成各种各样的工作,而这些工作是使用现成的命令所无法完成的,Bash脚本可以使用if-then-elif-else-fi语句, for语句,while语句,until语句,break和continue命令,以及case语句,结合Bash中各种各样的条件测试语句,从而动态决定你的脚本实际运行的分支及动作,达到灵活及强大的处理功能。
作者: compare2000    时间: 2011-02-25 13:58
本帖最后由 compare2000 于 2011-03-06 13:12 编辑

8.3        Bash的环境变量
8.3.1        可修改的环境变量
环境变量名        变量的用途
CDPATH        包含cd命令要逐个查找的路径,cd命令在这些路径下查找作为参数传递给它的目录名。如果CDPATH没有设置,cd命令则查找当前目录
EDITOR        用户在程序中使用的默认编辑器,例如E-mail程序elm
ENV        Linux查找配置文件的路径
HOME        当第一次登录时,主目录的名字
HISTFILE        存放历史记录的文件的路径名
PATH        搜索命令或者程序的所有目录
PS1        在命令行中出现的shell提示符
PWD        当前工作目录的名字
TERM        用户使用的控制台终端的类型

8.3.2        只读的环境变量
环境变量名        变量的用途
$0        程序的名字
$1~$9        命令参数1~9的值
$*        所有命令行参数的值
$@        所有命令行参数的值。如果$@被“”包括,即“$@”,这相当于其中的每一个参数的值被“”包括,相反,如果$*被“”包括,即“$*”,这就相当于所有的参数值作为一个串被“”包括。这就是$@同$*在被“”包括的时候的差别,其他时候这二者是等价的
$#        记录了命令行参数的总个数
$$        当前进程的ID号
$?        最近一次命令的退出状态
$!        最近一次后台进程的ID号

8.3.3        读写shell变量
特殊字符        用途        描述
$variable        得到一个变量的值,如果没有被初始化则为null        返回“variable”的值,如果没有被初始化则返回null
${variable}        得到一个变量的值,如果没有被初始化则为null,通常在其他东西要添加到变量值的时候使用        返回“variable”的值,如果没有被初始化则返回null
${variable:-string}        得到一个变量的值,如果这个变量没有被定义则返回一个确定的值        当“variable”存在而且不是空值的时候返回变量的值,否则返回“string”
${variable:=string}        如果一个变量没有被定义则把一个已知的值赋给它并返回一这个值        当“variable”存在而且不是空值的时候返回变量的值,否则把“string”赋给“variable”,并返回“string”
${variablestring}        如果变量没有被定义则显示一条消息        当“variable”存在而且不是空值的时候返回变量的值,否则显示字符串“variable:”,并在其后显示“message”
${variable:+string}        测试一个变量存在与否        当“variable”存在而且不是空值的时候返回返回“string”,否则返回“string”
作者: compare2000    时间: 2011-02-25 13:58
8.4        Bash的启动文件
文件名        功能描述
/etc/profile        登录时自动执行
~/.bash_profile,~/.bash_login,~/.profile        登录时自动执行
~/.bashrc        shell登录时自动执行
~/.bash_logout        退出时自动执行
~/.bash_history        记录最近会话的命令
/etc/passwd        记录用户资源等信息

8.5        Bash的元字符
元字符        作用        例子
回车换行        结束一个命令       
空格        分割命令行中的元素        ls /etc
Tab        命令自动补全       
#        开始一行注释        #This is a comment line
“        引用多个字符但是允许替换        “$file”.bak
$        表示一行的结束以及显示变量的值        $PATH
&        让一个命令在后台执行        command &
‘        单引号,引用多个字符        ‘$100,000’
()        在子shell中执行命令        (command1;command2)
*        匹配0个或者多个字符        chap*.ps
[]        插入通配符        [a-s]或者[1,5-9]
^        表示一行的开始以及作为否定符号        [^3-8]
`        “Esc”键正下方键,替换命令        PS1=`command`
{}        在当前shell中执行命令        {command1;command2}
|        创建命令间的管道        command1 | command2
;        分割顺序执行的命令        command1; command2
<        重定向命令的输入        command < file
>        重定向命令的输出        command > file
?        匹配单个字符        lab.?
/        用作根目录或者路径名中的分割符        /usr/bin
\        转义字符;转义回车换行字符,允许在下一行中继续shell命令        command arg1 \arg2 arg3\?
!        启动历史记录列表中的命令和当前命令        !!,!4
~        代表主目录        ~/.bashrc

8.6        Shell的条件测试
条件测试在Shell脚本的编写时,占有重要的地位,因为它直接决定你的脚本实际执行的分支路径,可使用以下两种形式:
test condition
或者
[ condition ]
使用方括号时,要注意在条件两边加上空格。
作者: compare2000    时间: 2011-02-25 13:59
8.6.1        测试文件状态
表达式        返回值
-d file        如果这个文件是一个目录,返回true
-f file        如果这个文件是一个普通文件,返回true
-r file        如果这个文件是只读的,返回true
-s file        如果这个文件长度非0,返回true
-t [filedes]        如果文件描述符filedes的联系着终端的,返回true
-w file        如果这个文件是可写的,返回true
-x file        如果这个文件是可执行的,返回true
-b file        如果这个文件是块特殊文件,返回true
-c file        如果这个文件是字符串特殊文件,返回true
-e file        如果这个文件存在,返回true
-l file        如果这个文件存在而且是一个符号链接文件,返回true

8.6.2        测试时使用逻辑操作符
表达式        含义
!expression        逻辑非操作符:当后面的expression为false时,返回true
(expression)        用于把表达式分组的括号,在每个括号的前后至少要有一个空格
expression  -a expression        逻辑与操作符:当左右的表达式均为true时才返回true
expression  -o expression        逻辑或操作符:当左边或者右边的表达式为true,则返回true

8.6.3        字符串测试
表达式        返回值
str        如果str是一个非空字符串,则返回true
str1 = str2        如果str1等于str2,则返回true
str1 != str2        如果str1不等于str2,则返回true
-n str        如果str的长度大于0,则返回true
-z str        如果str的长度为0,则返回true

8.6.4        测试数值
表达式        返回值
int1 –eq int2        如果int1等于int2,则返回true
int1 –ge int2        如果int1大等于int2,则返回true
int1 –gt int2        如果int1大于int2,则返回true
int1 –le int2        如果int1小等于int2,则返回true
int1 –lt int2        如果int1小于int2,则返回true
作者: compare2000    时间: 2011-02-25 14:00
8.7        编写自已的Shell脚本
#!/bin/sh
# usage: demo vars...
echo $@
以上是一个标准的Shell脚本的格式,第一行告诉解释程序,强制当前的shell,使用bash执行这个脚本,第二行是该脚本的注释,一般是使用该脚本的用法,第三行是脚本真正的执行,这个例子里,仅仅是把用户输入的参数回显到标准输出上,将上述脚本保存在名为demo文件里。
8.8        执行Shell脚本
有二种方式可以运行一个Bash脚本:
1、        为脚本文件加上可执行权限,然后执行:
chmod u+x demo
./demo This is test string!
脚本输出:
This is test string!
2、        运行/bin/bash命令并且把脚本名作为它的参数:
/bin/bash demo This is test string!
作者: maplelxf    时间: 2011-02-28 21:36
学习了一下,但是还是有些命令不太明白,
作者: 范永远在    时间: 2011-03-04 21:20
顶啊
作者: xfortune    时间: 2011-03-05 09:42
都是基本操作哈。。。看了
作者: Pandya    时间: 2011-03-06 23:14
Linux就不是给人用的
作者: 狂风VAH    时间: 2011-08-01 14:38
楼主谢了
哈哈




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2