Linux常用命令简明手册
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

E

e2fsck——检测Linux ext2/ext3/ext4文件系统

语法格式

        e2fsck [-cDfnptvVy] [-b superblk] [-B blksize] device

命令简介

e2fsck命令主要用于检测与修复ext2/ext3/ext4系列的文件系统。e2fsck采用交互方式检测文件系统,当需要修复文件系统时,e2fsck会请求用户予以确认。对具有日志功能的ext3和ext4文件系统而言,如果系统没有正常关机,在重新提交日志中的交易之后,文件系统通常就会恢复正常。因此,对于具有日志功能的ext3和ext4文件系统,e2fsck通常只需提交日志中的交易之后即可退出,除非其超级块表示还需要做进一步的检测。

在上述语法格式中,device是文件系统分区的设备文件名,如/dev/sdc1等。在运行e2fsck命令时,通常只需提供文件系统分区的设备文件名即可,命令选项都是选用的,除非文件系统严重受损。

注意,在已安装的文件系统上运行e2fsck命令通常是不安全的,除非已指定了“-n”选项而未指定“-c”、“-l”或“-L”选项。但即使这样做是安全的,在文件系统已安装的情况下,e2fsck命令的输出结果也是无效的。当检测的文件系统已经安装,e2fsck请示用户是否还要继续检测时,唯一正确的回答是“no”,只有真正知道自己正在做什么的专家才可考虑采用其他方式回答这个问题。

命令选项

      -b superblk   使用指定的备份超级块(而非主超级块)修复文件系统。当文件系统的主超级块严重
                    受损时,可以使用这个选项修复文件系统。备份超级块的位置依赖于具体的文件系
                    统,以及文件系统的大小与逻辑数据块的大小等。在逻辑数据块为1KB的文件系统
                    中,第一个备份超级块通常位于8193号数据块;在逻辑数据块为2KB的文件系统
                    中,第一个备份超级块位于16384号数据块;在逻辑数据块为4KB的文件系统中,第
                    一个备份超级块位于32768号数据块。为了确定其他备份超级块的位置,可以使用
                    “mke2fs -n”命令查询其输出结果。注意,为了获取超级块的准确位置,在运行
                    “mke2fs -n”命令时还需要使用“-b”选项指定文件系统数据块的大小。如果指定了
                    备用超级块,e2fsck将会以读写方式打开文件系统,在完成文件系统的检测与修复之
                    后适当地更新主超级块。
      -B blksize    通常,e2fsck将会尝试采用各种不同的数据块规格检索和确定超级块的位置与大小。
                    “-B”选项强制e2fsck按照指定的规格定位超级块。如果指定规格的超级块不存在,
                    e2fsck将会输出一个错误信息,终止程序的执行。
      -c            指定这个选项可以促使e2fsck调用badblocks程序,以只读方式扫描设备,检测其中是
                    否存在坏块。如果发现任何坏块,将其加到坏块信息节点中,防止分配给文件或目
                    录。如果指定这个选项两次,将采用非破坏性的读写测试方式,扫描坏块。
      -D            优化文件系统中的目录。利用这个选项,e2fsck将会通过重建索引(如果文件系统支
                    持目录索引)、排序与压缩目录等方式,尝试优化所有的目录。
      -f            强制执行文件系统的检测,即使文件系统完好无损。
      -n            以只读方式打开指定的文件系统,对于fsck的所有修复请求均以“no”作为响应,使
                    fsck能够以非交互的方式自动检测指定的文件系统,报告(而不是修复)文件系统中
                    存在的问题。注意,这个选项不能与“-p”或“-y”选项同时使用。
      -p            并发地检测文件系统,自动修复简单的问题,无须用户干预。一旦检测到严重问题,
                    需要提请用户做进一步的校正处理,fsck或e2fsck将输出一个错误描述信息,然后立
                    即结束程序的执行。注意,这个选项通常主要用于系统引导脚本,不能与“-n”或
                    “-y”选项同时使用。
      -t            在完成文件系统的检测与修复之后,显示e2fsck在整个处理过程中的内存使用、时间
                    花费及数据读写等分类统计信息。如果“-t”选项指定两次,在每个中间处理阶段结
                    束后,e2fsck也会输出每个阶段的上述统计信息。
      -v            显示e2fsck命令的详细处理过程与动作。
      -V            显示e2fsck命令的版本信息,然后退出。
      -y            对于fsck的所有修复请求,均以“yes”作为响应,使fsck或e2fsck能够以非交互的方
                    式自动检测与修复指定的文件系统。注意,这个选项不能与“-n”或“-p”选项同时
                    使用。

应用实例

1.检测与修复ext3文件系统,校正文件大小有误的问题。

      # e2fsck  /dev/sdb1
      e2fsck 1.41.12 (17-May-2010)
      /dev/sdb1 was not cleanly unmounted, check forced.
      Pass 1: Checking inodes, blocks, and sizes
      Inode 14, i_blocks is 16, should be 8.  Fix<y>? yes
      Pass 2: Checking directory structure
      Pass 3: Checking directory connectivity
      Pass 4: Checking reference counts
      Pass 5: Checking group summary information
      /dev/sdb1: ***** FILE SYSTEM WAS MODIFIED *****
      /dev/sdb1: 32/1221600 files (0.0% non-contiguous), 120720/4883708 blocks
      #

