整理自http://c.biancheng.net/cpp/html/2726.html
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 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 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 ~]$ ls
a.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 .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
一个点号(.)表示当前目录,两个点号(..)表示上级目录
注意:输入密码时,星号(*)作为占位符,代表你输入的字符个数。
查看文件内容:
可以使用 cat 命令来查看文件内容:
[spark@nolonely ~]$ cat a.sh
#!/bin/bash
echo "What is your name?"
read PERSON
echo "Hello World!,$PERSON"
myUrl="http://www.baidu.com"
myNum=10
echo $myUrl
echo ${myUrl}
for skill in Ada Coffe Action Java
do
echo "I am good at ${skill}Script"
done
myUrl="nihao"
echo ${myUrl}
readonly myUrl
myUrl="sdf"
echo ${myUrl}
unset myUrl
echo ${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 myfile
drwxr-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 -l
drwsr-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/bin
export 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 $TERM
xterm
$ 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 键可以查看上一屏。