Linux Shell
来源:互联网 发布:淘宝宝贝详情图片像素 编辑:程序博客网 时间:2024/05/29 21:16
LINUX SHELL
VI
VI简介
VI是VisualInterface的简称,是一个应用于命令行的全屏幕文本编辑器。VI有三种基本的工作模式:命令模式、文本输入模式和末行模式。
命令模式下,用户的任何输入都被VI当作命令加以解释并执行(注意,输入的命令本身并不在屏幕上显示)。VI命令用于对文档进行管理,当在SHELL环境下敲入VI命令,打开编辑器时,默认进入的就是命令模式。
文本输入模式是对文档的编辑模式,用户的任何输入都将作为文本内容显示在文档中。在命令模式下可以通过各种VI命令(A、I、O等)进入到文本输入模式下;在文本输入模式下,按Esc键返回命令模式。
末行模式也称EX转义模式,在命令模式下,按:键即可进入末行模式。末行模式下,会在窗口的最后一行显示一个冒号,作为末行模式的提示符,等待用户输入命令。末行命令执行完毕后,VI自动回到命令模式下。在末行模式下,可以通过退格键、DEL或ESC等回到命令模式下。
进入VI
在SHELL环境下进入VI的语法如下:
VI [FILENAME]
FILENAME可以是已经存在的文本文件或不存在的文件,如果不存在时,即为新建。也可以直接敲入VI命令进入而不带文件名,不过需要在退出的时候给出文件名(在退出命令后面)。
进入VI后,默认的是命令模式,即系统处于等待命令输入而不是文本输入的模式下。符号-~标识的行为空行,最后一行为状态行(类似WINDOWS中的状态栏),显示当前正在编辑的文件的名称以及光标状态等。
VI打开后,默认将光标放在第一行,如果需要将光标放在特定行上,可以使用如下语法:
VI +N [FILENAME]
--将光标放在第N行
VI + [FILENAME]
--将光标放在最后一行
VI +/XXX [FILENAME]
--将光标放在第一个与XXX匹配的行上(子串模糊匹配)
保存与退出VI
保存在末行模式下进行,命令为w(应该是write 的简写吧),系统保存当前文件,但并不退出VI(相当于Windows中的Ctrl+S)。使用w命令还可以附带一个新的文件名,将当前文本另存为一个新的文件(使用w!命令会在新文件存在时强行覆盖),而当前编辑的文本并不保存到原文件(另存后仍然回到当前文件的命令模式)。
退出VI可以分为保存后退出和强行退出。保存后退出命令有:
命令模式下的ZZ
末行模式下的x和wq(单独的q要求文档没有被修改过或已经保存过)
强行退出命令为:
末行模式下q!
显示行号
在末行模式下使用如下命令可以显示行号:
set number
或者其简写:
Se nu
显示状态
在最后一行显示文本及光标的状态,在命令模式下使用如下命令:
Ctrl+g
移动光标
移动光标可以在命令模式和文本输入模式下进行。两种模式下都适用的方式是使用方向键,这也是最常用的方式。在命令模式下,还可以使用小写的h(左)、j(下)、k(上)、l(右)来替代方向键。
在命令模式下,还有一些较为复杂的移动光标的方法,列举如下:
space:光标右移一个字符
Backspace:光标左移一个字符
Ctrl+p:光标上移一行
Ctrl+n :光标下移一行
Enter :光标下移一行
w或W:光标右移一个字至字首
b或B:光标左移一个字至字首
e或E:光标右移一个字至字尾
) :光标移至句尾
( :光标移至句首
}:光标移至段落开头
{:光标移至段落结尾
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾
滚屏
屏幕滚动命令只能在命令模式下使用,分为半屏滚动和全屏滚动。半屏滚动命令如下:
Ctrl+u(向上半屏)
Ctrl+d(向下半屏)
全屏滚动命令如下:
Ctrl+b(向上一屏)
Ctrl+f(向下一屏)
VI中还有三个在当前屏幕中移动光标的命令,分别为H、M和L,他们可以将光标分别移动到屏幕的顶端、中间和底部,而文本并不发生滚动。
文本输入
在命令模式下,要开始文本输入,有几种不同的命令,如下:
1、 插入命令(INSERT,在当前光标前插入)
插入命令为小写的i和大写的I,小写的i在光标前插入,大写的I在光标所在行的行首插入。
2、 附加命令(APPEND,在当前光标后附加)
附加命令为小写的a和大写的A,小写的a在光标后附加,大写的A在光标所在行的行尾附加。
3、 打开新行命令(OPEN,在当前光标所在行的前面或后面打开新行)
打开新行命令为小写的o和大写的O,小写的o在当前行的下面新开一行,大写的O在当前行的前面新开一行。
文本修改
文本修改除了可以在文本输入模式下直接进行外,还可以在命令模式下通过各种命令进行,说明如下:
X、x
--删除单个字符
D、dd、d$
--删除整行
U
--撤销
.
--重复
复制与粘贴
选择文本v
复制选定文本y
剪切选定文本d
粘贴p
文件与目录
显示文件内容
CAT
CAT可以用来显示文件内容以及合并文件:
cat Readme.txt
cat 1.txt 2.txt 3.txt > 4.txt
注:不带参数使用cat时,通过Ctrl+d退出。
MORE
MORE可以分屏显示文件内容,在每屏结束后,等待用户输入(回车或空格),开始下一屏。其中回车为上移一行,空格为上移一屏。
More Readme.txt
LESS
MORE命令只能向下翻阅文本,不能向上翻阅,而LESS命令可以做到这一点。使用LESS命令,可以通过回车、空格向下翻阅,也可以通过上下方向键进行上下翻阅,退出时使用Q命令:
Less Readme.txt
HEAD
HEAD命令查询文件的开头几行内容,命令格式如下:
Head [-n]Readme.txt
其中n的默认值为10。
TAIL
类似于HEAD命令,TAIL命令显示文件的尾几行,默认为10。
SORT
SORT可以对文件内容进行排序,举例如下:
sort a.txt
--排序并输出
sort a.txt > b.txt
--排序后输出到文件
UNIQ
UNIQ可以用来显示或排除重复的行,但输入必须是已经排序的文本,即相同的行必须相邻,否则不会认为是相同的行。举例如下:
uniq -d a.txt
--只显示重复的行
uniq -u a.txt
--只显示不重复的行
uniq -c a.txt
--显示重复次数,可取代d和u
文件内容搜索
GREP
GREP(Global search Regular Expression andPrint out the line,全面搜索正则表达式并把行打印出来)是一个强大的文本内容搜索工具,它能使用正则表达式搜索文本,并将匹配的行打印出来。GREP还包括两个类似的命令:EGREP和FGREP,它们之间有微小的差别。下面列举几个搜索的范例:
grep 'camel' readme.txt
--在文件readme.txt中搜索指定字符串
grep camel *
--在所有文件中搜索指定字符串
grep camel *.c
--在所有.c文件中搜索指定字符串
文件查找
FIND
find . -name 'a*'
--查找所有以a开头的文件
文件内容统计
WC
WC命令可以用来对指定文件中的字节、行以及字数进行统计,参数如下:
-c:字节
-l:行数
-w:字数
wc -clw a.txt
文件内容比较
COMM
对已经排序的两个文件进行比较,举例如下:
comm -12 a.txt b.txt
--显示两个文件中共有的行
comm -23 a.txt b.txt
--显示在第一个文件中出现而不在第二个文件中的行
DIFF
逐行比较两个文件(不需要排序),列出不同之处。
文件的复制、移动和删除
CP
CP命令可以对文件或目录进行复制,主要参数说明如下:
-f 存在时直接覆盖
-i 存在时给出提示
-r 递归复制所有子目录和文件
举例说明如下:
cp -i a.txt /home/camel/b.txt
--将当前目录下的a.txt复制到/home/camel下,并更名为b.txt
--如果不更名,则取消b.txt
cp -r /home/camel /home/zhl
--将/home/camel中的所有文件和子目录复制到/home/zhl下
MV
MV可以用来移动文件或对文件重命名。当移动文件时,一次可以操作多个文件,而重命名时,一次只能操作一个。主要参数有:
-f 存在时直接覆盖
-i 存在时给出提示
举例如下:
mv a.txt b.txt
--重命名
mv /home/camel/* .
--将/home/camel目录下所有文件移动到当前目录下
RM
RM可以删除一个目录中的一个或多个文件。主要参数如下:
-f 忽略不存在的文件
-i 交互式删除
-r 递归删除,包括目录
文件链接
LN
文件链接是指文件或目录的别名,系统可以通过这个别名访问实际对象或进行权限管理。链接分为硬链接和符号链接。
默认情况下,LN创建的是硬链接,带S参数为符号链接,举例如下:
ln -s a.txt b
目录的创建与删除
MKDIR
MKDIR,创建目录。带参数P可以创建多层目录:
mkdir ./camel/zhl
RMDIR
RMDIR,删除目录,可以使用rm –r dir替换。
目录的切换与显示
.、..与~
这三个符号分别代表:当前目录、当前目录的父目录和当前用户的主目录。
CD
CD命令为变更当前的工作目录,如果不带任何参数,则将用户的主目录变更为当前目录。
PWD
PWD为列出当前工作目录的绝对路径(Print Working Directory)。
LS与DIR
LS和DIR命令的功能为列出目录中的内容,LS命令带有颜色标识。LS命令可以附带多种参数,其中,A与a为显示隐藏文件,而l为以长格式来显示文件的详细信息,如下:
[ls –l命令有一个别名:ll]
[oracle@LinuxServer34 camel]$ ls -l
总用量 244
drwxr-xr-x 3oracle oinstall 4096 9月 23 14:02 a
-rw-r--r-- 1oracle oinstall 7 9月 22 16:58 a1.txt
-rw-r--r-- 1oracle oinstall 7 9月 22 16:58 a2.txt
-rw-r--r-- 1oracle oinstall 21 9月 22 16:58 a3.txt
lrwxrwxrwx 1oracle oinstall 5 9月 23 13:50 m -> a.txt
第一列为文件类型与权限,第二列为链接数,第三列为文件属主,第四列为文件属组,后面为文件大小及修改时间。
对于第一列,文件类型与权限,它由10个字符组成。第一个字符表示文件的类型,如下:
-:普通文件
d:目录
l:符号链接
b:块设备文件
c:字符设备文件
后面的9位表示文件的访问权限。分为三组,每组三位,依次表示文件属主、同组用户以及其它用户的权限。其中每一位上的字符说明如下:
r:读
w:写
x:执行,对于目录,表示进入
s:文件执行时,将文件的UID和GID赋予执行进程的UID和GID
t:设置标志位
-:没有设置权限
文件与目录的权限管理
文件与目录权限
通常情况下,文件与目录的权限包括读、写和执行,其权限的赋予可以在文件属主、同组用户以及其它用户三个级别上进行。通过LS命令可以查看文件的权限属性。
使用LS –l查看文件列表时,第一列为文件类型与权限,它由10个字符组成(-rw-r--r--)。第一个字符表示文件的类型,如下:
-:普通文件
d:目录
l:符号链接
b:块设备文件
c:字符设备文件
后面的9位表示文件的访问权限。分为三组,每组三位,依次表示文件属主、同组用户以及其它用户的权限。其中每一位上的字符说明如下:
r:读
w:写
x:执行,对于目录,表示进入
s:文件执行时,将文件的UID和GID赋予执行进程的UID和GID
t:设置标志位
-:没有设置权限
CHMOD
CHMOD(Change Mode)命令为改变文件或目录的权限。这个命令有两种使用方式:文字设定法和数字设定法。
文字设定法的一般格式为:
chmod [who][+|-|=][mode] filename
其中,who为权限的操作对象,可以为如下单个或组合值:
u:文件或目录的所有者
g:同组用户
o:其它用户
a:所有用户,默认值
操作符号如下:
+:添加权限
-:取消权限
=:赋予给定权限,同时取消其它权限
mode代表权限,可以为如下字母的组合:
r:读
w:写
x:执行
u:同属主
g:同属组
o:同其它用户
举例如下:
chmod ug+w,o-x readme.txt
--属主与属组增加写权限,其它用户增加执行权限
除了文字设定法,还有一种更加简洁的数字设定法。数字设定法中,0表示没有权限,1表示可执行,2表示可写,4表示可读。这样,对于每个级别(属主、属组和其它)的权限都可以表示为0-7的一个八进制数,表示的顺序依次是:属主、属组和其它。例如,将某个文件设定为属主有读写和执行权限,属组和其它只有读权限,那么,命令格式如下:
chmod 744 a.txt
CHOWN
CHOWN命令的功能为变更文件或目录的属主或属组。包含一个参数R,可以递归修改目录的属主和属组:
chown -R username.groupname /home/camel
用户与用户组管理
用户与用户组
LINUX中,文件是属于用户的,用户属于某个用户组或多个用户组。
用户的基本信息是保存在如下文本文件中的:
/etc/passwd
文件中的每一行描述一个用户信息,如下:
camel:x:500:500:camel:/home/camel:/bin/bash
分别为:登录名、加密口令表示、UID、GID、用户描述信息、主目录、SHELL
用户的加密口令是保存在影子文件中的:
/etc/shadow
同样,文件中的每一行描述一个用户信息,如下:
camel:$1$P1U14OXd$OJ1CnkfwJrT060t79qZC9.:14490::99999::::
分别为:用户登录名、加密后的口令、70年到上次修改口令的天数、两次修改口令之间至少经过的天数、口令还将有效的天数(99999表示永不过期)等。
同用户一样,用户组的基本信息也保存在一个文本文件中:
/etc/group
文件中的每一行描述一个用户组信息,如下:
camel:x:500:
分别为:分组名、加密口令表示和GID
用户组的口令保存在/etc/gshadow下,包括组名、加密口令和组成员等信息。
用户管理
USERADD与PASSWD
USERADD命令用来创建系统用户,命令语法如下:
useradd [-c comment]
[-d home_dir]
[-eexpire_date]
[-finactive_time]
[-ginitial_group]
[-Ggroup[,...]]
[-m [-kskeleton_dir] | -M]
[-s shell]
[-u uid [-o]] [-n] [-r] login
举例如下:
useradd -g oinstall -G dba oracle
用户创建完毕后,需要使用PASSWD命令为用户指定密码,直接敲入:Passwd username即可开始指定密码。注意,只有超级用户才可以为其它用户指定密码,普通用户只能使用不带参数的PASSWD命令修改自己的密码。
USERMOD
USERMOD命令用来修改用户信息,参数类似于USERADD命令。
USERDEL
USERDEL命令用来删除用户,带参数r可以连同主目录一起删除,但是不会删除非主目录下的其它文件,需要使用FIND命令来删除:
find / -user camel –exec rm {} /
用户组管理
GROUPADD
GROUPADD命令用来创建用户组。
GROUPMOD
GROUPMOD命令用来修改用户组信息。
GROUPDEL
GROUPDEL命令用来删除用户组。注意,当用户组为某个用户的主分组时,不能删除。
软件包管理
RPM
RPM简介
RPM(Redhat Package Manager)是LINUX提供的软件包管理工具,提供对软件的打包、安装、卸载、查询以及升级等功能。
RPM包(*.rpm)除了包含可执行文件、附属文件等,还包含以数据库记录形式存在的依赖属性模块,即为了应用当前软件而需要的其它软件。安装的时候,系统会根据RPM包中记录的信息,查看当前环境是否满足,不满足时是不能安装的。满足条件安装时,会将软件包信息写入RPM数据库,以便以后的查询与卸载。
由于RPM包中的文件是编译好的,所以要求安装环境与编译环境一致,且要满足软件的相互依赖性。为了解决这个问题,出现了SRPM(SOURCE RPM),即RPM包中包含源码,通常以 ***.src.rpm 这种格式来命名。
RPMDB(初始化与重建RPM数据库)
有的时候,我们的rpm的数据库会因为某些原因损坏,这样当你执行rpm的相关命令的时候就会报类似下面的错误:
rpmdb: fatal regionerror detected; run recovery
error: db4error(-30982) from dbenv->open: DB_RUNRECOVERY: Fatal error, run databaserecovery
error: cannot openPackages index
这样的后果是你将不能使用rpm来添加删除,更新查询你系统的RPM软件包了,其实只要按照下面的步骤做就可以恢复您的RPM数据库而不需要重新安装系统:
# cd /var/lib
# mv rpm rpm.old
# mkdir rpm
# rpmdb --initdb
# cprpm.old/Packages rpm
# rpmdb --rebuilddb
以上是针对redhat8 和redhat9的做法如果是以前的版本或者其他版本的linux,请按照下面的步骤进行:
# cd /var/lib
# mv rpm rpm.old
# mkdir rpm
# rpm --initdb
# cp rpm.old/Packagesrpm
# rpm --rebuilddb
RPM -Q(软件包查询)
RPM软件包查询包括对已经安装完毕的软件查询以及对*.rpm文件包的查询。查询使用带有q(query)参数的RPM命令,如下:
rpm -q|--query
各主要参数说明如下:
p:查询未安装的RPM包(*.rpm)
f:查询某个文件属于那个软件包
a:查询所有已安装的软件包
i:显示软件包的概要信息
l:显示软件包中的文件列表
c:显示配置文件列表
d:显示文档文件列表
R:显示软件包的依赖关系
举例如下:
--查询某个具体的软件包
$rpm -q ftp
ftp-0.17-22
--查询系统所有已安装的软件包
$rpm -qa
--查询系统所有已安装的软件包并分页显示
$rpm -qa |more
--查询文件属于那个软件包
$rpm -qf /usr/lib/zsh
--查询软件包的安装文件列表
$rpm -ql zsh
--查询软件包的概要信息
$rpm -qi zsh
--查看一个软件包的依赖关系
$rpm -qpR file.rpm
RPM -I(软件包安装)
RPM软件包安装通过带有i(install)参数的RPM命令完成,如下:
rpm -i|--install
--普通安装
rpm -ivh xxx.rpm
--测试安装
rpm –i --test xxx.rpm
--强制安装
rpm -ivh --force xxx.rpm
RPM -E(软件包卸载)
rpm -e xxx
TAR
TAR是LINUX下常用的一个打包工具,为TAPE ARCHIVE(最初设计用来将文件打包归档到磁带上)的缩写。通常打包文件为*.tar。TAR命令的主要参数有:
c:创建TAR文件
r:追加文件到TAR包
delete:从TAR包中删除文件
t:显示TAR包文件内容
x:从TAR包中释放文件
f:对普通文件操作
v:处理时显示详细信息
z:用gzip压缩或解压缩
举例如下:
--创建TAR文件(f指对普通文件操作)
tar cvf a.tar ./*
--显示TAR文件
tar tf a.tar
--释放文件
tar xvf a.tar
--追加文件
$tar -rf all.tar *.gif
在使用TAR工具打包的同时,还可以进行压缩,避免再次调用压缩程序,下面详细说明可以在TAR中使用的压缩程序。
TAR调用GZIP
gzip是GNU组织开发的一个压缩程序,.gz结尾的文件就是gzip压缩的结果。与gzip相对的解压程序是gunzip。tar中使用-z这个参数来调用gzip。下面来举例说明一下:
tar -czf all.tar.gz *.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个gzip压缩过的包,包名为all.tar.gz
tar -xzf all.tar.gz
这条命令是将上面产生的包解开。
TAR调用BZIP2
bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果。与bzip2相对的解压程序是bunzip2。tar中使用-j这个参数来调用gzip。下面来举例说明一下:
tar -cjf all.tar.bz2 *.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且将其用bzip2压缩,生成一个bzip2压缩过的包,包名为all.tar.bz2
tar -xjf all.tar.bz2
这条命令是将上面产生的包解开。
TAR调用COMPRESS
compress也是一个压缩程序,但是好象使用compress的人不如gzip和bzip2的人多。.Z结尾的文件就是bzip2压缩的结果。与compress相对的解压程序是uncompress。tar中使用-Z这个参数来调用gzip。下面来举例说明一下:
tar -cZf all.tar.Z *.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且将其用compress压缩,生成一个uncompress压缩过的包,包名为all.tar.Z
tar -xZf all.tar.Z
这条命令是将上面产生的包解开
压缩包
ZIP
ZIP压缩包含ZIP和UNZIP两个命令,压缩为ZIP,解压为UNZIP,形成的压缩文件后缀一般为*.ZIP。ZIP压缩与WINDOWS中的ZIP文件是通用的,可以互相压缩或解压。
对于压缩命令ZIP,主要的参数有:
r:压缩时包含子目录
v:显示文件列表
d:从ZIP文件中删除一个文件
m:将特定文件移入ZIP文件中
举例说明如下:
--压缩当前目录下所有文件
$zip -r all.zip ./*
--显示ZIP文件中的文件信息
$zip -v all.zip
--删除压缩文件中的指定文件
$zip -d all.zip a.txt
--向压缩文件中添加指定文件
$zip -m all.zip a.txt
UNZIP用于ZIP文件的解压,常见用法有:
--解压到当前目录
$unzip all.zip
--解压到指定目录(-d为指定目录,-n不覆盖,-o为覆盖已经存在的)
$unzip -n all.zip -d /tmp
--查看文件目录,类似于带-V的ZIP命令
$unzip -v all.zip
GZIP
GZIP是GNU ZIP的缩写,一次只能对一个文件进行压缩或解压,不能象ZIP或RAR一样一次可以压缩多个文件,默认后缀名为*.gz。
GZIP使用比较简单,它集合了压缩和解压功能,主要参数说明如下:
d:解压(否则为压缩)
l:显示压缩文件的内容
v:压缩和解压时,显示名称和压缩比
举例说明一下:
--压缩当前目录下的所有文件(各自形成一个.gz文件)
$gzip -v *
--解压缩
$gzip -dv *
BZIP2
BZIP2也是对单个文件进行压缩或解压缩的,该工具有几个名称,包括:BZIP2、BUNZIP2、BZCAT,形成的文件后缀一般为.bz2。一般压缩使用BZIP2,解压缩使用BUNZIP2。
进程
查看进程
PS
ps是LINUX的进程状态查看命令,是process status(或process snapshot)的缩写。ps类似于WINDOWS中的任务管理器(可以同时按下CTRL+SHIFT+ESC启动任务管理器),不过ps查看的是进行瞬间的快照,不是动态的(后面即将介绍的top是动态的)。
不带任何参数的ps命令列出与当前用户和当前终端有关的进程信息。常用的查看进程信息的参数组合有:
-ef:显示所有进程的全面信息,可以获取的信息有:
UID:进程属主用户
PID:进程ID号
PPID:父进程的ID号
C:进程最近使用CPU的估算
STIME:进行开始时间,以“时:分”的形式给出
TTY:进程建立时所对应的终端,问号表示不占用终端
TIME:累计使用CUP时间
CMD:进程所对应的命令名
aux:显示所有终端所有用户的有关进程的所有信息,可以获取的信息有:
USER:进程属主用户
PID:进程ID号
%CPU:CPU使用率
%MEM:内存使用率
VSZ:占用虚拟内存大小(K)
RSS:占用内存大小(K)
TTY:进程建立时所对应的终端,问号表示不占用终端
STAT:进程状态
START:进程开始时间
TIME:占用CPU的时间
COMMAND:所执行的指令
其中,进程状态STAT有如下几种:
D不可中断(通常为IO操作)
R正在运行,或在队列中的进程
S处于休眠状态
T停止或被追踪
Z僵尸进程
W进入内存交换(从内核2.6开始无效)
X死掉的进程
<高优先级
n低优先级
s包含子进程
+位于后台的进程组
TOP
top命令可以动态显示进程信息。在top命令显示的信息中,包含统计信息区和进程信息区。统计信息区包含CUP、内存、虚拟内存(交换内存)以及用户进程等统计信息;进程信息区包含各系统进程的详细信息。
常用的命令格式如下:
top d 1
每一秒刷新一次信息。
终止进程
KILL
对于前台进程可以使用Ctrl+C来结束,对于后台进程,只能使用KILL命令来结束。
- Linux Shell
- Linux Shell
- Linux Shell
- Linux Shell
- Linux Shell
- Linux Shell
- linux shell
- Linux Shell
- Linux Shell
- Linux Shell
- Linux Shell
- linux shell
- LINUX SHELL
- Linux Shell
- Linux Shell
- Linux shell
- linux shell
- Linux Shell
- 程序调试--基本数据类型的并行化
- WAVECOM Q2358C中文短信介绍CDMA发送短信步骤
- stringgrid内置控件
- struts1
- 重定向(here文档)
- Linux Shell
- wince起动加载程序倒置开不了机/opengl_es立方体旋转最后跳几度
- Android应用.三星i9000系列(3).无需刷机轻松获取Root权限
- PHP 选项及相关信息函数库
- 不规则字符交换字符串中字母位置
- 如何在maven环境中设置JVM参数
- Delphi中的INI文件编程 (转)
- excel 根據匯總數據自動計算等級
- MFC,单文档视图创建顺序