一、linux系统入门指令Centos下)

 0.计算机认识

        计算机:接受用户的指令与数据,经过中央处理器的数据与逻辑单
    元运算处理后,以产生或存储成有用的信息。
    广义上讲:我们周边有好多宽泛概念上的计算机,如加减乘除计算
    机,手机, GPS, ATM等等。
    计算机五大单元
           输入单元:包括键盘,鼠标,扫描仪,手写板等。
           中央处理器(CPU):含有算术逻辑控制记忆等单元。
           输出单元:显示器,打印机。

 1.系统认识—冯诺依曼体系(一切皆文件思想)

wKioL1c5gZHhEwz2AAHc9Zwm7F8309.png 注意:这里存储器指内存CPU读取的数据都是从内存中来的, CPU处理完成的数据,必须要先写回内存,,最后数据才从内存传输到输出单元(忽略缓存)。
 

体系结构

编辑


    (1)采用存储程序方式,指令和数据不加区别混合存储在同一个存储器中,(数据和程序在内存中是没有区别的,它们都是内存中的数据,当EIP指针指向哪 CPU就加载那段内存中的数据,如果是不正确的指令格式,CPU就会发生错误中断. 在现在CPU的保护模式中,每个内存段都有其描述符,这个描述符记录着这个内存段的访问权限(可读,可写,可执行).这就变相的指定了哪些内存中存储的是指令哪些是数据)指令和数据都可以送到运算器进行运算,即由指令组成的程序是可以修改的。

    (2)存储器是按地址访问的线性编址的一维结构,每个单元的位数是固定的。

    (3)指令由操作码和地址组成。操作码指明本指令的操作类型,地址码指明操作数和地址。操作数本身无数据类型的标志,它的数据类型由操作码确定。

    (4)通过执行指令直接发出控制信号控制计算机的操作。指令在存储器中按其执行顺序存放,由指令计数器指明要执行的指令所在的单元地址。指令计数器只有一个,一般按顺序递增,但执行顺序可按运算结果或当时的外界条件而改变。

    (5)以运算器为中心,I/O设备与存储器间的数据传送都要经过运算器。

    (6)数据以二进制表示。


   环境变量
        Linux是一个多用户的操作系统。 多用户意味着每个用户登录系统后,都有 专用的运行环境。所以这个环境是由一组变量所定义组变量被称为环境变      量用户可以对自己的环境变量进行修改以达到对环境的要求。

   常用的环境变量:

        1.PATH:指定命令的搜索路径
        2.HOME:指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目    录)
        3.HISTSIZE:指保存历史命令记录的条数。
        4.LOGNAME:指当前用户的登录名。
        5.HOSTNAME:指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
        6.SHELL:指当前用户用的是哪种Shell
        7.LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
        8.MAIL:指当前用户的邮件存放目录。
        9.PS1:命令基本提示符,对于root用户是#,对于普通用户是$
        10.PS2:附属提示符,默认是“>”
    注意:上述变量的名字并不固定,如HOSTNAME在某些Linux系统
  中可能设置成HOST

    Linux也提供了修改和查看环境变量的命令!下面通过一个实例来说明:
        1.echo   显示某个环境变量值 echo $PATH
        2.export 设置一个新的环境变量export HELLO="hello" ( 可以用引号)
        3.env 显示所有环境变量
        4.set 显示本地定义的shell变量
        5.unset 清除环境变量 unset HELLO
        6.readonly 设置只读环境变量 readonly HELLO

   Linux文件类型:
    1. 普通文件(regular file)第一个字符为[ - ]
    包括:

    ①纯文本档(ASCII) :这是Linux系统中最多的一种文件类型,称为纯文本档。是因为内容为我们人类可以直接读到的数据,例如数字、字母等等。

    ②二进制文件(binary) : 你的Linux中的可执行文件(scripts,文字型批处理文件不算就是这种格式的。
    ③数据格式文件(data)有些程序在运作的过程当中会读取某些特定格式的档案,那些特定格式的档案可以被称为数据文件 (data file) 。一般cat看到的都是乱码。
    2. (directory): 第一个字符为[ d ]
    3. 连接文件(link) :第一个字符为[ l ]
    4. 设备和设备文件
    块设备文件,即一些存储文件,如硬盘、软盘等,第一个字符为[ b 
    字符设备文件,即一些串行端口的接口文件,如键盘、鼠标等,第一个字符为[ c ]
    5. 套接字(sockets):第一个字符为[ s ]

    还被称为数据接口文件,这种类型的问件通常被用在网络上的数据连接。我们可以启动一个程序来监听客户端的请求,客户端就可以通过数据接口文件来进行数据通信。
    6. 管道(FIFO,pipe):第一个字符为[ p 
        FIFO也是一种特殊的文件类型,他主要的目的解决多个程序同时访问一个文件所造成的错误问题, first-in-first-out
    linux的扩展名
    基本上, Linux的文件是没有所谓的『扩展名』的,Linux文件能不能被执行,与x有关,与文件名根本一点关系也没有。这个观念跟Windows 的情况不相同!     Windows 底下,能被执行的档案扩展名通常是 .com .exe .bat 等,在Linux底下,只要你的权限当中具有 x的话,例如[ -rwx-r-xr-x ]即代表这个文件可以被执行!
    但是能执行与能执行成功是不同的。虽然扩展名不起作用但是我们还是希望可以由扩展名了解此文件是什么东西。所以linux已扩展名作为文件的类型标示(但不能决定文件的类型)
    .sh : 脚本或者批处理文件(scripts
    .Z  .tar .tar.gz .zip .tgz : 经过打包的压缩文件。
    .html  .php : 网页相关文件。

  2.Linux权限管理(一件事情允许被谁做?执行者,事物属性)
    1、文件访问者的分类()
        a) 文件和文件目录的所有者: u---User
        b) 文件和文件目录的所有者所在的组的用户: g---Group
        c) 其它户: o---Others 
    2、文件访问权限的种类(事物属性)
        a) 、基本权限
        i. r/4): Read对文件而言,具有读取文本件内容的权限;对目录来说,具有浏览该目录内容信息的权限
        ii. w/2): Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
        iii. 执行x/1): execute对文件而言,具有执行文件的权限;对目录来说,具有进入录的权限
        iv.“—”表示不具有该项权限
        b) 、特殊权限
        i. suid (s/4) 只能应用在可执行文件上,允许任意用户在执文件件时以文件拥有者的身份执行
        ii. sgid s/2)只能应用在可执行文件上,使任意用户在执行可执行文件时,将以拥有组成员的身份执行
        iii. 粘着位(t/1)只能应用在目录文件上,将使用户在目录中执行删除时,只能删除自己拥有的对象

    3、文件权限值的表示方法
        a) 字符表示方法
