整理自
linux初识
用户通过Shell与Linux内核交互。Linux下,很多工作都是通过命令完成的,学好Linux,首先要掌握常用命令。
基本命令:
[spark@nolonely home]$ cal May 2017 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 1314 15 16 17 18 19 2021 22 23 24 25 26 2728 29 30 31
[spark@nolonely home]$ passwd #修改密码 [spark@nolonely ~]$ ls -l #查看目录和文件 total 64 -rwxrwxr-x. 1 spark spark 328 May 16 20:36 a.sh -rwxrwxr-x. 1 spark spark 170 May 17 00:14 b.sh -rw-rw-r--. 1 spark spark 41 Sep 26 2016 caa -rwxrwxr-x. 1 spark spark 383 May 17 00:31 c.sh drwxr-xr-x. 2 spark spark 4096 Jul 20 2016 Desktop drwxr-xr-x. 2 spark spark 4096 Jul 20 2016 Documents drwxr-xr-x. 3 spark spark 4096 Sep 28 2016 Downloads -rwxrwxr-x. 1 spark spark 48 May 17 00:37 d.sh -rwxrwxr-x. 1 spark spark 144 May 17 00:54 e.sh -rwxrwxr-x. 1 spark spark 71 May 17 01:13 f.sh -rwxrwxr-x. 1 spark spark 297 May 17 01:26 g.sh drwxr-xr-x. 2 spark spark 4096 Jul 20 2016 Music drwxr-xr-x. 2 spark spark 4096 Jul 20 2016 Pictures drwxr-xr-x. 2 spark spark 4096 Jul 20 2016 Public drwxr-xr-x. 2 spark spark 4096 Jul 20 2016 Templates drwxr-xr-x. 2 spark spark 4096 Jul 20 2016 Videos [spark@nolonely ~]$ whoami #自己的用户名(用户ID) spark [spark@nolonely ~]$ users #当前在线的用户(同时登录到系统的用户) spark spark spark [spark@nolonely ~]$ who spark tty1 2017-05-16 19:41 (:0) spark pts/0 2017-05-16 19:42 (:0.0) spark pts/2 2017-05-17 19:21 (192.168.244.1) [spark@nolonely ~]$ w 02:22:24 up 19:18, 3 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT spark tty1 :0 Tue19 30:42m 9.26s 0.15s pam: gdm-password spark pts/0 :0.0 Tue19 30:26m 0.10s 0.57s /usr/bin/gnome-terminal -x /bin/sh -c cd '/home/spark/De spark pts/2 192.168.244.1 19:21 0.00s 0.71s 0.08s w [spark@nolonely ~]$ logout #退出登录,系统会清理有关信息并断开连接。 [spark@nolonely ~]$ halt #直接关闭系统 [spark@nolonely ~]$ init 0 #使用预先定义的脚本关闭系统,关闭前可以清理和更新有关信息 [spark@nolonely ~]$ init 6 #重新启动系统 [spark@nolonely ~]$ poweroff #通过断电来关闭系统 [spark@nolonely ~]$ reboot #重新启动系统 [spark@nolonely ~]$ shutdown #安全关闭系统
注意:一般情况下只有超级用户和root用户(Linux系统中的最高特权用户)才有关闭系统的权限,但是给普通用户赋予相应权限也可以关闭系统。
在所有Linux版本中,都会涉及到以下几个重要概念:
- 内核:内核是操作系统的核心。内核直接与硬件交互,并处理大部分较低层的任务,如内存管理、进程调度、文件管理等。
- Shell:Shell是一个处理用户请求的工具,它负责解释用户输入的命令,调用用户希望使用的程序。
- 命令和工具:日常工作中,你会用到很多系统命令和工具,如cp、mv、cat和grep等。在Linux系统中,有250多个命令,每个命令都有多个选项;第三方工具也有很多,他们也扮演着重要角色。
- 文件和目录:Linux系统中所有的数据都被存储到文件中,这些文件被分配到各个目录,构成文件系统。Linux的目录与Windows的文件夹是类似的概念。
linux 文件管理
在Linux中,有三种基本的文件类型:
- 普通文件:普通文件是以字节为单位的数据流,包括文本文件、源码文件、可执行文件等。文本和二进制对Linux来说并无区别,对普通文件的解释由处理该文件的应用程序进行。
- 目录:目录可以包含普通文件和特殊文件,目录相当于Windows和Mac OS中的文件夹。
- 设备文件:有些教程中称特殊文件,是一个含义。Linux 与外部设备(例如光驱,打印机,终端,modern等)是通过一种被称为设备文件的文件来进行通信。Linux 输入输出到外部设备的方式和输入输出到一个文件的方式是相同的。Linux 和一个外部设备通讯之前,这个设备必须首先要有一个设备文件存在。
[spark@nolonely ~]$ lsa.sh b.sh caa c.sh Desktop Documents Downloads d.sh e.sh f.sh g.sh Music Pictures Public Templates Videos [spark@nolonely ~]$ ls -l total 64 -rwxrwxr-x. 1 spark spark 328 May 16 20:36 a.sh -rwxrwxr-x. 1 spark spark 170 May 17 00:14 b.sh -rw-rw-r--. 1 spark spark 41 Sep 26 2016 caa -rwxrwxr-x. 1 spark spark 383 May 17 00:31 c.sh drwxr-xr-x. 2 spark spark 4096 Jul 20 2016 Desktop drwxr-xr-x. 2 spark spark 4096 Jul 20 2016 Documents drwxr-xr-x. 3 spark spark 4096 Sep 28 2016 Downloads -rwxrwxr-x. 1 spark spark 48 May 17 00:37 d.sh -rwxrwxr-x. 1 spark spark 144 May 17 00:54 e.sh -rwxrwxr-x. 1 spark spark 71 May 17 01:13 f.sh -rwxrwxr-x. 1 spark spark 297 May 17 01:26 g.sh drwxr-xr-x. 2 spark spark 4096 Jul 20 2016 Music drwxr-xr-x. 2 spark spark 4096 Jul 20 2016 Pictures drwxr-xr-x. 2 spark spark 4096 Jul 20 2016 Public drwxr-xr-x. 2 spark spark 4096 Jul 20 2016 Templates drwxr-xr-x. 2 spark spark 4096 Jul 20 2016 Videos
每一列的含义如下:
- 第一列:文件类型。
- 第二列:表示文件个数。如果是文件,那么就是1;如果是目录,那么就是该目录中文件的数目。
- 第三列:文件的所有者,即文件的创建者。
- 第四列:文件所有者所在的用户组。在Linux中,每个用户都隶属于一个用户组。
- 第五列:文件大小(以字节计)。
- 第六列:文件被创建或上次被修改的时间。
- 第七列:文件名或目录名。
注意:每一个目录都有一个指向它本身的子目录"." 和指向它上级目录的子目录"..",所以对于一个空目录,第二列应该为 2
前缀 | 描述 |
---|---|
- | 普通文件。如文本文件、二进制可执行文件、源代码等。 |
b | 块设备文件。硬盘可以使用块设备文件。 |
c | 字符设备文件。硬盘也可以使用字符设备文件。 |
d | 目录文件。目录可以包含文件和其他目录。 |
l | 符号链接(软链接)。可以链接任何普通文件,类似于 Windows 中的快捷方式。 |
p | 具名管道。管道是进程间的一种通信机制。 |
s | 用于进程间通信的套接字。 |
元字符
元字符是具有特殊含义的字符。* 和 ? 都是元字符:
- * 可以匹配 0 个或多个任意字符;
- ? 匹配一个字符。
[spark@nolonely ~]$ ls *.sh # * 匹配任意一个字符。a.sh b.sh c.sh d.sh e.sh f.sh g.sh
隐藏文件
隐藏文件的第一个字符为英文句号或点号(.),Linux程序(包括Shell)通常使用隐藏文件来保存配置信息。
[spark@nolonely ~]$ ls -a. b.sh Desktop f.sh .gstreamer-0.10 .oracle_jre_usage Videos.. caa .dmrc .gconf .gtk-bookmarks Pictures .viminfoa.sh .caa.swo Documents .gconfd .gvfs Public .Xauthority.bash_history .caa.swp Downloads .gnome2 .ICEauthority .pulse .xsession-errors.bash_logout .cache d.sh .gnome2_private .local .pulse-cookie .xsession-errors.old.bash_profile .config .esd_auth .gnote .mozilla .ssh.bash_profile.swp c.sh e.sh .gnupg Music Templates.bashrc .dbus .fontconfig g.sh .nautilus .thumbnails
一个点号(.)表示当前目录,两个点号(..)表示上级目录
注意:输入密码时,星号(*)作为占位符,代表你输入的字符个数。查看文件内容:
可以使用 cat 命令来查看文件内容:
[spark@nolonely ~]$ cat a.sh #!/bin/bashecho "What is your name?"read PERSONecho "Hello World!,$PERSON"myUrl="http://www.baidu.com"myNum=10echo $myUrlecho ${myUrl}for skill in Ada Coffe Action Javado echo "I am good at ${skill}Script"donemyUrl="nihao"echo ${myUrl}readonly myUrlmyUrl="sdf"echo ${myUrl}unset myUrlecho ${myUrl}$echo $$
可以通过 cat 命令的 -b 选项来显示行号
统计单词数目
可以使用 wc 命令来统计当前文件的行数、单词数和字符数,下面是一个简单的例子:
[spark@nolonely ~]$ wc a.sh 23 46 328 a.sh[spark@nolonely ~]$ wc a.sh b.sh c.sh 23 46 328 a.sh 8 20 170 b.sh 30 65 383 c.sh 61 131 881 total
每一列的含义如下:
- 第一列:文件的总行数
- 第二列:单词数目
- 第三列:文件的字节数,即文件的大小
- 第四列:文件名
复制文件
cp filename copyfile
重命名文件
$ mv old_file new_file
删除文件
$ rm filename1 filename2 filename3
Linux目录
主目录:登录后的位置就是主目录
[spark@nolonely ~]$ cd ~ #进入主目录[spark@nolonely ~]$ pwd/home/spark[spark@nolonely ~]$ cd ~spark0 #进入其他用户的主目录 [spark@nolonely ~]$ cd - #返回进入当前目录前所在的目录/home/spark
绝对路径和相对路径:
[spark@nolonely ~]$ /etc/passwd #一个路径以 / 开头,就称为绝对路径;它表示当前文件与根目录的关系。[spark@nolonely ~]$ chem/notes #不以 / 开头的路径称为相对路径,它表示文件与当前目录的关系。 [spark@nolonely ~]$ $ls /usr/local #查看目录中的文件
目录
#创建目录: $mkdir dirname #当前目录下创建 mydir 目录,相对目录$mkdir /tmp/test-dir #/tmp 目录下创建 test-dir 目录。绝对目录$mkdir docs pub #同时创建多个目录 $mkdir /tmp/amrood/test #使用 mkdir 命令创建目录时,如果上级目录不存在,就会报错。$mkdir -p /tmp/amrood/test #为 mkdir 命令增加 -p 选项,可以一级一级创建所需要的目录,即使上级目录不存在也不会报错。 #删除目录 $rmdir dirname $rmdir dirname1 dirname2 dirname3 #改变所在目录 $cd dirname #相对路径 $cd /usr/local/bin #绝对路径 #重命名目录 $mv olddir newdir #点号(.) #一个点号(.)表示当前目录,两个点号(..)表示上级目录(父目录) [spark@nolonely ~]$ ls -a . b.sh Desktop f.sh .gstreamer-0.10 .oracle_jre_usage Videos .. caa .dmrc .gconf .gtk-bookmarks Pictures .viminfo a.sh .caa.swo Documents .gconfd .gvfs Public .Xauthority .bash_history .caa.swp Downloads .gnome2 .ICEauthority .pulse .xsession-errors .bash_logout .cache d.sh .gnome2_private .local .pulse-cookie .xsession-errors.old .bash_profile .config .esd_auth .gnote .mozilla .ssh .bash_profile.swp c.sh e.sh .gnupg Music Templates .bashrc .dbus .fontconfig g.sh .nautilus .thumbnails
Linux文件权限和访问模式
每个文件都拥有下面三种权限:
- 所有者权限:文件所有者能够进行的操作
- 组权限:文件所属用户组能够进行的操作
- 外部权限(其他权限):其他用户可以进行的操作。
查看文件的权限
使用 ls -l 命令可以查看与文件权限相关的信息:
$ls -l /home/amrood-rwxr-xr-- 1 amrood users 1024 Nov 2 00:10 myfiledrwxr-xr--- 1 amrood users 1024 Nov 2 00:10 mydir
第一列就包含了文件或目录的权限。
第一列的字符可以分为三组,每一组有三个,每个字符都代表不同的权限,分别为读取(r)、写入(w)和执行(x):- 第一组字符(2-4)表示文件所有者的权限,-rwxr-xr-- 表示所有者拥有读取(r)、写入(w)和执行(x)的权限。
- 第二组字符(5-7)表示文件所属用户组的权限,-rwxr-xr-- 表示该组拥有读取(r)和执行(x)的权限,但没有写入权限。
- 第三组字符(8-10)表示所有其他用户的权限,rwxr-xr-- 表示其他用户只能读取(r)文件。
文件访问模式
文件权限是Linux系统的第一道安全防线,基本的权限有读取(r)、写入(w)和执行(x):
- 读取:用户能够读取文件信息,查看文件内容。
- 写入:用户可以编辑文件,可以向文件写入内容,也可以删除文件内容。
- 执行:用户可以将文件作为程序来运行。
目录访问模式
目录的访问模式和文件类似,但是稍有不同:
- 读取:用户可以查看目录中的文件
- 写入:用户可以在当前目录中删除文件或创建文件
- 执行:执行权限赋予用户遍历目录的权利,例如执行 cd 和 ls 命令。
改变权限
可以使用 chmod (change mode) 命令来改变文件或目录的访问权限,权限可以使用符号或数字来表示。
使用符号表示权限
对于初学者来说最简单的就是使用符号来改变文件或目录的权限,你可以增加(+)和删除(-)权限,也可以指定特定权限。
符号 | 说明 |
---|---|
+ | 为文件或目录增加权限 |
- | 删除文件或目录的权限 |
= | 设置指定的权限 |
下面的例子将会修改 testfile 文件的权限:
$ls -l testfile-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile$chmod o+wx testfile$ls -l testfile-rwxrwxrwx 1 amrood users 1024 Nov 2 00:10 testfile$chmod u-x testfile$ls -l testfile-rw-rwxrwx 1 amrood users 1024 Nov 2 00:10 testfile$chmod g=rx testfile$ls -l testfile-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile$chmod o+wx,u-x,g=rx testfile #使用多个符号$ls -l testfile-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile
使用数字表示权限
除了符号,也可以使用八进制数字来指定具体权限,如下表所示:
数字 | 说明 | 权限 |
---|---|---|
0 | 没有任何权限 | --- |
1 | 执行权限 | --x |
2 | 写入权限 | -w- |
3 | 执行权限和写入权限:1 (执行) + 2 (写入) = 3 | -wx |
4 | 读取权限 | r-- |
5 | 读取和执行权限:4 (读取) + 1 (执行) = 5 | r-x |
6 | 读取和写入权限:4 (读取) + 2 (写入) = 6 | rw- |
7 | 所有权限: 4 (读取) + 2 (写入) + 1 (执行) = 7 | rwx |
下面的例子,首先使用 ls -1 命令查看 testfile 文件的权限,然后使用 chmod 命令更改权限:
$ls -l testfile-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile$ chmod 755 testfile$ls -l testfile-rwxr-xr-x 1 amrood users 1024 Nov 2 00:10 testfile$chmod 743 testfile$ls -l testfile-rwxr---wx 1 amrood users 1024 Nov 2 00:10 testfile$chmod 043 testfile$ls -l testfile----r---wx 1 amrood users 1024 Nov 2 00:10 testfile
更改所有者和用户组
在Linux中,每添加一个新用户,就会为它分配一个用户ID和群组ID,上面提到的文件权限也是基于用户和群组来分配的。
有两个命令可以改变文件的所有者或群组:- chown:chown 命令是"change owner"的缩写,用来改变文件的所有者。
- chgrp:chgrp 命令是"change group"的缩写,用来改变文件所在的群组。
chown 命令用来更改文件所有者,其语法如下:
$ chown user filelist
user 可以是用户名或用户ID,例如
$ chown amrood testfile
将 testfile 文件的所有者改为 amrood。
注意:超级用户 root 可以不受限制的更改文件的所有者和用户组,但是普通用户只能更改所有者是自己的文件或目录。 chgrp 命令用来改变文件所属群组,其语法为:$ chgrp group filelist
group可以是群组名或群组ID,例如
$ chgrp special testfile
将文件 testfile 的群组改为 special
SUID和SGID位
在Linux中,一些程序需要特殊权限才能完成用户指定的操作。
例如,用户的密码保存在 /etc/shadow 文件中,出于安全考虑,一般用户没有读取和写入的权限。但是当我们使用 passwd 命令来更改密码时,需要对 /etc/shadow 文件有写入权限。这就意味着,passwd 程序必须要给我们一些特殊权限,才可以向 /etc/shadow 文件写入内容。 Linux 通过给程序设置SUID(Set User ID)和SGID(Set Group ID)位来赋予普通用户特殊权限。当我们运行一个带有SUID位的程序时,就会继承该程序所有者的权限;如果程序不带SUID位,则会根据程序使用者的权限来运行。 SGID也是一样。一般情况下程序会根据你的组权限来运行,但是给程序设置SGID后,就会根据程序所在组的组权限运行。 如果程序设置了SUID位,就会在表示文件所有者可执行权限的位置上出现's'字母;同样,如果设置了SGID,就会在表示文件群组可执行权限的位置上出现's'字母。如下所示:$ ls -l /usr/bin/passwd-r-sr-xr-x 1 root bin 19031 Feb 7 13:47 /usr/bin/passwd*$
上面第一列第四个字符不是'x'或'-',而是's',说明 /usr/bin/passwd 文件设置了SUID位,这时普通用户会以root用户的权限来执行passwd程序。
注意:小写字母's'说明文件所有者有执行权限(x),大写字母'S'说明程序所有者没有执行权限(x)。 如果在表示群组权限的位置上出现SGID位,那么也仅有三类用户可以删除该目录下的文件:目录所有者、文件所有者、超级用户 root。 为一个目录设置SUID和SGID位可以使用下面的命令:$ chmod ug+s dirname$ ls -ldrwsr-sr-x 2 root root 4096 Jun 19 06:45 dirname$
Linux环境变量
修改环境变量
方法一:直接运行命令export PATH=$PATH:/usr/local/webserver/php/bin 和 export PATH=$PATH:/usr/local/webserver/mysql/bin
使用这种方法,只会对当前会话有效,也就是说每当登出或注销系统以后,PATH 设置就会失效,只是临时生效。
方法二:执行vi ~/.bash_profile修改文件中PATH一行,将/usr/local/webserver/php/bin 和 /usr/local/webserver/mysql/bin 加入到PATH=$PATH:$HOME/bin一行之后
这种方法只对当前登录用户生效
方法三:修改/etc/profile文件使其永久性生效,并对所有系统用户生效,在文件末尾加上如下两行代码
PATH=$PATH:/usr/local/webserver/php/bin:/usr/local/webserver/mysql/binexport PATH最后:执行 命令source /etc/profile或 执行点命令 ./profile使其修改生效,执行完可通过echo $PATH命令查看是否添加成功。
常用环境变量
下表列出了部分重要的环境变量,这些变量可以通过上面提到的方式修改。
变量 | 描述 |
---|---|
DISPLAY | 用来设置将图形显示到何处。 |
HOME | 当前用户的主目录。 |
IFS | 内部域分隔符。 |
LANG | LANG可以让系统支持多语言。例如,将LANG设为pt_BR,则可以支持(巴西)葡萄牙语。 |
PATH | 指定Shell命令的路径。 |
PWD | 当前所在目录,即 cd 到的目录。 |
RANDOM | 生成一个介于 0 和 32767 之间的随机数。 |
TERM | 设置终端类型。 |
TZ | 时区。可以是AST(大西洋标准时间)或GMT(格林尼治标准时间)等。 |
UID | 以数字形式表示的当前用户ID,shell启动时会被初始化。 |
下面的例子中使用了部分环境变量:
$ echo $HOME/root$ echo $DISPLAY$ echo $TERMxterm$ echo $PATH/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin$
Linux管道和过滤器
我们可以把两个命令连起来使用,一个命令的输出作为另一个命令的输入,这就叫做管道。为了建立管道,需要在两个命令之间使用竖线(|)连接。
管道使用竖线(|)将两个命令隔开,竖线左边命令的输出就会作为竖线右边命令的输入。连续使用竖线表示第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。
能够接受数据,过滤(处理或筛选)后再输出的工具,称为过滤器。
grep
$ls -l | grep "Aug"-rw-rw-rw- 1 john doc 11008 Aug 6 14:10 ch02-rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07-rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros$
grep 命令有很多选项:
选项 | 说明 |
---|---|
-v | 反转查询,输出不匹配的行。例如,grep -v "test" demo.txt 将输出不包含"test"的行。 |
-n | 输出匹配的行以及行号。 |
-l | 输出匹配的行所在的文件名。 |
-c | 输出匹配的总行数。 |
-i | 不区分大小写进行匹配。 |
使用 -i 选项进行不区分大小写的匹配:
$ls -l | grep -i "carol.*aug"-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
sort命令
sort 命令在 Linux 中非常有用,它将文件中的各行按字母或数进行排序。sort命令既可以从特定的文件,也可以从stdin获取输入。
选项 | 描述 |
---|---|
-n | 按照数字大小排序,例如,10会排在2后面;-n 选项会忽略空格或 tab缩进。 |
-r | 降序排序。sort 默认是升序排序。 |
-f | 不区分大小写。 |
+x | 对第x列(从0开始)进行排序。 |
[spark@nolonely ~]$ ls -l | grep "sh"|sort -r-rwxrwxr-x. 1 spark spark 71 May 17 01:13 f.sh-rwxrwxr-x. 1 spark spark 48 May 17 00:37 d.sh-rwxrwxr-x. 1 spark spark 383 May 17 00:31 c.sh-rwxrwxr-x. 1 spark spark 328 May 16 20:36 a.sh-rwxrwxr-x. 1 spark spark 297 May 17 01:26 g.sh-rwxrwxr-x. 1 spark spark 170 May 17 00:14 b.sh-rwxrwxr-x. 1 spark spark 144 May 17 00:54 e.sh[spark@nolonely ~]$ ls -l | grep "sh"|sort -n-rwxrwxr-x. 1 spark spark 144 May 17 00:54 e.sh-rwxrwxr-x. 1 spark spark 170 May 17 00:14 b.sh-rwxrwxr-x. 1 spark spark 297 May 17 01:26 g.sh-rwxrwxr-x. 1 spark spark 328 May 16 20:36 a.sh-rwxrwxr-x. 1 spark spark 383 May 17 00:31 c.sh-rwxrwxr-x. 1 spark spark 48 May 17 00:37 d.sh-rwxrwxr-x. 1 spark spark 71 May 17 01:13 f.sh[spark@nolonely ~]$ ls -l | grep "sh"|sort -f-rwxrwxr-x. 1 spark spark 144 May 17 00:54 e.sh-rwxrwxr-x. 1 spark spark 170 May 17 00:14 b.sh-rwxrwxr-x. 1 spark spark 297 May 17 01:26 g.sh-rwxrwxr-x. 1 spark spark 328 May 16 20:36 a.sh-rwxrwxr-x. 1 spark spark 383 May 17 00:31 c.sh-rwxrwxr-x. 1 spark spark 48 May 17 00:37 d.sh-rwxrwxr-x. 1 spark spark 71 May 17 01:13 f.sh
pg和more命令
如果文件内容过多,全部显示会很乱,可以使用 pg 和 more 命令分页显示,每次只显示一屏。
$ls -l | grep "Aug" | sort +4n | more-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros-rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro-rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07-rw-rw-r-- 1 john doc 14827 Aug 9 12:40 ch03...-rw-rw-rw- 1 john doc 16867 Aug 6 15:56 ch05--More--(74%)
如上,一次只显示一屏文本,显示满后,停下来,并提示已显示全部内容的百分比,按空格键(space)可以查看下一屏,按 b 键可以查看上一屏。