免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2711 | 回复: 5
打印 上一主题 下一主题

Solaris基础(三) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-23 11:46 |只看该作者 |倒序浏览
编辑器与实用程序
终端机简介
        一个终端机是一个荧幕与一个键盘的组合,其型别有vt100, vt102, vt220,
    sun, hp, ansi 等。基本上这些型别就是不同公司的不同产品型号,他们之间的差
异在於控制游标的方法不同,按键时键盘产生的键盘代码不同,以及是否有彩
色能力等。

        由於设计先天不良,UNIX无法自动侦测终端机的型别,必须以人工的方式
告知。告知的方法就是设定一个环境变数TERM。UNIX里面需要控制萤幕的
程式都会参考此变数。设定此变数的方法如下:

    1. 在csh, tcsh下用:

            % set term = vt100

        这里要说明的是为什麽刚刚说要设定的变数名是大写(TERM),而这里却是
        小写;另外一个问题是csh、tcsh中,set指令是用来设定临时变数而已,另
        有一个专门设定环境变数的指令叫setenv,为什麽不用setenv?

        答案是 csh、tcsh为了使用者的方便,只要'term'这一个临时变数被设了值,
        csh 就自动更新TERM这个环境变数的值。

    2. 在sh,bash,ksh,zsh中要下两个命令:

            $ TERM=vt100
            $ export TERM

        其中export的意思为,把'TERM'这个暂时变数转成环境变数

            <UNIX小字典——环境变数与变数>

            在UNIX里面,这是一个不讲还好、越讲越搞不清楚的观念。简单的
            说,所谓的<环境变数>就是此变数能够告诉所有的程式使用者目前
            所处的环境 ,而变数则不能,因为只有Shell 能看到变数,而环境变
            数是所有的程式 都能够看到的。例如所有的程式都需要知道TERM这
            个变数,所以它是一个环境变数。在sh下面的export命令可以想作:让
            大家都能看到这个变数。

终端机控制
    一般而言,终端机提供一些简单的编辑功能:
    1. 删除一个字: BS (CTRL-H, ^H) 或 DEL (^?)
        这两个键正常状况下只有一个有用。可用以下两个命令选择

            % stty erase '^H'
            % stty erase '^?'

    2. 删除一行: CTRL-U (^U)
    3. 输出控制:

            CTRL-S (^S) 暂停输出
            CTRL-Q (^Q) 取消暂停输出


编辑器种类

    A. 列编辑器(line editor)
        列编辑器一次只能处理一行,现在除了写程式外几乎没有人在用了。
        以下指令皆会启动列编辑器:

            e, ed, ex, edit

        其中e, ed 没有提示号,ex, edit的提示号是冒号':' 因为没什麽用,所以只
        要知道不小心执行了怎麽出来就可以了。用^D或q 或q!可退出之。

    B. 全萤幕编辑器
        全萤幕编辑器可以使用游标移动至文字档任何地方,做各种修改,也较自
        然。UNIX的标准编辑器是vi。其他的编辑器为网路上免费的编辑器。

            vi     VIsual editor,特色是显示较快、游标移动也较快,不易学习。

            joe    Joe's own version of editor,本来是作者的上课作业,但是现
                    在以发展成一个成熟、稳定、方便使用的编辑器。

            emacs  Editor MACroS,最初由MIT 人工智慧实验室流传出来,是
        UNIX上 除了vi外最常见的编辑器。它的按键几乎成了UNIX下移动游
        标的标准。功能很强、也不是很好学。

            Jove   Jxxx's own version of Emacs,我们可以说jove是另一个emacs
        编辑器的仿制品。但是jove编辑器没有emacs 那麽强的扩充功能 ,也
        比较小巧玲珑。

Vi  编辑器   
用途: 全屏幕编辑程序
    格式: vi  filename

        vi有两种模式,输入模式与命令模式。刚进入vi时是处於命令模式。在命
令模式中可以告诉vi要怎麽样移动游标,要改哪些字,对正在编辑的文字档做什麽处理。此时键盘上的每个键都可以是命令。在输入模式则vi把所有的按键都当成输入,不做处理。
      
    1. 进入输入模式的方法
        想打几个字到萤幕上就要先进入输入模式。以下几个命令皆可进入输入模式:(注意大小写)