wKioL1c5kCfx6foFAABvVc4ZErc154.png

       b)8进制数值表示法

wKiom1c5j3mRV6IlAABcD4MSv3s713.png

    4、件访问权限的相关设置法
    a)chmod
    功能:设置件的访问权限
    格式: chmod [ 参数权限文件名
    参数: R -> 递归修改录件的权限
             V -> 显指令执过程、
             reference=<参考件或录>:把指定件或录的权限全部设成与参考件或录的权限相同。
    说明:只有文件的拥有者和root才可以改变件的权限
        chmod命令权限值的格式:
     ① 户表符+/-=权限字符
         +: 向权限范围增加权限代号所表的权限
         -: 向权限范围取消权限代号所表的权限
         =: 向权限范围赋予权限代号所表的权限
          用户符号:    
            u:拥有者
            g:拥有者同组户

                o:其它用户
            a:所有用户
     实例:
          # chmod u+w /home/abc.txt
          # chmod o-x /home/abc.txt
          # chmod a=x /home/abc.txt

     ②三位8进制数字
     实例:
          # chmod 664 /home/abc.txt
          # chmod 640 /home/abc.txt

     ③示例赋权方式
     格式:
          # chmod --reference= reference target
     实例:
          #chmod —reference= reference.txt
          target.txt(参照reference.txt的赋值权限,来设置
          target.txt
    b)chown  
    功能:修改文件的拥有者
    格式: chown [ 参数] 用户名 文件名
    实例:
        # chown user1 f1
        # chown -R user1 filegroup1

    c)chgrp
    功能:修改文件或目录的所属组
    格式: chgrp [ 参数] 用户组名 文件名  
    参数: -R 递归修改件或录的所属组
    实例:
        # chgrp users /abc/f2
    d)umask
    功能:查看或修改文件掩码
    新建文件夹默认权限=0666-权限掩码
    新建目录默认权限=0777-权限掩码
    格式: umask 权限值
    说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。
    超级用户默认掩码值为0022,普通用户默认为0002

    实例:    
        # umask 755
        # umask //查看

        # umask 044//设置
    e) 使用sudo分配权限
    1)修改/etc/sudoers文件 分配文件
        # chmod 740 /etc/sudoers
        # vi /etc/sudoer
    格式:接受权限的户登陆的主机  =(执命令的户)命令
    2)使用 sudo 调用授权的命令
    $  sudu –u 用户名  命令
    实例: $ sudo -u root /usr/sbin/useradd u2
      目录的可执行权限是表示你可否在目录下执行命令。如果目录
    没有-x权限,则无法对目录执行任何命令,甚至无法cd 进目录。
    即使目录仍然有-r 读权限(这个地方容易犯错,认为有读权限就
    可以进入录读取目录下的文件)。如果目录具有-x权限,但没
    有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有
    录的读权限,所以在目录下,即使可以执ls命令,但仍然没有权
    限读出目录下的文档。

  3.常用指令汇总

  ls (list)指令:列出目录文件(具体选项略)

   cd (change directory)命令

   时间相关:
    date显示:date 指定格式显时间: date +%Y_%m_%ddate +%Y:%m:%d
    date命令本身提供了日期的加减运算非常方便。例如:得到昨天的时间
    date +%Y%m%d --date="-1 day"

    Cal指令
    cal命令可以来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。 阳历太阳历,系以地球绕太阳一周为一年,为西方各国所通yoga,故又名“西
  命令格式:
    cal [ 参数][ 月份][ 年份]
  命令功能:
 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999) ,如有两个参数,则表示月份和年份

    touch指令:
    linuxtouch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件。
  命令格式:
    touch [ 选项]... 文...

    mkdir指令(重要):
    linux mkdir命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。
    命令格式:
    mkdir [ 选项] 目...

    rmdir指令 && rm 指令(重要):
    rmdir是一个与mkdir相对应的命令。 mkdir是建立目录rmdir是删除命令。 rm命令可以同时删除文件或目录
     1. 名称: rmdir
     2. 适用对象:具有当前目录操作权限的所有使用者
     3. 命令格式: 
