Linux学习(一)

整理自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命令

如果文件内容过多,全部显示会很乱,可以使用 pgmore 命令分页显示,每次只显示一屏。

$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 键可以查看上一屏。

posted @ 2017-05-18 17:51  nolonely  阅读(408)  评论(0编辑  收藏  举报