常用工具

目 录

  1. 常用工具
    1. shell命令
      1. 用户常用
      2. 文件或目录处理
      3. 文件内容操作
      4. 文件传输
      5. 文件权限的设定
      6. 进程控制
      7. 命令管道
      8. 输入输出控制
    2. 编辑
      1. Vi
      2. Emacs
    3. 归档和压缩
      1. tar和gzip
      2. rpm
      3. 其他
        1. .arc
        2. .arj
        3. .lzh (.lha)
        4. .rar
        5. .sit
        6. .zip
        7. .zoo
    4. 邮件
    5. 快捷键


常用工具

[目录]


shell命令

    bash 是大多数Linux系统的缺省外壳。它克服了Bourne 外壳的缺点,又和Bourne 外壳完全兼容。

Bash有以下的特点:
    ·补全命令行。当你在bash 命令提示符下输入命令或程序名时,你不必输全命令或程序名,按Tab 键,bash将自动补全命令或程序名。
    ·通配符。在bash下可以使用通配符* 和?。*可以替代多个字符,而?则替代一个字符。
    ·历史命令。bash 能自动跟踪你每次输入的命令,并把输入的命令保存在历史列表缓冲区。缓冲区的大小由HISTSIZE变量控制。当你每次登录后,home 目录下的.bash_history 文件将初始化你的历史列表缓冲区。你也能通过history 和fc 命令执行、编辑历史命令。
    ·别名。在bash下,可用alias 和unalias 命令给命令或可执行程序起别名和清除别名。这样你可以用自己习惯的方式输入命令。
    ·输入/输出重定向。输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。输出重定向更为常用,它经常用于将命令的结果输入到文件中,而不是屏幕上。输入重定向的命令是<,输出重定向的命令是>。
    ·管道。管道用于将一系列的命令连接起来。也就是把前面的命令的输出作为后面的命令的输入。管道的命令是|。
    ·提示符。bash 有两级提示符。第一级提示符就是你登录外壳时见到的,缺省为$。你可以通过重新给ps1变量赋值来改变第一级提示符。当bash需要进一步提示以便补全命令时,会显示第二级提示符。第二级提示符缺省为>,你可以通过重新给ps2变量赋值来改变第二级提示符。一些特殊意义的字符也可以加入提示符赋值中。
    ·作业控制。作业控制是指在一个作业执行过程中,控制执行的状态。你可以挂起一个正在执行的进程,并在以后恢复该进程的执行。按下Ctrl+Z 挂起正在执行的进程,用bg命令使进程恢复在后台执行,用fg命令使进程恢复在前台执行。

    这里列出的仅仅是最常用的bash命令子集,其他不太常用,但是在某方面有特殊用途的命令会在这个技术问题的目录下专门提到(例如:ncheck命令会在文件系统维护里介绍)

[目录]


用户常用

查找
    find命令用于搜索目录树,并对目录树上的所有文件执行某种操作,参数是目录名表(指出从哪些起点开始搜索),还可给出一个或多个选项,规定对每个文件执行什么操作。
    find / -print 将列出当前工作目录下的目录树的每一个文件。
    find / -user bob -print 将列出在系统中可找到的属于bob用户的所有文件。
    find /usr/bob -perm 666 -print 将列出/usr/bob目录树下所有存取许可为666的文件。若将666改为-666则将列出所有具有包含了666在内的存取许可方式的文件(如777)。
    find /usr/bob -type b -print 将列出/usr/bob目录树下所有块特别文件(c为字符特别文件)。
    find / -user root -perm -4000 -exec ls -l {} \; 是一个较复杂的命令,-exec COMMAND \;允许对所找到的每个文件运行指定的命令COMMAND。若COMMAND中含有{ },则{ }将由f i n d所找到的文件名替换。COMMAND必须以\ ;结束。
    各选项可组合使用以达到更强的功能。

远程登陆
语法:rlogin 主机名[-1 用户名]
例如:
rlogin doc 远程登录到工作站doc 中。
rlogin doc -l user 使用user 帐号登录到工作站doc 中。

语法:telnet 主机名或telnet IP地址
例如:
telnet doc
telnet 140.109.20.251

更改密码
语法: passwd
Old password: <输入旧密码>
New password: <输入新密码(最好为6~8字,英文字母与数字混合) >
Retype new password: <再输入一次密码>

检查自己所属的工作组名称
语法:groups

查看系统中的用户
语法: who 或finger
语法: who
语法: finger 用户名或finger 用户名@域名

改变用户名
语法: su 用户名
例如:
su user 进入用户user 的帐号。
passwrod : <输入用户user 的密码>

查看自己用户名
语法: whoami 查看登录时的用户名。
语法: whoami 查看当前的用户名。若已执行过su命令,则显示出此用户的用户名。

查看当前系统上所有工作站的用户
语法: rusers
按Ctrl+C> 结束

与某工作站上的用户交谈
语法: talk 用户名@主机名或talk 用户名@ I P地址
例如:
1) 可先利用rusers 指令查看网络上的用户;
2) 假设自己的帐号是u84987 ,在工作站indian 上使用,现在想要与doc 上的u84123 交谈。
talk u84123@doc
此时屏幕上将会出现等待画面

在对方( u84123 )屏幕上将会出现下列信息:
Message from Talk_Daemon@Local_host_name at xx:xx
talk: connection requested by u84987@indian
talk: respond with: talk u84987@indian
此时对方(u84123) 必须执行talk u84987@indian 即可互相交谈。最后可按Ctrl + C结束。

显示文档帮助
语法: man 命令
例如:
man ls

语法:howto 主题
例如:
howto man


[目录]


文件或目录处理

列出文件或目录下的文件名。
语法: ls [-atFlgR] [name]
name :文件名或目录名。
例如:
ls 列出目前目录下的文件名。
ls -a 列出包括以.开始的隐藏文件的所有文件名。
ls -t 依照文件最后修改时间的顺序列出文件名。
ls -F 列出当前目录下的文件名及其类型。以/ 结尾表示为目录名,以* 结尾表示为
可执行文件,以@ 结尾表示为符号连接。
ls -l 列出目录下所有文件的权限、所有者、文件大小、修改时间及名称。
ls -lg 同上,并显示出文件的所有者工作组名。
ls -R 显示出目录下以及其所有子目录的文件名。

改变当前工作目录
语法:cd [name]
name:目录名、路径或目录缩写。
例如:
cd 改变目录位置至用户登录时的工作目录。
cd dir1 改变目录位置至d i r 1目录下。
cd ~user 改变目录位置至用户的工作目录。
cd .. 改变目录位置至当前目录的父目录。
cd ../user 改变目录位置至相对路径user 的目录下。
cd /../.. 改变目录位置至绝对路径的目录位置下。
cd ~ 改变目录位置至用户登录时的工作目录。

复制文件或目录
语法: cp [-r] 源地址目的地址
例如:
cp file1 file2 将文件file1 复制成file2。
cp file1 dir1 将文件file1 复制到目录dir1 下,文件名仍为file1。
cp /tmp/file1 . 将目录/tmp 下的文件file1 复制到当前目录下,文件名仍为file1。
cp /tmp/file1 file2 将目录/tmp 下的文件file1 复制到当前目录下,文件名为file2。
cp -r dir1 dir2 复制整个目录。

移动文件目录或修改名称
语法: mv 源地址目的地址
例如:
mv file1 file2 将文件file1更名为file2。
mv file1 dir1 将文件file1移到目录dir1 下,文件名仍为file1。
mv dir1 dir2 将目录dir1 更改为目录dir2。

建立新的目录
语法: mkdir 目录名
例如:
mkdir dir1 建立一新目录dir1。

删除目录
语法: rmdir 目录名或rm 目录名
例如:
rmdir dir1 删除目录dir1,但dir1 下必须没有文件存在,否则无法删除。
rm -r dir1 删除目录dir1及其子目录下所有文件。

删除文件
语法: rm 文件名
例如:
rm file1 删除文件名为file1 的文件。
rm file? 删除文件名中有五个字符且前四个字符为file 的所有文件。
rm f* 删除文件名中以f 为字首的所有文件。

列出当前所在的目录位置
语法: pwd

查看文件内容
语法: cat 文件名
例如:
cat file1 以连续显示方式,查看文件名file1 的内容。

分页查看文件内容
语法: more 文件名或cat 文件名| more
例如:
more file1 以分页方式查看文件名file1 的内容。
cat file1 | more 以分页方式查看文件名file1 的内容。

查看目录所占磁盘容量
语法: du [-s] 目录
例如:
du dir1 显示目录dir1 的总容量及其子目录的容量(以KB 为单位)。
du -s dir1 显示目录dir1 的总容量。

文件的链接
同一文件,可拥有一个以上的名称,也就是把一个文件进行链接。
语法:ln 老文件名新文件名
例如:
ln file1 file2 将文件file2链接至文件file1。
语法:ln -s 老文件名新文件名
例如:
ln -s file3 file4 将文件file4 链接至文件file3。


[目录]


文件内容操作

改变文件或目录的最后修改时间
语法:touch name
name:文件名或目录名。
2.3.21 文件中字符串的查寻
语法:grep string file
例如:
grep abc file1 寻找文件f i l e 1中包含字符串abc 所在行的文本内容。

查寻文件或命令的路径
语法:whereis command 显示命令的路径。
语法:which command 显示命令的路径,及使用者所定义的别名。
语法:whatis command 显示命令功能的摘要。
语法:find search-path -name filename -print 搜寻指定路径下某文件的路径。
例如:
find / -name file1 -print 自根目录下寻找文件file1 的路径。