2.使用超级块备份修复超级块严重受损的ext3文件系统。

      # e2fsck -b 32768 /dev/sdb2
      e2fsck 1.41.12 (17-May-2010)
      /dev/sdb2 was not cleanly unmounted, check forced.
      Pass 1: Checking inodes, blocks, and sizes
      Pass 2: Checking directory structure
      Pass 3: Checking directory connectivity
      Pass 4: Checking reference counts
      Pass 5: Checking group summary information
      Free blocks count wrong for group #0 (31226, counted=31222).
      Fix<y>? yes
      Free blocks count wrong (4762980, counted=4762976).
      Fix<y>? yes
      Free inodes count wrong for group #0 (8133, counted=8130).
      Fix<y>? yes
      Free inodes count wrong (1221589, counted=1221586).
      Fix<y>? yes
      /dev/sdb2: ***** FILE SYSTEM WAS MODIFIED *****
      /dev/sdb2: 14/1221600 files (0.0% non-contiguous), 120736/4883712 blocks
      #

e2label——显示或修改ext2/ext3/ext4文件系统的卷标

语法格式

      e2label device [label]

命令简介

e2label命令主要用于显示或修改ext2/ext3/ext4文件系统的卷标。其中,device是文件系统分区的设备文件名,label是欲设定的文件系统卷标。

命令参数label 是选用的,如果不存在,e2label仅仅显示指定文件系统当前的卷标。如果存在,e2label将会用其设置文件系统的卷标。ext2/ext3/ext4文件系统的卷标最多有16个字符。如果给定的卷标多于16个字符,e2label会截掉多余部分,同时输出一条警告信息。

此外,也可以使用tune2fs命令的“-L”选项,设置文件系统的卷标。

应用实例

1.查询文件系统的卷标(没有输出信息表示文件系统未设置卷标)。

      # e2label /dev/sdb1
      #

2.设置与查询卷标。

      # e2label /dev/sdb1 data01
      # e2label /dev/sdb1
      data01
      #

echo——显示字符串等文字数据

语法格式

      echo [-eEn] [strings]
      echo [--help] [--version]

命令简介

echo命令主要用于显示给定的字符串参数。其中的 strings 可以是任何字符串,单个或一组字符串均可。如果字符串中含有空格或转义字符,前后需加双引号。除非指定了“-e”选项,所有字符均作为普通字符处理。

      如果指定了“-e”选项,echo命令能够解释下列转义字符:
      \\       反斜线字符“\”本身。
      \a       警示音。
      \b       退格符。
      \c       禁止输出换行符。
      \e       ESC字符。
      \f       换页符。
      \n       换行符。
      \r       回车。
      \t       制表符。
      \v       纵向制表符。
      \0NNN    1~3位八进制数字表示的字符。
      \xHH     1~2位十六进制数字表示的字符。

命令选项

      -e           解释命令参数中的转义字符。
      -E           禁止解释命令参数中的转义字符(默认做法)。
      -n           禁止输出行尾的换行符。

应用实例

1.提示用户在提示信息后输入数据。

      $ echo -e "Please input your choice: \c"; read ans
      Please input your choice:

2.使用“-n”选项提示用户在提示信息后输入数据。

      $ echo -n "Please input your choice: "; read ans
      Please input your choice:

edquota——编辑用户或用户组配额

语法格式

      edquota [-p proto] [-u|-g] [-rm] [-F fmt] [-f filesys] users
      edquota [-u|-g] [-F fmt] [-f filesys] -t
      edquota [-u|-g] [-F fmt] [-f filesys] -T user | groups
      edquota [-h|--help] [-V|--version]

命令简介

edquota是一个配额编辑器,用于编辑指定用户或用户组的配额。其中,users 是一个或多个用户名或用户ID,groups是一个或多个用户组名或用户组ID。在一个命令行上,可以同时指定多个用户或用户组。

开始编辑时,对于命令行指定的每一个用户或用户组,edquota将会创建一个ASCII文本的临时文件,反映相应用户或用户组的当前配额设置情况,然后调用编辑器编辑每个临时文件。在打开临时文件并进入编辑器之后,可以修改配额限制,如增加或减少软性或硬性配额等。如果把配额设置为0,表示没有施加任何配额限制。

对于每个文件系统,可以指定不同的宽限时间周期。在一定的宽限时间周期之内,用户可以超过其软性限制。一旦宽限时间周期到期,软性限制也将同硬性限制一样,具有强制性的限制作用。

临时文件中给出的blocks与inodes两列是用户当前实际占用的磁盘空间与信息节点的实况,仅作为参考信息,不能修改,只有相应的软性(soft)和硬性(hard)配额限制可以修改。

在退出编辑器时,edquota将会读取临时文件,根据其中的数据修改二进制的配额文件aquota.user或aquota.group,以反映当前设定的配额。

如果没有另行设置EDITOR或VISUAL环境变量,edquota调用的默认编辑器是vi(或nano)。

注意,只有超级用户才能编辑配额。