rmdir [-p -v] [dirName]
     4. 作 用:删除空目录
     5. 参数详解:
      -p 当前目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
     1. 名称: rm
     2. 适用对象:所有使用者
     3. 命令格式: rm [-f-i-r-v] [dirName/dir]
     4. 作 用:删除文件或目录
     5. 参数详解:
     -f 即使文件属性为只读即写保护,亦直接删除
     -i 删除前逐一询问确认
     -r 递归删除目录及其下所有文件(慎用)

   cp指令(重要):
   功能复制件或录
   说明
cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,并且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。

    mv指令(重要):
    mv命令是move的缩写可以用来移动文件或者将文件改名(move(rename)files,是Linux系统下常用的命令,经常用来备份文件或者目录。
    1.命令格式:
        mv [ 选项] 源文件或目录、 目标文件或目录
    2.命令功能:视mv命令中第一个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移到一个新的目录中。当第一个参数类型是文件时,mv命令完成件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第一个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移到目标目录中。在跨文件系统移动为毛件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失

    basename指令:(重要)
    返回一个字符串参数的基本文件名称。
    语法
    basename String [ Suffix(后缀) ]
    描述
    basename 命令读取 String参数,删除以 /( 斜杠) 结尾的前缀以及任何指定的Suffix参数,并将剩余的基本件名称写标准输出basename 命令应用以下创建基本文件名称的规则:如果 String 参数是 //( 双斜杠) 或如果 String 参数包含的
都是斜杠字符,则将字符串更改为单个 /( 斜杠) basename ////从指定字符串除去任何拖尾的 / 字符。如果在 String 参数中剩余任何 / 字符,则除去字符串的前缀直到(包含)最后一个 / 字符。

    如果指定 Suffix 参数,且它和字符串中的剩余的字符相同,则不修改此字符串。例如,输入:
    basename /u/dee/desktop/cns.boo cns.boo
    结果是:
    cns.boo
    如果指定 Suffix 参数,且它和字符串中所有字符都不相同,但和字符串的后缀相同,则除去指定后缀。例如,输入:
    basename /u/dee/desktop/cns.boo .boo
    结果是:
    cns
    不能在字符串中查找到指定的后缀不作为错误处理。basename和dirname命令通常用于shell 脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称。
    退出状态
    该命令返回以下退出值:
    0 :成功完成
    非0:发生错误

    dirname指令:(重要)
    dirname命令的作用是处理路径,以获取路径的父目录,并且dirname不会检查路径是否合法。
    用法: dirname [path | options]
    作用:输出已经去除了尾部的"/" 字符部分的名称;如果名称
中不包含"/" ,则显示"."( 表示当前目录)

    nl指令:
    nl命令在linux系统中用来计算文件中行号。 nl 可以将输出的文件内容文动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与 是否子动补0等等的功能。    
    命令格式:
    nl [ 选项]... [ 文件]...

    命令功能:
    nl 命令读取 File 参数(缺省情况下标准输出),计算输出中的行号,将计算过的行号写到标准输出。在输出中, nl 命令根据您在命令中指定的标志来计算左边的行。 输入文本必须写在逻辑页中。每个逻辑页有头、主体和页脚节(可以有空节)。 除非使用-p 标志, nl 命令在每个逻辑开始的地方重新设置行号。 可以单独为头、主体和页脚节设置行计算标志(例如,头和页脚可以被计算然而文本行不能)。
    详解:

   http://www.cnblogs.com/peida/archive/2012/11/01/2749048.html

   more指令:(重要)
    功能简述: more命令,功能类似 cat , cat命令是整个文件的内容从上到下显在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,最基本的指令就是按空格键(space)就往下一页显示,按 b键就会往回(back)一页显示,而且还有搜寻字串的功能。 more命令从前向后读取文件,因此在启动时就加载整个文件。

    find指令:(灰常重要)

     Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS) ,find命令在该文件系统中同样有效,只你具有相应的权限。在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台