比较文件或目录的内容
语法:diff [-r] name1 name2
name1 name2:可同时为文件名或目录名。
例如:
diff file1 file2 比较文件file1 与file2 内各行的不同之处。
diff -r dir1 dir2 比较目录dir1 与dir2 内各文件的不同之处。

文件打印输出
用户可用.login 文件中的setenv PRINTER来设定打印机名。
例如:
setenv PRINTER sp 设定自sp 打印机打印资料。

一般文件的打印
语法:lpr [-P打印机名] 文件名
例如:
lpr file1 或lpr -Psp file1 自sp打印机打印文件file1。
语法:enscript [-P打印机名] 文件名
例如:
enscript file3 或enscript -Psp file3 自sp打印机打印文件file3。

troff 文件的打印
语法:ptroff [-P打印机名] [-man][-ms] 文件名
例如:
ptroff -Psp -man /usr/man/man1/lpr1 以troff 格式,自sp 打印机打印lpr1 命令的使用说明。


[目录]


文件传输

1. 拷贝文件或目录至远程工作站
语法: rcp [-r] 源地址主机名:目的地址
源地址文件名、目录名或路径。
主机名工作站名。目的地址路径名称。
例如:
rcp file1 doc:/home/user 将文件f i l e 1拷贝到工作站doc 路径/home/user 下。
rcp -r dir1 doc:/home/user 将目录d i r 1拷贝到工作站doc 路径/home/user 下。

2. 自远程工作站,拷贝文件或目录
语法: rcp [-r] 主机名:源地址目的地址
主机名工作站名。
源地址路径名。
目的地址、文件名、目录名或路径。
例如:
rcp doc:/home/user/file1 file2 将工作站d o c路径/home/user 下的目录d i r 1,拷贝到当前工作站的目录下,目录名仍为d i r 1。
rcp -r doc:/home/user/dir1 . 将工作站doc 路径/home/user 下的目录d i r 1,拷贝到当前工作站的目录下,目录名仍为d i r 1。

3. 本地工作站与远程工作站之间的文件传输
必须拥有远程工作站的帐号及密码,才可进行传输工作。
语法: ftp 主机名或ftp ip地址
例如:
ftp doc 与远程工作站doc 之间进行文件传输。
Name (doc:user-name): <输入帐号>
Password (doc:user-password): <输入密码>
ftp> help 列出ftp 文件传输时可使用的命令。
ftp> !ls 列出本地工作站当前目录下的所有文件名。
ftp> !pwd 列出本地工作站当前所在的目录位置。
ftp> ls 列出远程工作站当前目录下的所有文件名。
ftp> dir 列出远程工作站当前目录下的所有文件名。
ftp> dir . |more 分页列出远程工作站当前目录下的所有文件名。
ftp> pwd 列出远程工作站当前所在的目录位置。
ftp> cd dir1 更改远程工作站的工作目录位置至dir1 之下。
ftp> get file1 将远程工作站的文件f i l e 1拷贝到本地工作站中。
ftp> put file2 将本地工作站的文件f i l e 2拷贝到远程工作站中。
ftp> mget *.c 将远程工作站中扩展文件名为c 的所有文件拷贝到本地工作站中。
ftp> mput *.txt 将本地工作站中扩展文件名为txt 的所有文件拷贝到远程工作站中。
ftp> prompt 切换交互式指令(使用mput/mget 时不是每个文件皆询问y e s / n o )。
ftp> quit 结束ftp 工作。
ftp> bye 结束ftp 工作。
注意从PC与工作站间的文件传输也可透过在PC端的FTP指令进行文件传输,指令用法与上述指令大致相同。

[目录]


文件权限的设定

改变文件或目录的读、写、执行权限
语法:chmod [-R] mode name
name:文件名或目录名。
mode: 3个8位数字或rwx的组合。r-read (读),w-write (写),x-execute (执行),u-user (当前用户),g-group(组),o-other(其他用户)。
例如:
chmod 755 dir1 对于目录dir1,设定成任何使用者皆有读取及执行的权利,但只有所
有者可做修改。
chmod 700 file1 对于文件file1,设定只有所有者可以读、写和执行的权利。
chmod u+x file2 对于文件file2,增加当前用户可以执行的权利。
chmod g+x file3 对于文件file3,增加工作组使用者可执行的权利。
chmod o-r file4 对于文件file4,删除其他使用者可读取的权利。

改变文件或目录的所有权
语法:chown [-R] 用户名name
name:文件名或目录名。
例如:
chown user file1 将文件file1 改为用户user 所有。
chown -R user dir1 将目录dir1及其子目录下面的所有文件改为用户user 所有。


改变文件或目录工作组所有权
语法:chgrp [-R] 工作组名name
name:文件名或目录名
例如:
chgrp vlsi file1 将文件file1 的工作组所有权改为vlsi 工作组所有。
chgrp -R image dir1 将目录dir1及其子目录下面的所有文件,改为image 工作组所有。

[目录]


进程控制

1.查看系统中的进程
语法:ps [-aux]
例如:
p s或ps -x 查看系统中,属于自己的进程。
ps -au 查看系统中,所有用户的进程。
ps -aux 查看系统中,包含系统内部的及所有用户的进程。

2. 结束或终止进程
语法:kill [-9] PID
PID:利用ps 命令所查出的进程号。
例如:
kill 456或kill -9 456 终止进程号为456 的进程。

3. 在后台执行进程的方式
语法:命令&
例如:
cc file1.c & 将编译file1.c 文件的工作置于后台执行。
语法:按下Control+Z键,暂停正在执行的进程。键入bg命令,将暂停的进程置于后台继
续执行。
例如:
cc file2.c
^ Z
Stopped
bg

4. 查看正在后台中执行的进程
语法:jobs

5. 结束或终止后台中的进程
语法:kill %n
n:利用jobs命令查看出的后台作业号
例如:
kill % 终止在后台中的第一个进程。
kill %2 终止在后台中的第二个进程。

[目录]


命令管道

语法:命令1 | 命令2 将命令1的执行结果送到命令2,做为命令2的输入。
例如:
ls -Rl | more 以分页方式列出当前目录及其子目录下所有文件的名称。
cat file1 | more 以分页方式列出文件file1 的内容。


[目录]


输入输出控制

1. 标准输入的控制
语法:命令< 文件将文件做为命令的输入。
例如:
mail -s “mail test” [email protected] < file1 将文件file1 当做信件的内容,主
题名称为mail test,送给收信人。

2. 标准输出的控制
语法:命令> 文件将命令的执行结果送至指定的文件中。
例如:
ls -l > list 将执行“ls -l” 命令的结果写入文件list 中。
语法:命令>! 文件将命令的执行结果送至指定的文件中,若文件已经存在,则覆盖。
例如:
ls -lg >! list 将执行“ls - lg” 命令的结果覆盖写入文件list 中。
语法:命令>& 文件将命令执行时屏幕上所产生的任何信息写入指定的文件中。
例如:
cc file1.c >& error 将编译file1.c 文件时所产生的任何信息写入文件error 中。
语法:命令>> 文件将命令执行的结果附加到指定的文件中。
例如:
ls - lag >> list 将执行“ls - lag” 命令的结果附加到文件list 中。
语法:命令>>& 文件将命令执行时屏幕上所产生的任何信息附加到指定的文件中。
例如:
cc file2.c >>& error 将编译file2.c 文件时屏幕所产生的任何信息附加到文件error 中。


[目录]


编辑

[目录]


Vi

Vi 输入模式

要如何输入资料呢?有好几个指令可以进入输入模式:

新增 (append)
a 从游标所在位置後面开始新增资料,游标後的资料随新增资料向後移动。
A 从游标所在列最後面的地方开始新增资料。

插入 (insert)
i 从游标所在位置前面开始插入资料,游标後的资料随新增资料向後移动。
I 从游标所在列的第一个非空白字元前面开始插入资料。

开始 (open)
o 在游标所在列下新增一列并进入输入模式。
O 在游标所在列上方新增一列并进入输入模式。

也许文字叙述看起来有点繁杂,但是只要实际操作一下马上可以了解这些操作方式。实务很重要,尤其是电脑方面的东西随时可以尝试及验证结果。极力建议实际去使用它而不要只是猛 K 文件,才有事半功倍的效用。(注:此段为废话。)


Vi 基本编辑

配合一般键盘上的功能键,像是方向键、[Insert] 、[Delete] 等等,现在你应该已经可以利用 vi 来处理文字资料了。当然 vi 还提供其他许许多多功能让文字的处理更形方便,有兴趣的看倌请继续。

在继续下去之前先来点 BCC 吧。电脑有许多厂牌,不同的硬体及作业系统。PC 也不是仅仅只有 IBM PC 及其相容品而已。事实上,包括键盘,终端机等等往往都有不同的规格。这代表什麽?

在文书编辑软体上会遇这样的问题,某些电脑的键盘上没有特定的几个功能键!那麽不就有某些功能不能用了?这个问题在 Unix 系统上也一样,几乎各大电脑厂商都有自己的 Unix 系统,而 vi 的操作方法也会随之有点出入。我们固然可以用 PC 的键盘来说明 vi 的操作,但是还是得提一下这个问题。


删除与修改

何谓编辑?在这里我们认为是文字的新增修改以及删除,甚至包括文字区块的搬移、复制等等。这里先介绍 vi 的如何做删除与修改。(注意:在 vi 的原始观念里,输入跟编辑是两码子事。编辑是在指令模式下操作的,先利用指令移动游标来定位要进行编辑的地方,然後才下指令做编辑。)

