返回列表 回复 发帖

而今迈步从头越,本人开始学习unix系统了(哎!惨)[2]

20、vi
vi是在工作站上广泛使用的编辑软件。对初学者而言,
常因其特殊的使用方法,而不得其门而入;对已经在使用 vi 的使用者来说,也
常见因对 vi 的不熟悉或不够了解,而无法发挥出 vi 强大的编辑能力,以下将
简单介绍 vi 的使用方法。不必死记硬背,多实际操作几次就能记住常用的命令。
进入vi
        直接执行 vi编辑程序即可:
        %vi test
        此刻屏幕上会出现 vi 的编辑屏幕,同时 vi 会将文件复制一份至内存中的缓冲区 (buffer) 。  vi会保留在硬盘中的文件不变,而先对缓冲区的文件作编辑,编辑完成后,使用者可决定是否要取代原来旧有的文件。
离开vi
        若在输入模式下,则先利用《ESC》进入指令模式,而后即可选用下列指令
        离开vi。
        :q!    离开vi,并放弃刚在缓冲区内编辑的内容。
        :wq    将缓冲区内的资料写入硬盘中,并离开vi。
        :ZZ    同wq。
        :x     同wq。
        :w     将缓冲区内的资料写入硬盘中,但并不离开vi。
        :q     离开vi,若文件被修改过,则会被要求确认是否放弃修改的内容。
                此指令可与:w 配合使用。
vi 的操作模式
        vi 提供两种操作模式:输入模式(insert mode)和指令模式(command mode)
        。当使用者进入 vi 后,即处在指令模式下,此刻键入的任何字符都被视为
        指令。在此模式下可进行删除、修改等动作。若要输入资料,则需进入输入
        模式。
输入模式
        如何进入输入模式
                a (append)      由光标之后加入资料。
                A               由该行之末加入资料。
                i (insert)      由光标之前加入资料。
                I               由该行之首加入资料。
                o (open)        新增一行于该行之下以供输入资料。
                O               新增一行于该行之上以供输入资料。
        如何离开输入模式
                《ESC》 结束输入模式。
