一.用户登录

     UID,是系统自动为用户分配的,用来证明用户身份的数字,基本上是0-60000这个区间内的数字

     管理员 :UID=0


     普通用户 :UID=500(CENTOS6) UID=1000(CENTOS7) 

       普通用户又分为系统用户和登录用户,所谓的系统用户是指nologin的那些用户,用来运行      后台服务或进程的用户,不需要登录


      

     决定是不是管理员的是用户的UID,而非用户的名字,root也可以不是管理员


     查看UID的命令:id -u

     


二.终端

    1.物理终端:直接接入本机的显示器及鼠标键盘

                /dev/console

    


    2.虚拟终端:附加在物理终端之上的以软件方式虚拟实现的终端

      centos默认有6个,Ctrl+Alt+F1-6切换

                /dev/tty#

    


    3.模拟终端:

          a.图形界面中打开的命令行(Windows的cmd,Linux图形桌面的终端)

          b.基于ssh协议或者Telnet协议等远程打开的界面(例如XSHELL等)

                /dev/pts/#

    


    查看当前终端 tty


二.交互式接口

     

     启动终端后,在终端设备附加的一个交互式应用程序


    1.GUI:X protocol,window manager,desktop



    2.CLI:shell程序



三.SHELL

   

    shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口,接受用户输入的命     令并送入内核去执行



    shell也是一种高级程序设计语言 (脚本语言)



    查看shell版本

            

            echo $SHELL


    查看系统内存在多少种shell 

            

            cat /etc/shells


    查看用户命名个是


            echo $PS1



    shell中命令有两种


       内部命令:shell本身是个外部程序,但是它内置了很多的命令,这些命令称之为内部命令


       外部命令:当前系统下其他路径下的可执行程序文件


       这里注意,内部命令并不是文件,但是shell本身是文件,有的时候,一个命令是shell自带        的命令,但是,在/目录下却又有相同名字的文件,这个时候想要运行该文件,要将该文件        的绝对路径写清楚


    

    查看是否为内部命令:type


            type COMMAND


    三个命令:type which whereis


        type:查看是为内部命令还是外部命令,当为外部命令时将其路径显示出来,并将hash给             出,当命令具有命令别名时,只会将命令别名显示出来

        

        which:给出命令的路径,并当命令具有命令别名的时候一起将命令别名显示出来


        whereis:显示命令路径,并且将其说明文件手册一同显示出来


    hash命令:当在首次执行外部命令的时候,系统会去命令的位置去读取该命令,并将之写入缓存     中一遍下次能够迅速启动


    查看hash命令: hash


    删除所有hash命令: hash -r

    

    删除hash下的指定的某条命令用hash -d COMMAND,后面接的是命令的名字


    注意:当命令在hash进缓存后,下次执行此命令是,系统是进入缓存中读取改命令的,因此在命     令有hash缓存时,更改了该命令的原路径,在此执行该命令的时候,系统是去缓存中的地址去读     取命令,所以会报错





四.命令格式

    


    # COMMAND  [OPTIONS..] [ARGUMENTS]


      command:命令,必须在#后边,即最左侧


      options:选项,用于启动或关闭命令的某个功能

               

               短选项: -c,例如ls -a ,cp -a


               长选项:--word,例如cp命令中的--preserv=all


      arguments:参数,命令的作用对象




    注意:  1.命令,多选项,多参数之间必须用空白符号隔开         

          

          2.取消命令和结束命令为 Ctrl+c Ctrl+d

          

          3.多个命令共同执行,命令与命令之间必须以;隔开,例如:ls -al;cd /


          4.一个命令太长时,可以用\分成多行


    此处;将多个任务共同执行,前后的命令是没有逻辑关系的,和后边用到的|不同,|前后的命令     是有联系的,前一条命令的输出数据是后一条命令的输入程序



