一、Linux 文件基本属性

      Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

      在Linux中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组。

 

    

第一列: 文件类型(共10个字符) + 权限   -->  man find 搜索type可看
            -:普通文件
            d:目录
            c:字符设备 --> /dev/tty     例如 USB接口、猫等一些串行端口设备
            b:块设备   --> /dev下查找  例如光驱,硬盘等属于块设备
            .:SELINUX相关 
            l:链接文件 --> 软连接
   后面的9个字符每3个为一组[rwx],分别代表文件所有者、文件所有者所在用户组、其它用户对文件拥有的权限。
   [r]代表可读(read)、[w]代表可写(write)、[x]代表可执行(execute)。若没有其中的任何一个权限则用“-”表示。
   执行的权限有两个字符可选,最常见的一个是“x”代表可执行。另一个是“s”代表套接口文件。

第二列:硬链接个数 默认从1开始  
    如果是目录,则默认是2(目录不做硬链接)为这个目录下的目录文件数目(这个数目=隐藏目录数目+普通目录数目)。
   (如果这只是一个普通文件,那“2”就代表这个文件有两个别名,这个文件被人创建了一个硬链接文件),总而言之它就是一个计数

第三列:所有者,也就是这个文件属于哪个用户。默认所有者是文件的建立用户。
第四列:所属组,默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。
第五列:文件大小(默认字节数),如果想看K或者M等,前面加一个选项-h
第六-八列:文件修改时间,文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个时间不是文件的创建时间。
第九列:文件名或目录名。

更改文件属性

1、chgrp:更改文件属组

2、chown:更改文件属主,也可以同时更改文件属组

3、chmod:更改文件9个属性

 

二、Linux 文件与目录管理

       Linux的目录结构为树状结构,最顶级的目录为根目录 /

绝对路径:

      由根目录 / 写起,如: /usr/share/doc 这个目录。

相对路径:

      不由 / 写起,相对当前的路径,如由 /usr/share/doc 要到 /usr/share/man 下时,可写成:cd ../man 这就是相对路径写法!

 

处理目录的常用命令:可以使用 man [命令] 来查看其使用文档,如 :man cp

1、ls: 列出目录   Linux的目录结构及ls命令介绍     

2、cd:切换目录:

      cd是Change Directory的缩写,这是用来变换工作目录的命令。注意:使用用cd .. 的时,中间必须有空格

  cd [相对路径或绝对路径]

# mkdir abc      使用 mkdir 命令创建 abc 目录
# cd /root/abc   使用绝对路径切换到 abc 目录
# cd ./abc       使用相对路径切换到 abc 目录
# cd ~           表示回到自己的家目录,亦即是 /root 这个目录
# cd ..          表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思

3、pwd:显示目前的目录 

      pwd是Print Working Directory的缩写,其功能是显示当前所在工作目录的全路径。主要用在当不确定当前所在位置时,通过pwd来查看当前目录的绝对路径。

pwd [选项]

参数:

-L:--logical,显示当前的路径,有连接文件时,直接显示连接文件的路径,(不加参数时默认此方式),参考示例1。

-p:--physical,显示当前的路径,有连接文件时,不使用连接路径,直接显示连接文件所指向的文件,参考示例2。 当包含多层连接文件时,显示连接文件最终指向的文件。

--help:显示帮助信息。

--version:显示版本信息。

示例1:

[root@centos7 ~]# pwd
/root
[root@centos7 ~]# pwd -L
/root

示例2:

[root@centos7 ~]# cd /var/mail  <=注意,/var/mail是一个连结档
[root@centos7 mail]# pwd        <=默认,使用连接文件,直接显示连接文件全路径。
/var/mail                        
[root@centos7 mail]# pwd -P     <=不以连结档的数据显示,而是显示正确的完整路径(连接文件最终指向的文件)
/var/spool/mail                  
[root@centos7 mail]# ll /var/mail
lrwxrwxrwx. 1 root root 10 12月  1 20:29 /var/mail -> spool/mail
[root@centos7 mail]#

4、mkdir:创建一个新的目录

     通过 mkdir 命令可以创建指定名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录(不能同名,区分大小写)。

