Linux基础命令

Linux基础
 一、基础命令
    1、ls:列出当前目录下的的文件或目录
    2、ls -a :列出当前目录下所有的文件和目录(包括隐藏文件)
    3、ls -l :显示文件的详细信息(长格式的信息查看),相当于 ll
       ls -hl:显示文件的详细信息和文件的大小
       ls -al:列出当前目录下所有的文件和目录的详细信息
       ls -dl:显示当前文件本身的详细信息
    4、cat 命令:查看文件信息(只能查看文件)
          [root@com ~]# cat /etc/passwd :查看所有的用户信息
          [root@com ~]# cat /etc/group  :查看所有的用户组信息
          注明:在Linux系统中每创建一个用户就会自动生成一个对应的用户组。
    5、cd命令:切换目录
         [root@com ~]# cd /etc :切换到根目录下的etc目录
        pwd:显示当前文件的目录
        whoami:查看当前的用户
               [root@com etc]# whoami:查看当前用户是root用户
               root
    6、/:表示用户的根目录
          家目录(宿主目录)
          1)管理员用户的家目录:
             [root@com ~]# pwd
             /root
          2)普通用户的家目录:
             [java17@com ~]$ pwd
             /home/java17
    7、切换用户命令:su - 用户名
       1)切换到普通用户
       [root@com ~]# su - java17
        [java17@com ~]$ pwd
        /home/java17
       2)切换到root管理员用户
       [java17@com ~]$ su - 或
       [java17@com ~]$ su - root
       Password:
    8、关机、重启、清屏
        关机:halt、init 0、shutdown now
        重启:reboot、init6
        清屏:clear、Ctrl+l        
    
二、Linux文件和目录的一些常用命令
    1、touch命令:创建一个空文件
     1)在root用户的家目录下创建一个java17.txt的空文件
        [root@com ~]# touch java17.txt
     2)在root用户的家目录下创建一个带空格的文件(对有空格文件加上引号即可)
        [root@com ~]# touch "program file"
    2、rm命令:删除文件或目录
       删除root用户家目录下的program这个空文件
       [root@com ~]# rm program
    3、mkdir命令:创建一个目录
       1)[root@com ~]# mkdir java17:创建一个java17的目录
       2)删除java17这个目录:[root@com ~]# rm -rf java17
          注意:如果java17这个目录下还有文件,向一次性删除,用到选项-rf。
                -f:在使用中很容易将系统中重要的文件删掉,所以在使用中要谨慎。
       3)递归创建目录 -p
          [root@com ~]# mkdir -p beifeng/laowang
    4、cp命令:复制一个文件或目录
        拷贝根目录下etc配置目录下的passwd文件到root用户家目录下的beifeng目录中
        [root@com ~]# cp /etc/passwd /root/beifeng
        查看是否复制成功:[root@com ~]# ls beifeng
                           file  laowang  passwd        
            
    5、mv命令:剪切和重命名
       1)剪切文件到目录中去
          [root@com ~]# mv /laowang /root
       2)重命名的功能
          [root@com ~]# mv laowang gebilaowang
    6、more命令:分页查看文件的内容
       [root@com ~]# more /etc/services    
        1)按回车键:一行一行的查看文件内容
        2)按一下空格键:一页一页的查看文件的内容
        3)退出文件查看:q或Ctrl+c
    7、head命令
       1)查看一个文件的前几行(默认是查看前十行)
          [root@com ~]# head /etc/services
       2)选项 -n(n代表数字)查看文件的前30行
          [root@com ~]# head -30 /etc/services
    8、tail命名:查看文件的后几行(默认查看文件的后十行)
       1)[root@com ~]# tail /etc/services (默认查看文件的后十行)
       2)查看文件的后三十行
          [root@com ~]# tail -30 /etc/services
       3)动态查看文件的后十行
          [root@com ~]# tail -f /etc/services       
           注意:文件可能优势回进行添加和删除,加上选项-f就能保证我们要查看最后十行文件信息数据
    9、find命令:查找文件或目录
       查看文件名为java17.txt的文件同时显示目录信息
       [root@com ~]# find -name java17.txt
       ./java17.tx
       
       [root@com ~]# find / -name beifeng01
       /beifeng01
    
    三、vi编辑器
       1、三种模式:
        1)命令行模式:刚进入文件的时候状态
           [root@com ~]# vi /etc/passwd
        2)编辑模式(插入模式):按i键进入编辑模式
        3)最后行模式:保存和退出状态
           a.如果我们对文件进行了修改要进行保存的话,先进入命令行模式anEsc进去最后行模式后
             按Shift : wq 对文件进行保存并退出。
           b.如果指示查看文件信息不进行对其编辑直接进入命令行模式按Esc进入最后行模式进行退出,
             按Shift : q!进行强制退出。
            
            注意:w:保存   q:退出   !:强制操作
            这三个选项可以联合使用。
       2、vi快捷键
        1)G:在命令行模式按G进入文件最后一行
        2)gg:在命令行模式按gg进入文件的第一行
        3)在最后行模式输入:set nu 显示文件的行号
           不显示行号 :set nonu
        4)dd:在命令行模式删除一行数据,同样带有剪切的功能
              如果要删除多行,直接在dd前面加上数字即可,比如7dd
        5)p:黏贴的功能,命令行模式使用
        6)u:撤销操作
        7)替换内容,在最后行模式操作
           :1,$s/nologin/88888888/g
           注释:1:表示文件的第一行,不一定十从第一行开始,也可以重其他行开始,只要修改前面的数字即可。
                 $:表示文件的最后一行
                   中间的斜线起到了分隔的作用
                   g:表示通行(全部替换的意思)
        
    四、文件系统常用的命令
       1、df命令:查看系统文件占用情况(分区大小)
          [root@com ~]# df 选项 挂载点
          选项:
               -a:显示所有系统文件信息,包括特殊的和隐藏的系统文件
               -h:显示文件的一个大小容量,比如KB、MB、GB等
               -T: 显示系统文件的一个类型
               -m: 以MB为单位显示文件大小容量
               -k: 以KB为单位显示文件大小容量,默认都是以KB为大那位的
                 1)查看root目录下的系统文件
                    [root@com ~]# df
                 2)显示文件的大小和占用情况
                    [root@com ~]# df -h
                 3)。。。。。。
                
        2、du命令:统计目录和文件的大小
              格式:[root@com ~]# du 选项 目录或文件
           选项:
               -a:显示每个子文件的磁盘占用量。默认情况下只统计子目录的占用量
               -h:显示文件的一个大小容量,比如KB、MB、GB等
               -s: 统计总占用量,不显示子文件的占用量
                  1)查看etc目录及子目录下的文件大小
                     [root@com ~]# du -h /etc/
                  2)查看etc目录及子目录的总大小,不显示子目录
                     [root@com ~]# du -sh /etc
                     35M     /etc
        补充:du命令和df命令的区别:
             1)df命令十从文件系统考虑的,不光要文件的空间,还要统计被命令或系统程序占用的空间,
                最常见就是文件已经被删除,但是程序并没有释放空间。所以说用df命令查看文件或目录
                的剩余空间更准确。
             2)du命令是面向文件的,只会统计文件或目录的占用空间,用du命令查看文件或目录更准确。
            
            
    五、用户和用户组
       1、创建用户:useradd 用户名
          root@com ~]# useradd jerry :创建一个名为jerry的普通用户
          jerry:x:501:501::/home/jerry:/bin/bash
       2、给新用户设置密码
          [root@com ~]# passwd jerry(密码为123456)
       3、创建号用户后查看用户信息
          [root@com ~]# cat /etc/passwd
          jerry:x:501:501::/home/jerry:/bin/bash
       4、以root管理员用户为例,分析用户信息
          root:x:0:0:root:/root:/bin/bash
          用户信息一般分为7个字段
          1)第1个字段
             用户名:root
          2)第2个字段:密码位x
             查看用户密码文件(只能在管理员用户下查看)
             [root@com ~]# cat /etc/shadow
             root:$1$6Lb6HpD1$uWDZbUlGEOj8EqHWAj52m/:17254:0:99999:7:::
          3)第3个字段:用户的一个UID编号位
             0:表示管理员用户
             1——499:表示伪用户
             500——65535:表示普通用户
          4)第4个字段:用户组的GID编号位
              一个用户组里面可以有多个用户
              [root@com ~]# usermod -G webadmin jerry
              查看用户组文件
              [root@com ~]# cat /etc/group
               root:x:0:
       
          5)第5个字段:说明位(对用户进行解释说明的)
          6)第6个字段:用户的一个宿主目录,就是说用户开始登录后的哪个位置
          7)第7个字段:shell的命令环境,用户登录后就可以写shell脚本语言,Linux默认使用的是/bin/bash
         
       5、影子文件(就相当于passwd的影子,用户的密码文件)
          查看用户的密码文件
          root:$1$6Lb6HpD1$uWDZbUlGEOj8EqHWAj52m/:17254:0:99999: :::
          一共有9个字段
          1)第一个字段:用户名
          2)第二个字段:加密的密码
             散列式的一个加密方法:SHA512加密
             如果!!、* 表示用户没有密码,不能登录
          3)第三个字段:密码最后修改的时间
             使用1970年1月1号的第17254天。
          4)第四个字段:第二次修改时间和修改的时间差
             如果是0就代表没有时间差,忽略不计
          5)第五个字段:表示用户密码的一个有效期
             99999表示在创建用户之后第99999天内密码有效
          6)第六个字段:密码到期前得到的一个警告天数
          7)第七个字段:表示密码到期后的宽限天数
             如果是8就表示宽限天数为8天
          8)第八个字段:账户的失效天数
          9)第九个字段:起到一个保留信息的作用(暂无显示任何内容)
    
       6、创建组
          创建一个名为wedadmin的组
          [root@com ~]# groupadd webadmin
          webadmin:x:502:
       7、将用户添加到组里
          所用到的命令:usermod -G
          将jerry用户添加到webadmin这个组中
          [root@com ~]# usermod -G webadmin jerry
          webadmin:x:502:jerry
       8、删除一个用户
          用到的命令:userdel
          [root@com ~]# userdel jerry(删除不彻底)
          [root@com ~]# userdel -r jerry(彻底删除用户)
       9、删除组
          用到的命令:groupdel
          [root@com ~]# cat /etc/group
          
    六、用户的模板(/etc/skel)      
        1)在用户模板目录中添加一条信息
           [root@com skel]# vi warning.txt
        2)新建一个用户,进入用户的家目录查看是否将用户模板目录里添加的文件拷贝过来
            [root@com ~]# cat /home/jerry/warning.txt
            welcome beifeng!
    七、权限
       1、文件的一个权限位
       查看Music目录的权限
       [root@com ~]# ll -d Music
        drwxr-xr-x. 2 root root 4096 Mar 28 19:29 Music
       1)第1个位置d:目录
       2)第2、3、4个位置:表示所有者对该文件的拥有的权限
          r:read 读
          w:write 写
          x:excute 执行
       3)第5、6、7个位置:表示所属组对该文件的拥有的权限
          -:表示没有权限的意思
       4)第8、9、10个位置:表示其他人对该文件的拥有权限
          补充:所有者:u  root
                所属组:g  root
                其他人:o   
       2、设置权限
          1)以test文件为例:
          [root@com ~]# ll -d test
          -rw-r--r--. 1 root root 0 Mar 29 18:50 test
          改变所有者的权限:chmod
          [root@com ~]# chmod u+x test
          [root@com ~]# ll -d test
          -rwxr--r--. 1 root root 0 Mar 29 18:50 test    
          补充:如果test文件其他人的权限修改后,要将修改后的该文件拷贝到其他用户目录下,要将该文件修改后的
                具备的所有属性信息都拷贝进去要用到选项-p。          
                [root@com ~]# chmod o+w test
                 -rwxr--r--. 1 root root 0 Mar 29 19:16 test

                [root@com ~]# cp -p test /home/jerry
                [jerry@com ~]$ ll -d test
                -rwxr--rw-. 1 root root 0 Mar 29 18:50 test    
                    
       
           2)设置其他人和所属组对test文件的执行权限
              
               [root@com ~]# chmod g+x test
               [root@com ~]# ll -d test
               -rwxr-xrw-. 1 root root 0 Mar 29 18:50 test
               
               [root@com ~]# chmod o+w test
               [root@com ~]# ll -d test
               -rwxr--rw-. 1 root root 0 Mar 29 18:50 test   
       3、设置所有者和所属组
              设置test文件的所有者为jerry(用到的命令:chown)
              [root@com ~]# chown jerry test
              [root@com ~]# ll -d test
              -rwxr-xrw-. 1 jerry root 0 Mar 29 18:50 test
                
              设置test文件的所属组为jerry(用到的命令:chgrp)
              [root@com ~]# chgrp jerry test
              [root@com ~]# ll -d test
              -rwxr-xrw-. 1 jerry jerry 0 Mar 29 18:50 test
              
            补充一个简便方法:将test文件的所有者和所属组一起改成root
            [root@com ~]# chown root:root test
            [root@com ~]# ll -d test
            -rwxr-xrw-. 1 root root 0 Mar 29 18:50 test
            
            
      4、用数字进行修改文件的操权限
         r:4      w:2      x:1
         [root@com ~]# chmod 777 test
         [root@com ~]# ll -d test
         -rwxrwxrwx. 1 root root 0 Mar 29 18:50 test
        
        课堂作业:如果在普通用户jerry下有一个mysite目录,该目录下的结构为
                  /mysite/hadoop/mr,他们的操作权限分别是
                  mysite:jerry root
                  hadoop:root jerry                  
                  mr:root:jerry
            要求:将mysite目录及子目录的所有者和所属组都修改成root
            用到选项-R
            [root@com ~]# chown -R root:root mysite
       
    八、date时间设置
        1、设置本地时区
            [root@com ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
            cp: overwrite `/etc/localtime'? y
        2、设置当前日期和时间
            
        3、以数字的形式显示日期和时间
           [root@com ~]# date -d '7 day ago' '+%Y%m%d%H%M' (两个根号之间要有空格)
           201703231123
        4、改写crt外联为中文
           用root用户登录。输入【vi /etc/sysconfig/i18n】
           如果安装系统为中文系统,则修改【LANG=“zh_CN.UTF-8”】
           如果安装系统为英文系统,则修改【LANG=“en_US.UTF-8”】
 
    九、man帮助命令
        1、可以查看命令的一些帮助信息
             [root@com ~]# man ls
        2、可以查看一些配置文件的信息
            [root@com ~]# man services
            service-name:网络服务名
            port:端口号
            protocol:协议
            aliases:别名
        3、查看网络配置文件信息
        # service-name  port/protocol  [aliases ...]   [# comment]
          discard         9/tcp           sink null
       
    十、管道符:|
        1、定义:将一个命令的输出结果作为另一个命令输入参数
        2、命令格式:[root@com ~]# cat /etc/services | more
           注意:前一个命令一定是正确的输出才能执行后面的一个命令
           补充:grep——>从一个文件中搜索出一个字符串所在的行数据
           [root@com ~]# grep 'jerry' /etc/passwd
            jerry:x:501:501::/home/jerry:/bin/bash
        3、用grep命令显示jerry所在的行数并标识颜色
               [root@com ~]# grep -n --color=auto 'jerry' /etc/passwd
            32:jerry:x:501:501::/home/jerry:/bin/bash    
        4、管道符和grep命令联合使用
            1)显示当前系统中的关于ESTABLLSHED的网络文件
            [root@com ~]# netstat -an | grep ESTABLISHED
            tcp        0     52 192.168.207.120:22          192.168.207.1:5060          ESTABLISHED
            2)查看用户文件中的关于‘root‘
            [root@com ~]# cat /etc/passwd | grep root
             roo         t:x:0:0:root:/root:/bin/bash
             ope         rator:x:11:0:operator:/root:/sbin/nologin
             等价于[root@com ~]# grep 'root' /etc/passwd
       
    十一、追加和覆盖
        1、追加 >>:以追加的方式将命令正确的输出 输出到文件或设备中去
           用法:[root@com ~]# date >> abc
                  [root@com ~]# cat abc
                  2017年 03月 30日 星期四 14:13:50 CST
           补充:错误信息追加 2 >>:以追加的方式将错误的命令输出 输出到文件或设备中去
                 [root@com ~]# lss 2>>abc
                 2017年 03月 30日 星期四 14:13:50 CST
                 -bash: lss: command not found
        2、覆盖 >:以覆盖的方式把命令的正确输出 输出到指定的文件或设备中去
           用法:[root@com ~]# date >abc
                 [root@com ~]# cat abc
                  2017年 03月 30日 星期四 14:20:53 CST
           补充:错误信息的覆盖 2>:以覆盖的方式把命令的错误输出 输出到指定的文件或设备中去
                 [root@com ~]# lss 2>abc
                 [root@com ~]# cat abc
                  -bash: lss: command not found

    十二、关闭防火墙
        1、禁用Linux的安全子系统,在selinux文件中
           路径:/etc/sysconfig/selinux
           将设置为禁用:[root@com ~]# vi /etc/sysconfig/selinux
                          SELINUX= disabled
        2、查看防火墙状态:[root@com ~]# service iptables status
        3、关闭防火墙:
           [root@com ~]# service iptables stop
            iptables:清除防火墙规则:[确定]
            iptables:将链设置为政策 ACCEPT:filter [确定]
            iptables:正在卸载模块:[确定]
        4、设置开机是否启动相关服务(可以理解为永久性修改)
           查看开始是否自启动
           [root@com ~]# chkconfig
           NetworkManager  0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
            abrt-ccpp       0:关闭  1:关闭  2:关闭  3:启用  4:关闭  5:启用  6:关闭
            abrtd           0:关闭  1:关闭  2:关闭  3:启用  4:关闭  5:启用  6:关闭
            acpid           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
             .......
        5、关闭防火墙设置开机不启动
           [root@com ~]# chkconfig iptables off
            [root@com ~]# service iptables status
            iptables:未运行防火墙。(表示Linux中的防火墙成功被关闭)        
    
    十三、sudo权限
        1、它的操作对象是系统命令(系统命令是存放在/bin或/sbin)    
        2、命令格式:visudo--->给普通用户赋予管理员的权限操作
           [root@com ~]# visudo (管理员身份运行)
           root    ALL=(ALL)-->使用的身份       ALL
           用户    被管理的主机地址             授权的命令
           jerry   ALL=(root)NOPASSWD:ALL
        3、用普通用户操作管理员的命令的话要加上 sudo + 系统命令  
           比如:[jerry@com ~]$ sudo reboot————》重启系统

    十四、压缩和解压缩
        1、压缩
           在linux系统压缩格式有:
           .gz  (gzip命令:只能压缩文件不能压缩目录,压缩后的格式是.gz)
           .tar ()
           .tar.gz
        gzip命令:只能压缩文件不能压缩目录,压缩后的格式是.gz
        举例:在root家目录下创建一个file文件,将/etc/services文件拷贝到file文件中去,
              然后使用jerry用户进行对file文件的压缩。压缩后格式为.gz        
              [jerry@com ~]$ sudo gzip /root/file
              file.gz
        2、解压缩文件
           gunzip命令——>解压.gz压缩包命令
           [jerry@com ~]$ sudo gunzip /root/file.gz
           file
        3、压缩文件或目录为.tar
           命令格式:sudo tar 文件或目录(可以保留原文件)
           举例:用jerry用户将root用户下的file文件拷贝到/opt下,然后用jerry用户将file文件压缩成file.tar格式
            [jerry@com opt]$ sudo tar -cvf file.tar file           
            file
            [jerry@com opt]$ ls
            file  file.tar  rh

        4、压缩成.tar.gz格式(常用的压缩类型)
           [jerry@com opt]$ sudo gzip file.tar
            [jerry@com opt]$ ls
            file  file.tar.gz  rh
           解压:
           [jerry@com opt]$ sudo tar -zxf file.tar.gz -C ./
           [jerry@com opt]$ ls
           file  file.tar.gz  rh
           
           [jerry@com opt]$ sudo tar -zxf file.tar.gz -C /root
           [jerry@com opt]$ sudo ls /root
           file
           
           -c:建立一个压缩文件的参数指令
           -x:解开一个压缩文件的参数指令
           -t:查看tarfile里面的文件
           -f:使用档名,请留意f之后要立即接上档名,不要再加参数。
           -C;指定解压后文件存放的位置

    十五、Linux下配置JDK环境变量
        1、解压jdk1.7
           首先在/opt目录下创建一个softwares目录,专门存放压缩文件
               在/opt目录下创建一个modules目录,专门存放解压缩文件
            [jerry@com softwares]$ sudo tar -zxf jdk-7u67-linux-x64.tar.gz -C /opt/modules/
            [jerry@com softwares]$ ls /opt/modules/
             jdk1.7.0_67
        2、修改配置信息(千万不能写错)
           [jerry@com ~]$ sudo vi /etc/profile
           #JAVA_HOME
            export JAVA_HOME=/opt/modules/jdk1.7.0_67
            export PATH=$PATH:$JAVA_HOME/bin
        3、生效修改后的配置文件
           [root@com ~]# source /etc/profile
        4、查看jdk是否安装成功
           [root@com ~]# java -version
           java version "1.7.0_67"
        
    十六、find搜索命令
          搜索命令会消耗系统的大量资源
          语法格式:find 搜索范围 搜索内容
        1、根据文件名搜索
          a.根据具体的文件名
            [root@com ~]# find / -name init
            /sbin/init
            /lib/alsa/init
            
          b.模糊查询带有关键字init的文件
            [root@com ~]# find /etc -name *init*
            /etc/pam.d/run_init
            /etc/X11/xinit/xinitrc-common
          c.查找以init关键字为开头的文件
            [root@com ~]# find /etc -name init*
          d.查找以init后面三个字符的文件
            [root@com ~]# find /etc/ -iname init???
            /etc/inittab
            注释:*号匹配的是任意字符,也叫通配符
                  ?号是匹配的单个字符
            注意:-iname不区分大小写
                  [root@com ~]# find /etc/ -iname INIT???
                  /etc/inittab
        2、根据文件的大小搜索
            -size,它有两个指定模式    ,一个是+:大于,一个-:小于,不加符号表示=
            [root@com ~]# find / -size +2M
            [root@com ~]# find / -size -2M
            [root@com ~]# find / -size 2M
        3、根据文件的类型去搜索
           a.根据文件类型搜索   (f)         
            [root@com ~]# find /etc -name init* -type f
            /etc/init/init-system-dbus.conf
            /etc/inittab        
           b.根据目录类型搜索(d)
             [root@com ~]# find /etc -name init* -type d
             /etc/init
             /etc/rc.d/init.d

    十七、Linux软件包的管理
        1、Linux中的软件包主要针对于服务器的
        2、windows中软件包不能在Linux中直接使用
        3、Linux中的软件包的分类
           1)源码包:一般Linux系统中的内核里面才存在的源码包,特点是开源免费。
           2)二进制包:
              特点:*比较常用,是经过编译的,简化软件包的一个操作。
                    *不能看到源码
                    *安装速度要比源码包快
                    *具有依赖性,安装起来非常繁琐
              二进制包常用的有:rpm包——》系统默认的包
                                yum——》自动解析依赖性,针对于解决rpm包的依赖性
 
    十八、RPM包管理
        1、rpm包的一个命名规则:tftp -server-0.49-7.el6.x86_64.rpm
           tftp -server---->软件包名
           0.49-7————>软件的版本号
           el6.x86_64——》适合什么系统
           rpm——》包的类型
        2、rpm包一个依赖性
         1)树形依赖:a->b-c 安装软件包a时,要求先安装软件包b,在安装软件包b时要求先安装软件包c...
         2)环形依赖:a->b-c-a :重复回头安装,很繁琐
        3、首先要对光驱进行挂载:mount命令
            [root@com ~]# mount /dev/cdrom /media
           补充:进入挂载的光驱目录下,所有的挂载文件都在   /media/Packages
           查看Packages里面挂载的软件包总条数:
           [root@com Packages]# ls | wc -l
           3956
                       
        4、rpm包的管理
          a.安装一个软件包:
            依赖安装:
            [root@com Packages]# rpm -ivh mysql-connector-odbc-5.1.5r1144-7.el6.x86_64.rpm
            warning: mysql-connector-odbc-5.1.5r1144-7.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
            error: Failed dependencies:
                    libodbcinst.so.2()(64bit) is needed by mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
                    unixODBC is needed by mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
            
            一次性安装成功:
            [root@com Packages]# rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm
            warning: zlib-devel-1.2.3-29.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
            Preparing...                ########################################### [100%]
            1:zlib-devel             ########################################### [100%]

          b.卸载安装包:(不加包的后缀名)
            命令格式:[root@com Packages]# rpm -e zlib-devel-1.2.3-29.el6.x86_64
          c.查询
            *查询rpm包安装是否成功(不加包的后缀名)
             [root@com Packages]# rpm -q zlib-devel-1.2.3-29.el6.x86_64
             zlib-devel-1.2.3-29.el6.x86_64
            
            *查询所有已经安装好的rpm包
             [root@com Packages]# rpm -qa
            
            *查询httpd主包是否安装
             [root@com Packages]# rpm -q httpd
             httpd-2.2.15-26.el6.centos.x86_64
            
            *查询软件包的一个详情信息
            [root@com Packages]# rpm -qi httpd
            
            *查询系统文件属于哪个包 选项-qf(f表示文件)
            1)查询ls命令属于哪个rpm包
            [root@com Packages]# rpm -qf /bin/ls
            coreutils-8.4-19.el6.x86_64
            2)查询ntp.conf这个系统脚本文件属于属于哪个包        
            [root@com Packages]# rpm -qf /etc/ntp.conf
            ntp-4.2.4p8-3.el6.centos.x86_64
            
    十九、yum命令
        1、作用:用来解决rpm包的依赖性
        2、使用它的条件:需要可用的外网
        3、特点:方便、快捷、自动解析依赖
        4、命令格式:#yum
        *列出系统中所有已经安装好的rpm包
         [root@com ~]# yum list
         yum-utils.noarch     1.1.30-37.el6         base
         包名                  版本                 仓库名
        
        *查看httpd-tools包
         [root@com ~]# yum list | grep httpd-tools
            httpd-tools.x86_64                         2.2.15-26.el6.centos          @anaconda-CentOS-201303020151.x86_64/6.4
            httpd-tools.x86_64                         2.2.15-56.el6.centos.3        updates        
            @anaconda-CentOS-201303020151.x86_64/6.4————》表示该包已经安装成功
             
        5、安装    (不加后缀名)
           *选择确定安装:
           [root@com ~]# yum install mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
            y
            Complete!
           
            *自动下载安装:
            [root@com ~]# yum -y install mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
            Complete!
            
            *卸载软件包:
            [root@com ~]# yum -y remove mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
            Complete!
            
        6、yum仓库
            路径位置:/etc/yum.repos.d/
            
            查看仓库里面的4个配置文件
            [root@com yum.repos.d]# ls
             CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo  CentOS-Vault.repo
            
             以CentOS-Base.repo为例
             [root@com yum.repos.d]# cat CentOS-Base.repo
             gpgcheck=1——>代表是否开启验证
             gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 ——》校验公密所在的位置。
            
             有时候校验失败:
               *ping不通外网
               *包根本无法下载(配置仓库信息错误)
               
            
            
shell编程
                
    一、shell编程的概念
       1、shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面
          系统程序。用户可以通过shell来启动、挂载、停止甚至编写一些程序。
       2、shell还是功能强大的编程语言,易调试,易编辑、灵活性强,shell是结识知识性的脚本语言。
          在shell中直接调用Linux中系统命令。
    二、shell执行原理
        1. 在我们计算机语言中,最底层是硬件,硬件是通过内核进行管理的。内核通过管理硬件进行功能的实现,
           但是在计算机语言里底层硬件只能识别0101...的机器语言,无法识别a,b,c,asc码语言。在这中间就需要一个
           翻译机制进行编译,就是所谓的shell编辑器,shell编辑器可以讲外层输入的asc码翻译成计算机能识别的机器语言,
           所以说内核要通过shell编辑器进行翻译才能对硬件进行管理。
        2.反之,硬件要将输入的请求响应给外层应用,那么我们内核是无法识硬件的机器语言,
          那么这时shell编辑器也会将硬件处理的机器语言翻译成asc语言给内核,内核再进行shell编辑器反馈给外层应用。
          最后就会得到我们想要的结果了!
        
    三、shell的分类
       1、Bourne Shell(bshell):从1979年起在unix系统中开始使用
          它的主要文件是:sh、bash、zsh、psh
       2、C shell(cshell):主要是一个升级版本
          它的主要文件是:csh、tcsh
          
        注意点:bshell和cshell不能兼容,它们之间是独立的
                bash和sh是可以相互兼容的。
    四、Linux中支持的shell
        [root@com ~]# cat /etc/shells
        /bin/sh
        /bin/bash
        /sbin/nologin
        /bin/dash
        /bin/tcsh
        /bin/csh
    五、shell脚本的一个执行方式:
        首先学一个回显命令:echo
        [root@com ~]# echo laowang
        laowang
        
      1、在root目录下创建一个sh目录专门存放shell脚本语言
         [root@com ~]# mkdir sh
          sh
          
      2、在sh目录下写一个.sh类型的脚本语言,比如hello.sh
         [root@com sh]# vi hello.sh
         #!/bin/bash (他不是注释,它代表一个标识,标称当前写的程序是shell脚本,不能省略)
         #fanjun(weibo.com/beifeng)
         echo "fan jun is the most honest man in beifeng!"
      3、执行写好的脚本
         第一种方式执行:通过bash或sh调用执行脚本语言
         a.通过相对路径直接加脚本名执行
         [root@com sh]# bash hello.sh
         fan jun is the most honest man in beifeng!
        
         b.通过绝对路径直接加脚本名执行
         [root@com ~]# sh /root/sh/hello.sh
         fan jun is the most honest man in beifeng!
        
         第二种方式执行:直接通过写路径执行脚本语言
         前提:首先要给我们写好的脚本语言赋予755权限
         [root@com sh]# chmod 755 hello.sh
         -rwxr-xr-x. 1 root root 89 3月  31 11:27 hello.sh
        
         a.通过相对路径执行
         [root@com sh]# ./hello.sh
         fan jun is the most honest man in beifeng!
        
         b.通过绝对路径执行
         [root@com ~]# /root/sh/hello.sh
         fan jun is the most honest man in beifeng!

    六、shell变量类型(4种变量)
      1、用户自定义变量(只能在当前的shell中生效)
        1)常用的调用命令:echo $变量名
        2)定义一个简单的变量
        [root@com ~]# name=java17
        [root@com ~]# echo $name
        java17
        3)变量的一个叠加
        [root@com ~]# aa=123
        [root@com ~]# aa="$aa"456
        [root@com ~]# echo $aa
        123456
        
        变量叠加的第二种方式
        [root@com ~]# abc=123
        [root@com ~]# abc=${abc}456
        [root@com ~]# echo $abc
        123456
        4)查看变量:set命令
        root@com ~]# set
        5)变量删除
        [root@com ~]# unset abc
        
      2、环境变量(系统运行时缩用到啊的变量)
         特点:*它不仅在当前的shell种有效,在子shell中也有效
               *如果把环境变量写道特定的文件中,那么该环境变量在所有的shell中都有效
         举例说明:
         1)申明一个环境变量:export 变量名=变量值
         [root@com ~]# export age=18
         2)查看环境变量
         [root@com ~]# env
         3)删除环境变量
         [root@com ~]# unset age
         4)环境变量的类型
           a.系统环境变量:从U你在/etc/profile
             它是系统全局生效的配置文件,系统下所有的用户都能共享该文件
           b.用户环境变量:存在 ~/.bash_profile 文件中定义的变量
             每个用户目录下都会有一个用户变量,用来保存每个用户的环境变量,只针对某一个用户生效,
             其他用户不能共享。
      
      3、位置变量
          获取执行脚本文件时所传入的参数,将传入的参数保存在位置变量中,以便在脚本中可以使用这些变量
          举例说明:在脚本里面编写位置变量
          [root@com sh]# vi 1.sh
          #!/bin/bash
            echo $0
            echo $2
            echo $3
            echo $1
            
          给位置变量传参
          [root@com sh]# sh 1.sh start stop restart
            1.sh($0指示回显脚本名称)
            stop
            restart
            start
          
           注意:a.执行shell脚本传参时,每个参数之间要用空格隔开。
                 b.如果编写脚本语言时不写位置变量,那么执行脚本传参时就不能有参数显示
                 [root@com sh]# vi 2.sh
                 #!/bin/bash
                 echo $0
                
                 [root@com sh]# bash 2.sh start stop restart
                 2.sh
      
      4、预定义变量
         $0:显示脚本名称
         $!:进程中的PID号,每个进程都有一个PID号
         $$:当前进程中的ID
         $#:当前shell的参数个数
         $*:整体显示所有参数的内容
         $@:逐个显示所有参数内容
         $?:判断表示程序退出的代码(返回0代表成功,非0代表失败)
        
         举例1:$?的使用
         正确退出返回0
         [root@com sh]# ls /etc
         [root@com sh]# echo $?
         0
    
        错误退出返回非0
        [root@com sh]# ls /etc/hahaha
        [root@com sh]# echo $?
        2
        
        举例2:使用S#显示参数的个数
        [root@com sh]# vi 3.sh
        #!/bin/bash
        echo $#
        [root@com sh]# bash 3.sh start stop restart
        3
        
        举例3:$*的使用
        [root@com sh]# vi 4.sh
        #!/bin/sh
        echo $*
        
        [root@com sh]# bash 4.sh start stop restart
        start stop restart
        
        举例4:$@的使用
        [root@com sh]# vi 5.sh
        #!/bin/bash
        echo $@
        
        [root@com sh]# bash 5.sh start stop restart
        start stop restart
        
    七、逻辑符号
      1、逻辑与:&&,前面的命令执行成功后才会执行后面的命令
         格式:命令1 && 命令2
        
         举例说明:[root@com tmp]# cat /etc/passwd && mkdir /tmp/haha
                   [root@com ~]# ll -d /tmp/haha
                   drwxr-xr-x. 2 root root 4096 3月  31 15:23 /tmp/haha
                   
      2、逻辑或:||,前面一个命令执行失败才会执行后面一个命令
                     但是如果前面一个命令执行成功,后面一个命令不会执行
         举例说明:[root@com ~]# cat /etc/passwdord || mkdir /tmp/hehe
                    cat: /etc/passwdord: 没有那个文件或目录
        
                   [root@com ~]# cat /etc/passwd || mkdir /tmp/xixi(不会执行后面这个命令
                    root:x:0:0:root:/root:/bin/bash
                    bin:x:1:1:bin:/bin:/sbin/nologin
      3、无逻辑符号 ; ----->多个命令顺序执行,命令之间没有任何逻辑关系
                   [root@com ~]# ls;date;cd/user1;pwd
                    abc              Desktop    gebilaowang         Music         sh         text.txt
                    anaconda-ks.cfg  Documents  install.log         Pictures      Templates  Videos
                    beifeneg         Downloads  install.log.syslog  program file  test       warning.txt
                    beifeng          file       java17.txt          Public        test.txt
                    2017年 03月 31日 星期五 15:33:24 CST
                    bash: cd/user1: 没有那个文件或目录
                    /root
                        
    八、shell的算术运算
      补充:命令--->declare :说明变量的类型
      格式:#declare +/- 选项 变量名
      选项  -:给变量设定类型属性
            +:取消变量的类型属性
            -i:将变量申明为整数类型
            -x:将变量申明为环境变量
            -p:显示指定变量被声明的类型
            
        1)数值运算方法1:
        [root@com ~]# aa=11
        [root@com ~]# bb=22
        [root@com ~]# declare -i cc=$aa+$bb
        [root@com ~]# echo $cc
        33
        2)数值运算方法2:(不推荐使用)
        [root@com ~]# dd=$(expr $aa + $bb)
        [root@com ~]# echo $dd
        33
        3)数值运算方法3:
        [root@com ~]# ee=$(($aa+$bb))
        [root@com ~]# echo $ee
        33
        4)数值运算方法4:
        [root@com ~]# ff=$[$aa+$bb]
        [root@com ~]# echo $ff
        33
    
    九、内置测试判断
     1、定义字符串必须加上双引号
        [root@com ~]# a="I am"
        [root@com ~]# echo $a
        I am
        
     2、判断字符串之间是否相等,必须加上双引号
        [root@com ~]# [ "$a" = "$b" ];echo $?
        0
        
        [root@com ~]# c="I love you"
        [root@com ~]# [ "$a" = "$c" ];echo $?
        1
        
     3、判断用户输入的是否是字母y,满足其中一个条件就可以完成表达式
        [root@com ~]# [ "$Yn"="Y" -o "$Yn"="y" ];echo $?
        0
     4、-e 文件名,如果文件存在则为真
        [root@com ~]# [ -e /etc/passwd ];echo $?
        0
        
        [root@com ~]# [ -e /etc/ ];echo $?
        0
        
     5、-r 文件名 如果文件存在且可读则为真
        注意不再当前位置需要加上绝对路径
        [root@com ~]# [ -r /root/passwd ];echo $?
        1
        
     6、-w 文件名 如果文件存在且可写则为真
        [root@com ~]# [ -w /etc/passwd ];echo $?
        0
     7、-x 文件名 如果文件存在且可执行则为真
        [root@com ~]# [ -x /etc/passwd ];echo $?
        1
    
    第一种测试方式
     1、数值比较:用到一些选项
         -eq:等于
         -ne:不等于
         -gt:大于
         -ge:大于等于
         -lt:小于
         -le:小于等于
        注意:在数值比较中不能使用>、<或 =
        举例1:[root@com sh]# vi 6.sh
              #!/bin/bash
                a=9
                b=15
                if [ $a -lt $b ]
                then
                  echo smaller
                fi
                [root@com sh]# sh 6.sh
                 smaller
        
     2、字符串的比较:分为5种比较方式
         = :等于
         != :不等于
         -z:长度为0则为true
         -n:长度不为0则为true
         str:字符串不为空则为true
          
         举例2:[root@com sh]# vi 7.sh
                
                #!/bin/sh
                str1="abc"
                str2="abc"
                str3=
                if [ $str1 = $str2 ]
                then
                        echo equal
                fi
                
                [root@com sh]# bash 7.sh
                equal
                
     3、文件的测试或比较
        -d:如果是目录则为真
        -f:如果是文件则为真
        -r:如果可读则为真
        -w:如果可写则为真
        -x:如果可执行则为真
        举例3:[root@com sh]# vi 8.sh
                #!/bin/sh
                if [ -f $1 ]
                then
                 echo is file
                fi
                
                [root@com sh]# bash 8.sh
                is file
                
    第二方式:
        [root@com sh]# vi 9.sh

        #!/bin/sh
        if test 10 -gt 9
        then
         echo bigger
        fi
        
        [root@com sh]# bash 9.sh
        bigger
    
    十、shell控制语句
        第一个:if
        语法:if 条件判断
               then
                 command....
              fi
              
        第一种写法举例:  [root@com sh]# vi 9.sh

                            #!/bin/sh
                            if test 10 -gt 9
                            then
                             echo bigger
                            fi
                            
                            [root@com sh]# bash 9.sh
                            bigger
    
        第二种写法举例: if 条件语句
                         then
                           command....
                          else
                           comand....
                         fi
                           
                        [root@com sh]# vi 10.sh
                        #!/bin/sh
                        if [ -d /home/jerry/tmp ]
                        then
                         ls/home/jerry/tmp
                        else
                        mkdir /home/jerry/tmp
                         echo 目录创建成功
                        fi
                        
                        [root@com sh]# bash 10.sh
                        目录创建成功
    
         第三种写法举例: if 条件语句
                          then
                           command...
                          elif 条件语句
                          then
                           command...
                          elif 条件语句
                          then
                            command...
                          ..    ......
                         else 条件语句
                            command...
                            
                        fi
                        
                        
                        #!/bin/sh
                        #read score and choose level
                        #read 是一种交互式用法,他会读取设备输入
                        read score
                        if [ $score -ge 90 ]
                        then
                         echo "levelA"
                        elif [ $score -ge 80 ]&&[ $score -lt 90 ]
                        then
                         echo "levelB"
                        elif [ $score -ge 70 ]&&[ $score -lt 80 ]
                        then
                         echo "levelC"
                        elif [ $score -ge 60 ]&&[ $score -lt 70 ]
                        then
                         echo "levelD"
                        else
                         echo "levelE"
                        fi
                        
                        [root@com sh]# bash 11.sh
                        90
                        levelA
                        [root@com sh]# bash 11.sh
                        95
                        levelA
                        [root@com sh]# bash 11.sh
                        85
                        levelB
                        [root@com sh]# bash 11.sh
                        75
                        levelC
                        [root@com sh]# bash 11.sh
                        60
                        levelD
                        [root@com sh]# bash 11.sh
                        45
                        levelE
    
    
        第二个循环:for循环
                    for [ 循环条件:循环控制]
                    do
                      循环体
                      echo command....
                      
                    done
                    
                    [root@com sh]# vi 12.sh
                    #!/bin/sh
                    sum=0
                    for ((i=0;i<10;i++))
                    do
                     echo $i
                    sum=$((sum+i))
                    done
                     echo $sum
                    
                    [root@com sh]# bash 12.sh
                    0
                    1
                    2
                    3
                    4
                    5
                    6
                    7
                    8
                    9
                    45
                    
                    
                    [root@com sh]# vi 13.bash
                    for MONTH in Jan Feb Mar Apr May Jun July Aug Sep Oct Nov Dev
                    do
                     echo $MONTH
                    done
                    
                    [root@com sh]# bash 13.bash
                    Jan
                    Feb
                    Mar
                    Apr
                    May
                    Jun
                    July
                    Aug
                    Sep
                    Oct
                    Nov
                    Dev
                    
                while循环
                  while [循环条件]
                   do
                     [循环体]
                     [控制语句]
                   done
                   
                   [root@com sh]# vi 14.bash
                   #!/bin/sh
                    i=1
                    while [ $i -le 10 ]
                    do
                     SUM=$((SUM+i))
                     i=$[ i + 1 ]
                    done
                     echo $SUM
                    
                     [root@com sh]# bash 14.bash
                      55
                      
                case的用法
                  第一种:
                   [root@com sh]# vi 15.bash
                   
                    #!/bin/sh
                    echo "input from : one two three"
                    read input
                    case $input in
                                one)echo "your input is one"
                                ;;
                                two)echo "your input is two"
                                ;;
                                three)echo "your input is three"
                                ;;
                                *)echo "your input $input"
                    esac
                    
                    [root@com sh]# bash 15.bash
                    input from : one two three
                    one
                    your input is one
                    [root@com sh]#
                    [root@com sh]# bash 15.bash
                    input from : one two three
                    oen
                    your input oen
                    [root@com sh]# bash 15.bash
                    input from : one two three
                    two
                    your input is two
                    [root@com sh]# bash 15.bash
                    input from : one two three
                    three
                    your input is three
                    [root@com sh]# bash 15.bash
                    input from : one two three
                    haha
                    your input haha
                第二种写法:
                [root@com sh]# vi 16.bash
                #!/bin/bash
                echo "input from : one two three"
                read input
                case $input in
                     one | two )echo "your input is one or two"
                     ;;
                     three | four )echo "your input is three or four"
                     ;;
                     five | six )echo "your input is five or six"
                     ;;
                     *)echo "your inoujt is $input"
                esac
                
                [root@com sh]# bash 16.bash
                input from : one two three
                one
                your input is one or two
                [root@com sh]# bash 16.bash
                input from : one two three
                two
                your input is one or two
                [root@com sh]#
                [root@com sh]# bash 16.bash
                input from : one two three
                three
                your input is three or four
                [root@com sh]# bash 16.bash
                input from : one two three
                haha
                your inoujt is haha
    
    
系统的管理命令
    1、top:查看系统资源
            每隔3秒更新一次,按q退出浏览状态
    2、free:查看内存信息
          选项 -m:就是以MB格式显示
          [root@com ~]# free -m
             total       used       free     shared    buffers     cached
            Mem:          1869       1253        616          0         52        867
            -/+ buffers/cache:        333       1536
            Swap:         3999          0       3999
    3、df -l 查看硬盘分区信息
        [root@com ~]# df -l
        文件系统                 1K-块      已用      可用 已用% 挂载点
        /dev/sda3             47269816   3388120  41480468   8% /
        tmpfs                   957344        76    957268   1% /dev/shm
        /dev/sda1               297485     37256    244869  14% /boot
        /dev/sr0               4251346   4251346         0 100% /media
    4、ps -ef 查看系统的进程
      [root@com ~]# ps -ef | grep crond
        root      2127     1  0 09:36 ?        00:00:01 crond
        root      6830  5112  0 17:44 pts/0    00:00:00 grep crond
    5、kill 杀死正在进行进程
      选项 -9
      kill -9 端口
    6、ifconfig:查看ip、子网掩码。。
    7、ping 检测网络质量和网络连接
           ping 主机名
           ping 地址 域名
    8、netstat:查看网络端口
       选项:-t:监控tcp协议的进程
             -l:listnning
             -n:显示端口信息
             -p:显示进程的PID
            
            
卸载系统自带的jdk
   1、查询jdk:rpm -qa | grep java    
    卸载系统自带JDK  
    1、查询JDK: rpm -qa | grep java
    2、卸载:   rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
                                 java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值