第一篇:vi 常用命令总结
输入模式命令
输入
命令作用
在光标前输入文本
在当前行开始输入文本
光标移动命令
光标移动
命令作用
0 移动到光标所在列的最前面 [Home]
$ 移动到光标所在列的最後面 [End]
[CTRL][d] 向下半页 [PageDown]
[CTRL][f] 向下一页
[CTRL][u] 向上半页
[CTRL][b] 向上一页 [PageUp]
H 移动到视窗的第一列
M 移动到视窗的中间列
L 移动到视窗的最後列
b 移动到下个字的第一个字母
w 移动到上个字的第一个字母
e 移动到下个字的最後一个字母
^ 移动到光标所在列的第一个非空白字元
n-减号移动到上一列的第一个非空白字元前面加上数字可以指定移动到以上n列n+ 加号移动到下一列的第一个非空白字元前面加上数字可以指定移动到以下n列nG 直接用数字n加上大写G移动到第n列)光标所在位置到下个句子的第一个字母
(光标所在位置到该句子的第一个字母
} 光标所在位置到该段落的最後一个字母
{ 光标所在位置到该段落的第一个字母
fx
往右移动到x字符上
Fx
往左移动到x字符上
tx
往右移动到x字符前
Tx
往左移动到x字符后
(注意:以上四个命令中,其中x是键入的字符)
;
分号,配合f和t使用,重复一次,逗号,配合f和t使用,反方向重复一次
%-移至匹配的括号
shift+G跳到文件尾
交换两个字符位置
xp
上下两行调换
ddp
把文件内容反转
:g/^/m0/
删除操作命令
删除操作
命令作用
可在删除命令前加上数字,如<5x>表示删除5行。
改变与替换操作命令
改变与替换操作
命令作用
全文替换:“g/被替换字符串/s//替换字符串/g”
>>
<<
查询命令
查询
命令作用
向前查询abc
向后查询abc
拷贝与粘贴命令
命令作用
/yw将光标所在单词拷入剪贴板
y$将光标至行尾的字符拷入剪贴板
Y同
yy将当前行拷入剪贴板
p将剪贴板中的内容粘贴在光标后
P将剪贴板中的内容粘贴在光标前
文件编辑、保存及退出vi命令
命令作用
:q不包存退出
:q!不保存强制性退出
:w保存编辑
:wfilename存入文件filename中
:w!filename强制性存入文件filename中
:wq/:x/ZZ保存退出
编辑数个文件(利用vifilename(s))进入vi后)
:args显示编辑名单中的各个文件名
:n读入编辑名单中的下一个文件
:rew读入编辑名单中的第一个文件
:e#读入编辑名单内的前一个文件
:efile读入另一个文件进vi(此文件可不在编辑名单内),若原文件经修改还没有存档,则应先以:w存档。
:e!file 强迫读入另一个文件进入vi,原文件不作存档动作。
:!command 暂时退出vi并执行shell指令,执行完毕后再回到vi。
:sh 暂时退出vi到系统下,结束时按Ctrl+d则回到vi。
vifilename 进入vi并读入指定名称的文件(新、旧文件均可)。
vi+nfilename 进入vi并且由文件的第几行开始。
vi+filename 进入vi并且由文件的最后一行开始。
vi+/wordfilename进入vi并且由文件的word这个字开始。
vifilename(s)进入vi并且将各指定文件列入名单内,第一个文件先读入。
清理掉DOS文本中的^M,可以在:1,$s/^M//g,其中^是用CTRL+v上去的M是回车形成的正则表达式
在查找、替换命令使用以下正则表达式元字符,功能强大。
也可用在:g/命令中
&代表最近匹配串
~代表最近替换串
.任一字符
^行首或表示非
$行末
<词首
>词尾
*0次或多次
()分节指定与其中正则式匹配的部分,在替换时候可以用123...引用匹配部分
[]表示选择
-表示范围,例如[0-9]代表数字,[a-z]代表小写字母[^0-9a-zA-Z]代表非数字和大小写字母
{m,n}前面部分的从m次至n次出现,mn为数值
{m}精确m次出现
{m,}大于等于m次出现
以下举几例子,欢迎大家提出问题来共同探讨。
1.在20列后插入串
:%s/^.{20}/&insertsomethinghere/g
2.把C++语言里//注释修改为/**/格式
:%s///(.*)$//*1*//g
3.在建存储过程的sql文本里,在每个createprocedureprocname()
前加上dropprocedureprocname;[]里输入的是一个空格和TAB键。:%s/^[]*[cC][rR][eE][Aa][tT][eE][]*[pP][Rr][oO][cC][eE][dD][uU][rR][eE][
]*([^()*]/dropprocedure1;Ctrl_VCtrl_Mcreateprocedure1/g
宏命令
首先,宏的实质是将命令存储在寄存器中,如下是错误的qa
“ayw
q
寄存器a冲突,宏挺有用的vi的配置文件
另一方面,用户可以在主目录中创建.exrc环境文件,用set打入
选项,每次调用vi时,就会读入.exrc中的指令与设置。下面是
.exrc环境文件的实例:
setwrapmarging=8
setshowmode
setautoindent
setnumber
vim配置文件:
setnobackup
setdirectory=$VIM/swp”Therestoresallvimswapfiles
setignorecasesmartcase“Ctoforcevimtosearchcasesensibly.setlinebreak”letvimdon'tsplitawordwhenlinewrap,note:linedoesn'tbesplitreally
ifhas('multi_byte_ime')
highlightCursorguibg=Greenguifg=NONE
highlightCursorIMguibg=Purpleguifg=NONE
endif
setautoindent
setsmartindent
settabstop=4“treat
setshiftwidth=4”beusedonlywhen“<<”commandispressed
"TurnoffIMEwheninsertmodeandsearchmode
setiminsert=0
setimsearch=-1
第二篇:linux、samba、vi命令集合
Linux安装软件
先来看看Linux软件扩展名。软件后缀为.rpm最初是Red Hat Linux提供的一种包封装格式,现在许多Linux发行版本都使用;后缀为.deb是Debain Linux提供的一种包封装格式;后缀为.tar.gz、tar.Z、tar.bz2或.tgz是使用Unix系统打包工具tar打包的;后缀为.bin的一般是一些商业软件。通过扩展名可以了解软件格式,进而了解软件安装。
RPM格式软件包的安装
1.简介
几乎所有的Linux发行版本都使用某种形式的软件包管理安装、更新和卸载软件。与直接从源代码安装相比,软件包管理易于安装和卸载;易于更新已安装的软件包;易于保护配置文件;易于跟踪已安装文件。
RPM全称是Red Hat Package Manager(Red Hat包管理器)。RPM本质上就是一个包,包含可以立即在特定机器体系结构上安装和运行的Linux软件。RPM示意图见图1。
大多数Linux RPM软件包的命名有一定的规律,它遵循名称-版本-修正版-类型-MYsoftware-1.2-1.i386.rpm。
2.安装RPM包软件
# rpm-ivh MYsoftware-1.2-1.i386.rpm
安装mysql服务端:
[root@test1 local]# rpm-ivh MySQL-server-4.0.16-0.i386.rpm 测试是否成功可运行netstat看Mysql端口是否打开,如打开表示服务已经启动,安装成功。Mysql默认的端口是3306。
安装mysql客户端:
[root@test1 local]# rpm-ivh MySQL-client-4.0.16-0.i386.rpm
要想看看RPM软件包内的所有文件(例如,MySQL-server RPM),运行: shell> rpm-qpl MySQL-server-VERSION.i386.rpm
RPM命令主要参数:
-i 安装软件。
-t 测试安装,不是真的安装。
-p 显示安装进度。
-f 忽略任何错误。
-U 升级安装。
-v 检测套件是否正确安装。
这些参数可以同时采用。更多的内容可以参考RPM的命令帮助。
3.卸载软件
# rpm-e 软件名
需要说明的是,上面代码中使用的是软件名,而不是软件包名。例如,要卸载software-1.2.-1.i386.rpm这个包时,应执行:
#rpm-e software
4.强行卸载RPM包
有时除去一个RPM是不行的,尤其是系统上有别的程序依赖于它的时候。如果执行命令会显示如下错误信息:
## rpm-e xsnow
error: removing these packages would break dependencies:
/usr/X11R6/bin/xsnow is needed by x-amusements-1.0-1
在这种情况下,可以用--force选项重新安装xsnow:
## rpm-ivh--force xsnow-1.41-1.i386.rpm
xsnow
这里推荐使用工具软件Kleandisk,用它可以安全彻底清理掉不再使用的RPM包。
5.安装.src.rpm类型的文件
目前RPM有两种模式,一种是已经过编码的(i386.rpm),一种是未经编码的(src.rpm)。
rpm--rebuild Filename.src.rpm
这时系统会建立一个文件Filenamr.rpm,在/usr/src/redflag/RPMS/子目录下,一般是i386,具体情况和Linux发行版本有关。然后执行下面代码即可:
rpm-ivh /usr/src/regflag/RPMS/i386/Filename.rpm
使用deb打包的软件安装
deb是Debian Linux提供的一个包管理器,它与RPM十分类似。但由于RPM出现得早,并且应用广泛,所以在各种版本的Linux中都常见到,而Debian的包管理器dpkg只出现在Debina Linux中。它的优点是不用被严格的依赖性检查所困扰,缺点是只在Debian Linux发行版中才能见到这个包管理工具。
1.安装
# dpkg-i MYsoftware-1.2.-1.deb
2.卸载
# dpkg-e MYsoftware
tar.gz等使用源代码进行软件安装:.和RPM安装方式相比,使用源代码进行软件安装会复杂一些,但是用源代码安装软件是Linux下进行软件安装的重要手段,也是运行Linux的最主要的优势之一。使用源代码安装软件,能按照用户的需要选择定制的安装方式进行安装,而不是仅仅依靠那些在安装包中的预配置的参数选择安装。另外,仍然有一些软件程序只能从源代码处进行安装。
现在有很多地方都提供源代码包,到底在什么地方获得取决于软件的特殊需要。对于那些使用比较普遍的软件,如Sendmail,可以从商业网站处下载源代码软件包(如http://www.xiexiebang.comum1-num2 filename 说明:显示每行从开头算起 num1 到 num2 的文字。范例:
shell>> cat example test2 this is test1 shell>> cut-c0-6 example ## print 开头算起前 6 个字元 test2 this i
find 用法 : find 使用说明 : 将档案系统内符合 expression 的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。
find 根据下列规则判断 path 和 expression,在命令列上第一个filename.dump.重新载入
% createdb dbname % cat filename.dump.* | pgsql dbname
touch
使用权限:所有使用者 使用方式: touch [-acfm] [-r reference-file] [--file=reference-file] [-t MMDDhhmm[CC]YY][.ss] [-d time] [--date=time] [--time={atime,access,use,mtime,modify}] [--no-create] [--help] [--version] file1 [file2...]
说明:
touch 指令改变档案的时间记录。ls-l 可以显示档案的时间记录。
参数:
a 改变档案的读取时间记录。m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与--no-create 的效果一样。f 不使用,是为了与其他 unix 系统的相容性而保留。r 使用参考档的时间记录,与--file 的效果一样。d 设定时间与日期,可以使用各种不同的格式。t 设定档案的时间记录,格式与 date 指令相同。--no-create 不会建立新档案。--help 列出指令格式。--version 列出版本讯息。范例:
最简单的使用方式,将档案的时候记录改为现在的时间。若档案不存在,系统会建立一个新的档案。touch file touch file1 file2 将 file 的时间记录改为 5 月 6 日 18 点 3 分,公元两千年。时间的格式可以参考 date 指令,至少需输入 MMDDHHmm,就是月日时与分。touch-c-t 05061803 file touch-c-t 050618032000 file 将 file 的时间记录改变成与 referencefile 一样。touch-r referencefile file 将 file 的时间记录改成 5 月 6 日 18 点 3 分,公元两千年。时间可以使用 am, pm 或是 24 小时的格式,日期可以使用其他格式如 6 May 2000。touch-d “6:03pm” file touch-d “05/06/2000” file touch-d “6:03pm 05/06/2000” file
at
使用权限 : 所有使用者
使用方式 : at-V [-q queue] [-f file] [-mldbv] TIME 说明 : at 可以让使用者指定在 TIME 这个特定时刻执行某个程式或指令,TIME 的格式是 HH:MM其中的 HH 为小时,MM 为分钟,甚至你也可以指定 am, pm, midnight, noon, teatime(就是下午 4 点锺)等口语词。如果想要指定超过一天内的时间,则可以用 MMDDYY 或者 MM/DD/YY 的格式,其中 MM 是分钟,DD 是第几日,YY 是指年份。另外,使用者甚至也可以使用像是 now + 时间间隔来弹性指定时间,其中的时间间隔可以是 minutes, hours, days, weeks 另外,使用者也可指定 today 或 tomorrow 来表示今天或明天。当指定了时间并按下 enter 之后,at 会进入交谈模式并要求输入指令或程式,当你输入完后按下 ctrl+D 即可完成所有动作,至于执行的结果将会寄回你的帐号中。把计 :-V : 印出版本编号
-q : 使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时使用多个 queue,而 queue 的编号为 a, b, c...z 以及 A, B,...Z 共 52 个-m : 即使程式/指令执行完成后没有输出结果, 也要寄封信给使用者
-f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入
-l : 列出所有的指定(使用者也可以直接使用 atq 而不用 at-l)-d : 删除指定(使用者也可以直接使用 atrm 而不用 at-d)-v : 列出所有已经完成但尚未删除的指定 例子 : 三天后的下午 5 点锺执行 /bin/ls : at 5pm + 3 days /bin/ls 三个星期后的下午 5 点锺执行 /bin/ls : at 5pm + 2 weeks /bin/ls 明天的 17:20 执行 /bin/date : at 17:20 tomorrow /bin/date 1999 年的最后一天的最后一分钟印出 the end of world!at 23:59 12/31/1999 echo the end of world!
cal
使用权限:所有使用者
使用方式:cal [-mjy] [month [year] 说明:
显示日历。若只有一个参数,则代表年份(1-9999),显示该年的年历。年份必须全部写出:``cal 89 将不会是显示 1989 年的年历。使用两个参数,则表示月份及年份。若没有参数则显示这个月的月历。
1752 年 9 月第 3 日起改用西洋新历,因这时大部份的国家都采用新历,有 10 天被去除,所以该月份的月历有些不同。在此之前为西洋旧历。匡兜
-m : 以星期一为每周的第一天方式显示。
-j : 以凯撒历显示,即以一月一日起的天数显示。-y : 显示今年年历。范例:
cal : 显示本月的月历。[root@mylinux /root]# date Tue Aug 15 08:00:18 CST 2000 [root@mylinux /root]# cal August 2000 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [root@mylinux /root]#
cal 2001 : 显示公元 2001 年年历。[root@mylinux /root]# cal 2001 2001 January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 1 2 3 1 2 3 7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10 14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17 21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24 28 29 30 31 25 26 27 28 25 26 27 28 29 30 31 April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 1 2 3 4 5 1 2 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16 22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23 29 30 27 28 29 30 31 24 25 26 27 28 29 30 July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 1 2 3 4 1 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15 22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22 29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29 30
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 1 2 3 1 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15 21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22 28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29 30 31 [root@mylinux /root]#
cal 5 2001 : 显示公元 2001 年 5 月月历。
[root@mylinux /root]# cal 5 2001 May 2001
Su Mo Tu We Th Fr Sa 1 2 3 4 5 7 8 9 10 11 12 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
[root@mylinux /root]#
cal-m : 以星期一为每周的第一天方式,显示本月的月历。
[root@mylinux /root]# cal-m August 2000
Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
[root@mylinux /root]#
cal-jy : 以一月一日起的天数显示今年的年历。
[root@mylinux /root]# cal-jy 2000
January February
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 1 32 33 34 35 36 3 4 5 6 7 8 37 38 39 40 41 42 43 10 11 12 13 14 15 44 45 46 47 48 49 50 16 17 18 19 20 21 22 51 52 53 54 55 56 57 23 24 25 26 27 28 29 58 59 60 30 31
March April
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 61 62 63 64 92
99
79 80 81 82 83 84 85 107 108 109 110 111 112 113 86 87 88 89 90 91 114 115 116 117 118 119 120 121
May June
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 122 123 124 125 126 127 153 154 155
156 157 158 159 160 161 162 135 136 137 138 139 140 141 163 164 165 166 167 168 169 142 143 144 145 146 147 148 170 171 172 173 174 175 176 149 150 151 152 177 178 179 180 181 182 July August
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 183 214 215 216 217 218
184 185 186 187 188 189 190 219 220 221 222 223 224 225 191 192 193 194 195 196 197 226 227 228 229 230 231 232 198 199 200 201 202 203 204 233 234 235 236 237 238 239 205 206 207 208 209 210 211 240 241 242 243 244 212 213
September October
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 245 246 275 276 277 278 279 280 281
247 248 249 250 251 252 253 282 283 284 285 286 287 288 254 255 256 257 258 259 260 289 290 291 292 293 294 295 261 262 263 264 265 266 267 296 297 298 299 300 301 302 268 269 270 271 272 273 274 303 304 305 November December
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 306 307 308 309 336 337
310 311 312 313 314 315 316 338 339 340 341 342 343 344 317 318 319 320 321 322 323 345 346 347 348 349 350 351 324 325 326 327 328 329 330 352 353 354 355 356 357 358 331 332 333 334 335 359 360 361 362 363 364 365 366
[root@mylinux /root]#
crontab
使用权限 : 所有使用者
使用方式 :
crontab [-u user ] filecrontab [-u user ] {-l |-r |-e } 说明 :
crontab 是用来让使用者在固定时间或固定间隔执行程式之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用-u user 的话,就是表示设定自己的时程表。
餐数 :
-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)-r : 删除目前的时程表
-l : 列出目前的时程表 时程表的格式如下 : f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
当 f1 为 a, b, c,...时表示第 a, b, c,...分钟要执行,f2 为 a, b, c,...时表示第 a, b, c...个小时要执行,其余类推
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
例子 :
每月每天每小时的第 0 分钟执行一次 /bin/ls : 0 7 * * * /bin/ls
在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup : 0 6-12/3 * 12 * /usr/bin/backup
周一到周五每天下午 5:00 寄一封信给 alex@domain.name : 0 17 * * 1-5 mail-s “hi” alex@domain.name < /tmp/maildata
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo “haha” 20 0-23/2 * * * echo “haha” 注意 :
当程式在你所指定的时间执行后,系统会寄一封信给你,显示该程式执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可
date
使用权限 : 所有使用者
使用方式 :
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+formAT] [MMDDhhmm[CC]YY][.ss] 说明 :
date 可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下 : 时间方面 : % : 印出 % %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 : 显示版本编号
例子 :
显示时间后跳行,再显示目前日期 : date +%T%n%D 显示月份与日数 : date +%B %d
显示日期与设定时间(12:34:56): date--date 12:34:56 注意 :
当你不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入18:40(00:03)minery pts/0 140.119.217.115 Mon Aug 14 17:22[husfV] [user]
说明 : 显示系统中有那些使用者正在上面,显示的资料包含了使用者 ID,使用的终端机,从那边连上来的,上线时间,呆滞时间,CPU 使用量,动作等等。
把计 :
-h : 不要显示标题列
-u : 不要显示使用者的动作/工作
-s : 使用简短的格式来显示
-f : 不要显示使用者的上线位置
-V : 显示程式版本
名称:/etc/aliases
使用权限:系统管理者
使用方式: 请用 newaliases 更新资料库
说明:
sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫 redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
/etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。范例:
# newaliases
下面命令会做相同的事,# sendmail-bi 相关命令:
mail, mailq, newaliases, sendmail ” mail [返回]
使用权限:所有使用者
使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2...] 说明:
mail 不仅只是一个指令,mail 还是一个电子邮件程式,不过利用 mail 来读信的人应该很少吧!对于系统管理者来说 mail 就很有用,因为管理者可以用 mail 写成 script,定期寄一些备忘录提醒系统的使用者。
参数:
i 忽略 tty 的中断讯号。(interrupt)I 强迫设成互动模式。(Interactive)
v 列印出讯息,例如送信的地点、状态等等。(verbose)n 不读入 mail.rc 设定档。
s 邮件标题。
c cc 邮件地址。
b bcc 邮件地址。
范例:
将信件送给一个或以上的电子邮件地址,由于没有加入其他的选项,使用者必须输入标题与信件的内容等。而 user2 没有主机位置,就会送给邮件伺服器的 user2 使用者。
mail user1@email.address
mail user1@email.address user2
将 mail.txt 的内容寄给 user2 同时 cc 给 user1。如果将这一行指令设成 cronjob 就可以定时将备忘录寄给系统使用者。
mail-s 标题-c user1 user2 < mail.txt
mesg
使用权限 : 所有使用者
使用方式 : mesg [y|n]
说明 : 决定是否允许其他人传讯息到自己的终端机介面把计
y : 允许讯息传到终端机介面上。
n : 不允许讯息传到终端机介面上。
如果没有设定,则讯息传递与否则由终端机界面目前状态而定。
例子 :
改变目前讯息设定,改成不允许讯息传到终端机介面上 : mesg n
与 mesg 相关的指令有: talk,write,wall。
/etc/aliases 使用权限:系统管理者
使用方式: newaliases 说明:
sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫 redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
/etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。
参数:没有任何参数。范例:
# newaliases
下面命令会做相同的事,# sendmail-bi 相关命令:
mail, mailq, newaliases, sendmail
talk
使用权限 : 所有使用者
使用方式 :
talk person [ttyname]
说明 : 与其他使用者对谈
把计 :
person : 预备对谈的使用者帐号,如果该使用者在其他机器上,则可输入 person@machine.name
ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
例子.1 :
与现在机器上的使用者Rollaend对谈,此时 Rollaend 只有一个连线 : talk Rollaend
接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk jzlee`即可开始对谈,结束请按 ctrl+c
例子.2 :与linuxfab.cx上的使用者Rollaend对谈,使用pts/2来对谈 : talk Rollaend@linuxfab.cx pts/2
接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk jzlee@jzlee.home`即可开始对谈,结束请按 ctrl+c
注意 : 若萤幕的字会出现不正常的字元,试着按 ctrl+l 更新萤幕画面。
wall
使用权限 : 所有使用者
使用方式 : wall [ message ] 使用说明:
wall 会将讯息传给每一个 mesg 设定为 yes 的上线使用者。当使用终端机介面做为标准传入时, 讯息结束时需加上 EOF(通常用 Ctrl+D)
例子 :
传讯息“hi” 给每一个使用者 : wall hi
write
使用权限 : 所有使用者
使用方式 :
write user [ttyname]
说明 : 传讯息给其他使用者
把计 :
user : 预备传讯息的使用者帐号
ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
例子.1 :
传讯息给 Rollaend,此时 Rollaend 只有一个连线 : write Rollaend
接下来就是将讯息打上去,结束请按 ctrl+c
例子.2 :传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3 : write Rollaend pts/2
接下来就是将讯息打上去,结束请按 ctrl+c
注意 : 若对方设定 mesg n,则此时讯席将无法传给对方
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
nice
使用权限:所有使用者
使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command [arg...] 说明:以更改过的优先序来执行程式, 如果未指定程式, 则会印出目前的排程优先序, 内定的 adjustment 为 10, 范围为-20(最高优先序)到 19(最低优先序)把计
-n adjustment,-adjustment,--adjustment=adjustment 皆为将该原有优先序的增加 adjustment--help 显示求助讯息
--version 显示版本资讯
范例:
将 ls 的优先序加 1 并执行 : nice-n 1 ls
将 ls 的优先序加 10 并执行 :
nice ls将 ls 的优先序加 10 并执行
注意 : 优先序(priority)为作业系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先序越高,所可能获得的 CPU时间就越多。
ps
使用权限:所有使用者
使用方式:ps [options] [--help] 说明:显示瞬间行程(process)的动态
参数:
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
au(x)输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码(minor device number of tty)STAT: 该行程的状态:
D: 不可中断的静止(通悸□□缜b进行 I/O 动作)R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内(即时系统或捱A I/O)START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
范例:
ps
PID TTY TIME CMD 2791 ttyp0 00:00:00 tcsh 3092 ttyp0 00:00:00 ps % ps-A
PID TTY TIME CMD 1 ? 00:00:03 init 2 ? 00:00:00 kflushd 3 ? 00:00:00 kpiod 4 ? 00:00:00 kswapd ? 00:00:00 mdrecoveryd.......% ps-aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3] root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd] root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod] root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]........pstree
使用权限:所有使用者
使用方式:
pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user] pstree-V 说明:将所有行程以树状图显示, 树状图将会以 pid(如果有指定)或是以 init 这个基本行程为根(root),如果有指定使用者 id , 则树状图会只显示该使用者所拥有的行程
参数:
-a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
-c 如果有重覆的行程名, 则分开列出(预设值是会在前面加上 * 范例:
pstree init-+-amd |-apmd |-atd
|-httpd---10*[httpd] %pstree-p
init(1)-+-amd(447)|-apmd(105)|-atd(339)%pstree-c init-+-amd |-apmd |-atd
|-httpd-+-httpd | |-httpd | |-httpd | |-httpd....renice 使用权限:所有使用者
使用方式:renice priority [-p] pid...] [-g] pgrp...] [-u] user...]
说明:重新指定一个或多个行程(Process)的优先序(一个或多个将根据所下的参数而定)把计
-p pid 重新指定行程的 id 为 pid 的行程的优先序
-g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程(一个或多个)的优先序
-u user 重新指定行程拥有者为 user 的行程的优先序
范例:
将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1 : renice +1 987-u daemon root-p 32
注意 : 每一个行程(Process)都有一个唯一的(unique)id
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 < top.log
skill
使用权限:所有使用者 使用方式: skill [signal to send] [options] 选择程序的规则
说明:
送个讯号给正在执行的程序,预设的讯息为 TERM(中断), 较常使用的讯息为 HUP , INT , KILL , STOP , CONT ,和 0
讯息有三种写法:分别为-9 ,-SIGKILL ,-KILL , 可以使用-l 或-L 已列出可使用的讯息。
一般参数:
-f 快速模式/尚未完成
-i 互动模式/ 每个动作将要被确认
-v 详细输出/ 列出所选择程序的资讯
-w 智能警告讯息/ 尚未完成-n 没有动作/ 显示程序代号
参数:选择程序的规则可以是, 终端机代号,使用者名称,程序代号,命令名称。
-t 终端机代号(tty 或 pty)-u 使用者名称
-p 程序代号(pid)
-c 命令名称 可使用的讯号:
以下列出已知的讯号名称,讯号代号,功能。
名称(代号)功能/ 描述
ALRM 14 离开
HUP 1 离开
INT 2 离开
KILL 9 离开/ 强迫关闭
PIPE 13 离开
POLL 离开
PROF 离开
TERM 15 离开
USR1 离开
USR2 离开
VTALRM 离开
STKFLT 离开/ 只适用于i386, m68k, arm 和 ppc 硬体
UNUSED 离开/ 只适用于i386, m68k, arm 和 ppc 硬体
TSTP 停止 /产生与内容相关的行为
TTIN 停止 /产生与内容相关的行为
TTOU 停止 /产生与内容相关的行为
STOP 停止 /强迫关闭
CONT 从新启动 /如果在停止状态则从新启动,否则忽略
PWR 忽略 /在某些系统中会离开
WINCH 忽略
CHLD 忽略
ABRT 6 核心
FPE 8 核心
ILL 4 核心
QUIT 3 核心
SEGV 11 核心 TRAP 5 核心
SYS 核心 /或许尚未实作
EMT 核心 /或许尚未实作
BUS 核心 /核心失败
XCPU 核心 /核心失败
XFSZ 核心 /核心失败
范例:
停止所有在 PTY 装置上的程序
skill-KILL-v pts/*
停止三个使用者 user1 , user2 , user3 skill-STOP user1 user2 user3 其他相关的命令: kill
expr
使用权限:所有使用者
### 字串长度
shell>> expr length “this is a test” 14
### 数字商数
shell>> expr 14 % 9 5
### 从位置处抓取字串
shell>> expr substr “this is a test” 3 5 is is
### 数字串 only the first character shell>> expr index “testforthegame” e 2
### 字串真实重现
shell>> expr quote thisisatestformela thisisatestformela
tr
### 1.比方说要把目录下所有的大写档名换为小写档名? 似乎有很多方式,“tr”是其中一种: #!/bin/sh
dir=“/tmp/testdir”;files=`find $dir-type f`;for i in $files do
dir_name=`dirname $i`;ori_filename=`basename $i`
new_filename=`echo $ori_filename | tr [:upper:] [:lower:]` > /dev/null;#echo $new_filename;
mv $dir_name/$ori_filename $dir_name/$new_filename done
### 2.自己试验中...lowercase to uppercase tr abcdef...[del] ABCDE...[del] tr a-z A-Z
tr [:lower:] [:upper:]
shell>> echo “this is a test” | tr a-z A-Z > www.xiexiebang.compress 使用权限:所有使用者
使用方式:compress [-dfvcV] [-b maxbits] [file...]
说明:
compress 是一个相当古老的 unix 档案压缩指令,压缩后的档案会加上一个.Z 延伸档名以区别未压缩的档案,压缩后的档案可以以 uncompress 解压。若要将数个档案压成一个压缩档,必须先将档案 tar 起来再压缩。由于 gzip 可以产生更理想的压缩比例,一般人多已改用 gzip 为档案压缩工具。
参数:
c 输出结果至标准输出设备(一般指荧幕)
f 强迫写入档案,若目的档已经存在,则会被覆盖(force)v 将程式执行的讯息印在荧幕上(verbose)
b 设定共同字串数的上限,以位元计算,可以设定的值为 9 至 16 bits。由于值越大,能使用的共同字串就 越多,压缩比例就越大,所以一般使用预设值 16 bits(bits)d 将压缩档解压缩
V 列出版本讯息
范例:
将 source.dat 压缩成 source.dat.Z,若 source.dat.Z 已经存在,内容则会被压缩档覆盖。
compress-f source.dat
将 source.dat 压缩成 source.dat.Z,并列印出压缩比例。
-v 与-f 可以一起使用
compress-vf source.dat
将压缩后的资料输出后再导入 target.dat.Z 可以改变压缩档名。
compress-c source.dat > target.dat.Z
-b 的值越大,压缩比例就越大,范围是 9-16,预设值是 16。
compress-b 12 source.dat
将 source.dat.Z 解压成 source.dat,若档案已经存在,使用者按 y 以确定覆盖档案,若使用-df 程式则会自动覆盖档案。由于系统会自动加入.Z 为延伸档名,所以 source.dat 会自动当作 source.dat.Z 处理。
compress-d source.dat compress-d source.dat.Z
lpd
使用权限: 所有使用者
使用方式:lpd [-l] [#port]
lpd 是一个常驻的印表机管理程式,它会根据 /etc/printcap 的内容来管理本地或远端的印表机。/etc/printcap 中定义的每一个印表机必须在 /var/lpd 中有一个相对应的目录,目录中以 cf 开头的档案表示一个等待送到适当装置的印表工作。这个档案通常是由 lpr 所产生。
lpr 和 lpd 组成了一个可以离线工作的系统,当你使用 lpr 时,印表机不需要能立即可用,甚至不用存在。lpd 会自动监视印表机的状况,当印表机上线后,便立即将档案送交处理。这个得所有的应用程式不必等待印表机完成前一工作。
参数:
-l: 将一些除错讯息显示在标准输出上。
#port: 一般而言,lpd 会使用 getservbyname 取得适当的 TCP/IP port,你可以使用这个参数强迫 lpd 使用指定的 port。
范例:
这个程式通常是由 /etc/rc.d 中的程式在系统启始阶段执行。
名称 lpq
--显示列表机贮列中未完成的工作 用法
lpq [l] [P] [user] 说明
lpq 会显示由 lpd 所管理的列表机贮列中未完成的项目。
范例
范例 1.显示所有在 lp 列表机贮列中的工作
# lpq-PlpRank Owner Job Files Total Size1st root 238(standard input)1428646 bytes
相关函数
lpr,lpc,lpd
lpr
使用权限: 所有使用者
使用方式:lpr [-P printer ]
将档案或是由标准输入送进来的资料送到印表机贮列之中,印表机管理程式 lpd 会在稍后将这个档案送给适当的程式或装置处理。lpr 可以用来将料资送给本地或是远端的主机来处理。
参数:
-p Printer: 将资料送至指定的印表机 Printer,预设值为 lp。
范例:
将 www.xiexiebang.com 供各位查阅!
进入vi的命令
vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi-r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑
移动光标类命令
h :光标左移一个字符
l :光标右移一个字符
space:光标右移一个字符
Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或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+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
插入文本类命令
i :在光标前 I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之
ncw或nCW:修改指定数目的字
nCC:修改指定数目的行
删除命令
ndw或ndW:删除光标处开始及其后的n-1个字
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的Ctrl+u:删除输入方式下所输入的文本
搜索及替换命令
/pattern:从光标开始处向文件尾搜索pattern ?pattern:从光标开始处向文件首搜索pattern n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
:s/p1/p2/g:将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:将文件中所有p1均用p2替换
选项设置
all:列出所有选项设置情况
term:设置终端类型
ignorance:在搜索中忽略大小写
list:显示制表位(Ctrl+I)和行尾标志($)number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文件时若没保存当前文件则显示NO write信息
nomagic:允许在搜索模式中,使用前面不带“”的特殊字符
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息
最后行方式命令
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下 :n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除
:w :保存当前文件
:e filename:打开文件filename进行编辑
:x:保存当前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:执行shell命令command
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command:将命令command的输出结果放到当前行
寄存器操作
“?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
”?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
“?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
”?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。
第三篇:vi使用总结
三种模式,分别是一般模式、编辑模式 与 指令列命令模式
• 一般模式(命令模式): 这是执行vi后的缺省模式,此时键盘输入当作命令命令有大小写之区分
在这个模式中,你可以使用『上下左右』按键来移动光标,您可以使用『删除字符』或『删除整行』来处理档案内容,也可以使用『复制、贴上』来处理您的文件数据。但是无法使用键盘输入字符。
• 编辑模式: 使用 a、i、o、c、r、s 进入插入模式,用户输入的任何字符都被vi当做文件内容保存起来,按下 ESC 键即可回到 Command Mode
通常在 Linux 中,按下上述的字母时,在画面的左下方会出现 INSERT 或 REPLACE 的字样,才可以输入任何字来输入到您的档案中!而如果要回到一般模式时,则必须要按下『Esc』这个按键即可退出编辑模式。
• 指令列命令模式:Last Mode(末行模式)
在 Command Line 按下 : 即可进入该模式,用来进行保存文件、打开文档或环境的设定
命令有大小写之分 在一般模式当中,输入: 或 / 或 ? 就可以将光标移动到最底下那一行,在这个模式当中,可以提供您『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi、显示行号 等等的动作则是在此模式中达成的!
新增(append)
a 从光标所在位置后面开始新增内容
A 从光标所在行最后面的地方开始新增内容。
插入(insert)
i 从光标所在位置前面开始插入内容
I 从光标所在行的第一个非空白字符前面开始插入资料。
开始(open)
o 在光标所在行下新增一行并进入输入模式。
O 在光标所在行上新增一行并进入输入模式。
一般模式说明
1、光标的移动
h左移一个字符l右移一个字符
j下移一行k上移一行
w,W跳至后一个字的开头(W忽略标点)
b,B跳至前一个字的开头(B忽略标点)
e移动到后一个字的末尾
^至本行第一个非空字符
$至行尾0至行首
H移动到当前窗口的第一列
M移动到当前窗口的中间列
L移动到视窗的最后一列)光标所在位置到下个句子的第一个字母
(光标所在位置到该句子的第一个字母
}光标所在位置到该段落的最后一个字母
{光标所在位置到该段落的第一个字母
nH将光标移到屏幕的第 n 行
nL将光标移到屏幕的倒数第 n 行
CTRL-d 向下半页
CTRL-f 向下一页
CTRL-u 向上半页
CTRL-b 向上一页
n-减号移动到上一行的第一个非空白字符,前面加上数字可以指定移动到以 上 n 行
n+加号移动到下一行的第一个非空白字符,前面加上数字可以指定移动到以下 n 行
2、删除
x删除光标所在字符
X删除光标前面的字符
s删除光标所在字符,并进入输入模式
S删除光标所在的行,并进入输入模式
dd删除光标所在的行
D从光标位置开始删除到行尾
d与光标移动命令的组合3、修改
r修改光标所在字符,r 后接着要修改的字符。如,rc 可以用字符“ c ”替换光标所指向的当前字符
R进入替换状态,新增内容会覆盖原先内容,直到按 [ESC] 回到命令模式下为止
cc修改光标所在行
C修改从光标位置到该行末尾的内容
c与光标移动命令的组合4、复制和移动
yy复制当前行到内存缓冲区
nyy复制 n 行内容到内存缓冲区
y与光标移动的组合p将缓冲区的内容粘贴到光标的后面
P将缓冲区的内容粘贴到光标的前面
另:在末行模式下实现移动
:n1,n2 m n3 : 把 n1到n2 行内容搬到第 n3 行后
5、搜索字符串
/pattern移至下一个包含pattern的行
?pattern移至上一个包含pattern的行
/往下重复查找
?往上重复查找
n在同一方向重复查找
N在相反方向重复查找
/pattern/+n 移至下一个pattern所在行后的第n行
?pattern?-n 移至上一个Pattern所在行前的第n行
6、其他
u撤销前一条命令的结果
末行模式
1、文件的保存和退出
:w保存:q退出:w!强制保存:q!强制退出:wq保存退出:wq!强制保存退出
2、字符串的替换
:s/str1/str2/用字符串 str2 替换行中首次出现的字符串 str1
:s/str1/str2/g用字符串 str2 替换行中所有出现的字符串 str1
:.,$ s/str1/str2/g用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1:1,$ s/str1/str2/g用字符串 str2 替换正文中所有出现的字符串 str1:g/str1/s//str2/g功能同上
其他:
: n将光标移到第 n 行
编辑多个文件vifile1 file2 „
:n编辑下一个文件
:e filename 编辑指定文件
第四篇:stata命令总结
表2-1: 回归分析相关命令一览
命令用途
anova 方差和协方差分析 heckman Heckman 筛选模型
intreg 离散型变量模型,包括Tobit、cnreg 和intreg ivreg 工具变量法(IV 或2SLS)
newey Newey-West 标准差设定下的回归
prais 针对序列相关的Prais-Winsten, Cochrane-Orcutt, or Hildreth-Lu 回归 qreg 分量回归 reg OLS 回归 sw 逐步回归法
reg3 三阶段最小二乘回归
rreg 稳健回归(不同于方差稳健型回归,即White 方法)sureg 似无相关估计
svyheckman 调查数据的Heckman 筛选模型 svyintreg 调查数据的间断变量回归 svyregress 调查数据的线性回归 tobit Tobit 回归
treatreg treatment 效应模型 truncreg 截断回归
表2-2: 时间序列命令一览
命令用途
clemao1 允许结构突变的单位根检验 zandrews dfuller dfgls pperron coin 单方程协整检验
dwstat 参考dwstat2 , durbina2 durbinh
表2-3: Panel Data 模型相关命令一览I 命令模型
统计描述相关命令:
xtdes 变量类型,数据类型描述 xtsum 基本统计量 xttab 按表格形式列示 xtpattern 面板数据的模式 估计相关命令:
xtreg 面板数据模型(固定效应、随机效应)
xtregar 含有AR(1)干扰项的固定效应和随机效应面板数据模型
xtgls 截面-时序混合模型,可处理异方差、组内序列相关和组间相关性 xtpcse OLS or Prais-Winsten models with panel-corrected standard errors xtrchh Hildreth-Houck random coefficients models xtivreg 面板模型的工具变量或两阶段最小二乘法估计 xtabond Arellano-Bond(1991)线性动态面板数据模型估计
xtabond2 Arellano-Bover(1995)系统GMM 动态面板数据模型估计 xttobit Tobit 随机效应面板模型
xtintreg Random-effects interval data regression models xtlogit Fe, Re, Pa logit models xtprobit Re, Pa probit models xtcloglog Re, Pa cloglog models xtpoisson Fe, Re, Pa Poisson models xtnbreg Fe, Re, Pa negative binomial models xtfrontier 面板随机前沿模型
xthtylor Hausman-Taylor estimator for error-components models
表2-4: Panel Data 模型相关命令一览II 命令模型
假设检验相关:
test Wald 检验,如时间效应联合显著性检验 xttest0 随机效应检验 xttest1 面板序列相关检验 xttest2 ads xtserial Wooldridge 一阶序列相关检验 xtab Arellano 面板一阶序列相关检验 hausman Hausman 检验 面板单位根和协整相关: xtunit stata提供的检验方法
ipshin IPS(2003)面板单位根检验
levilin Levin,Lin和Chu(LLC, 2002)面板单位根检验 madfuller Sarno-Taylor(1998)面板单位根检验
xtfisher Maddala和Wu(1999),基于P 值的面板单位根检验
表2-5: Post-estimation Commands 命令名称用途
adjust 列示预测结果的均质,适于多种回归分析,可分组列示 estimates 估计结果的存储、再显示、列表比较等 hausman Hausman 模型识别检验
lincom 获得参数的线性组合,在Logit 模型中可以获得系数线性组合的OR 值 linktest 但方程link 识别检验,用y 对Oy 和Oy2 回归 lrtest 似然比(LR)检验
mfx 计算边际效应和弹性系数 nlcom 系数的非线性组合 predict 获得拟合值、残差等
predictnl 获得非线性估计的拟合值、残差等 test 线性约束的假设检验,Wald 检验 testnl 非线性约束的假设检验
vce 列示参数估计值的方差-协方差矩阵
表2-6: 二维图种类一览
图形种类简单描述 scatter scatterplot line line plot connected connected-line plot scatteri scatter with immediate arguments area line plot with shading bar bar plot spike spike plot dropline dropline plot dot dot plot rarea range plot with area shading rbar range plot with bars rspike range plot with spikes rcap range plot with capped spikes rcapsym range plot with spikes capped with symbols rscatter range plot with markers rline range plot with lines rconnected range plot with lines and markers tsline time-series plot tsrline time-series range plot mband median-band line plot mspline spline line plot lowess LOWESS line plot lfit linear prediction plot qfit quadratic prediction plot fpfit fractional polynomial plot lfitci linear prediction plot with CIs qfitci quadratic prediction plot with CIs fpfitci fractional polynomial plot with CIs function line plot of function histogram histogram plot kdensity kernel density plot 表2-7: 二维图选项一览
选项类别简单描述
added line options draw lines at specified y or x values added text option display text at specified(y,x)value axis options labels, ticks, grids, log scales title options titles, subtitles, notes, captions legend option legend explaining what means what scale(#)resize text, markers, and line widths region options outlining, shading, aspect ratio, size aspect option constrain aspect ratio of plot region scheme(schemename)overall look by(varlist,...)repeat for subgroups nodraw suppress display of graph name(name,...)specify name for graph saving(filename,...)save graph in file advanced options difficult to explain 表2-9: 模拟分析相关命令一览
命令用途备注 抽样相关:
corr2data 产生具有指定相关性的数据仅适用于模拟相关分析 drawnorm invnorm(uniform())产生服从标准正态分布的随机数函数,可调节均值和方差 matuniform(r,c)产生均匀分布函数
sample 从现有数据中进行非重复随机抽样参考bsample sim arma 产生服从ARIMA 过程的随机变量需要下载 Bootstrap 相关: bootstrap bs bstat bsample MC 相关: simulate MC simulation jknife 类似于MC permute postfile 存储MC 的结果 statsby exp list
第五篇:stata命令总结
stata11常用命令
注:JB统计量对应的p大于0.05,则表明非正态,这点跟sktest和swilk检验刚好相反; dta为数据文件; gph为图文件; do为程序文件;
注意stata要区别大小写; 不得用作用户变量名:
_all _n _N _skip _b _coef _cons _pi _pred _rc _weight double float long int in if using with 命令:
读入数据一种方式 input x y 1 4 2 5.5 3 6.2 4 7.7 5 8.5 end su/summarise/sum x 或 su/summarise/sum x,d 对分组的描述: sort group by group:su x %%%%% tabstat economy,stats(max)%返回变量economy的最大值
%%stats括号里可以是:mean,count(非缺失观测值个数),sum(总和),max,min,range,%% sd,var,cv(变易系数=标准差/均值),skewness,kurtosis,median,p1(1%分位
%% 数,类似地有p10, p25, p50, p75, p95, p99),iqr(interquantile range = p75 – p25)_all %描述全部
_N 数据库中观察值的总个数。_n 当前观察值的位置。_pi 圆周率π的数值。list gen/generate %产生数列 egen wagemax=max(wage)clear use by(分组变量)set more 1/0 count %计数
gsort +x(升序)gsort-x(降序)sort x 升序;并且其它变量顺序会跟着改变 label var y “消费” %添加标签 describe %描述数据文件的整体,包括观测总数,变量总数,生成日期,每个变量的存储类型(storage type),标签(label)replace x5=2*y if x!=3 %替换变量值
replace age = 25 in 107 %令第107个观测中age为25 rename y2 u %改变变量名
drop in 2 %删除全部变量的第2行
drop if x==.删去x为缺失值的所有记录
keep if x<2 %保留小于2的数据,其余变量跟随x改变 keep in 2/10 %保留第2-10个数
keep x1-x5 %保留数据库中介于x1和x5间的所有变量(包括x1和x5),其余变量删除
ci x1 x2,by(group)%算出置信区间,不过先前对group要先排序,即sort group;
%by的意思逐个进行
cii 12 3.816667 0.2710343, level(90)%已知均值,方差,计算90%的置信区间
cii 10 2 %obs=10,mean=2,以二项分布形式,计算置信区间 centile x,centile(2.5 25 50 75 97.5)%取分位数 correlate/corr x y z %相关系数
pwcorr x y,sig %给出原假设r=0的命令 %如果变量非服从正态分布,则spearman x y regress/reg mean year %回归方程建立 reg y x,noconstant %无常数项 predict meanhat %预测拟合值 predict e,residual %得到残差 estat hettest % 异方差检验
dwstat % Durbin-Watson自相关检验 vif % 方差膨胀因子
logit y x1 x2 x3(y取0或1,是被解释变量,x1-x3是被解释变量)%logit回归
probit y x1 x2 x3(y取0或1,是被解释变量,x1-x3是被解释变量)%probit回归
tobit y x1 x2 x3(y取值在0和1之间,是被解释变量,x1-x3是被解释变量)%tobit回归
sktest e %残差正态性检验 p>0.05则接受原假设,即服从正态分布; %% sktest是基于变量的偏度和斜度(正态分布的偏度为0,斜度为3)swilk x %基于Shapiro-Wilk检验
%%p值越小,越倾向于拒绝零假设,也就是变量越有可能不服从正态分布 xi %生成虚拟变量 tabulat gender,summ(math)%用gender指标对math进行分类,返回两类math的mean、std、freq tabulate=tab %gen f=int((shengao-164)/3)*3+164 组距为3 tabulate 变量名 [, generate(新变量)missing nofreq nolabel plot ] %%%%% generate(新变量)// 按分组变量产生哑变量 nofreq // 不显示频数 nolabel // 不显示数值标记 plot // 显示各组频数图示 missing // 包含缺失值
cell // 显示各小组的构成比(小组之和为 1)column // 按栏显示各组之构成(各栏总计为 1)row // 按行显示各组之构成(各行总计为 1)%%%%% 求和,求最小? mod(x,y)%求余数
means %返回三种平均值 di normprob(1.96)di invnorm(0.05)di binomial(20,5,0.5)di invbinomial(20,5,0.5)di tprob(10,2)di invt(10.0.05)di fprob(3,27,1)di invfprob(3,27,0.05)di chi2(3,5)di invchi2(3,0.05)stack x y z,into(e)%把三列合成一列 xpose,clear %矩阵转置
append using d: 917.dta %把已打开的文件(x y z)跟0917里的(x y z)合并,是竖向合并,即观察值合并;
merge using D: 917.dta %把已打开的文件(x y z)跟0917里的(a b)合并,是横向合并,即变量合并; format x %9.2e %科学记数 format x %9.2f %2位小数
%产生随机数
%1 产生20个在(0,1)区间上均匀分布的随机数uniform()set seed 100 set obs 20 gen r=uniform()list % clear 清除内存
set seed 200 设置种子数为 200 set obs 20 设置样本量为 20 range no 1 20 建立编号 1 至 20 gen r=uniform()产生在(0,1)均匀分布的随机数 gen group=1 设置分组变量 group 的初始值为 1 sort r 对随机数从小到大排序
replace group=2 in 11/20 设置最大的 10 个随机数所对应的记录
为第2组,即:最小的10个随机数所
对应的记录为第1组 sort no 按照编号排序
list 显示随机分组的结果 也可以list if group==1和list no if group==1 %2 产生10个服从正态分布N(100,6^2)的随机数invnorm(uniform())*sigma+u clear 清除内存
set seed 200 设置种子数为 200 set obs 10 设置样本量为 10 gen x=invnorm(uniform())*6+100 产生服从 N(100,6^2)的随机数 list 画图
注意有些图前面要加 histogram 直方图 line 折线图 scatter 散点图
scatter y x,c(l)s(d)b2(“(a)”)graph twoway connected y x 连点图
graph bar(sum)var2,over(var1)blabel(total)%条形图.graph bar p52 p72,by(d).graph bar p52 p72,over(d).graph bar p52 p72,by(d)stack.graph bar p52 p72,over(d)stack ////////////数据如下 %d p52 p72 %1 163.2 27.4 %2 72.5 83.6 %3 57.2 178.2 histogram x,bin(8)norm %画直方图,加正态分数线
graph pie a b o ab if area==1,plabel(_all percent)%画饼图 graph pie var2, over(var1)plabel(_all percent)%饼图 graph pie p52 p72,by(d)%饼图 graph box y1 %箱体图 qnorm x %qq图 lfit y x %回归直线
graph matrix gender economy math 多变量散点图
line yhat x||scatter y x,c(.l)s(O.)xline(12)yline(5.4)%线形图&散点图
有一些通用的选项可以给图形“润色”:
标题 title(“string”)(string可为任意的字符串,下同)脚注 note(“string”)
横座标标题 xtitle(“string”)纵座标标题 ytitle(“sting”)
横座标范围 xaxis(a,b)(a
connect(c...c)//连接各散点的方式,c表示: 或简写为c(c...c).不连接(缺省值)l 用直线连接
L 沿x方向只向前不向后直线连接 m 计算中位数并用直线连接 s 用三次平滑曲线连接 J 以阶梯式直线条连接
|| 用直线连接在同一纵向上的两点
II 同 ||, 只是线的顶部和底部有一个短横 Symbol(s...s)// 表示各散点的图形,s 表示: 或简写为s(s...s)O 大圆圈(缺省值)S 大方块 T 大三角形 o 小圆圈 d 小菱形 p 小加号.小点 i 无符号
[varname] 用变量的取值代码表示 [_n] 用点的记录号表示
数学函数等都要与generate、replace、display一起使用,不能单独使用 程序文件do use d: 917.dta reg y x corr y x line y x,saving(d:d4)按ctrl+D执行 字符串操作函数:
length(s)%长度函数,计算s的长度, 如,disp length(“ab”)的结果是2 substr(s,n1,n2)%子串函数,获得从s的n1个字符开始的n2个字符组成的字符串, disp substr(“abcdef”,2,3)的结果是“bcd” string(n)%将数值n转换成字符串函数,如,disp string(41)+“f”的结果是“41f” real(s)%将字符串s转换成数值函数,如,disp real(“5.2”)+1的结果是6.2 upper(s)%转换成大写字母函数,如,disp upper(“this”)的结果是“THIS” lower(s)%转换成小写字母函数,如disp lower(“THIS”)的结果是“this” index(s1,s2)%子串位置函数,计算s2在s1中第一次出现的起始位置, 如果s2不
在s1中, 则结果为0。如,disp index(“this”,“is”)的结果是3, 而index(“this”,“it”)的结果是0 trim(s)%去除字符串前面和后面的空格 ltrim(s)%去除字符串前面的空格 rtrim(s)%去除字符串后面的空格
di sign(x)%x>0时取1, x<0时取-1, x=0时取0; 符号函数 di int(x)%去掉x的小数部分, 得到整数(取整函数)sum(x)%获得包括当前记录及以前的所有记录的x 的和。缺失值(missing value)当0处理;求和函数
max(x1,x2,...,Xn)忽略缺失值;最大值函数 min(x1,x2,...,Xn)忽略缺失值;最小值函数 float(x)%将x转换成浮点表示法。
gen yy=cond(x<2,10,11)%条件函数cond(x,a,b)x可以是一个条件, x非0(条件成立)时取a, x为0(条件不成立)时取b。
gen y1=recode(x,2,5)%归组函数recode(x,x1,x2,...xn)gen y2=autocode(x,3,-2,9)%autocode(x,ng,xmin,xmax)自动将区间(xmin,xmax)分成ng个等长的小区间,其结果是包含x值那个小区间的上界值
t检验: gend=x-y ttestd=0 ttestx=y 如果不配对
ttestx1=x2,unpaired ttestx1=x2,unequalunpaired 已知样本均数、标准差和样本数进行t检验:
ttesti 21 1.28 0.92 0.2 %检验均值是否等于0.2 检验两组均数是否相同:
ttesti 11 10 1.9 14 12.8 2.3 检验变量x1和x2的方差是否相同(即:齐性)sdtestx1=x2
一、配对设计的平均水平检验
当总体服从正态分布时,可以选用t检验,否则用非参符号秩检验 signrankd=0
二、平行对照设计的两组资料平均水平统计检验
如果两组资料的方差齐性和相互独立的,并且每组资料服从正态 分布,则用成组t检验,否则可以用成组Wilcoxon秩和检验 ranksum x, by(group)%2组资料中位数比较 kwallis x, by(group)%多组资料中位数比较 anova x t id %x为因变量,t跟id是因素 egenr=rank(x),by(id)%产生秩r 单因素方差分析: 单因素方差分析又称为OnewayANOVA,用于比较多组样本的均数是否相同,并假定:每组的数据服从正态分布,具有相同的方差,且相互独立,则无 效假设Ho:各组总体均数相同。在STATA中可用命令:
oneway x group, mean bonferroni %bonferroni用于多组样本均数的两两比较检验
logrank t outcome, by(group)%单因素生存分析 两因素方差分析
多因素方差分析:anova y x1 x2 x1*x2