mkdir [选项] 目录名或路径名

参数

-m: --mode=模式,设定权限<模式> (类似 chmod),用于手动配置所创建目录的权限,而不再使用默认权限。

-p: --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;

-v: --verbose , 每次创建新目录都显示信息

--help: 显示此帮助信息并退出

--version: 输出版本信息并退出

 

实例1:创建一个目录并显示创建信息

[root@centos7 ~]# ls /root
abc  anaconda-ks.cfg
[root@centos7 ~]# mkdir -v test1 
mkdir: 已创建目录 "test1"

实例2:一次创建多个目录

mkdir: 已创建目录 "test1"
[root@centos7 ~]# mkdir test2/test22/abc
mkdir: 无法创建目录"test2/test22/abc": 没有那个文件或目录
[root@centos7 ~]# mkdir -p test2/test22/abc

实例3:使用 -m 选项自定义目录权限。

       使用了 -m 选项,通过设定 711 权限值来给予新的目录 drwx--x--x 的权限

[root@centos7 ~]# mkdir -pm 711 /root/test3
[root@centos7 ~]# ll /root
总用量 4
drwxr-xr-x  2 root root    6 12月 10 11:21 abc
-rw-------. 1 root root 1440 12月  1 20:34 anaconda-ks.cfg
drwxr-xr-x  2 root root    6 12月 10 14:53 test1
drwxr-xr-x  3 root root   20 12月 10 14:54 test2
drwx--x--x  2 root root    6 12月 10 14:57 test3
[root@centos7 ~]# tree /root
/root
├── abc
├── anaconda-ks.cfg
├── test1
├── test2
│   └── test22
│       └── abc
└── test3

6 directories, 1 file

5、tree命令安装: 参考文章linux tree命令 树结构显示目录文件

     通过tree命令可以以树形结构列出指定目录下的所有内容,包括所有文件、子目录及子目录里的目录和文件。

     不过某些Linux上(Centos 6)采用最小化安装Linux系统的方式,那么tree命令可能没有安装,此时我们应该用yum命令来安装tree命令。

[root@centos7 ~]# rpm -qa tree               #<==查询tree命令是否安装。如果没有显示就执行下面的命令
[root@centos7 ~]# yum -y install tree        #<==执行yum命令安装tree
[root@centos7 ~]# rpm -qa tree
 tree.x86_64 0:1.6.0-10.e17

命令格式

tree [option] [directory]
tree [选项] [目录]

说明:

  1)注意tree命令以及后面的选项和目录,每个元素之间都至少要有一个空格

  2)tree命令后若不接选项和目录就会默认显示当前所在路径目录的目录结构

tree命令的参数选项及说明,图片来源于 【跟老男孩学Linux运维:核心系统命令】

-I(大写i):命令允许你使用正则匹配来排除掉你不想看到的文件夹

 

实例1:不带任何参数执行tree命令  显示当前目录的结构