指令模式
光标的移动
        h       向左移一个字符。
        j       向上移一个字符。
        k       向下移一个字符。
        l       向右移一个字符。
        0       移至该行之首
        $       移至该行之末。
        ^       移至该行的第一个字符处。
        H       移至屏幕的第一列。
        M       移至屏幕的中间那列。
        L       移至屏幕的最后一列。
        G       移至该文件的最后一列。
        +       移至下一列的第一个字符处。
        -       移至上一列的第一个字符处。
        (       移至该句之首。 (注一)
               移至该句之末。
        {       移至该段落之首。 (注二)
        }       移至该段落之末。
        nG      移至该文件的第 n 列。
        n+      移至光标所在位置之后的第 n 列。
        n-      移至光标所在位置之前的第 n 列。
        <Ctrl><g>       会显示该行的行号、文件名称、文件中最末行的行号、光标
                        所在行号占总行号的百分比。
        注一:句子(sentence)在vi中是指以『!』、『.』或『?』结束的一串字。
        注二:段落(paragraph)在vi中是指以空白行隔开的文字。
屏幕的移动
        <Ctrl><f>       屏幕往下卷一页。
        <Ctrl><b>       屏幕往上卷一页。
        <Ctrl><d>       屏幕往下卷半页。
        <Ctrl><u>       屏幕往上卷半页。
        <Ctrl><e>       屏幕往下卷一行。
        <Ctrl><y>       屏幕往上卷一行。
删除、复制及修改指令介绍 (此单元较少使用)
        d(delete)、c(change)和y(yank)这一类的指令在 vi 中的指令格式为:
        Operator + Scope = command
        (运算子)   (范围)
        运算子:
        d       删除指令。删除资料,但会将删除资料复制到内存缓冲区。
        y       将资料(字组、行列、句子或段落)复制到缓冲区。
        p       放置(put)指令,与 d 和 y 配和使用。可将最后delete或yank的资
                料放置于光标所在位置的行列下。
        c       修改(change)指令,类似delete与insert的组合。删除一个词组、句
                子等的资料,并插入新输入的资料。
        范围:
        e       由光标所在位置至该字符串的最后一个字符。
        w       由光标所在位置至下一个字符串的第一个字符。
        b       由光标所在位置至前一个字符串的第一个字符。
        &#36;       由光标所在位置至该行的最后一个字符。
        0       由光标所在位置至该行的第一个字符。
               由光标所在位置至下一个句子的第一个字符。
        (       由光标所在位置至该句子的第一个字符。
        {       由光标所在位置至该段落的最后一个字符。
        }       由光标所在位置至该段落的第一个字符。
        整行动作
        dd      删除整行。
        D       以行为单位,删除光标后的所有字符。
        cc      修改整行的内容。
        yy      yank整行,使光标所在该行复制到内存缓冲区。
删除与修改
        x       删除光标所在该字符。
        X       删除光标所在之前一字符。
        dd      删除光标所在该行。
        r       用接于此指令之后的字符取代(replace)光标所在字符。
                如: ra 将光标所在字符以 a 取代之。
        R       进入取代状态,直到《ESC》为止。
        s       删除光标所在的字符,并进入输入模式直到《ESC》。
        S       删除光标所在的该行资料,并进入输入模式直到《ESC》。
移动与复制
        利用 delete 及 put 指令可完成资料移动的目的。
        利用 yank 及 put 指令可完成资料复制的目的。
        yank 和 delete 可将指定的资料复制到内存缓冲区,而通过 put 指令
        可将缓冲区内的资料复制到屏幕上。
        例:
        移动一行        .在该行执行 dd
                        .光标移至目的地
                        .执行 p
        复制一行        .在该行执行 yy
                        .光标移至目的地
                        .执行 p
指令重复
        在指令模式中,可在指令前面加入一数字 n,则此指令动作会重复执行 n
        次。
        例:
        删除10行                .10dd
        复制10行                .10yy
                                .光标移至目的地
                                .p
        指标往下移10行  .10j
取消前一动作(Undo)
        即复原执行上一指令前的内容。
        u       恢复最后一个指令之前的结果。
        U       恢复光标该行的所有改变。
查找
        在vi中可查找某一字符串,使光标移至该处。
        /字符串           往光标之后寻找该字符串。
        ?字符串           往光标之前寻找该字符串。
        n               往下继续寻找下一个相同的字符串。
        N               往上继续寻找下一个相同的字符串。
资料的连接
        J       句子的连接。将光标所在的下一行连接至光标该行的后面。
        若某行资料太长亦可将其分成两行,只要将光标移至分开点,进入输入模式
        (可利用 a、i等指令)再按《Enter》即可。
环境的设定
        :set nu                设定资料的行号。
        :set nonu              取消行号设定。
        :set ai                自动内缩。
        :set noai              取消自动内缩。
        自动内缩(automatic indentation)
        在编辑文件或程序时,有时会遇到需要内缩的状况,『:set ai』即提供自
        动内缩的功能,用下例解释:
        .vi test
        .(进入编辑屏幕后)
          this is the test for auto indent
          《Tab》start indent           ← :set ai (设自动内缩)
          《Tab》data
          《Tab》data
          《Tab》data                   ← :set noai (取消自动内缩)
        the end of auto indent.
        .注:<Ctrl><d> 可删除《Tab》字符。
ex指令
        读写资料
        :w                     将缓冲区的资料写入硬盘中。
        :10,20w test   将第10行至第20行的资料写入test文件。
        :10,20w>>test  将第10行至第20行的资料加在test文件之后。
        :r test                将test文件的资料读入编辑缓冲区的最后。
        删除、复制及移动
        :10,20d                删除第10行至第20行的资料。
        :10d                   删除第10行的资料。
        :%d                    删除整个编辑缓冲区。
        :10,20co30             将第10行至第20行的资料复制至第30行之后。
        :10,20mo30             将第10行至第20行的资料移动至第30行之后。
        字符串搜寻与取代
        s(substitute)指令可查找某行列范围。
        g(global)指令则可查找整个编辑缓冲区的资料。
        s指令以第一个满足该条件的字符串为其取代的对象,若该行有数个满足该条
        件的字符串,也仅能取代第一个,若想取代所有的字符串则需加上g参数。
        :1,&#36;s/old/new/g                将文件中所有的『old』改成『new』。
        :10,20s/^/   /         将第10行至第20行资料的最前面插入5个空白。
        :%s/old/new/g          将编辑缓冲区中所有的『old』改成『new』。
恢复编辑时被中断的文件
        在编辑过程中,若系统当掉或连线中断,而缓冲区的资料并还未
        被写回硬盘时,当再次回到系统,执行下列指令即可回复中断前
        的文件内容。
        %vi -r filename
编辑多个文件
        vi还提供同时编辑多个文件的功能,方法如下:
        %vi file1 file2 ..
        当第一个文件编辑完成后,可利用『:w』将该缓冲区存档,而后
        再利用 『:n』载入下一个文件。
21、echo 显示环境变量用
例如:
%echo &#36;RMSROOT  显示环境变量RMSROOT的值
22、ping  测试网络通断情况。
格式:ping ip_address
例如:ping 129.9.123.45
23、ftp 本地工作站与远端工作站之间文件传输
必须拥有远端工作站的帐号及密码,才可进行传输工作 。
格式: ftp hostname or ftp ip_address
例如 :
ftp 129.9.123.45        与远端工作站 129.9.123.45 ,进行文件传输
Name (129.9.123.45:user-name)    : 输入帐号
Password (129.9.123.45:user-name): 输入密码
!为执行外部操作系统的命令。
ftp> help        列出 ftp 文件传输,可使用的任何命令。
ftp> !ls         列出本地工作站,目前目录下的所有文件名。
ftp> !pwd        列出本地工作站,目前所在的工作目录位置。
ftp> ls          列出远端工作站目前目录下的所有文件名。
ftp> dir         列出远端工作站目前目录下的所有文件名(略同于 UNIX 的 ls -l 指令).
ftp> pwd         列出远端工作站目前所在的目录位置。
ftp> cd  dir1    更改远端工作站的工作目录位置至 dir1 下。
ftp> get file1   将远端工作站的文件 file1 ,拷贝到本地工作站中。
ftp> put file2   将本地工作站的文件 file2 ,拷贝到远端工作站中。
ftp> mget *.c    将远端工作站中,文件名后缀为 c 的所有文件,拷贝到本地工作站中。
ftp> mput *.txt  将本地工作站中,文件名后缀为 txt 的所有文件,拷贝到远端工作站中。
ftp> bin         以二进制方式传输文件,切记在传送可执行文件时要先执行此命令。
可以将ASCII文件按二进制方式传输,但决不能将二进制文件按ASCII方式传输,否则二进制文件的内容会遭到破坏而无法使用。
ftp> asc 以ASCII方式传输文件,只在传输ASCII文件时用,特别是在DOS和Solaris之间传输时用。
ftp> prompt      使用 mput/mget 时不用每个文件皆询问yes/no
ftp> quit        结束 ftp 工作。
ftp> bye         结束 ftp 工作,和quit一样。
注: 从PC到工作站间的文件传输也可在 PC端WIN95下的 FTP命令进行文件传输,用法与
    上所述大致相同。
24、telnet ip_address 远程登录命令
例如:
%telnet 129.9.123.45
25、ps 查看系统的进程
格式:ps [-euf...]
例如:
%ps -u rms    (查看系统中,用户rms的 process。)
%ps -ef       (查看系统中,包含系统内部,及所有用户的进程。)
26、kill 杀掉操作系统中的进程
一般先用ps命令先查看进程的ID号,再用kill。如果kill杀不掉,可再加参数-9,说明为强制杀掉。
例如:
%kill -9 1234 这里1234是假设的进程号。
27、tar 把多个文件或目录打包成一个文件,或者把已经打包的文件展开
例如:
%tar cvf RMS RMStar 把目录打包成一个文件
%tar xvf RMStar 把打包的文件展开。
28、compress 把文件压缩成后缀为.Z的压缩文件
例如:
%compress RMStar
29、uncompress 把后缀为.Z的压缩文件解压缩
例如:
%uncompress RMStar.Z
30、df -k  查看各文件系统的空间,-k说明单位是千字节

而今迈步从头越,本人开始学习unix系统了(哎!惨)[2]

vi是比较复杂的功能,但是功能比较强大,学好不容易的哟~

                     我是一个呼吸着现在的空气而生活在过去的人
               这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
                                     我已习惯了孤独,爱上孤独
                                 他让我看清了自我,还原了自我
                             让我再静静的沉思中得到快乐和满足
                                   再孤独的世界里我一遍又一遍
                                   不厌其烦的改写着自己的过去
                                             延伸到现在与未来
                                       然而那只是泡沫般的美梦
                                 产生的时刻又伴随着破灭的到来
                         在灰飞烟灭的瞬间我看到的是过程的美丽
                                      而不是结果的悲哀。。。

而今迈步从头越,本人开始学习unix系统了(哎!惨)[2]

我才不会学好,会用就行了,对我的作用并不是很大

而今迈步从头越,本人开始学习unix系统了(哎!惨)[2]

这个是好东西
好好学撒
[color=#4B0082][fly]天空繁星点点[/fly] [fly]每一个人都是恒星[/fly] [fly]每一个人又都会是流星[/fly] [fly]我宁愿只做流星[/fly] [fly]从你的天空划过[/fly][/color]

而今迈步从头越,本人开始学习unix系统了(哎!惨)[2]

完全不懂
返回列表