x   删除游标所在字元。
dd  删除游标所在的列。
r   修改游标所在字元,r 後接著要修正的字元。
R   进入取代状态,新增资料会覆盖原先资料,直到按 [ESC] 回到指令模式下为止。
s   删除游标所在字元,并进入输入模式。
S   删除游标所在的列,并进入输入模式。

其实呢,在 PC 上根本没有这麽麻烦!输入跟编辑都可以在输入模式下完成。例如要删除字元,直接按 [Delete] 不就得了。而插入状态与取代状态可以直接用 [Insert] 切换,犯不著用什麽指令模式的编辑指令。不过就如前面所提到的,这些指令几乎是每台终端机都能用,而不是仅仅在 PC 上。

在指令模式下移动游标的基本指令是 h, j, k, l 。想来各位现在也应该能猜到只要直接用 PC 的方向键就可以了,而且无论在指令模式或输入模式下都可以。多容易不是。

当然 PC 键盘也有不足之处。有个很好用的指令 u 可以恢复被删除的资料,而 U 指令则可以恢复游标所在列的所有改变。这与某些电脑上的 [Undo] 按键功能相同。


Vi 进阶应用

相信现在对於 vi 应该已经有相当的认识。处理文字也不会有什麽麻烦才对。如果有兴趣善用 vi 的其它功能进一步简化操作过程,不妨继续看下去。


移动游标

由於许多编辑工作是藉由游标来定位,所以 vi 提供许多移动游标的方式,这个我们列几张简表来说明(这些当然是指令模式下的指令):