[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── test1
├── test2
│   └── test22
│       └── abc
└── test3

6 directories, 1 file

实例2:以树形结构显示目录下的所有内容(-a的功能)

[root@centos7 ~]# tree -a /root
/root
├── abc
├── anaconda-ks.cfg
├── .bash_history
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .cshrc
├── .tcshrc
├── test1
├── test2
│   └── test22
│       └── abc
└── test3

6 directories, 7 files

实例3:只列出根目录下第一层目录的结构(-L功能)

[root@centos7 ~]# tree -L 1 /root
/root
├── abc
├── anaconda-ks.cfg
├── test1
├── test2
└── test3

4 directories, 1 file

实例4:只显示所有的目录,但不显示文件(-d功能)

[root@centos7 ~]# tree -ad /root
/root
├── abc
├── test1
├── test2
│   └── test22
│       └── abc
└── test3

6 directories

实例5:用tree命令来区分目录和文件的方法(-F功能)

[root@centos7 ~]# tree -F /root  #<==使用-F参数会在目录后面添加“/”,方便区分目录
/root
├── abc/
├── anaconda-ks.cfg
├── test1/
├── test2/
│   └── test22/
│       └── abc/
└── test3/

6 directories, 1 file
[root@centos7 ~]# tree -F /root/|grep /$   #<==过滤以斜线结尾的所有内容 
/root/
├── abc/
├── test1/
├── test2/
│   └── test22/
│       └── abc/
└── test3/

实例5:忽略某个文件夹的内容(-I功能)

-I命令允许你使用正则匹配来排除掉你不想看到的文件夹,例如:

[root@centos7 ~]# tree -I "abc" /root
/root
├── anaconda-ks.cfg
├── test1
├── test2
│   └── test22
└── test3

4 directories, 1 file
[root@centos7 ~]# tree -I "abc|test*" /root   <==也可以使用|同时排除掉多个文件夹:
/root
└── anaconda-ks.cfg

0 directories, 1 file

最后一个使用到正则匹配,这样以test_开头的文件夹都不会被显示出来。

6、rmdir:删除一个空的目录

      rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的,rmdir 不能删除非空目录。

      注意:rm - r dir命令可代替rmdir,但是有很大危险性。删除某目录时也必须具有对父目录的写权限。

rmdir [参数] 目录

参数

-p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。

-v --verbose,显示指令执行过程

实例1:删除空目录

[root@centos7 ~]# rmdir /root/test3
[root@centos7 ~]# tree 
.
├── abc
├── anaconda-ks.cfg
├── test1
└── test2
    └── test22
        └── abc

5 directories, 1 file

实例2:递归删除空目录,并显示删除过程

      rmdir -p 当子目录被删除后使它也成为空目录的话,则顺便一并删除。

[root@centos7 test2]# cd ~
[root@centos7 ~]# rmdir -pv /root/test2/test22/abc
rmdir: 正在删除目录 "/root/test2/test22/abc"
rmdir: 正在删除目录 "/root/test2/test22"
rmdir: 正在删除目录 "/root/test2"
rmdir: 正在删除目录 "/root"
rmdir: 删除目录 "/root" 失败: 设备或资源忙
[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
└── test1

2 directories, 1 file

可进入那个目录删除 

[root@centos7 test2]# rmdir -pv test22/abc
rmdir: 正在删除目录 "test22/abc"
rmdir: 正在删除目录 "test22"
[root@centos7 test2]# cd ~
[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── test1
└── test2

3 directories, 1 file

7、cp: 复制文件或目录

     cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

cp [选项] [参数] 

选项

-a:此参数的效果和同时指定"-dpR"参数相同;

-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;

-f:强行复制文件或目录,不论目标文件或目录是否已存在;

-i:覆盖既有文件之前先询问用户;

-l:对源文件建立硬连接,而非复制文件;

-p(常用):保留源文件或目录的属性;

-R/r(常用):递归处理,将指定目录下的所有文件与子目录一并处理;

-s:对源文件建立符号连接,而非复制文件;

-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;

-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;

-b:覆盖已存在的文件目标前将目标文件备份;

-v:详细显示命令执行的操作。

参数:source  directory

源文件:指定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;

目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点..的形式。

实例1:把上一个路径下的一个文件复制到一个目标文件中

[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── test1
└── test2
    └── test22

4 directories, 1 file
[root@centos7 ~]# cd test2
[root@centos7 test2]# cp ../anaconda-ks.cfg ./test22/
[root@centos7 test2]# tree .
.
└── test22
    └── anaconda-ks.cfg

1 directory, 1 file

实例2:把源路径下的一个文件复制到一个目标文件中,并重命名为file1.cfg

[root@centos7 test2]# cd ~
[root@centos7 ~]# cp anaconda-ks.cfg ./test2/test22/file1.cfg
[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── test1
└── test2
    └── test22
        ├── anaconda-ks.cfg
        └── file1.cfg

4 directories, 3 files
[root@centos7 ~]# ll
总用量 4
drwxr-xr-x  2 root root    6 12月 10 11:21 abc
-rw-------. 1 root root 1440 12月  1 20:34 anaconda-ks.cfg
drwxr-xr-x  2 root root    6 12月 10 14:53 test1
drwxr-xr-x  3 root root   20 12月 10 16:04 test2
[root@centos7 ~]# ll /root/test2/test22/
总用量 8
-rw------- 1 root root 1440 12月 10 16:05 anaconda-ks.cfg
-rw------- 1 root root 1440 12月 10 16:06 file1.cfg

文件的属性信息默认是改变了

实例3:将源路径下的所有文件及其子目录复制到目标文件中,并保留文件属性信息

[root@centos7 ~]# cp -rp /root/test2/test22/ ./test1
[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── test1
│   └── test22
│       ├── anaconda-ks.cfg
│       └── file1.cfg
└── test2
    └── test22
        ├── anaconda-ks.cfg
        └── file1.cfg

5 directories, 5 files
[root@centos7 ~]# ll ./test1/test22/
总用量 8
-rw------- 1 root root 1440 12月 10 16:05 anaconda-ks.cfg
-rw------- 1 root root 1440 12月 10 16:06 file1.cfg

8、rm: 删除文件或目录

     rm命令remove的缩写,作用:1)删除目录,2)删除文件。  (可以递归的删除指定目录的所有文件及子目录)

     注意:rm是一个危险的命令,使用的时候要特别当心,尤其对于初学者来说。

rm [选项] [参数]      (参数为目录或文件)

选项

-f: force 的意思,忽略不存在的文件,不会出现警告信息;不提示询问,强制删除文件或目录;

-i:删除已有文件或目录之前先询问用户;

-R/r:递归删除,将指定目录下的所有文件与子目录一并删除;

-v:显示指令的详细执行过程。

实例1:删除一个文件

[root@centos7 ~]# rm -v ./test1/test22/anaconda-ks.cfg 
rm:是否删除普通文件 "./test1/test22/anaconda-ks.cfg"?y
已删除"./test1/test22/anaconda-ks.cfg"
[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── test1
│   └── test22
│       └── file1.cfg
└── test2
    └── test22
        ├── anaconda-ks.cfg
        └── file1.cfg

5 directories, 4 files

实例2:递归删除该目录下的子目录及文件,包括删除该目录,不提示询问

[root@centos7 ~]# rm -frv ./test1
已删除"./test1/test22/file1.cfg"
已删除目录:"./test1/test22"
已删除目录:"./test1"
[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
└── test2
    └── test22
        ├── anaconda-ks.cfg
        └── file1.cfg

3 directories, 3 files

9、mv: 移动文件与目录,或修改文件与目录的名称

     mv命令,move的缩写,移动文件与目录。其实就相当于剪切操作,而前面说的cp命令,就是复制粘贴。

     mv命令中根据第二个参数的不同(文件或者目录),mv命令将目标文件重命名或移至新的目录中。当第二个参数类型是文件时,是重命名。当第二个参数是已经存在的目录名时,源文件或目录参数可以有多个,mv命令将各参数制定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

rm [选项]  source directory

选项

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u :若目标文件已经存在,且 source 比较新,才会升级 (update)

实例1:移除一个文件

[root@centos7 ~]# mv ./test2/test22/file1.cfg ./abc                         
[root@centos7 ~]# tree
.
├── abc
│   └── file1.cfg
├── anaconda-ks.cfg
└── test2
    └── test22
        └── anaconda-ks.cfg

3 directories, 3 files

实例2:递归移除目录及文件,并询问

[root@centos7 ~]# mv -i ./test2/test22 ./abc
[root@centos7 ~]# tree
.
├── abc
│   ├── file1.cfg
│   └── test22
│       └── anaconda-ks.cfg
├── anaconda-ks.cfg
└── test2

3 directories, 3 files

实例3:重命名文件

      移动操作跟重命名有什么关系,其实回想cp命令也不难理解了,在移动过程中,改变名称,不改变位置,这样不就相当于重命名了。

[root@centos7 ~]# mv ./abc/file1.cfg ./abc/file2.cfg
[root@centos7 ~]# tree
.
├── abc
│   ├── file2.cfg
│   └── test22
│       └── anaconda-ks.cfg
├── anaconda-ks.cfg
└── test2

3 directories, 3 files

10、stat:显示文件或文件系统的详细信息

stat命令主要用于显示文件或文件系统的详细信息。

stat [-option] 文件

-f  不显示文件本身的信息,显示文件所在文件系统的信息

-Z 打印SElinux安全上下文信息

-L  显示符号链接

-c 自定义输出格式,结尾有换行

-t  简洁模式,只显示摘要信息

        Access time(atime):表示我们最后一次访问(仅仅是访问,没有改动)文件的时间。读一次这个文件的内容,这个时间就会更新,比如对这个文件运用 grep、sed、more、cat 、less、tail、head等命令,ls、stat命令都不会修改文件的访问时间。

        Modify time(mtime):表示我们最后一次修改文件的时间。比如:vim后保存文件。ls -l列出的时间就是这个时间。

        Change time(ctime):表示我们最后一次对文件属性改变的时间,包括权限,大小,属性等等。如使用chmod,chown,mv,ln,就会改变文件的Change time。

根据上述解释,我们可以得出以下结论:

        a)当我们仅仅只是读取文件时,access time 改变,而modify,change time 不会改变;

        b)当修改文件时,access,modify,change time 都会跟着改变;

        c)当修改文件属性时,change time 改变,而access,modify time 不变。

      另个,除了可以通过stat来查看文件的mtime,ctime,atime等属性,也可以通过ls命令来查看(ls默认情况下显示的是mtime),具体如下:

        ls -lu filename 列出文件的 atime (最后存取时间)

        ls -l  filename 列出文件的 mtime (最后修改时间)

        ls -lc filename 列出文件的 ctime (最后更改时间)

    

11、touch命令

       touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

touch  [-options] 文件

参数选项

1)无选项:若文件不存在,则创建新的空文件,access time,modify time和change time均为当前时间;若文件存在,则将三个时间戳均修改为当前时间

[root@centos7 ~]# stat abc/file2.cfg 
  文件:"abc/file2.cfg"
  大小:1440            块:8          IO 块:4096   普通文件
设备:803h/2051d        Inode:4656        硬链接:1
权限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2019-12-12 14:04:09.964749730 +0800
最近更改:2019-12-12 14:04:09.964749730 +0800
最近改动:2019-12-12 14:04:09.964749730 +0800
创建时间:-
[root@centos7 ~]#

2)-a:只修改文件的access time

[root@centos7 ~]# touch -a abc/file2.cfg 
[root@centos7 ~]# stat abc/file2.cfg 
  文件:"abc/file2.cfg"
  大小:1440            块:8          IO 块:4096   普通文件
设备:803h/2051d        Inode:4656        硬链接:1
权限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2019-12-12 14:21:34.365104225 +0800
最近更改:2019-12-12 14:04:09.964749730 +0800
最近改动:2019-12-12 14:21:34.365104225 +0800
创建时间:-
[root@centos7 ~]# 

     注意:access time修改后,change time也被修改(因为状态发生了改变)。

3)-m:只修改文件的modify time