i                        进入编辑状态,在光标前插入字符
a                        进入编辑状态,在光标后追加字符
I                        进入编辑状态,在行首插入字符
A                        进入编辑状态,在光标前插入字符
    o           在当前行之下插入文本行
    O           在当前行之上插入文本行

        <eg> 按下列几个键试试看:(先按i再按hello)

            ihello
    2. 从输入模式跳回命令模式的方法:按<ESC>键
        每次进入输入模式就可以打一段文字,在输入模式下只能用^H及^U等基
       本终端机编辑功能,按完<Enter> 後就不能退回修改了。要修改必须用<ESC>
       跳回命令模式。

    3. 命令模式
        在命令模式下才能移动游标、作删除的工作
        A. 移动游标

                           上
                左 h   j   k   l  右
                       下

            <eg> 承上例,打完ihello後按一次<ESC>然後四个h回到第一行。

        B. 快速移动游标

Ctrl + f                向下翻一屏
Ctrl + b                向上翻一屏
Ctrl + d                向下翻半屏
Ctrl + u                向上翻半屏
      b         光标左移一个单词  
      w         光标右移一个空格定界词
[n]G                把光标移到第n行,不带n则移到文件尾
$                        光标移到行尾
^                        光标移到行首

     另外可以在这些命令之前加数字,表示重复几次。

            <eg>  10j  表示向下 10 行
            <eg>  10^F 表示向下 10 页

        C. 删除与Undo(还原)

           x        删除光标处的字符
           X        删除光标前的字符
                dd  删除一行
                u   还原上一个指令的影响(undo)
        [n]Dd        删除从光标开始的n行

            <eg>  3x  表示删除三个字
            <eg>  d8d 删除八行

        D. 档案处理

           在命令模式下

           e[!]                        打开文件
               w[!]                        写文件
           q[!]                        退出vi 编辑器
         wq[!]                    写文件并退出vi 编辑器
               ZZ           save & quit
               :w filename    把档案存到 filename 这个档去
               :e filename    edit
               :r filename     read in a file


        E. Ex Mode

                : 使 vi 暂时进入 ex 命令模式
                Q 使 vi 退回 ex Mode

            在 ex 下用 vi 命令可回到 vi mode

        F. 搜寻
            按斜线'/'可以对本文搜寻。

                <eg> /hello  寻找含有hello的字串。

        G. vilearn
            vi的内容太多太杂,316室的工作站有个'程式'叫vilearn可以有效率的
            学习vi的使用。

                H. 替换
    r        替换当前光标处的字符
       R        替换从光标处开始的一串字符,并进入编辑状态

joe的使用

        joe使用很简单,按CTRL-K H 就可以把按键印出来。比较特殊的是joe 提
供区块功能,可以把某区块标示起来,然後做拷贝。此功能叫Block Commands。
另外joe 也可以一次编辑数个档案。(Windows)

Jove & Emacs

        Emacs 非常的强,甚至可以在Emacs 里面写E-mail,读News,下UNIX
  的命令。 Emacs 的主要诉求就是作这些事的时候按键都相同。进Emacs 後键盘
  的输入就是文字档的内容。Emacs 的命令大部分以CTRL- 键开 头,有些键是以
  Meta键开头

    例:
        方向键可以用之外,
        CTRL-P   上,previous line   CTRL-N  下,next line
        CTRL-B   左,backword        CTRL-F  右,forward
                   (注意:emacs的backword/forward与vi不同)
        CTRL-D   delete
        DEL      backspace
        CTRL-V   Page down
        META-V   Page UP

        各位一定会好奇,Meta怎麽按?所谓的META键并非每一种键盘都有。在
  工作站前,空白键旁有个小菱形的键即是。如果没有META键的话,META-V 要
  按成<ESC><V>。
        在Emacs内有一点要注意的是,Emacs认为删除游标左边的字要用<DEL>
  键,而不是我们的直觉,<BS>键。原因就是<BS>键其实就是CTRL-H。而Emacs 内
  CTRL-H是用来显示求助讯息的。

        CTRL-H b    列出目前按键的组合有哪些功能
        CTRL-H t    启动emacs的教导使用程式

        jove没有这个功能,但是有个外部程式叫teachjove。
        Emacs 的命令很多,很复杂,万一不小心误按了命令,可以按CTRL-G取
   消。
        CTRL-G在Emacs 内任何时刻都代表中断、取消的意思。
        结束emacs可用<CTRL-X><CTRL-C>(不存档案)。
        Emacs/Jove按键不容易在讲义上描述,以上的描述可提供各位初步的概念
  ,以及在Emacs 内求生、以及全身而退的方法,大家有兴趣可以下emacs 命令到
  Emacs 的世界探险。X windows的所有编辑按键皆和Emacs 一样,熟悉一点Emacs
  的按键用处蛮多的。