执行,因为遍历一个大的文件系统可能会花费很长的时间( 这里是指30G字节以上的文件系统) 。

    1.命令格式:
     find pathname -options [ -print -exec -ok ...]
    2.命令功能:
   于在文件树种查找文件,并作出相应的处理(可能访问磁盘)

   locate指令: 

    使用权限:所有使用者  
    使用方式: 

    locate [-q] [-d ] [--database=]  
    locate [-r ] [--regexp=]  
    locate [-qv] [-o ] [--output=]  
    locate [-e ] [-f ] <[-l ] [-c]  
    <[-U ] [-u]>  
    locate [-Vh] [--version] [--help]  

    说明:  
    locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的资料库,之后当寻找时就只需查询这个资料库,而不必实际深入档案系统之中了。
    在一般的 distribution 之中,资料库的建立都被放在 contab中子动执行。一般使用者在使用时只要用
    # locate your_file_name 的型式就可以了。

    gzip指令:
    命令:  gzip
    语法: gzip [选项] 压缩(解压缩)的文件名

   tar指令(重要) :
    tar [-cxtzjvfpPN] 件与录 ....
    参数:
    -c :建个压缩件的参数指令(create 的意思) ;
    -x :解开个压缩件的参数指令!
    -t :查看 tarfile 的件!
   特别注意,在参数的下达中, c/x/t 仅能存在个!不可同时存
在!因为不可能同时压缩与解压缩。

   sync指令:
    sync命令用于强制被改变的内容立刻写入磁盘,更新超块信息。
    在Linux/Unix系统中,在文件或数据处理过程中一般先放到内存
    缓冲区中,等到适当的时候再写入磁盘,以提高系统的运行效率。
    sync命令则可用来强制将内存缓冲区中的数据立即写入磁盘中。
    户通常不需执行sync命令,系统会自动执行update或bdflush操
    作,将缓冲区的数据写入磁盘。只有在update或bdflush我法执
   行或用户需要正常关机时,才需手动执行sync命令。sync命令会

    强制将数据写入磁盘中,并释放该数据对应的buffer,所以常常会在      写磁盘后输入sync命令来
    将数据真正的写入磁盘。 如果不去手动的输入sync命令来真正的
    去写磁盘, linux系统也会周期性的去sync数据。 

    语法
    sync [--help][--version] 

   chgrp指令:
    在liunix系统内,文件或目录的权限的掌控以拥有者及所诉群组来管理。可以使用chgrp指令取变更文件与目录所属群组,这种式采用群组名称或群组识别码都可以。 Chgrp命令就是change group的缩写!要被改变的组名必须要在/etc/group文件内存在才行。
    1.命令格式:
    chgrp [ 选项] [ 组] [ 文件]
    2.命令功能:
    chgrp命令可采用群组名称或群组识别码的方式改变文件或目录的所属群组。使用权限是超级用户

   chown指令:
    chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷到到另一个用户的名录下之后,让用户拥有使用该文件的权限。
   1.命令格式:
     chown [ 选项]... [ 所有者][:[ 组]] 文件...
   2.命令功能:
    通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者