[root@centos7 ~]# stat abc/file2.cfg     
  文件:"abc/file2.cfg"
  大小:1440            块:8          IO 块:4096   普通文件
设备:803h/2051d        Inode:4656        硬链接:1
权限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2019-12-12 14:21:34.365104225 +0800
最近更改:2019-12-12 14:22:34.593080610 +0800
最近改动:2019-12-12 14:22:34.593080610 +0800
创建时间:-

    注意:modify time修改后,change time也被修改(因为状态发生了改变)。

4)文件不存在是创建文件

[root@centos7 ~]# tree ./abc
./abc
├── file2.cfg
└── test22
    └── anaconda-ks.cfg

1 directory, 2 files
[root@centos7 ~]# touch ./abc/test.txt
[root@centos7 ~]# tree ./abc          
./abc
├── file2.cfg
├── test22
│   └── anaconda-ks.cfg
└── test.txt

1 directory, 3 files
[root@centos7 ~]# stat ./abc/test.txt 
  文件:"./abc/test.txt"
  大小:0               块:0          IO 块:4096   普通空文件
设备:803h/2051d        Inode:33575013    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2019-12-12 14:25:33.163809448 +0800
最近更改:2019-12-12 14:25:33.163809448 +0800
最近改动:2019-12-12 14:25:33.163809448 +0800
创建时间:-