┌—————┬—————————————┬—————┐
│指令      │说明                    │功能键    │
├—————┼—————————————┼—————┤
│0        │移动到游标所在列的最前面  │[Home]    │
├—————┼—————————————┼—————┤
│$        │移动到游标所在列的最後面  │[End]     │
├—————┼—————————————┼—————┤
│[CTRL][d]│向下半页                 │          │
├—————┼—————————————┼—————┤
│[CTRL][f]│向下一页                 │[PageDown]│
├—————┼—————————————┼—————┤
│[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 字元前          │
├————┼———————————————┤
│;       │配合 f&t 使用,重复一次      │
│,       │配合 f&t 使用,反方向重复一次│
├————┼———————————————┤
│/string │往右移动到有 string 的地方   │
│?string │往左移动到有 string 的地方   │
├————┼———————————————┤
│n       │配合 /&? 使用,重复一次      │
│N       │配合 /&? 使用,反方向重复一次│
└————┴———————————————┘
┌————┬———————————————————┬——————————┐
│指令    │说明                                │备注                │
├————┼———————————————————┼——————————┤
│n(      │左括号移动到句子的最前面             │句子是以            │
│        │前面加上数字可以指定往前移动 n 个句子 │! . ? 三种符号来界定│
│n)      │右括号移动到下个句子的最前面         │                    │
│        │前面加上数字可以指定往後移动 n 个句子│                    │
├————┼———————————————————┼——————————┤
│n{      │左括弧移动到段落的最前面             │段落是以            │
│        │前面加上数字可以指定往前移动 n 个段落 │段落间的空白列界定  │
│n}      │右括弧移动到下个段落的最前面         │                    │
│        │前面加上数字可以指定往後移动 n 个段落│                    │
└————┴———————————————————┴——————————┘

不要尝试背诵这些指令,否则後果自行负责。它们看起来又多又杂乱,事实上这是文字叙述本身的障碍。再强调一次,实际去使用它只要几次就可以不经大脑直接下达这些奇奇怪怪的指令,远比死记活背搞得模模糊糊强多了。(注:若真的不经大脑而误删资料与我无关。另,此段为废话。)


进阶编辑指令

这些编辑指令非常有弹性,基本上可以说是由指令与范围所构成。例如 dw 是由删除指令 d 与范围 w 所组成,代表删除一个字 d(elete) w(ord) 。

指令列表如下:

d   删除(delete)
y   复制(yank)
p   放置(put)
c   修改(change)

范围可以是下列几个:

e   游标所在位置到该字的最後一个字母
w   游标所在位置到下个字的第一个字母
b   游标所在位置到上个字的第一个字母
$   游标所在位置到该列的最後一个字母
0   游标所在位置到该列的第一个字母
)   游标所在位置到下个句子的第一个字母
(   游标所在位置到该句子的第一个字母
}   游标所在位置到该段落的最後一个字母
{   游标所在位置到该段落的第一个字母

说实在的,组合这些指令来编辑文件有一点点艺术气息。不管怎麽样,它们提供更多编辑文字的能力。值得注意的一点是删除与复制都会将指定范围的内容放到暂存区里,然後就可以用指令 p 贴到其它地方去,这是 vi 用来处理区段拷贝与搬移的办法。

某些 vi 版本,例如 Linux 所用的 elvis 可以大幅简化这一坨指令。如果稍微观察一下这些编辑指令就会发现问题其实是定范围的方式有点杂,实际上只有四个指令罢了。指令 v 非常好用,只要按下 v 键,游标所在的位置就会反白,然後就可以移动游标来设定范围,接著再直接下指令进行编辑即可。

对於整列操作, vi 另外提供了更方便的编辑指令。前面曾经提到过删除整列文字的指令 dd 就是其中一个;cc 可以修改整列文字;而 yy 则是复制整列文字;指令 D 则可以删除游标到该列结束为止所有的文字。


档案指令

档案指令多以 : 开头,跟编辑指令有点区别。例如前面提到结束编辑的指令就是 :q。
现在就简单说明一下作为本篇故事的结尾:


:q  结束编辑(quit)
    如果不想存档而要放弃编辑过的档案则用 :q! 强制离开。
:w  存档(write)
    其後可加所要存档的档名。
    可以将档案指令合在一起,例如 :wq 即存档後离开。
zz  功能与 :wq 相同。

另外值得一提的是 vi 的部份存档功能。可以用 :n,mw filename 将第 n 列到第 m 列的文字存放的所指定的 filename 里去哩。时代在变,世界在变, vi 也在变,不过大致上就这样。好了,但愿从此以後王子跟公主过著幸福快乐的生活。


[目录]


Emacs

Emacs 启动:
直接打emacs, 如果有X-windows就会开视窗. 如果不想用X 的版本,
就用 emacs -nw      (No windows)起动.

符号说明
C-X 表示按住CTRL键, 然後按X, 再把CTRL, X一起放开.
M-X         META                 META

在没有META键的电脑上, M-X 等於先按 ESC键, 接著按 X键.
Sun上面META键就是菱形的那个键.
有些系统META键就是ALT键.(或者某一边的ALT键)

C-X或 M-X的X没有大小写分别.
Emacs按键命令基本上是一串C-<chr>和M-<chr>组成的.
超过两个以上的按键命令, Emacs会在萤幕最下面一行显示你按过什麽.
这一行叫作mini buffer

结束Emacs按 C-x C-c

取消执行 C-g
有些Emacs命令会跑很久, 可以用C-g中断之. 按错键也可以按C-g取消.

上下移动   C-p 向上 (previous line) C-n向下(next line)
左右移动   C-f 向右 (forward) C-b 向左 (backward)

   其实Emacs内部没有行的概念, 把一篇文章放在一个大buffer
   里面, 所以C-f (forward)就是向档尾移动, C-b (backward)
   是移回去的意思, 一次一个字.

翻页  下一页 C-v (view next screen)
      上一页 M-v

   翻页时,上一  末尾会留一点在萤幕最上面,以维持连续性.

Emacs在游标接近萤幕最下方时会自动跳半页, 把档案往前挪一点,
方便阅读.

重画萤幕 C-L

Emacs里面游标的专有名词叫point. point == 游标目前的 点

游标一次跳一个字(word) M-f  往後跳 M-b

  注意 C-f 与 M-f, C-b 与 M-b的对称性.

移到行头 C-a  行尾 C-e
移到句首 M-a  到句尾 M-e
  (M-a 到上一个句点後面,一个句子的起头.
   M-e 到句点後面)

移到档头 M-< 档尾 M->

删除游标目前指的/後面的字 C-d
        前面的字 DEL  (Delete键)
DEL的正名叫Rubout (Rub out)

M-DEL 往回删一个字(word)
M-d   往前删 (游标後面)
C-k   删至行尾 (kill)
M-k   删到一句子结尾(删到句点) (kill)


注意Backspace = C-h 在Emacs下是help的意思
後面有(kill)的, 表示此删除的动作是kill, 不太等於delete.
emacs会把kill掉的东西放到kill ring去, 算是一种暂存的地方,
以後可以叫出来.见 yank说明.


Undo: C-x u
C-_ 等於 C-x u    有些DEC终端机, C-/就是C-_
                  有时等於C-Shift- -

重复执行

举例, 向右移 8个字, C-u 8 C-f
C-u 在Emacs里是蛮特别的,用来设定一些引数(argument/repeat count)
给其後的命令.

C-u 2 0 C-n 向下移 20行

有一个特别的例外, C-u 3 C-v 不是翻三页, 而是整个萤幕向上移三行.
据说这比较有意义.

C-u 1 0 C-x u   UNDO 10次

给C-L一个引数会怎麽样:
C-u 0 C-l 会重画萤幕,并且把目前的行移到萤幕第一行.

另外, C-u 100   等於 M-100
      C-u 数字  等於 M-数字

X windows 下,
C-left C-right 一次移一个字(word).
C-up C-down 移动一段 (paragraphs/C语言的话是block)
Home = C-a
End = C-e
C-Home = M-<
C-end = M->
PgUp PgDn = M-v C-v
设定重覆次数更加简单,
比如要向右移10个字 C-1 C-0 right-arrow
  就是按住CTRL, 然後打10就对了, 比 C-u 1 0 简单.

Mouse中键用来选取有hi-light的地方.
     右键是menu-button

如果不小心按两次ESC, 等於 M-ESC,  会有一个讯息跑出来
说你按到一个被disable的命令. 这是高级指令, 作者认为
初学者用不道,所以会问你要不要启动它, 一般回答no.

如果某一行太长, 萤幕显示不下, Emacs会在萤幕最右边打个$,
表示此行未完,右边还有.

把一行拆成两行: 在想拆处按Enter即可.
合并两行为一行: 在行尾按C-d (或行首按DEL)

Yank: 吐出被删掉的(killed)东西.

只要用kill (C-k, M-k等) 删除, 超过一个字的资料,
emacs就会把它存起来, 然後C-y 可以把它叫出来.
功能跟Cut & Paste一样. Kill 和delete不一样, 只有被
kill掉的东西才能用yank吐回来.

游标在同一地方不动, 连续kill掉的资料会被当成一次kill掉的,
yank时会一起回来.

被Kill掉的资料是放在称作 kill ring的资料结构上面, ring就是个圆圈,
被kill掉的东西会依序摆在圆圈上. yank 会放回最近一次kill掉的资料.
如果不是你想要的话, 用M-y 可以换.  (M-y就是告诉emacs, 不对不对,
我不是要这一个,换前一个给我).

M-y 要紧接在C-y之後.

拷贝文字的方法== 连续 C-k 几次,  把要拷贝的行全部删掉,
然後按 C-y 弄回来. 再到想复制的地方按一次C-y, 就成了.

把要拷贝的资料kill掉在yank回来好像很笨. 是有比较文明的
方法, 那就是M-w, 不过较麻烦.

首先,要先设标记. Mark 用 C-SPC 或 C-@ 设. 然候
把游标移到另一端, 按 M-w 就可以把 mark 到 point间的
字存到kill ring上. point 就是游标的意思.

Emacs不会把Mark起来的地方用highlight表示, 除非在X下.
在X下, 可以用M-w 来拷贝用滑鼠反白的文字.

kill & yank 就是 cut & paste的意思.


以上大部份指令对Bash的命令列编辑也有效

档案操作
读档: Emacs术语叫 finding a file.
C-x C-f 然後在mini-buffer输入档名. 输入档名时, SPC键有
auto-complete的功能,或者会秀出到目前为止档名前几
个字和输入一样的. (TAB键也有类似功能)

C-x C-f 叫 find-file

C-x C-s 存档 (save current file, save current buffer)
C-x s   存所有的档

C-x i   插入档案  把另外的档案的内容读入目前编辑区内

视窗
Emacs把档案读进来,存在buffer中.
我们透过window来看/编辑buffer.

两个视窗会把萤幕切成两部份, 他们可以同时显示
相同的, 或不同的档案.

对初学者而言, 最需要的是记住怎样让不想要的视窗消失:

C-x 0 关掉目前的视窗
C-x 1 会让目前的视窗占满整个萤幕 (One Window),
      取消/关掉其他的视窗.

Emacs里面有许多功能都会开一个小视窗来和使用者沟通, 显示讯息.
有时候不会自动消失很讨厌, C-x 1 就很有用.

另一个功能是如何跳到另一个视窗.
C-x o  (other-window)


C-x 2 把目前的视窗切成两个 (水平分割)
C-x 3                      (垂直分割)
C-x 4 是一串与视窗有关的指令.
C-x 4 是一串与视窗有关的指令.
C-x 5 则是扩展到X的视窗, 称为frame.
      C-x 5 2 就是再开另一个X视窗 (frame).


多档编辑
C-x C-b 看目前有那些buffer (buffer就是emacs放开起的档案的地方).
C-x b 然後在minibuffer输入buffer的名字,可以切换编辑buffer.
      TAB键也有作用. 有些内部的buffer (就是没有档案的buffer),
      是用*开头和结束, 这个也要打, 如*scratch*

最候提醒:
  C-x 1 可以把多馀的视窗关掉.


Emacs扩充指令

前面介绍的emacs按键大部份都是C-<chr> 或者 M-<chr>的形式.
这是最简单的按法, 由一对按键构成一个指令.

Emacs的按键可以超过2个以上. 如 C-x 1 或 C-x C-b.
一般超过一个按键组合的命令都是用C-x 开头.

另外你也可以直接下命令. 按 M-x 之後就可以打一个Emacs命
令来执行. 一般这些命令名字都很长, 不过都不常用. 等一下
我们会介绍一些. 还有介绍怎麽把这些命令设成按键指令.

C-x C-c 就是结束Emacs. 不过一般Emacs很笨重, 一旦起动就不轻易
退出. 所以比较常用的是C-z

C-z 把Emacs暂停, 回到命令列. 当你下次再需要编辑时,打fg %emacs
就可以把Emacs唤醒.

在X下, C-z会把emacs缩成icon


mode line

emacs编辑画面由 编辑区(buffer) 状态列 (modeline) 和对话区 (minibuffer)
构成. 这里解释 modeline 显示的讯息.

以下是个范例:

   --**-XEmacs: xemacs.qs      (Fundamental)----74%-------

由後面往前解释, 74% 表示游标的位置.

(Fundamental)表示编辑模式.这是最原始的模式. 编辑不同种类的文章
可能希望用不同的模式, 比如说C-mode, lisp-mode, tex-mode, text-mode
等等. 在不同模式下可能多一些按键出来. 举例text-mode.
      M-x text-mode
可以切入text-mode, 这是一般人编辑文字使用的模式. 和Fundamental mode
没什麽差异. 不过游标移动时, Emacs对一个字的定义就有所不同, 因而
M-f M-b 等移动一个字, 一个段落的指令就可能会停在标点符号的前面.
此时状态列变为... (Text)----70%---

以上说的是Major mode. 另外还有minor mode, 其实就是一些额外的功能.
比如说, M-x auto-fill-mode 则状态列显示 (Text Fill).
auto-fill就是自动断行, 让文章每行固定有70个字.

M-X fundamental-mode 可以变回来.

这里要说明一下, emacs在 minibuffer下有auto-completion的功能,
也就是打M-x fund 然後按 SPC, 它会自动补全 fundamental-mode,
不用全打. 如果有两个以上的选择, 它会告诉你. 这个功能对
find-file (C-x C-f)等等档案编辑功能也有效. 前面提过.
最後解释两个**号. 右边的*表示文章被修改过了.
左边的* 表示这个编辑区(buffer)可以修改.
有一些emacs的buffer是read-only buffer, 就会标成%
%%表示档案是read-only.

C-x C-q 可以解开read-only的锁定, 无论如何你要改这个编辑区.
这是个toggle指令, 如果原来是可以修改的, C-x C-q会把它切成
read-only.


Search

没有Search 功能的编辑器简直就是小朋友的玩具. Search
是一项很重要的功能, 所以emacs也提供的很完善.
C-s
C-r
M-x re-search-forward
M-x re-search-backward
M-x search-forward
M-x search-backward
以上这些指令是基本的search指令. C-s, C-r是increamental search,
就是你打字的同时, emacs就直接帮你找. 一个是forward, 一个是backward.
找到了怎麽办? 按C-g可以取消搜寻, 跳回原来的位置. 按Enter就让游标
停在找到的地方 -- 此时minibuffer显示:Mark saved where search started
什麽意思? 就是isearch帮你在原来的位置设了一个mark, 然後把point
(cursor) 移到新的位置.
想跳回去原先的地方?
C-x C-x 就可以了.(exchange-point-and-mark)
C-u C-SPC 可以依序跳回前几次设mark的地方.
  (C-SPC是设mark, 给它一个argument, 就是反动作)
  (还记不记得C-u 可以给後面的指令设一些参数.
   有些指令拿这个参数来当作repeat count,
   有些指令就只拿来当作on/off, true/false, set/clear而已)

M-x re-search-forward可以让你用regular expression搜寻.
M-x search-forward则没有increamental的功能.

另外一个指令, 作用和grep很像:
M-x occure

和search相提并论的就是replace.
M-x replace 然後按 SPC, 就知道了.

Emacs的设定:

Emacs的设定档是 $HOME/.emacs
你应该多少知道, emacs是用lisp写成的编辑器, .emacs档也都是
要用lisp的语法设定. emacs用的lisp称为elisp, 和一般的lisp差一点点.

有一个info page, emacs-lisp-intro, 深入浅出的介绍emacs lisp.
如果你还不会, 不懂programming, 强烈建议你看这份文件. 如果你
会texinfo, 你可以把它很漂亮的印出来. (内容一点点而已, 两三
天就看完了)

如果你把.emacs搞砸了, 进emacs很奇怪, 怎麽办?
1. 用 vi 改 .emacs :>
2. emacs -q 进 emacs


Major Modes

一般常见的emacs major mode有
  fundamental-mode
    text-mode
    lisp-mode   有自动对括号/重排, 直接执行lisp code功能.
    c-mode/cc-mode c-mode是比较旧的c-mode, cc-mode应该是
                目前新的c-mode. 有自动重排/对括号的功能.
                也可以在emacs内compile, 跳到compiler error
                修正错误. 执行程式时debug. (配合dbx/gdb)
                compile是透过Makefile进行.
    tex-mode    Tex/Latex编辑模示. 可能是打一些奇怪的标点
                符号比较方便.
    <programming-language>-mode
                同lisp/cc-mode. 如果是interpreter的话,
                emacs通常都可以直接执行/debug.
    <programming-language>-mode还有tags的功能, 後述.

    html-mode, texinfo-mode, sgml-mode: 编写html, texi, sgml之用.
    w3-mode     WWW browser. 在x-win上不满意,但可以接受...


Tags

Tags 是一个显为人知的功能? 所以我想提一下. 这不是emacs发明的,
而是vi 原本的特异功能. emacs只是发扬光大而已.
假设你有一个目录, 里面是一个程式的原始码, 比如说, tin 的原始码,
放在 ~/tin-1.3beta 下面. 你想看它们.

首先, 叫emacs cd到该目录:
    M-x cd

然後, 建立tag table.
tag table 就是一张对照表, 记录哪个符号(variable/function call)
对映到哪个档案的哪个地方. 有这张表, emacs可以让我们快速的在程
式码内游走. 一般这张表是一个档案, 叫作TAGS (大写)

   M-! etags *.[ch]

M-! 是执行external shell command的意思. etags就是emacs的建表程式.
你只要告诉它你的source code在那□即可.

vi的话是使用ctags这个程式, 它建出来的档名叫tags (小写). 因为
我们介绍emacs, 所以不管它.

然後, 怎麽看程式? 你知道所有的C 程式都是由main()开始, 所以你想
找到main()在哪个档案. 这时只要按  M-. 然後emacs会问你tag table
在哪里. 因为我们已经cd到该目录, 直接按enter就好了. 然後输入main,
emacs就会把你带到main(){ ... }去.

如果 你看到某个程式片断呼叫一个你没看过的函式, 你可以把游标
移到该函式的名字上, M-. ENTER 就搞定了.

如果 emacs找错了 (比如有变数和函式同名, emacs跳到变数去),
那你可以用 C-u M-. 找下一个.

在编辑程式码的时候, M-SPC 很有用, 它会把游标附近的空白缩成一个.
在其它地方也有效.

Emacs的一些package:

M-x dired  (或C-x d)
          游走/编辑 目录, 就是档案总管的意思 :)