五.简单命令


   1.date命令:显示日期


     date [OPTION]... [+FORMAT] 

     

     date +%a-%F  :两个选项之间需要用减号-链接

     常见的选项:

         %a:星期缩写

         %A:星期的全拼

         %Y:年

         %m:月

         %d:日

         %H:小时

         %M:分钟

     date -d “# days” +%  :显示#天的信息,#等于负数时,显示#天前的信息,#是正数时,          显示几天后的信息


     -d “# days”   :两者要写在一起,“# days”可以换成一些简单的单词如now,yesterday          等



     date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]


      date 月日时分世纪年.秒

      如 20160511 14:23:45   date 051114232016.45



    2.cal命令:查看日历


      cal 月 年


    3.nano:nano文本编辑器


      nano file


    4. echo命令:回显


      echo  [-ne] [字符]


      -n:不显示换行

      -e:实现转义字符

           \a:警告音

           \b:退格键

           \c:不加上换行符号

           \n:换行,光标移到首行

           \r:光标移到首行,但不换行

           \t:插入tab

           \\:插入\


      echo中单双引号


      “”中的内容,会显示出来,例如echo “$PATH”会显示PATH变量中的内容


      ‘’中的内容,会以纯文本的形势显示出来    


      echo反引号或$()

      

      echo中可以引用命令,但该命令必须用``或者$()


      使用echo可以再终端之间发送消息


        echo i am wuyanzu >(句号) /dev/pts/2


     

      echo也是变量相关的一个命令





    5.history历史命令


      history的命令记录在文件.bash_history中


      history #:显示最近的#条历史命令,当不写#时,则显示全部的历史命令


      history -c:删除全部的历史命令(指示清空shell中的数据,仍旧可以从.bash_history中读取)


      history -d 偏移量 :在偏移量的那条命令


      history -w:将shell中的历史命令写入到文件中


      history -r:将文件中的历史命令读取到shell中


      !#:执行历史文件列表第#条命令

      !!:执行上一条命令

      !STRING:执行以STRING打头的命令

      !?abc:执行包含abc的命令

      

      !^:上一个命令的第一个参数


      !$:上一个命令的最后一个参数

      

      !:n:上一个命令的第N个参数

      

      !*:上一个命令的全部参数



      !n:^:第n个命令的第一个参数

      !n:$:第n个命令的最后一个参数

      !n:n:第n个命令的第N个参数

      !n:*:第n个命令的全部参数





      !STR:^:最近的以STR打头的命令的第一个参数

      !STR:$:最近的以STR大头的命令的最后一个参数

      !STR:*:最近的 以STR打头的命令的全部参数

      !STR:n:最近的以STR打头的命令的第n个参数


      



      Ctrl+r:搜索命令

      ESC+.:上一个参数,同!$


      echo   $HISTSIZE:命令列表能保存的最大历史命令条数

           $HISTFILE:显示保存文件

           $HISTFILESIZE:显示历史文件能保存的最大历史命令条数

           

           环境变量:$HISTCONTORL:显示历史文件保存规则

                        ignoredups:忽略重复命令

                        ignorespace:忽略空白开头的命令

                        ignoreboth:以上全部生效

                     

                  $HISTTIMEFORMAT:在history中显示时间

                       使用export更改

                       export HISTTIMEFORMAT=“%F %T”

                  HISTTIMEFORMAT的值中也可以加入反引号植入命令,例如显示使用命令的            用户可以加入`whoami`

                      

                  $HISTIGNORE=“str1:str2:...”:history中将不再显示包含                str1,str2的命令


           修改环境变量: export HISTCONTROL=值

           修改变量: 变量=值

           

           以上,环境变量的内容虽然可以再所有的shell中成立,但是和变量一样,重启后设            置消失,只是针对内存。如果想修改,应该通过修改配置文件的方式

              /etc/profile:这个文件是针对全局的配置文件 修改危险程度较高

              ~/.bash_profile:这个是针对当前用户的配置文件






    6.screen


      额外安装的同屏工具


      screen -S 名字:建立

      screen -x 名字:加入

      screen -ls:显示当前所有screen

      screen -r:转回当前screen

      screen -d:退出



六.一些快捷键


    1.命令补全

    

       TAB:在输入命令时可以按TAB来补全命令


       TABTAB:当命令不是唯一的时候,按一次tab会没有反应,这时候按2次会将所有的可能补全        命令显示出来


    2.Ctrl+l:清屏


    3.Ctrl+c:取消命令


    4.ESC+.:写入以一条命令的参数







七.帮助命令



  1.whatis COMMAND:显示命令在man手册中第几个手册,并将命令的作用简要表达出来


     whatis是一个数据库,当系统刚安装时,可能需要手动安装,手动安装命令:        makewhatis(centos6)和mandb(centos7)


  2.COMMAND -help:内部命令专用帮助


  3.COMMAND --help:外部命令用帮助


  4.man # COMMAND


    man手册:

         1.用户命令  2.系统调用  3.C库调用  4.设备文件


         5.配置文件格式 6.游戏 7.杂项 8.管理工具(管理员用来管理的工具)

         

         9.linux内核相关

    

    查看命令在哪个手册,可以用whatis COMMAND


    man -k keyword :搜索man中有keyword的,使用的是whatis数据库



    /keyword或者?keyword:搜索命令的man手册中的关键字

                  n:下一个    N:上一个


   此处应该注意的时,man 5 下的手册全是用户的配置相关的文件,因此,在使用man 5 时后边的参    数应该是文件名即FILE而不是COMMAND