5)-c:不创建不存在的文件(当touch后操作多个文件时,不存在的文件将不会被创建)

[root@centos7 ~]# touch -c ./abc/aaa.txt
[root@centos7 ~]# tree ./abc
./abc
├── file2.cfg
├── test22
│   └── anaconda-ks.cfg
└── test.txt

1 directory, 3 files

12、cat命令

      cat命令用于一次显示整个文件内容等

     命令格式:cat [-options] 文件

    参数:-n:--number 对输出的所有行编号,即在每行前显示所在行号

给上面的test.txt编辑一点内容,查看

  

13、more命令

    more命令类似与cat命令,却比cat命令强大,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。

1)快捷键

space,  z 向下翻页

b,ctrl+b       向上翻页

Enter       向下滚动 1 行

=        显示当前行号

v      用vi编辑器打开当前内容

:f               显示当前文档文件名与当前行号

d,ctrl+D       向下翻 K 行,默认k=11

q,Q              退出more

ctrl+L              类似于清屏

h                      显示快捷键帮助

2)用法:

more [选项] 文件..

选项

-d      显示帮助,而不是响铃

-f              统计逻辑行数而不是屏幕行数

-l              抑制换页(form feed)后的暂停

-p            不滚屏,清屏并显示文本

-c      不滚屏,显示文本并清理行尾

-u      抑制下划线

-s      将多个空行压缩为一行

-NUM     指定每屏显示的行数为 NUM

+NUM     从文件第 NUM 行开始显示

+/STRING 从匹配搜索字符串 STRING 的文件位置开始显示

-V     输出版本信息并退出

14、less 命令

     less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。

less [-选项] 文件

-b 《缓冲区大小》 设置缓冲区的大小

-e 当文件显示结束后,自动离开

-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件

-g 只标志最后搜索的关键词

-i 忽略搜索时的大小写

-m 显示类似more命令的百分比

-N 显示每行的行号

-o 《文件名》 将less 输出的内容在指定文件中保存起来

-Q 不使用警告音

-s 显示连续空行为一行

-S 行过长时间将超出部分舍弃

-x 《数字》 将“tab”键显示为规定的数字空格

/字符串:向下搜索“字符串”的功能

?字符串:向上搜索“字符串”的功能

n:重复前一个搜索(与 / 或 ? 有关)

N:反向重复前一个搜索(与 / 或 ? 有关)

d 向后翻半页

h 显示帮助界面

q,Q 退出less 命令

u 向前滚动半页

y 向前滚动一行

空格键 滚动一行

[pagedown]: 向下翻动一页    space,z   向下翻页

[pageup]: 向上翻动一页        b,ctrl+b    向上翻页

 

g 跳到文件头    【常用】

G 跳到文件尾部  【常用】

15、head命令

       head命令用于查看文档的开始指定数量的字符块,默认显示文档的前 10 行,如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。

head [选项] [文件]

-c, --bytes=[-]K k,显示文档开始的前k个字节,-k,不显示文档结尾的最后 k 个字节

-n, --lines=[-]K k,显示文档开始的前k行,-k,不显示文档结尾的最后 k 行

-q, --quiet, --silent    不显示包含给定文件名的文件头

-v, --verbose      总是显示包含给定文件名的文件头

--help        显示此帮助信息并退出

--version      显示版本信息并退出

16、tail命令

       tail命令与head命令用法相似,tail命令用于查看文档的尾端指定数量的字符块,默认显示文档的最后 10 行,如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。

tail [选项] [文件]

-c, --bytes=K              k,显示文档结尾的前 k 字节,+k,不显示文档开始的前 k-1 字节

-f, --follow[={name|descriptor}]     动态监视文档最新追加的内容

-n, --lines=K              k,显示文档结尾的 k 行,+k,不显示文档开始的前 k-1 行

-q, --quiet, --silent              当有多个文件参数时,不输出各个文件名

-s, --sleep-interval=N              与“-f”选项连用,指定监视文件变化时间隔的秒数

--help                 显示此帮助信息并退出

--version                 显示版本信息并退出

   上面只列举了一部分命令的参数,更多命令的 [选项] [参数],通过 man 命令 查看

   

   站在前辈的肩膀上,每天进步一点点

ends~

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