info系统

        这里并不想介绍info的使用,只是让大家知道此系统的存在而已。在emacs 内按CTRL-H I或者在命令列下info指令就可以进入了。info系统是一个求助系统,比 man 方便,读起来也较方便。但是资料库不大,只包含了Emacs 及一些程式发展工具的使用方法。


常用工具
压缩档
    一个档案太大、不常用,可以把它压缩起来,以节省空间。指令为
    compress/uncompress或gzip/gunzip。相关的程式有zcat, gzcat, zmore。

    <eg>  有份报告叫report,用compress压过後叫report.Z,用gzip压过後叫
          report.gz,要看这份报告可以用'zmore report'看。

寻找字串
    寻找档案内是否有所要的字串

    <eg>  grep "字串" 档案
           cat 档案 | grep 字串

    寻找字串的方法很多,比如说我想找所有以M开头的行。此时必须引进pattern的观念。以下是一些简单的□例,以及说明:

        ^M          以M开头的行,^表示开始的意思
        M$          以M结尾的行,$表示结束的意思
        ^[0-9]      以数字开始的行,[]内可列举字母
        ^[124ab]    以1,2,4,a,或b开头的行
        ^b.503      句点表示任一字母
        *           星号表示0个以上的字母(可以没有)
        +           加号表示1个以上的字母
        \.          斜线可以去掉特殊意义

        <eg>        ypcat passwd | grep ^b  列出大学部有申请帐号者名单
                    ypcat passwd | grep ^s  列出交换学生申请帐号者名单
                    ypcat passwd | grep '^b.503' 列出电机系各年级...
                    grep '^\.' myfile.txt   列出所有以句点开头的行

nroff标准的UNIX简易排版指令。
    所谓的排版就是在文章间加入一些控制指令,让nroff 这个程式读。nroff 就会依照我们想要的方式把文章印出。相关的指令有tbl 表格产生器,eqn 数式产生器以及pic 绘图语言。有蛮多英文的UNIX书籍就是用这套程式印出来的。另外有个程式叫作troff ,其接受的命令与nroff 几乎一样,但是它的输出比较高级,可以作
    为照相排版用。以下为一些小例子,首先用编辑器编写以下档案,命名为clock。

        ┌————— clock  ——————┐
        │.ce                           │
        │clock                         │
        │.sp 2                          │
        │<自己写一段文章,不用对齐>   │
        │<段与段间用空白行隔开>       │
        └———————————————┘

    然後用以下的命令可以得到输出:

        % nroff clock | more    预视
        % nroff clock | lpr     输出到印表机

    nroff 的排版指令很多,有兴趣的请自己参考书籍,因为它只能处理英文而已。

TeX/LaTeX
    高级的排版程式,不是UNIX附的。主要用来做高品质的输出,特别是数学符号的处理。国内倚天公司有PC版的 LaTeX,可以处理中文。(其实网路上也有免费的 TeX中文版,但是没有人安装,也不知道字形好不好看)

awk
    awk 可视为超强的grep。或者说awk 是一个简易的资料库处理工具。

    <eg> ypcat passwd | awk -F: '{print $1}' | more
            印出所有的使用者,passwd档的第一栏。

    <eg> ypcat passwd | awk -F: '$1 ~ /^b.503/ {print $1}' | more
            印出电机系的使用者。

寻找档案find

    find . -name hello -print          寻找目前目录及所有的子目录内叫hello的
                                 档案。
    find . -ctime +7 -print            找出七天内未被更动的档案
    find . -size +2000m -print         找出大小超过2000 bytes的档案
    find /tmp -user b1234567 -print    在/tmp下属於b1234567的档案
    find . -name '*.c' -exec rm {}  删除所有的.c档

(转自中兴)

论坛徽章:
0
2 [报告]
发表于 2007-08-23 17:12 |只看该作者
在去找第1和第2部分.

论坛徽章:
0
3 [报告]
发表于 2007-08-23 17:20 |只看该作者
顶!!!!!!!!!!!!!!

论坛徽章:
0
4 [报告]
发表于 2007-08-27 11:22 |只看该作者
谢谢分享!~

论坛徽章:
0
5 [报告]
发表于 2007-08-27 12:40 |只看该作者
solaris 10的还是9的?

论坛徽章:
0
6 [报告]
发表于 2007-08-27 14:11 |只看该作者

赞一下 好多小知识

学习了。好多小细节原来都不知道,现在了解后更顺手了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP