本章节内容主要介绍linux入门,其中包括用户登录、终端、shell介绍、执行命令、简单命令、以及bash的tab键补齐命令行历史和快捷键的使用。初学者对有些概念比较生疏,建议初学者查看官方文档和查看帮助,尽量多敲多练习,这样能够较快的掌握知识点。


一、用户登录         
    root管理员用户
      一个特殊的管理账户,也被称之为超级用户,其UID为0,已接近完整的系统控制,对系统损害机会有无限的能力,在此建议各位尽量养成用普通用户登录系统,必要时授权给普通用户。

   普通用户
   普通用户的权限有限,因此普通用户对系统造成损害的能力有限,其UID在红帽企业版7和centos7上是以UID1000开始的(在centos5上是500开始)。

   
二、终端terminal  
       服务器非必要的组件,用户与主机交互,必然用到的设备。

终端通常分为:

       物理终端:直接接入本机的显示器和键盘设备 ,其设备文件路径/dev/console,通俗来说就是我拿了一套显示器和键盘去机房直接连接服务器
          

       虚拟终端:附加在物理终端之上的以软件方式虚拟实现的终端,期设备文件路径  /dev/tty#     Ctrl+Alt+F# [1-6]

       图形终端:属于虚拟终端,附加 在物理终端之上的以软件方式虚拟实现的终端。比如安装了KED或者GNOME图形桌面

       模拟终端:图形界面打开的命令行或telnet等远程打开的界面,设备文件:/dev/pts/#  ,通过网络在远程的操作间利用ssh或者telnet进行远程管理,不需要管理员跑去机房管理服务器,我们生产环境中通常是这么做的,除非机器故障远程不了的,才会去机房处理 


三、交互式接口 
        GUI:Graphic  User Interface
        Desktop:    
        GNOME(C  图形库gtk)
        KDE ( C++ 图形库qt)
        XFCE (轻量级桌面)
        CLI    :Command  Line  Interface
四、shell

       shell是linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。也被称之为linux的命令解释器(command interpreter)  ,它也是一种高级程序设计语言。

linux入门_简单


      

     shell程序的类型有:sh,csh,tcsh,ksh,bash

     bash shell

     GNU Bourne—Again Shell(bash)是GNU计划中 重要的工具软件之一,目前也是linux 标准的shell,与sh兼容。   
命令提示符:prompt    
    [root@localhost ~]#CentOS默认使用bash shell
        echo $PS1
        prompt
        管理员: #
        普通用户:$

linux入门_linux_02


五、执行命令       
     内部命令:由shell自带,通过某命令形式提供,enable命令可以启动或禁用内部命令

     外部命令:在当前系统的某文件系统路径下有对应的可执行程序文件

     区别当前使用的命令是内部命令还是外部命令:

     用法:which  command

linux入门_简单_03

     如果是内部命令,执行which  command之后就会显示一个路径,说明这个命令是存放在磁盘上的。


    区别当前会用的命令是内部命令或外部命令       

     type  command


linux入门_入门_04

        如果是内部命令执行type  command 之后他就是提示command  is a shell builtin意思是这个命令是内部命令

       hash命令
       搜存到的外部命令路径结果缓存至kv(key-value)存储中hash,
       hash  -r  清楚缓存
       hash  -d   command   删除某条命令的记录
    禁用内部命令
      enable -n  command 禁用
      enable    command  启动

linux入门_linux_05

    当执行enable -n  cd  之后,这个命令将被禁用,但执行cd命令会根据环境变量的路径在磁盘上寻找cd命令。


     命令格式
     command [OPTIONS.. ]  [ARGUMENTS]
     短选项:-c,例如:-l,-h
     长选项:--word,例如:--all,--human

    参数:命令的作用对象,比如文件名,用户名
       

 注意:
                1、多选项,以及多参数和命令之间使用空白字符分隔
                2、取消和结束命令执行:Ctrl+C   Ctrl+d
                3、多个命令可以用;符号分开
                4、一个命令可以用\分成多行
        linux入门_linux_06

六、简单命令            
     date 显示时间和日期

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

           %F        显示年月日
           %D       直接显示日期mm/dd/yy

           %H       显示小时

           %M      显示分钟

           %S        显示秒

           %s        从1970年1月1日到现在所经过的秒数

           %m        显示月份

     date -d  "+2 day" 显示后天的日期

这个date命令在使用选项时跟其他命令不同,带选项是+%F,而不是-F



 

        linux入门_入门_07 

     linux有两种时钟:
         系统时钟:由linux内核通过cpu的工作频率进行计时的;
         硬件时间:主板BIOS提供的时钟,由主板电池供电维持运行。

      hwclock  clock  显示硬件时钟
        -s    以硬件时钟为准,校准系统时间
        -w   以系统时间为准,校准硬件时间
       

     cal 显示日历,默认显示当前月的日历

       cal  年份        显示年份的日历

              cal  2016

       cal  月份   年份

              cal  10  2016    

       cal  1752   特殊时间

linux入门_linux_08


     nano 文本编辑

       ctrl+o        保存

       ctrl+x        退出


      screen  
      打开新的screen
         screen
      退出并关闭screen

        ext

      剥离当前screen
         ctrl+a,d
      显示所有已经打开的screen;
         screen  -ls
      恢复某screen
         screen  -r   [session]

         screen  -S    [session]

         screen   - x  [session]

这个命令非常的实用,当生产环境中,A遇到问题不会处理,他准备求助他的同事B,他又不好意思让他跑过来一下,这时候screen命令就派上用场了,A只需要新建一个会话(screen  -S   help),而B只需要接入到这个会话当中(screen -x help),那么他们两个人屏幕上显示的内容完全一模一样,B的任何一个动作,A都会看到,这样既解决了问题,又学到了东西。

        echo命令
            -n   不在字符的最后自动换行
            -e   在字符串出现以下字符
            \a发出警告声
            \b退格键
            \c换行切光标移至行首
            \n换行且光标移至行首
            \r光标移至行首,但不换行
            \t插入tab:
            \\插入\字符

            echo -e "\033[字背景颜色;文字颜色m字符串\033[0m" 

            echo -e "\033[41;37m abcd \033[0m"
            其中41的位置代表底色, 37的位置是代表字的颜色

            其中31m-37m代表的是黑红绿黄蓝紫天白

            \33[0m 关闭所有属性
            \33[1m 设置高亮度
            \33[4m 下划线
            \33[5m 闪烁
            \33[7m 反显
            \33[8m 消隐
            \33[30m -- \33[37m 设置前景色
            \33[40m -- \33[47m 设置背景色

  


七、bash的简单用法   

         $()或` `
         把一个命令的输出打印给另一个命令的参数

         echo "today  is  `date +%F`

linux入门_入门_09

      { }括号扩展

      echo file{1,2,3}

      file1 file2 file3

   linux入门_入门_10



    命令补全

       内部命令:实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bashy源码里面的,其执行速度比外部命令快,因为解析内部命令shell不需要创建子进程。比如:exit,history,cd,echo等。               

        外部命令:bash根据PATH环境变量定义的路径自左而右在每个路径搜寻给定命令名的文件
        
   路径补全
        把用户给出的字符当做路径开头,并在其指定的上级目录下搜索以指定的字符串开头的文件名
        如果唯一则直接补全,否则再次tab给出列表       
    
  命令行历史

        保存你输入的命令历史,可以用它来重复执行的命令,登录shell时,会读取命令历史文件记录下的命令,保存在~/.bash_history文件中。登录shell后新执行的命令只会记录在缓存中;这些命令会在用户退出时追加至命令历史文件中

       重 复前一个命令使用上方向键,并回车执行,有如下四种方法
       按!!并回车

      !-1
       ctrl+p

linux入门_linux_11


          !num 按照history命令输出中的序号重复对应命令
          !?字符串:重复前一个包含abc的命令
           !-n:重复n个命令之前的那个命令
           ctrl -r来在命令历史中搜索命令


linux入门_简单_12

     要重现调用前一个命令中最后一个参数
         !$
         esc ,.(点击esc键后松开然后点击.键)
         alt+.(按alt键的同时点击"."键)

                    
    调用历史参数
        cmd !^ 利用上一个命令的第一个参数做cmd的参数
        cmd !$ 利用上一个命令的最后一个参数做cmd的参数
        cmd !* 利用上一个命令的全部参数做cmd的参数
        cmd !:n 利用上一个命令的第n个参数做cmd的参数
    
    
        \command 不使用命令别名,使用命令本身的意义
        ’'使用单引号让命令不使用命令别名

linux入门_入门_13

    调用历史参数
        !string:^ 从命令历史中搜索以string开头的命令,并获取他的第一个参数
        !string:$ 从命令历史中搜索以string开头的命令,并获取他的最后一个参数     

        !string:n 从命令历史中搜索以string开头的命令,并获取他的第n个参数   
        !string:* 从命令历史中搜索以string开头的命令,并获取他的所有参数

    命令的优先级:
        别名>内部命令>hash>外部命令

   
    history  
      -c:清空命令历史
      -d:删除历史中指定的命令
      -a:追加本次会话新执行的命令历史列表至历史文件
      -n:读历史文件未读过的行到历史列表
        
   命令历史相关环境变量
      HISTSIZE:命令历史记录的条数
      HISTFILE:指令历史文件,默认为~/.bash_history
      HISTFILESIZE:命令历史文件记录历史的条数
      HISTTIMEFORMAT=“%F %T"显示时间
      HISTIGNORE="str1:str2 .. “ 忽略string1  string2历史
      HISTCONTROL
          ignoredups:忽略重复的命令,连续且相同方为重复
          ignorespace:忽略所有以空白开头的命令
          ingoreboth: ingoredups,ignorespace
          erasedups:删除重复的命令   

linux入门_入门_14


    bash的快捷键
      ctrl+l    清屏,相当于clear
      ctrl+c    取消命令的执行
      ctrl-a    会移动到命令行的最前面
      ctrl-e    会移动到命令行的最后面
      ctrl-u    会删除到行首
      ctrl-k    会删除到行尾
      Esc -b    左移一个单词