M-x man   就是man page
M-x shell 开个command prompt, 不过不能跑vi,elm, tin...
M-x gnus  读新闻/读信
M-x rmail 读信
M-x vm    view mail
M-x mh-rmail 读信 (package mh-e)
M-x mh-smail 送信 (package mh-e)

强列建议改用emacs读news/bbs. 世界会更美好!

读信的话就要看你的感觉. 这些读信程式都会把信从系统的mail folder
搬到自己的目录下, 占用quota, 我不喜欢 :p 建议elm或mutt.
除非参加mailling list配合procmail. 不然不实用.
用mh-e 须要装mh 这个外部程式, 不太好. 建议vm 或 gnus.
写完信, C-c C-c 就可以送信.

如果你的资料用rcs/sccs作版本管理, emacs自动会起动version control
(minor mode.), c-x c-q 变成check-in/check-out.

如何取得更多的资讯:

Emacs的lisp 经过多年的发展,已成为完整的self-documenting系统.
很多东西都可以线上找到你要的资讯.

前面说过,或者你已经不小心按backspace遇到了, C-h (就是backspace
的ascii码) 在emacs里面是help的意思, 它可以带出一串指令.
常用的有:

   C-h F   Emacs FAQ
   C-h t   Emacs 使用教学
   C-h n   Emacs NEWS file, 介绍最近改版的新功能
   C-h i   Info system. Info是gnu用来取代man page的系统,
           基本上和文字模示的WWW差不多. 有许多重要的资讯
           可以在这边找到. 如果你是新手, 建议你在x-win下
           看. 不然, 按键 m (menuitem), SPC next page
           l (last node: node就是章节的意思) u (up node)
           d (directory, 索引). BS (Backspace, back a page).
           如果全部只按SPC, 就跟man 一样.
   C-h k   describe key, 告诉你按这个键执行那个lisp function.
   C-h f   describe function. 告诉你function在作什麽.
           如果只按SPC, emacs会给你所有lisp 函数的列表, 和说明.
   C-h v   describe variable 同function.
   C-h a   apropos的意思(approximate).  给lisp function的部份
           字串, emacs帮你找.
   C-h b   列出目前所有的keybinding
   C-h m   mode help. 列出目前的mode的特殊说明.
   C-c C-h 列出以C-c 开头的所有key-binding. 虽然说Emacs
           可以定义按键, 可是Ctrl- 开头的所有组合大概都用光了,
          只有C-c算是可以自定指令. 不过有些mode也侵犯这个空间.
           目前的convention是C-c <chr> 留给user, C-c C-<chr>
           留给package.

有以上这些help, 你的emacs/elisp功力会随著时间成长.


Elisp 简介:

Emacs有三份手册.第一份是使用手册, 第二份是Elisp 手册, 第三份是
Elisp 简介.  第三份的程度是入门级, 值得看. Elisp手册其实也写的
很简单, 还教你lisp, 不过有点长, 适合参考.

因为我lisp没有仔细学过, 所以:
以下所言, 如有巧合, 那才是真的.

Basic data type
  字串 (string) "Hello, World"
  字元 (char)  ?a               ; 问号开头
  atom & list:
     (1 2 3 4)  是一个list, 由 4个 atom 组成.
  pair:  中间是句点.
     (apple . 2)
alist (associated list)
     就是一堆 pair的集合,就像perl/tcl的associative array.
     或者说是一个资料库, 一堆 (key, value) pair.
     '((Apple     . 1)
       (Orange    . 2)
       (PineApple . 3))
  vector (?)
     emacs 19用vector 来表示按键(key strok sequence)
     [f1] [f2] [f1 a]

  nil  就是空的list, 或者表示 false
  t    true
Forms
  我们写程式最好有样版让我们填空最简单了.
  Form 就是样版, 不过意义不太一样.
  Form 就是Elisp 可以接受的句型.
  lisp 解译器 预设是对list的每个元素求值(evaluate),
  除非是 special form, 有特殊的定义. 比如说

  (defun FUNC (ARG-LIST)
      BODY ...)