命令选项

      -f filesys,--filesystem filesys 仅对指定的文件系统执行指定的操作(默认的做法是对所有的文件系统执行
                                 指定的操作)。
      -F fmt,--format=fmt        按照指定的格式编辑配额(禁止执行格式的自动检测)。支持的格式名是
                                 vfsold(第1版配额)、vfsv0(第2版配额)、rpc(NFS配额)和xfs(XFS
                                 文件系统配额)。
      -g,--group                 编辑用户组的配额。
      -m,--no-mixed-pathnames    当前,在发送NFSv4安装点的路径名时,不会发送路径名前面的斜线字符
                                 “/”,rpc.rquotad守护进程利用这一特点识别NFSv4安装,同时在路径名
                                 前面适当地增加一个NFS文件系统的伪根目录。如果指定了这个选项,
                                 setquota在发送路径名时总是会发送一个斜线后缀。当使用新的
                                 rpc.rquotad,基于RPC的配额可能停止工作时,可以考虑使用“-m”选
                                 项。
      -p proto,--prototype=proto 使用指定用户的配额作为模板,利用复制的方式设置命令行上指定的每个
                                 用户的配额。这是为一组用户设置初始配额的常规做法。
      -r,--remote                利用远程服务器的rpc.rquotad守护进程编辑远程系统的配额。
      -t,--edit-period           编辑每个文件系统的软性时间限制。在老的配额格式中,如果时间限制是
                                 0,使用<linux/quota.h>文件中定义的时间限制作为默认值。在新的配额格
                                 式中,时间限制必须明确指定,系统内核没有设置默认值。时间单位可以
                                 是seconds、minutes、hours或days等。在显示时间限制时,尽可能采用最
                                 大的时间单位,只要数值大于等于1。
      -T,--edit-times            当强制实施软性限制时,编辑用户或用户组的时间限制。可以采用的值是
                                 unset或时间数量与单位。时间单位的说明同“-t”选项。
      -u,--user                  编辑用户的配额(默认做法)。

输出字段

      filesystem                文件系统的安装点。
      blocks                    用户当前使用的磁盘空间数量(单位KB)。
      inodes                    用户当前已有的文件数量(当前信息节点的实际使用情况)。
      soft                      数据块或信息节点数量限额的软性限制。当超越软性配额设置时,用户将
                                会受到警告信息;超过宽限周期后如果一直未采取措施,系统将禁止用户
                                使用附加的磁盘空间与创建新的文件。
      hard                      数据块或信息节点数量配额的硬性限制。如果数值为 0,意味着未加限
                                制。用户能够暂时超过软性配额设置,但不能超过硬性配额设置。

应用实例

1.编辑指定用户的配额,适当地修改数据块、信息节点的软、硬性配额设置。

      # edquota –u gqxing
      Disk quotas for user gqxing (uid 500):
      Filesystem        blocks    soft     hard     inodes    soft    hard
      /dev/sdb2           432     6000     8000        108     600      800

2.利用指定的用户作为配额模块,设置其他用户的配额限制。

      # edquota -p gqxing cathy hwang
      #

3.修改宽限周期。

      # edquota –t
      Grace period before enforcing soft limits for users:
      Time units may be: days, hours, minutes, or seconds
        Filesystem           Block grace period    Inode grace period
        /dev/sdb2                   7days                 7days

eject——弹出移动介质

语法格式

      eject [-fmnpqrsv] [name]
      eject [-nv] -d
      eject [-nv] -a on|off|1|0 [name]
      eject [-nv] -c slot [name]
      eject [-nv] -i on|off|1|0 [name]
      eject [-nv] -t [name]
      eject [-nv] -T [name]
      eject [-nv] -x speed [name]
      eject [-nv] -X [name]
      eject [-h|--help] [-V|--version]

命令简介

利用eject命令,可以在软件控制下弹出移动介质,如CD-ROM、软盘、磁带、JAZ盘或ZIP盘等。eject命令也可用于控制部分多碟CD-ROM控制器,控制设备的自动弹出功能,关闭CD-ROM驱动器的托架与仓门等。

其中,name 是需要弹出的设备文件名。设备文件名可以是一个全路径的设备文件名,如/dev/cdrom,或省略“/dev”的缩写设备文件名,如cdrom。也可以是一个全路径的安装点,或者省略/media或/mnt的相对路径名。如果未指定设备名,默认的设备名是cdrom。

根据设备是CD-ROM、SCSI设备、软盘还是磁带,eject采用4 种不同的弹出方法,参见“-r”、“-s”、“-f”和“-q”选项的说明。通常,eject依次尝试所有4种不同的方法直至设备成功地弹出。

如果设备当前已经安装,在弹出之前eject会首先卸载相应的文件系统。

命令选项

        -a on|1|off|0,--auto      控制某些设备支持的自动弹出模式。启用时,一旦设备关闭即可自动
                                  弹出。
        -c slot,--changerslot      利用这个选项,可以选择ATAPI/IDE CD-ROM控制器中的CD槽。其中,
                                  第一个槽的编号是 0(而非 1)。注意,指定这个选项选择CD槽时,
                                  CD-ROM驱动器不能处于工作状态(已安装的数据CD或正在播放音乐的
                                  CD)。
        -d,--default              显示默认的设备名。
        -f,--floppy               指定应使用软驱的eject命令弹出设备。
        -i on|1|off|0             用于控制是否锁住设备的弹出按钮。启用(选择on或1)时,按下按钮时
                                  不会弹出相应的设备。当携带笔记本电脑时,可以使用这个选项锁住按
                                  钮,防止无意识地碰触而导致设备弹出。
        -m,--no-unmount           这个选项使eject能够与自动安装移动介质且必须总是安装的设备驱动程序
                                  一起工作,同时告诉eject不要尝试卸载给定的设备,即使它是按照
                                  /etc/mtab或/proc/mounts文件的要求安装的。
        -n,--noop                 显示选择的设备,但不会执行弹出等任何动作。
        -p,--proc                 利用这个选项可以使用/proc/mounts替代/etc/mtab文件,同时把“-n”选项
                                  传递给umount命令。
        -q,--tape                 指定应使用磁带机的offline命令弹出设备。
        -r,--cdrom                指定应使用CD-ROM的eject命令弹出设备。
        -s,--scsi                 指定应使用SCSI命令弹出设备。
        -t,--trayclose            利用这个选项可以向CD-ROM驱动器发送一个close命令,关闭CD-ROM
                                  托架。注意,并非所有的设备均支持这个close命令。
        -T,--traytoggle           利用这个选项,当驱动器已经打开时可以发送一个close命令,关闭
                                  CD-ROM托架。当驱动器已经关闭时,可以发送一个eject命令,弹开
                                  CD-ROM托架。注意,并非所有的设备都支持这个选项,因为它使用的是
                                  CD-ROM托架的close命令。
        -v,--verbose              显示命令的处理过程与动作。
        -x speed,--cdspeed=speed   利用这个选项可向CD-ROM驱动器发送一个速度选择命令。其中的speed
                                  参数是一个数字,表示期望选用的速度,如 8 表示 8 倍速,其他依次类
                                  推。0 表示最大速率。注意,并非所有的设备均支持速度选择选项。注
                                  意,每次更换介质时将会清除这个选项。这个选项可以单独使用,也可与
                                  “-t”和“-c”选项一起使用。
        -X,--listspeed            利用这个选项,可以调查CD-ROM驱动器支持的速率。其输出是一个速度
                                  列表,可用作“-x”选项的参数。这个选项仅可用于Linux 2.6.13或更新版
                                  本,早期的版本只能显示一个最大速度。注意,某些驱动器报告的速度并
                                  不准确。

应用实例

1.弹出默认的CD-ROM设备。

        $ eject
        $

2.按照指定的设备名弹出介质。

        $ eject /dev/cdrom
        $

3.按照指定的安装点弹出相应的介质。

        # eject /mnt
        eject: device name is `/mnt'
        eject: expanded name is `/mnt'
        eject: `/dev/sr0' is mounted at `/mnt'
        eject: checking if device "/dev/sr0" has a removable or hotpluggable flag
        eject: unmounting device `/dev/sr0' from `/mnt'
        eject: `/dev/sr0' is not a multipartition device
        eject: trying to eject `/dev/sr0' using CD-ROM eject command
        eject: CD-ROM eject command succeeded
        #

4.选择多碟CD-ROM驱动器中的第4个光盘。

        $ eject -v –c 3 /dev/cdrom

emacs——GNU Emacs编辑器

语法格式

        emacs [-nw] [-qQ] [+line[:column]] [-t file] [-u user] [gnu-opts] [files]
        emacs [--help] [--version]

命令简介

emacs是一个传统的功能丰富的全屏幕编辑器,支持普通的字符终端,也支持X Windows终端。emacs提供大量的交互帮助信息与手段。无论何时,只要按下Ctrl-H组合键即可进入帮助机制,显示相应的帮助信息。其中,按下“Ctrl-H t”组合键即可进入emacs自学界面,其他帮助功能详见“联机帮助”一节。

当需要编辑文件时,输入下列emacs命令即可启动基于文本的常规编辑器(其中的“-nw”必须是第一个选项,如果省略,将会进入基于X Windows界面的编辑器),把指定的文件读入缓冲区,在终端窗口中显示文件前部的内容,在底部显示缓冲区(文件)的名字。如果指定的文件不存在,emacs将显示一个空的屏幕,同时在底部显示“New file”信息。“-q”选项表示禁止读取“ ~/.emacs”用户启动文件,确保使用未定制的标准编辑器功能。

        $ emacs -nw -q file

在emacs的屏幕窗口中,底部是一个反显的条形模式行(Mode Line),其中展示了当前编辑的是哪一个缓冲区(文件),缓冲区中的内容是否已经修改,当前窗口中的内容在缓冲区的位置,如当前行号和已读数据的百分比等。如果拆分成多个窗口,每个窗口都会存在一个模式行。屏幕底部是一个单行的交互信息区(Echo Area),用于显示各种信息,提请用户确认,以及用户输入命令等。

emacs通常总是处于插入模式。当需要输入数据时,可以使用箭头键等移动光标,在光标位置输入数据即可。也可以使用Delete或退格符等键删除字符。利用撤销功能撤销最近一次或最近若干次的修改,校正编辑错误。使用检索命令正向或反向检索、增量或非增量检索,详见“编辑命令”一节的说明。

当需要退出emacs编辑器时,可以按下Ctrl-X与Ctrl-C组合键。如果编辑的文件需要保存,emacs将会在交互信息区提示用户是否需要保存文件。此时可以输入y或n表示保存或放弃,或者直接按下Ctrl-G组合键返回编辑界面。在编辑期间,也可以按下Ctrl-X与Ctrl-S组合键,随时保存已编辑的文件。如果当前的缓冲区没有任何改动,emacs将会在交互信息区给出“No changes need to be saved”的提示信息。

emacs提供大量的编辑命令,这些命令大部分都捆绑到一定的键序列,其中包括C-x(即Ctrl-X,简写作^X)、Meta-x和Meta-C-x等组合键(x可以是任何字母)。在不提供Meta键的终端上,可以使用ESC键或Alt键替代。例如,当需要按下Meta-x键时,可以先按ESC键,释放后再按x键,或者同时按下Alt与x键。至于Meta-C-x键,可以先按ESC键,释放后再按下Ctrl-X组合键。

如果没有绑定的键序列可用,可以按下Meta-x键,然后在交互信息区输入emacs命令。如果命令太长,可用空格或制表键补缺。也可以使用“?”命令查询可用的命令列表。