其操作权限一般为管理员。

   chmod指令:

    chmod命令用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种方法一种是包含字符和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

    chmod命令是非常重要的用于改变文件或目录的访问权限。
    用户用它控制文件或目录的访问权限。 chmod命令详细情况如下。
    命令格式:
    chmod [-cfvR] [--help] [--version] mode file 

   uname –r指令:

    uname 命令可用于大多数 UNIX 和类 UNIX 系统以及Linux。  
    功能说明: uname用来获取电脑和操作系统的相关信息。  
    语  法: uname [-amnrsvpio][--help][--version]  
    补充说明: uname可显示linux主机所用的操作系统的版本、硬件
的名称等基本信息。

   pwd指令:
    Linux中 pwd 命令来查看”当前作录“的完整路径。 简
单得说,每当你在终端进操作时,你都会有个当前作录。
在不太确定当前位置时,就会使pwd来判定当前录在件系统
内的确切位置。
    1.命令格式:
    pwd [ 选项]
    2.命令功能:
    查看”当前工作目录“的完整路径
    3.常用参数:
    一般情况下不带任何参数如果目录是链接时:
    格式: pwd -P     显示出实际路径,而不使用连接(link)路径。

   cat指令: tac?(常用)
    主要有三大功能:
    1. 一次显示整个文件。 $ cat filename
    2. 从键盘创建一个文件。 $ cat > filename    只能创建新文件, 不能编辑已有文件.
    3. 将几个文件合并为个一件:  $cat file1 file2 > file

   Sort指令 (重要)
    功能说明:将文本文件内容加以排序。
    语  法: sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][ 文件]
    补充说明: sort可针对文本文件的内容,以行为单位来排序。

    Uniq指令(重要)
    uniq [ 选项] 文件
    说明:这个命令读取输入文件,并比较相邻的行。在正常情况下,第一个及以后更多个重复行将被删去,行比较是根据所有字符集的排序序列进的。 该命令加工后的结果写到输出文件中。输入件和输出文件必须不同。如果输入文件用“- ”表示,则从标准输入读取。

   who指令:
    功能说明:显示当前登录系统的用户信息。  
    语  法: who [-Himqsw][--help][--version][ami][ 记录件]     补充说明:执行这项指令可得知当前有那些用户登录系统,单独执who指令会列出登录帐号,使用的终端机,登录时间以及从何处登录或正在使用哪个X显示器。 

   kill指令:
    Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令。通常,终止一个前台进程可以使Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用

ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来
杀掉该进程。 kill命令是通过向进程发送指定的信号来结束相应进
程的。在默认情况下,采用编号为15的TERM信号。 TERM信号将终止所有不能捕获该信号的进程。对于那些可以捕获该信号的进程就要用编号为9的kill信号,强行“杀掉”该进程。
    命令格式:
    kill[ 参数][ 进程号]
   diff命令

    是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方。 diff在命令行中打印每一个行的改动。最新版本的diff还支持二进制文件。 diff程序的输出被称为补丁 (patch) ,因为Linux系统中还有一个patch程序,可以根据diff的输出将a.c的文件内容更新为b.c。diff是svn、 cvs、 git等版本控制工具不可或缺的一部分。
    命令格式:
    diff[ 参数][ 件1或录1][ 件2或录2]
 
    

  重要的几个热键[Tab],[ctrl]-c, [ctrl]-d
    [Tab] 按键---具有『命令补全』不『档案补』的功能
    [Ctrl]-c按键---让当前的程序『停掉』
    [Ctrl]-d按键---通常代表着:『键盘输结束(End Of File,EOF 或End OfInput) 』的意思;另外,他也可以用来取代exit
安装和登录命令: login、 shutdown、 halt、 reboot、
install、 mount、 umount、 chsh、 exit、 last;
件处理命令: file、 mkdir、 grep、 dd、 find、 mv、 ls、
diff、 cat、 ln;
系统管理相关命令: df、 top、 free、 quota、 at、 lp、
adduser、 groupadd、 kill、 crontab;
络操作命令: ifconfig、 ip、 ping、 netstat、 telnet、
ftp、 route、 rlogin、 rcp、 finger、 mail、  nslookup;
系统安全相关命令: passwd、 su、 umask、 chgrp、 chmod、
chown、 chattr、 sudo ps、 who;
其它命令: tar、 unzip、 gunzip、 unarj、 mtools、 man、
unendcode、 uudecode。