就是一个special form, 用来定义函式, 所以FUNC 不会被
  求值, 被当成symbol, ...

  (quote (LIST))

  这也是个special form, 叫 lisp 把 (LIST)当做symbol就好了,
  不要 evaluate.

  quote 很常用, 所以有个缩写:
  '(LIST)  等於 (quote (LIST))
  'Asymbol 可以表示一个Atom, 名称叫Asymbol

  set 可以产生/定义新的变数.
  (set 'hello 1)
  ; hello = 1
  ; 注意我们用 'hello, 所以lisp不会evaluate hello的值.

  这家伙很常用, 也有简写.
  (setq hello 1)
  setq 就是set quote 的缩写. 这是个 special form, 不会对
  第二个元素求值.
valuation

在Emacs下, C-x C-e 可以执行(evaluate, 求值)游标左边的叙述.
结果会出现在minibuffer.

lisp-interaction-mode中 C-j 可以evaluate, 并且把结果append到 buffer.

lisp 程式由一堆list 构成.称为expression.
每个expression 都回传回一个值.
有些expression有副作用, 如删掉一个字.
  (这跟C 的int delete_char() 意思一样, 它传回int,
   并且删掉某个char)

定义函式:

(defun NAME (ARGS-LIST)
      "注解"                  ; optional
      (interactive)           ; optional
      BODY)

定义一个叫NAME的函式. BODY 是一堆expression.
注解是用来给C-h f显示的.
(interactive) 表示这个函示会和user/buffer作用.
(interactive "B") 表示执行此函式先问user一个buffer的名字,
              然後当作参数传给它. (如, 当user透过key-binding
              或者 M-x 呼叫此函式时)
(interactive "BAppend to buffer: \nr")
             问user buffer name时, 提示号 Append to buffer:
             此function有两个引数,第一个是B, 就是buffer
             第二个是r, region
             用\n 隔开.
(interactive "p") 用C-u 设的prefix 把它当作参数传给我.
                  预设值==4. C-u C-f 向右移四个字

一些lisp 函式:

(list 1 2 3 4)   产生 '(1 2 3 4)
(car '(1 2 3 4)       1
(cdr '(1 2 3 4)       '(2 3 4)
(cons 1 '(2 3 4))     '(1 2 3 4)
(cons 1 2)            (1 . 2)
(cons 0 (cons 1  (cons 2 nil)))
                等於  '(0 1 2)
      {list 是用 pair 串起来的,
       用C 表示:
           pair: {Object *first, Object *second};
           *(pair[i].first) == i;
           pair[i].second == pair[i+1]; }

(cons '(1 2) '(3 4))  '((1 2) 3 4)
(setq a 1)
(1+ a)        ; a+1
(+ 2 a)       ; a+2
(* 1 2 3 4)
(current-buffer)  ; 传回目前buffer的资料物件
(switch-to-buffer (other-buffer))
(set-buffer)
(buffer-size)
(setq current-pos (point))
(point-min)
(point-max)
(message "Hello")   ; 在minibuffer显示Hello
(if (test)
     (then-part)
     (else-part))
(cond ((test1) BODY1)
      ((test2) BODY2)
      (t  OTHER-WISE)
(let ((var1 value)  ; local variable
       var2             ; no value
        (var3 value)
        ...)
        BODY ...)
(lambda (ARG-LIST) ...) 同 defun, 但是没有名字 (anonymous).
可以存到变数去:
(setq hello (lambda () (message "Hello,World")))
(funcall hello)
(goto-char (point-max))
(defvar VAR VALUE "*注解") 如果VAR 不存在才定义. 有注解可以用
   C-h v 看. 注解打*号表是使用者可以直接改/ 这个变数本来就是
             给使用者设定用的.
             可以用 M-x edit-options 来线上设定 (emacs结束就没有了,
             不过edit-options可以给你所有可修改的变数的列表,你可以
             放到.emacs档内.

(directory-files "./" t "\\..*")
         return a list of files under directory X
(load "xxxx.el")  同#include <stdio.h>
             给使用者设定用的.
             可以用 M-x edit-options 来线上设定 (emacs结束就没有了,
             不过edit-options可以给你所有可修改的变数的列表,你可以
             放到.emacs档内.

(directory-files "./" t "\\..*")
         return a list of files under directory X
(load "xxxx.el")  同#include <stdio.h>
(setq load-path (cons "~/emacs" load-path)) ; load的search path.
(autoload ...) 不像load会直接evaluate 整个档案, 而是需要时再
               load.
(local-unset-key [(control c)])
(local-set-key [(control c) a] 'forward-sexp)
sexp 就是一个expession, n个expression如果用括号括起来就算一个.
      (expression的定义随语言的不同而有不同, 在C, lisp
        tex, html, fortran 下皆有差异)

[目录]


归档和压缩

[目录]


tar和gzip

最简提示:

    tar zxvf XXXX.tar.gz
    tar jxvf XXXX tar.bz2

1.压缩一组文件为tar.gz后缀。
# tar cvf backup.tar /etc #gzip -q backup.tar

# tar cvfz backup.tar.gz /etc/
2.释放一个后缀为tar.gz的文件。
#gunzip backup.tar.gz #tar xvf backup.tar

# tar xvfz backup.tar.gz

3.用一个命令完成压缩
#tar cvf - /etc/ | gzip -qc > backup.tar.gz

4.用一个命令完成释放
# gunzip -c backup.tar.gz | tar xvf -

5.如何解开tar.Z的文件?
# tar xvfz backup.tar.Z 或 # uncompress backup.tar.Z #tar xvf backup.tar

6.如何解开.tgz文件?
#gunzip backup.tgz

7.如何压缩和解压缩.bz2的包?
#bzip2 /etc/smb.conf
这将压缩文件smb.conf成smb.conf.bz2
#bunzip2 /etc/smb.conf.bz2
这将在当前目录下还原smb.conf.bz2为smb.conf
(bzip2 -d也一样)
注: .bz2压缩格式不是很常用,你可以man bzip2

[目录]


rpm

1.安装一个包
# rpm -ivh

2.升级一个包
# rpm -Uvh

3.移走一个包
# rpm -e

4.安装参数
--force 即使覆盖属于其它包的文件也强迫安装
--nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。

5.查询一个包是否被安装
# rpm -q < rpm package name>

6.得到被安装的包的信息
# rpm -qi < rpm package name>

7.列出该包中有哪些文件
# rpm -ql < rpm package name>

8.列出服务器上的一个文件属于哪一个RPM包
#rpm -qf

9.可综合好几个参数一起用
# rpm -qil < rpm package name>

10.列出所有被安装的rpm package
# rpm -qa

11.列出一个未被安装进系统的RPM包文件中包含有哪些文件?
# rpm -qilp < rpm package name>


[目录]


其他

    文件的压缩和解压缩是计算历史上最有用的创造之一,但缺乏可移植性和开放工具是阻碍它发挥其应有作用的最主要的一个障碍。只要我们是与其他使用类似 Unix 操作系统的用户交换文件,就可以使用例如 compress、gzip 和 bzip2 这样的可移植工具。但世界上其他人使用的是各种各样的专用软件 -- 甚至专用压缩算法 -- 拥有者可能永远也不会将它们公之于众。

    这种事态发展下去会很危险。想象一下,将来我们可能无法对档案的重要部分译码,原因是我们创建它们时使用的是专用工具和算法,而那些工具运行所在的操作系统和硬件已逐渐过时,消失不见。这就是为什么我们应该使用开放源码压缩工具,或者至少使用免费和有完善记载算法的商业压缩工具的原因。(只是要记住避免使用任何特殊的增强。)

    本文是有关在 Linux 操作系统上使用 .arc、.arj、.lzh (.lha)、.rar、.sit、.zip 和 .zoo 文件的指南。我选择讨论这些特殊的格式是因为三种最流行的操作系统 (MS-DOS、微软 Windows 和 Mac OS)的用户最常使用它们。我之所以写这篇指南是希望引导大家快速找出正确的工具,而不是详细地从技术上讨论文件压缩技术。

    最后,我想简短说明一下自解压文件。这样的档案往往位于包含压缩格式数据的现实程序中。执行它们时,它们会解包,并将存储在程序主体内的数据复制到您指定的任何驱动器上。唯一的问题是它们无法在 Linux 上使用,没有工具可以抽取它们。在这种情况下,需要让创建档案的那个人将它作为一个一般档案压缩。

参考资料

VMware:
http://www.vmware.com
DOSEMU:
http://www.dosemu.org
Aladdin Expander:
http://www.aladdinsys.com/expander/expander_linux_login.html
ARJ 软件:
http://www.arjsoft.com
ARJ 的 FAQ 页面:
http://www.arjsoft.com/faq.htm
ARJ 的下载页面:
http://www.arjsoft.com/files.htm
gzip:
http://www.gnu.org/software/gzip/gzip.html
Linux 发行版页面:
http://www.linux.org/dist/index.html
RAR 站点:
http://www.rarsoft.com
macutil 软件包:
http://www.linux.org/dist/index.html
tar:
http://www.gnu.org/software/tar/tar.html
WinZIP:
http://www.winzip.com
StuffIt:
http://www.aladdinsys.com
下载源码形式的 Info-ZIP:
http://www.freesoftware.com/pub/infozip
下载二进制形式的 Info-ZIP:
http://www.linux.org/dist/index.html
下载 PKZIP:
http://www.pkzip.org/shareware/pkzip_unix.html

[目录]


.arc

.arc
    带有 .arc 扩展名的文件相对来说比较少见。如果您偶然碰到一个,基本上可以认定它是使用旧的 MS-DOS SAE ARC 或 PKware PKARC 归档实用程序创建的。这种形式在 Linux 上的支持性不是太好,并很难指望在 Linux 机器上对这些文件解压缩。如果需要创建 .arc 文件,尝试在 DOSEMU 或 VMware 下运行原始 SAE ARC 或 PKware PKARC(在携带 MS-DOS 实用程序的 FTP 服务器上查找它们)。

    要解压缩 .arc 文件,使用 Aladdin Expander for Linux。写这篇文章的时候,Aladdin Expander 可以为公众 Beta 测试目的免费获得;它是否继续免费还是个未知问题。

    要解压缩 .arc 文件,输入 unstuff file.arc。-d 是个有用的选项,指定解压缩文件的目标位置。例如:unstuff -d=./home/james/incoming file.arc。

    注:要了解更多有关 Aladdin Expander for Linux 的详细信息,请阅读有关 .sit 文件的那一节。

VMware:http://www.vmware.com
DOSEMU:http://www.dosemu.org
Aladdin 系统: http://www.aladdinsys.com/expander/expander_linux_login.html

[目录]


.arj

.arj

    带有 .arj 扩展名的文件是使用 ARJ Software 用于 MS-DOS 和 Windows 的 ARJ 实用程序创建的。    因为 ARJ 是一种不能免费获得源代码的共享件程序,所以在 Linux 平台上几乎不存在与其功能匹配的工具,这使得 .arj 文件使用起来相当困难。

    对于 ARJ 文件,只要能成功地解压缩就已经够幸运的了。不可能在 Linux 上进行 .arj 形式的压缩,因为没有用于 Linux 的、生成这种文件的本机压缩工具。(可以尝试在 DOSEMU 或 VMware 下运行原始 ARJ 软件,但这根本算不上是一种易于使用的解决方案)。

    要解压缩 .arj 文件,使用 unarj 实用程序。它比 ARJ 慢,能力也不如 ARJ,但至少它能够顺利地抽取大多数 .arj 文件。它只能将文件抽取到当前的工作目录、列出档案内容,或者测试档案。

    要查看简短的帮助页面,输入 unarj;如需较详细的描述,请参阅 unarj.doc 文件,通常它位于 /usr/doc/unarj-2.43 目录中。

    尽管在哪里解压缩 .arj 文件是由您来选择的,但为避免把主工作目录混淆,通常应该在主目录中创建一个临时子目录,将当前工作目录更改到新目录,将压缩的文件移到新目录中,然后使用 unarj e archive.arj 来解压缩有问题的文件。

    用于 Linux 的 unarj 只能一次抽取所有文件;不能从档案中抽取个别文件。至少如果文件已存在于当前的工作目录中,即使在档案中找到具有相同名称的文件,您也不会覆盖其内容。另外, unarj 不支持空目录或自抽取档案;后者是 MS-DOS/Windows 程序,它们无法在 Linux 上运行,但可以在 DOSEMU 或 VMware 下运行。

    以下是其它一些 unarj 选项:

unarj archive.arj 或 unarj l archive.arj -- 列出档案内容
unarj t archive.arj -- 测试档案
unarj x archive.arj -- 带路径名抽取文件

    请注意,unarj 选项不是以减号 (-) 开头的。

    如果 unarj 解压缩文件失败,尝试使用 Aladdin Expander for Linux(有关详细信息,请参阅有关 .sit 的那一节)。您还可以让创建档案的人使用其它工具(例如可用于 MS-DOS 的免费 gzip)来压缩它。您可能还需要一个 simple.arj 档案,在其中要避免使用所有高级 ARJ 选项,例如卷、将档案分成几个小部分、以及自抽取。

    为什么不使用自抽取 ARJ 档案呢?这些是不能在 Linux 下运行的 MS-DOS 样式的可执行文件;它们使用不同的系统库,它们的内部格式也与 Linux 所需的二进制可执行文件的格式不同。可能可以在 DOSEMU 或 VMware 下运行自抽取 ARJ 档案。

    以 ARJ 或 JAR 形式进行的压缩仍然不能在 Linux 上使用,按照 ARJ Software 的 FAQ 页面的说法,我们不应该等待 Linux 移植。如果您知道有任何 Linux 工具可以解压缩 .jar 文件,请务必告诉我。

    可以从 ARJ Software 的站点或携带您所需 Linux 发行版的 FTP 服务器上下载 unarj 源码。另外,unarj 通常是基本 Linux 发行版的一部分,因此可以在主要分发 CD-ROM 上找到它。如需到所有 Linux 发行版的链接的列表,请参阅 Linux 发行版页面。

ARJ 软件:http://www.arjsoft.com
ARJ 的 FAQ 页面:http://www.arjsoft.com/faq.htm
ARJ 的下载页面:http://www.arjsoft.com/files.htm
DOSEMU:http://www.dosemu.org
VMware:http://www.vmware.com
Aladdin Expander: http://www.aladdinsys.com/expander/expander_linux_login.html
gzip:http://www.gnu.org/software/gzip/gzip.html
Linux 发行版页面:http://www.linux.org/dist/index.html

[目录]


.lzh (.lha)

.lzh (.lha)
    带有 .lzh 或 .lha 扩展名的文件使用的是 LHa、LHarc 或 LHx 压缩实用程序进行的压缩。这些实用程序是由 Y. Tagawa、H. Yoshizaki、Momozou 和 Masaru Oki 开发的。这些实用程序已移植到许多操作系统,使用它们所创建的文件也具有相当的可移植性。Mats Andersson 执行了 Linux 移植。

    与 gzip 不同,lha 实用程序执行多个文件的压缩。要压缩单个文件,输入 lha a archive file。lha 创建的档案带有 .lzh 扩展名。如果 archive.lzh 已在当前的工作目录中存在,那么您让 lha 压缩的文件就将添加到这一现有的档案中。archive.lzh 先前的内容仍被保留,除非它已包含带有相同名称的文件,在这种情况下,旧文件将被新文件取代。该操作是 盲目的,意味着它不检查文件的时间戳记;要确保只有带有更新时间戳记的文件才能替换档案中已保存的较旧的文件,这时使用 u 选项而不是 a 选项(例如,lha u archive file)。

    当收到 .lzh 文件的人抱怨无法解压缩档案时,尝试使用 lha ag archive file 或 lha ao archive file。g 和 o 选项分别指示 lha 使用常规或与 lha 兼容的归档方法。如果您只更新现有的档案,使用 u 而不是 a。

    归档多个文件和归档单个文件一样容易:使用通配符(例如, lha a archive files*)或输入存储文件所在的顶级目录(例如,lha a archive directory)。所有文件和子目录都将自动存储在档案中。文件替换规则和 u 选项对多个文件和单个文件所起的作用是一样的。通配符使用的语法和您在常用的 shell 中所使用的语法相同。

以下是其它一些 lha 选项:

l -- 列出档案内容(例如,lha l archive.lzh)
v -- 列出详细格式的档案内容(例如,lha v archive.lzh)
t -- 测试档案的完整性(例如,lha t archive.lzh)

    请注意,lha 选项不必以负号 (-) 开头,它们之间也不应该有空格。如需其它选项的列表,请输入 lha。

    .lzh 和 .lha 文件的解压缩相当容易:只需输入 lha e archive.lha。如果希望将文件解压缩到不是当前工作目录的目录中,输入 lha ew=path archive.lha。

    也可以使用 lha w=path -e archive.lzh 将档案的内容抽取到由 path 指定的目录中。lha -ie archive.lzh 将抽取档案内容,但忽略存储在其中的目录路径。

    lha 的源码和二进制版本可以从携带您所需 Linux 发行版的服务器上免费获得。如需到所有 Linux 发行版的链接的列表,请参阅 Linux 发行版页面。

Linux 发行版页面:http://www.linux.org/dist/index.html
gzip:http://www.gnu.org/software/gzip/gzip.html

[目录]


.rar

.rar
    带有 .rar 文件扩展名的文件是使用 RAR 和 WinRAR 归档和压缩工具创建的,这些工具由 Eugene Roshal 开发。他先是发行了用于 MS-DOS 操作系统的这些工具。RAR 受到用户的青睐是因为他们看重它的广泛特性和高压缩比率,以及友好的用户界面,它与 Norton Commander 的界面(或 Midnight Commander 的界面)很相似。

    因为 RAR For Linux 是该软件的完整移植,因此您可以享受到原始 RAR 的所有好处(除 MC 样式的界面以外)。但要记住,RAR for Linux 不是免费的;必须向总部在芬兰的一家公司 T:mi Softronic 注册它。

    RAR for Linux 选项的列表给人的印象深刻,可以用作其它归档和压缩工具开发人员的任务列表。要压缩单个文件,输入 rar a archive file。.rar 扩展名将自动附加到档案后(它的完整文件名将是 archive.rar)。如果 archive.rar 已在当前工作目录中存在,您尝试添加到 archive.rar 的文件就将直接添加到现有档案中。只有在 archive.rar 已包含带有相同名称的文件时,旧文件才会被新文件替代。其它存储在档案内部的文件将保持不变。请记住,该操作是 盲目的,意味着 RAR 不检查文件的时间戳记;只有在 a 选项后添加了 -u 选项时才执行这一检查。请注意,a 前面没有减号 (-)(例如,rar a -u archive file)。

    多个文件的归档非常简单:要将当前工作目录中的所有文件和目录归档,输入 rar a archive。要将特定目录的内容归档,输入 rar a archive /path/to/directory。要将一组文件归档,将它们括在引号中,象这样: rar a archive '*.cpp'。

    文件替换规则和 -u 选项对多个文件和单个文件所起的作用是一样的。通配符使用的语法和您在常用的 shell 中所使用的语法相同,但必须记住要用引号括起它们。

    以下是其它一些 RAR 选项:

l -- 列出档案内容(例如,rar l archive.rar)
v -- 列出详细格式的档案内容(例如,rar v archive.rar)
t -- 测试档案的完整性(例如,rar t archive.rar)

    请注意,不是所有 RAR 选项都以减号 (-) 开头;有关详细信息,请运行不带任何选项和自变量的 RAR(例如,如果 RAR 目录位于当前工作目录中,运行 rar/rar)。有关详细信息,请参阅 RAR 手册文件(它是 rar.txt 文件,同样位于 RAR 目录中)。

    使用 RAR,您可以解压缩整个档案(使用 rar e archive.rar)、单个文件(使用 rar e archive.rar file)或一组文件(使用 rar e archive.rar '*.cpp')。因为 RAR 可以对多个文件使用,您也可以使用 rar e '*.rar' '*.cpp' 从多个档案中抽取几组文件。

    当 RAR 无法从一个档案中抽取文件时,使用修复选项进行挽救:rar r archive.rar。

    可以从官方 RAR 站点获得自抽取档案形式的 RAR for Linux。需要使用 ./rarlnx271.sfx 命令来运行它(结尾的数字可能会因为发行了新版本的 RAR 而有所不同)。档案将其内容解包到当前工作目录中自动创建的 rar 子目录中。您可以在其中找到 rar 二进制。可以将 rar 二进制移到 /sbin 或 /usr/sbin 目录中,这样所有用户都可以使用它。除了 RAR 本身,您还可以获得 UnRAR,它是一个小型实用程序,用于解压缩 .rar 文件,如果您希望允许其它用户打开这样的档案但不创建它们,这个实用程序使用起来非常方便。

RAR 站点:http://www.rarsoft.com

[目录]


.sit

.sit
    使用 Aladdin Systems 所开发的、用于 Mac OS 的 StuffIt 归档程序创建的档案通常带有 .sit 扩展名。这些文件还可以有其它的如 .hqx 或 .bin 这样的扩展名,表明它们曾使用 BinHex 或 MacBinary 实用程序处理过,来创建可以在计算机网络上以电子方式传送的单个文本文件或二进制文件。(Macintosh 文件通常有两部分,称为创建子进程,必须在传送之前将它们联接在一起,以确保它们作为一个整体传送。)可以使用组成 macutil 软件包的一些实用程序来处理这样编码的文件,它是免费的,可用于所有正式的 Linux 发行版)。

    因为 Aladdin Systems 控制着 StuffIt 的源代码,在收到 .sit 文件时唯一的选择是使用 Aladdin Expander for Linux,它当前还处于 Beta 阶段(但已相当合用)。Aladdin Systems 已将这一 beta 版作为免费软件向公众提供:您不必为它付钱,但也无法获得源代码。当前没有用于 Linux 的、创建 .sit 档案的工具。

    要解压缩 .sit 档案,输入 unstuff archive.sit。如果不使用 -d 选项,抽取出的文件将放在当前工作目录下,该选项可以让您指定目标目录: unstuff -d=/home/james/oldmacfiles archive.sit。如果解包的文件是受密码保护的,使用 -p 选项:unstuff -p=secret archive.sit。文本文件转换 filer 选项用于处理行结束字符的转换,将 LF 转换成 CRLF,然后再转换回来:unstuff-text=auto -eol=unix archive.sit。

    可以在 Expander 的 man page 上找到有关它的详细信息(输入 man unstuff 显示它)。

    Aladdin Expander for Linux 可以从 Aladdin Systems 网站上获得。使用或下载它不用付任何费用,但必须向 Aladdin Systems 注册。有两个版本的 Expander,一个用于基于 RPM 的系统(Red Hat、Mandrake、SuSE 等),另一个用于基于 .deb 的系统(Debian、Corel 等)。没有特定于 Slackware 的软件包,但要转换 RPM 包以在 Slackware 上使用它应该并不困难。

Aladdin Systems:http://www.aladdinsys.com
Linux 发行版页面:http://www.linux.org/dist/index.html
macutil 软件包:http://www.linux.org/dist/index.html
Aladdin Expander for Linux: http://www.aladdinsys.com/expander/expander_linux_login.html

[目录]


.zip

.zip
    .zip 扩展名表示文件是使用许多 zip 归档程序和压缩程序之一(但不是 gzip)创建的。因为这是一种非常流行的压缩格式,算法的详细描述也有很多,所以可以找到用于所有操作系统的有用的移植形式。这包括创建和扩展带有 .zip 文件扩展名的档案的压缩和解压缩实用程序。在 Linux 上有两种这样的工具:免费的 Info-ZIP 和以赢利为目的的 PKZIP for Linux。如果您只是偶尔需要创建或打开 zip 文件,使用 Info-ZIP。如果希望使用在 MS-DOS 或其它系统上使用的相同工具,请选择 PKZIP(PKZIP 可用于许多操作系统)。用于微软 Windows 的 WinZIP 和用于 Mac OS 的 Stufflt 这两种实用程序可以创建和打开相互之间兼容的档案。

    Info-ZIP 在无法使用 gzip 或 tar 的情况下可以提供压缩和解压缩的一个不错的选择,这或许是在 Linux、微软 Windows 和 Mac OS 用户之间交换压缩文件的一种最好的形式。有许多不错的 zip 程序(有开放源码的,也有商业的)可用于这些操作系统,它们应该能确保文件的顺利交换(当然,只要是在特定于某个特定工具的特殊功能关闭的情况下)。

    要归档单个文件,输入 zip archive file。要压缩多个文件,使用通配符(例如,zip archive picture*jpg)。还有可能将文件定向输出到 zip;输入 man zip 获得详细信息。要归档整个目录,包括其中所有子目录的内容,使用 -r 选项,然后在档案名后输入目录名(例如,zip -r archive directory)。还可以输入 zip -R archive . 来将当前当前工作目录进行归档。.zip 扩展名自动添加到档案名后。

    当 zip 发现已有档案的名称和您尝试创建的名称相同时,它将您希望压缩的文件添加到现有档案中,而不将已存在的文件除去。这一规则有一个例外:如果存储在现有档案中的一个或多个文件和您希望压缩的一个或多个文件具有相同的名称,旧文件将由新文件替换。文件替换规则可以使用 -u 选项来修改(有关详细信息,请参阅 man zip)。

    以下是其它一些 zip 选项:

-j -- 只存储文件名,不带访问路径(例如,zip -j archive file)
-t -- 测试档案的完整性(例如,zip -t archive.zip)
-x -- 排除文件(例如,zip -r archive ./* -x *.tmp)

请注意,不是所有 zip 选项都以负号 (-) 开头。

    PKZIP 选项类似于 Info-ZIP,但您应该阅读 pkzip.htm 手册(它是一个 HTML 文档;使用 lynx pkzip.htm 或 netscape pkzip.htm 阅读)来确保您的操作正确。

    要解压缩 zip 文件,使用 unzip archive.zip 命令。如果想指定将档案扩展到哪个目录中,可以使用 -d 选项(例如,unzip file.zip -d /home/james/zips 将 file.zip 的内容抽取到 /home/james/zips 目录中)。

    注:Aladdin Expander for Linux 也可以解压缩 zip 文件。有关详细信息,请参阅有关 .sit 文件的那一节。

    当 zip 无法抽取档案中的文件时,使用 -F 或 -FF 修复 zip 选项进行挽救(例如 zip -F archive.zip 或 zip -FF archive.zip)。请记住在尝试拯救已破坏的档案之前进行备份。

    可以从官方 Info-ZIP 站点获得二进制或源码形式的 Info-ZIP for Linux。

    可以从 PKZIP 官方站点下载 PKZIP for Linux。它作为自抽取档案分发。要为它解包,输入 ./pklin251.exe,档案的内容将解包到当前工作目录中。您需要将 pkzip25 二进制文件复制到 /sbin 或 /usr/sbin 目录中,这样系统上的所有用户都可以使用它。(但您必须购买相应的许可证,因为它是商业软件包。)

gzip:http://www.gnu.org/software/gzip/gzip.html
tar:http://www.gnu.org/software/tar/tar.html
WinZIP:http://www.winzip.com
StuffIt:http://www.aladdinsys.com
Aladdin Expander: http://www.aladdinsys.com/expander/expander_linux_login.html
下载源码形式的 Info-ZIP:http://www.freesoftware.com/pub/infozip
下载二进制形式的 Info-ZIP:http://www.linux.org/dist/index.html
下载 PKZIP:http://www.pkzip.org/shareware/pkzip_unix.html

[目录]


.zoo

.zoo
    .zoo 扩展名在因特网上不经常出现,但请放心,可以使用 Linux 的 zoo 实用程序打开和创建这样的文件。不过要记住,zoo 对于现在用户的期望来说已有些陈旧和简单。

    要归档单个文件,输入 zoo a archive file。同样,要压缩多个文件,可以使用通配符 -- 例如,zoo a archive picture*jpg。.zip 扩展名自动添加到档案名后。

    下面是其它一些 zoo 选项以及它们所添加的功能:

    l -- 列出档案内容(例如,zoo l archive.zoo)
    t -- 测试档案的完整性(例如,zoo -t archive.zoo)

    请注意,不是所有 zoo 选项都以负号 (-) 开头。

    要解压缩 .zoo 文件,输入 zoo e archive.zoo。

    可以获得用于所有 Linux 发行版的二进制形式的 zoo for Linux。

下载二进制形式的 zoo:http://www.linux.org/dist/index.html

[目录]


邮件

1. 将文件当做电子邮件的内容送出
语法:mail -s “主题”用户名@地址< 文件
例如:
mail -s “program” user < file.c 将file.c 当做mail的内容,送至user,主题为program。

2. 传送电子邮件给本系统用户
语法:mail 用户名

3. 传送电子邮件至外地用户
语法: mail 用户名@接受地址
例如:
mail [email protected]
Subject : mail test
:
键入信文内容
: :
按下Ctrl+D 键或. 键结束正文。
连按两次Ctrl+C键则中断工作,不送此信件。
Cc( Carbon copy) : 复制一份正文,给其他的收信人。

4. 检查所传送的电子邮件是否送出,或滞留在邮件服务器中
语法:/usr/lib/sendmail -bp
若屏幕显示为“Mail queue is empty” 的信息,表示mail 已送出。
若为其他错误信息,表示电子邮件因故尚未送出。

[目录]


快捷键

    这里列举了一些你可以用来快速执行常见任务的快捷键。
    要了解更多快捷键,请访问:

    http://sunsite.dk/linux-newbie/lnag_commands.html#shortcuts

    [Ctrl] + [Alt] + [Backspace] = 杀死 X。这会杀死你当前的 X 会话,把你返回到登录屏幕。如果正常退出步骤不起作用,你可以使用这种方法。

    [Ctrl] + [Alt] + [Delete] = 关机和重新引导。关闭你当前的对话然后重新引导 OS。只有在正常关机步骤不起作用时才使用这种方法。

    [Ctrl] + [Alt] + [Fn] = 切换屏幕。[Ctrl]+[Alt] + 功能键之一 会显示一个新屏幕。[F1] 到 [F6] 是文本(控制台)屏幕, [F7] 是图形化屏幕。

    [Alt] + [Tab] = 切换任务。如果你同时打开了不止一个应用程序,你可以使用 [Alt] + [Tab] 来在打开的任务和应用程序间切换。

    [Ctrl] + [a] = 把光标移到行首。它在多数文本编辑器和 Mozilla 的 URL 字段内可以使用。

    [Ctrl] + [d] = 从终端或控制台中注销,你不必键入 exit 或 logout.

    [Ctrl] + [e] = 把光标移到行尾。它在多数文本编辑器和 Mozilla 的 URL 字段内都可使用。

    [Ctrl] + [l] = 清除终端。该简化操作与在命令行键入 clear 作用相同。

    [Ctrl] + [u] = 清除当前行。 如果你在终端下工作,使用这一简化操作可以清除从光标处到行尾的字符。

    [鼠标中间键] = 粘贴突出显示的文本。使用鼠标左键来突出显示文本。把光标指向你想粘贴文本的地方。点击鼠标中间键来粘贴它。

    [Tab] = 命令行自动补全。在终端下工作时可使用这一命令。键入命令的前几个字符,然后按 [Tab] 键,它会自动补全命令或显示匹配你键入字符的所有命令。

    [向上]和[向下]箭头 = 显示命令历史。当你在终端下工作时,按[向上]或 [向下]箭头来上下查看你在当前目录下键入的命令历史。 当你看到你想使用的命令时,按 [Enter] 键。

    clear = 清除终端。在命令行下键入它会清除所有终端窗口中显示的数据。

    exit = 注销。在命令行中键入它会注销当前的用户或根用户帐号。

    history = 显示命令历史。在命令行中键入它来显示你所键入的被编号的前 500 个命令。要显示较短的命令历史,键入 history 之后,空一格,在键入一个数字。例如:history 20。

    reset = 刷新终端屏幕。如果字符不清晰的话,在命令行中键入这个命令会刷新终端屏幕。

[目录]


[ 本文件由良友·收藏家自动生成 ]