命令选项

        +line[:column]             直接跳转到指定的行或行与列。从指定的文本行开始编辑文件。注意,加号
                                   与行号之间没有空格,冒号前后也没有空格。这个选项仅适用于文本文件。
        -q,--no-init-file          禁止加载初始化文件。
        -Q,--quick                 等价于指定了“-q”等选项。
        -t file,--terminal file      使用指定的文件取代终端作为标准输入与标准输出。如果存在,这个选项
                                   必须是命令行的第一个选项。
        -u user,--user user          加载用户的初始化文件~/.emacs。
        --debug-init               在处理用户启动文件~/.emacs期间启用Emacs Lisp调试器。这个选项主要
                                   用于调试用户启动文件中的问题。
        --file file,--find-file file,--visit file
                                   编辑指定的文件。这与在命令行上直接指定文件参数一样。
        --multibyte,--no-unibyte   启用多字节模式(默认)。
        -nl,--no-shared-memory     禁止使用共享内存。
        -nw,--no-window-system     禁止使用X Windows界面,从而禁止使用鼠标和菜单。作为一个普通的图
                                   形界面编辑器,直接使用按键方式编辑文件。
        --unibyte,--no-multibyte   启用单字节模式。

编辑命令

文件操作

        ^X^F          提示用户输入文件名,读取其中的数据,置于一个新的缓冲区中,使用文
                      件的名字(不包括扩展名)命名缓冲区。
        ^X^V          提示用户输入文件名,读取其中的数据,置于当前的缓冲区中(覆盖当前缓
                      冲区中的数据)。
        ^X4^F         提示用户输入文件名,读取其中的数据,置于一个新的缓冲区中,使用文
                      件的名字(不包括扩展名)命名缓冲区。针对新的缓冲区,创建一个新的窗
                      口,然后进入该窗口。这个命令将会把原先的窗口分成上下两半(假定原先
                      只有一个窗口)。
        ^X^S          把当前缓冲区中的数据写入原先的文件。
        ^XS           提示用户确认是否保存每个修改过的缓冲区。
        Meta-x set-visited-file-name
                      提示用户输入文件名,使用该文件名命名当前的缓冲区。
        ^X^W          提示用户输入文件名,使用该文件名命名当前的缓冲区,然后把当前缓冲区中的数据
                      写入该文件或另行指定的其他文件中。
        Meta-~       清除当前缓冲区的修改标志。

光标定位

        ^F, ←        光标左移一个字符位置。
        ^B, →        光标右移一个字符位置。
        ^P,↑         光标移至上一行的同一字符位置。
        ^N,↓         光标移至下一行的同一字符位置。
        Meta-f        光标右移一个字(由字母和数字组成的字符串),移至当前或下一个字的字尾。
        Meta-b        光标左移一个字(由字母和数字组成的字符串),移至当前或前一个字的字首。
        ^A            光标移至当前行的行首。
        ^E            光标移至当前行的行尾。
        Meta-r        光标移至终端窗口中间一行的行首。
        ^V            终端窗口内容前(下)滚一屏。
        Meta-v        终端窗口内容后(上)滚一屏。
        Meta-a        把光标移至当前句子的句首。
        Meta-e        把光标移至当前句子的句尾。
        Meta-{        把光标移至当前段落的起始位置。
        Meta-}        把光标移至当前段落的结尾位置。
        Meta-<       把光标移至缓冲区的起始位置。
        Meta->       把光标移至缓冲区的结尾位置。
        ^L            清除并刷新终端窗口,把当前行滚动至终端窗口的中间行。

联机帮助

        ^Ha          提示用户输入字符串,显示包含字符串的命令列表。
        ^H b         列出当前有效的键序列与emacs命令绑定关系列表。
        ^H c keyseq  显示绑定到指定键序列的emacs命令的名字。
        ^H k keyseq  显示绑定到指定键序列的emacs命令文档的名字。
        ^H i         从顶级菜单开始运行info命令(使用q)退出。
        ^H l         显示最近输入的100个字符。
        ^H n         显示emacs新闻文件。
        ^H t         进入emacs自学界面。
        ^Hw          提示用户输入命令的名字,显示绑定到指定命令的键序列(如果已绑定)。

删除命令

        退格键        删除光标位置之前的字符。
        ^D,Delete     删除光标位置的字符。
        Meta-d        删除从光标位置开始至当前字字尾间的字符串。
        Meta-退格键   删除从光标位置开始至前一个字字首间的字符串。
        Meta-k        删除从光标位置开始直至句尾间的任何字符。
        ^K            删除从光标位置开始直至行尾间(不包括换行符)的任何数据。
        ^U1^K         删除从光标位置开始直至行尾(包括换行符)的任何数据。
        ^U0^K         删除从光标位置左边开始直至行首间的任何数据。
        Meta-z char   删除从光标位置开始直至第一个指定字符之间的任何数据。
        Meta-w        把当前区域中的数据复制到删除环形缓冲区(但不会从缓冲区中删除区域内的数据)。
        ^W            删除当前缓冲区内已设区域中的数据。
        ^Y            召回最近删除的数据,写到当前缓冲区的光标位置。
        Meta-y        清除刚召回的数据,旋转删除环形缓冲区,召回下一个数据。注意,这个命令只能在
                      Ctrl-Y之后使用。
        ^_            撤销最近一次的改动。
        ^_^_          撤销最近两次的改动。
        ^Q            插入特殊字符,如控制字符或3个八进制数值编码表示的字符等。

窗口操作命令

        ^Xb           提示用户输入缓冲区的名字,在当前窗口中切换到默认或指定的缓冲区。
        ^X2           把当前的窗口纵向一分为二。
        ^X3           把当前的窗口横向一分为二。
        ^Xo           选择其他窗口。
        Meta-C-v      滚动其他窗口。
        ^X 4b         提示用户输入缓冲区的名字,在其他窗口选择该缓冲区。
        ^X 4f         提示用户输入文件的名字,在其他窗口选择该文件。
        ^X0           关闭当前的窗口。
        ^X1           保留当前的窗口,关闭其他所有的窗口。
        ^X shrink-window
                      使当前的窗口缩短一行。
        ^X^           使当前的窗口增高一行。
        ^X{           使当前的窗口缩进一列。
        ^X}           使当前的窗口扩展一列。

缓冲区操作命令

        ^X^S        把当前缓冲区中的数据写入相关的文件。
        ^X^F        提示用户输入文件名,打开该文件。
        ^Xb         提示用户输入缓冲区的名字,然后选中相应的缓冲区。如果缓冲区不存在,则创建新
                    的缓冲区。
        ^X 4b       提示用户输入缓冲区的名字,在另外一个窗口显示缓冲区中的数据。
        ^X^B        创建名为“Buffer List”的缓冲区,在另外一个窗口中显示其内容。现有的窗口仍然
                    存在且仍为当前窗口,但新的窗口可能会叠加在上方。在“Buffer List”缓冲区中,
                    显示每个缓冲区中的名字、大小、编辑模式或最初的文件名。
        Meta-x rename-buffer
                    提示用户输入一个新的缓冲区名,把新的缓冲区名赋予当前缓冲区。
        Meta-x append-to-buffer
                    提示用户输入缓冲区的名字,把当前区域中的数据附加到指定缓冲区的后面。
        Meta-x prepend-to-buffer
                    提示用户输入缓冲区的名字,把当前区域中的数据插入到指定缓冲区的前面。
        Meta-x copy-to-buffer
                    提示用户输入缓冲区的名字,删除指定缓冲区中的数据,把当前区域中的数据复制到
                    指定的缓冲区。
        Meta-x insert-buffer
                    提示用户输入缓冲区的名字,把其中的全部数据插入到当前缓冲区的光标位置。
        ^Xk         提示用户输入缓冲区的名字,删除指定的缓冲区。
        Meta-x kill-some-buffers
                    遍历缓冲区表,从而提供删除每个缓冲区的机会。

行操作命令

        Meta-x occur   提示用户输入正则表达式,把包含匹配正则表达式的每一行写入名为Occur的缓冲
                    区中。
        Meta-x delete-matching-lines
                    提示用户输入正则表达式,从光标的当前位置开始,正向删除匹配正则表达式的每
                    一行。
        Meta-x delete-non-matching-lines
                    提示用户输入正则表达式,从光标的当前位置开始,正向删除不匹配正则表达式的每
                    一行。

检索命令

        ^S           提示用户开始执行增量检索,逐步输入字符,正向检索匹配的字符串。
        ^S CR        提示用户输入完整的字符串,按下Enter键之后开始正向检索。
        ^R           提示用户开始执行增量检索,逐步输入字符,反向检索匹配的字符串。
        ^R CR        提示用户输入完整的字符串,按下Enter键之后开始反向检索。
        M-C-s        提示用户开始执行增量检索,逐步输入正则表达式,正向检索匹配的字符串。
        M-C-s CR     提示用户输入完整的正则表达式,按下Enter键之后开始正向检索。
        Meta-x isearch-backward-regexp
                     提示用户开始执行增量检索,逐步输入正则表达式,反向检索匹配的字符串。
        Meta-x isearch-backward-regexp CR
                     提示用户输入完整的正则表达式,按下Enter键之后开始反向检索。

替换与响应命令

        Meta-x replace-string
                      分两次提示用户输入两个字符串,从标记开始正向检索,使用第二个字符串替换发现
                      的第一个字符串实例。在命令执行的起始位置设置标记。
        Meta-%, Meta-x query-replace
                      同上,但每个替换都需要事先提请用户确认。
        Meta-x query-regexp
                      分两次提示用户分别输入一个正则表达式与字符串,从标记开始正向检索,使用字符
                      串替换匹配正则表达式的字符串实例。在命令执行的起始位置设置标记。
        Meta-x query-replace-regexp
                      同上,但每一个替换都需要事先提请用户确认。
        CR            退出整个检索与替换操作。
        退格键        认可当前的替换,继续下一个替换确认。
        Delete        禁止执行当前的替换,继续下一个替换确认。
        ,             认可当前的替换,显示替换结果,提示用户输入另外一个命令。
        .             认可当前的替换,但检索与替换到此为止。
        !             认可当前的替换,其余的所有替换无须确认自动替换即可。

区域操作命令

        ^@          在当前的光标位置设置标记,从而设定区域的边界。
        Meta-W      把区域中的数据复制到删除环形缓冲区。
        ^W          删除区域中的数据。
        Meta-x print-region
                    复制区域中的数据,提交给打印服务打印。
        Meta-x append-to-buffer
                    提示用户输入缓冲区的名字,把区域中的数据附加到该缓冲区。
        ^X^U        把当前区域中的数据转换成相应的大写字母。
        ^X^L        把当前区域中的数据转换成相应的小写字母。

字母大小写转换命令

        Meta-l        把光标右边的单字或光标位置开始的当前单字转换成小写字母。
        Meta-u        把光标右边的单字或光标位置开始的当前单字转换成大写字母。
        ^X^L          把区域中的数据转换成相应的小写字母。
        ^X^U          把区域中的数据转换成相应的大写字母。

运行Shell命令

        Meta-!        提示用户输入Shell命令,按下Enter键后立即执行,显示输出结果。
        ^U Meta-!     提示用户输入Shell命令,按下Enter键后立即执行,把命令的输出结果插入当前的光
                      标位置。
        Meta-|        提示用户输入Shell命令,把指定区域中的数据作为命令的输入,执行命令并显示其
                      输出结果。
        ^U Meta-|     提示用户输入Shell命令,把指定区域中的数据作为命令的输入,执行命令,删除区域
                      中的数据,把命令的输出结果插入区域中。

命令简介

1.利用emacs编辑器,在普通的终端窗口中编辑文件。

        $ emacs -nw mycode.c

env——在修改的环境中运行程序

语法格式

        env [-0i] [-] [-u name] [var=value] … [cmd [args]]
        env [--help] [--version]

命令简介

利用env命令,可以在继承的运行环境的基础上,增加或修改变量设置,在定制的运行环境中运行指定的命令。其中,var是现有或新增的变量,value是赋予变量的值,必要时可以同时设置多个变量。cmd可以是系统提供的任何外部命令,args是选用的命令参数。如果未指定命令,env命令将会逐行显示当前运行环境的所有变量及其设置,其效果类似于不加任何选项与参数的set命令。

在env命令行中,第一个不包含等号“=”的参数即为需要调用的命令,是需要按照命令检索路径PATH检索的外部命令,余下的命令行参数是传递给指定命令的参数。

变量的修改优先于命令的检索。因此,修改PATH变量将会影响到指定命令的检索,在减少PATH变量的命令检索路径时尤其需要慎重,PATH变量不能为空,尤其不能忽略关键的目录,如/bin等。

env命令的主要用途是利用给定的工作环境(包括继承、新增以及修改后的环境变量设置),运行指定的命令,尤其是按照命令检索路径PATH的定义运行外部命令,从而绕过Shell的内置命令。例如,bash提供echo、expr、kill、printf、pwd、read及test等内置命令,与外部命令同名。在Shell解释处理命令时,内置命令是优先于外部命令的,如果想要刻意运行外部命令,一种方法是输入全路径名,如/usr/bin/expr。如果不知道路径名,另外一种办法是利用env命令,如“env expr”。

命令选项

        -0,--null                      使用NULL字符取代换行符,作为每行输出数据的行终止符。
        -i,--ignore-environment        忽略继承的环境,从一个空的运行环境开始。单独一个连字符“-”
                                       等价于“-i”选项。
        -u name,--unset=name            从运行环境中删除指定的变量。

应用实例

1.在包含当前目录的命令检索路径的环境中运行echo命令,确保运行的echo命令是外部的/bin/echo命令,而非Shell内置的echo命令。

        $ env PATH=/bin:/usr/bin:. echo "some string"
        some string
        $

2.显示当前的运行环境。

        $ env

exportfs——维护NFS共享目录或文件系统资源

语法格式

        exportfs [-avi] [-o options] [client:/path …]
        exportfs -r [-v]
        exportfs [-av] -u [client:/path …]
        exportfs [-v]
        exportfs -f

命令简介

exportfs命令用于维护NFS服务器当前提供的共享目录或文件系统,如公布所有的共享目录,公布新增的共享目录,以及撤销已公布的共享目录等。

系统提供的共享目录位于/etc/exports文件,由系统管理员维护。当前已公布的共享目录位于/var/lib/nfs/etab文件,通过运行“exportfs -a”命令,利用exports文件中列举的目录进行初始化。当客户机请求安装某个共享目录时,mountd将会读取这个文件,然后提交给系统内核资源公布表(即安装在/proc/fs/nfsd或/proc/fs/nfs目录的nfsd虚拟文件系统)。因此,内核资源公布表维护的是当前活动的共享目录。

但是,系统管理员也可以利用exportfs命令,在不修改/etc/exports文件的情况下,以微调的方式,临时增加或撤销部分共享目录或文件系统资源。

当需要公布共享目录时,可利用第一种语法格式,把新的共享目录设置加到etab文件与系统内核的资源公布表中。例如,当运行“exportfs -a”命令时,将会把/etc/exports文件中设定的所有共享目录加到etab文件中,然后再加到内核的资源公布表中。

client:/path”参数指定了准备公布的共享目录,以及向哪一个客户机公布。如果公布的共享目录人人可用,只需指定“:/path”即可。

利用第二种语法格式,能够以当前的/etc/exports文件为准,重新公布共享目录。

若想撤销已公布的共享目录,可利用第三种语法格式,撤销当前已公布的共享目录。例如,当运行“exportfs -ua”命令时,将会以etab文件中的当前设置为准,首先删除内核资源公布表中的所有共享目录,然后彻底清除etab文件。这将有效地关闭并停止所有的NFS活动。

若想仅仅删除某个客户机及相关的共享目录,可以采用“client:/path”形式,从etab文件及内核资源公布表中删除指定的客户机/目录对。

若想查询已公布的共享目录,可选用第四种语法格式。运行exportfs命令时如果不加任何选项,可以显示当前已公布的共享目录。如果指定了“-v”选项,将会额外给出每个共享目录的安装选项等信息。

命令选项

        -a            公布或取消所有的共享目录资源。
        -o options     采用在/etc/exports文件中设置安装选项的方法,指定公布共享目录的安装选项,如ro
                     (只读)、rw(读写)、async(异步)、sync(同步)、root_squash(把超级用户映
                      射为匿名用户)以及wdelay(延迟写)等。多个安装选项之间需加逗号“,”分隔符。
                      利用“-o”选项,可以修改/etc/exports文件中设置的安装选项。默认的安装选项是
                      “sync,ro,root_squash,wdelay”。有关安装选项的完整说明,详见exports(5)手册页。
        -i            忽 略 /etc/exports  文 件 中 的 安 装 选 项 设 置,改 用 默 认 的 安 装 选 项
                     (“sync,ro,root_squash,wdelay”)及命令行中指定的选项。
        -r            以/etc/exports文件为准,重新公布共享目录。即按照/etc/exports文件的变化,增加、
                      修改或删除/var/lib/nfs/etab文件中的相应目录,同步etab文件,并以同样的方式更新
                      系统内核的资源公布表。
        -u            撤销已公布的共享目录资源。
        -f            腾空内核的资源公布表,以“全新”的方式重新开始。
        -v            详细显示模式。在公布或撤销共享目录资源时,显示实际发生的动作。在显示当前的
                      公布列表时,也显示相关的选项。

应用实例

1.利用下列命令,把/etc/exports文件中公布的所有共享目录加到/var/lib/nfs/etab文件中,并最终反映到系统内核的资源公布表中。

        # exportfs –a
        #

2.假定/share/docs是一个共享目录,仅供sinosoft客户机使用,读写文件时可以采用异步方式,超级用户也无须匿名访问,可以采用下列方式公布临时提供的目录资源。

        # exportfs -o rw,async,no_root_squash sinosoft:/share/docs
        #

3.如想撤销先前公布的临时目录资源,可以使用下列命令。

        # exportfs -u sinosoft:/share/docs

4.若想撤销/etc/exports文件中已公布的所有目录资源,可以使用下列命令。

        # exportfs -au
        # exportfs -v
        #

expr——计算表达式

语法格式

        expr expression
        expr [--help] [--version]

命令简介

expr命令用于计算指定的表达式,把计算结果写到标准输出。其中,expression可以是下列逻辑运算表达式、字符串比较表达式、整数算术运算表达式或模式匹配表达式等:

        arg1\|arg2              如果arg1既非NULL,也非0,返回arg1,否则返回arg2arg1\&arg2              如果arg1arg2均非NULL或0,返回arg1,否则返回0。
        arg1\<arg2             如果前者小于后者,返回1,否则返回0。
        arg1\<=arg2            如果前者小于或等于后者,返回1,否则返回0。
        arg1=arg2               如果两者相等,返回1,否则返回0。
        arg1==arg2              同上。
        arg1!=arg2              如果两者不等,返回1,否则返回0。
        arg1\>=arg2            如果前者大于或等于后者,返回1,否则返回0。
        arg1\>arg2             如果前者大于后者,返回1,否则返回0。
        arg1+arg2               返回两者算术运算之和。
        arg1-arg2               返回两者算术运算之差。
        arg1\*arg2              返回两者的算术乘积。
        arg1/arg2               返回两者整除运算的结果(运算结果仅保留整数部分)。
        arg1 % arg2             返回两者模运算的结果。
        str:regexp              从给定字符串str的第一个字符开始执行正则表达式regexp的模式匹配,如
                                果匹配成功,且正则表达式含有“\(”与“\)”子表达式,则返回匹配子表
                                达式的字符串,否则返回匹配表达式的字符个数。如果匹配失败,且正则
                                表达式含有“\(”与“\)”子表达式,则返回空串,否则返回 0。注意,这
                                里只能返回匹配第一个子表达式“\(...\)”的字符串。仅当使用了表达式组
                                合运算符时,后续子表达式才有意义。此外,“\(...\)”子表达式前后必须
                                加双引号。
        match str regexp        意义同上。
        substr str pos length   从指定的字符位置pos开始,从字符串str中抽取指定长度length的子串。
                                字符串的起始字符位置为1。
        index str chars         从给定的字符串中返回发现给定字符的位置,否则返回0。
        length str              返回给定字符串的长度。
        +token                  把给定的记号当作字符串处理,即使是一个关键字(如match)或运算符(如
                                除号“/”)。
        \(expression\)          返回表达式的计算结果。

在上述表达式中,操作数或者是一个整数,或者是一个字符串。整数前面可以有负号“-”,表示负数(但不能用作表达式中的第一个操作数)。如果arg1arg2都是整数,采用算术比较运算,否则按字符编码顺序进行比较。

如果表达式的计算结果既非空串,也非0,expr命令返回结束状态0。如果表达式的计算结果是空串或0,expr命令的结束状态是1。

expr命令仅支持基本的正则表达式,给定的正则表达式蕴含着一个“^”前缀,表示仅考虑从字符串第一个字符开始的子串是否匹配。如果存在,正则表达式中的运算符“*”、“\+”、“\?”和“\|”分别表示匹配前一项0次或多次、一次或多次、0次或一次,以及交替匹配等。

应用实例

1.利用expr命令测试字符串表达式。

      $ TIMEZONE=CST
      $ expr "$TIMEZONE" = "CST"
      1
      $ echo $?
      0
      $ expr "$TIMEZONE" = "GMT"
      0
      $ echo $?
      1
      $

2.利用expr命令检索字符串。

      $ expr apple : "\(ap\+le\)"
      apple
      $