Linux操作系统基本应用(完结)

时间:2022-11-26 19:19:20
 
时间:2015-4-10 12:40

Linux第一天 
Linux基本命令 

Linux各文件夹的作用
    bin  二进制可执行命令
    dev  设备特殊文件
    etc  系统管理和配置文件
    etc/rc.d  系统启动的配置文件和脚本
    home  用户文件夹
    lib  标准程序设计库  作用类似于Windows中的 .dll
    sbin   系统管理命令
    tmp  公用的临时文件储存点
    root  特权阶级
    mnt  临时挂载其他的文件系统
    var  可编数据
    opt  第三方软件(非应用  支持系统)
    usr  应用软件
    boot  启动文件
————————
基本命令
    ls  显示目录(d表示文件夹、-表示文件、l 表示软链接、红色表示压缩文件、蓝色表示文件夹、绿色表示可执行文件)
        -a 显示所有文件,包括隐藏文件
        -l  显示详细信息
        -d 查看目录属性 
    chmod 766 文件名  或者  chmod u+rwx 文件名/*给user添加rwx权限*/
        rwx        rwx          rwx             root         root
        所有者   所属组     其他人        所有者    所属组
        user       group      others
    r = 4  w = 2  x = 1
——————————————————————————————————————
|    代表字符    |       权限      |        对文件的含义        |                对目录的含义                |
——————————————————————————————————————
|           r           |    读权限     |    可以查看文件内容    |         可以列出目录中的内容         |
——————————————————————————————————————
|          w           |    写权限     |    可以修改文件内容    |    可以在目录中创建、删除文件   |
——————————————————————————————————————
|           x           |  执行权限   |        可以执行文件        |                可以进入目录                |
——————————————————————————————————————
    rwx 对文件的权限
        r - cat、more、head、tail
        w - echo、vi
        x - 命令、脚本
    rwx 对目录的权限
        r - ls
        w - touch、mkdir、rm
        x - cd
    chown 用户名
        改变文件或目录的所有者
    chgrp 用户名
        改变文件所属组
    su - 用户名   
        切换当前用户 
    touch 文件名 
        创建空文件
    cp -R 源文件或目录 目的目录 
        复制文件
    which 命令名称
        显示系统命令所在目录
    例子:$which ls
    find查找
    find 搜索路径 搜寻关键字
        功能描述:查找文件或目录 
    find -name 文件名
        * 匹配任意字符 init*
        ? 匹配单个字符 init??
    find -size 文件大小
        数据块 512字节  block
        大于 +
        小于 -
    find -user 所有者
    find -time
        1、天 ctime、atime、mtime
        2、分钟 cmin、amin、mmin
    c = change 改变  表示文件的属性被修改过,文件的所有者 
    a = access  访问
    m = modify  修改  表示文件的内容被修改过
    - 之内
    + 超过
    例:
        find /etc -mmin -120    /*查找120分钟内被修改过的文件*/ 
gzip压缩:
    gzip 文件名
        gzip 只能压缩文件 不能压缩目录 
        gzip  压缩后不保留源文件
解压缩:
    gunzip -d  或者  gzip -d
tar压缩:
    tar  选项  目录
        -c 产生.tar打包文件
        -v 显示详细信息
        -f 制定压缩后的文件名
        -z 打包同时压缩
功能描述:
    打包目录
    压缩后文件格式.tar.gz
例子:
    $tar  -zcvf  dir1.tar.gz dir1  /*打包后产生的文件名在后*/
        将目录 dir1压缩成一个打包并压缩的文件
解压缩:
    $tar -xfz 文件名
        -x  是解压
        当文件名后缀没有.tar.gz   可以用 file  xxx 来查看文件
bzip2压缩:
    bzip2 选项 文件
        -k  产生压缩文件后保留源文件
    功能描述
        压缩文件
    压缩后文件格式:
        .bz2
    例子:
        $bzip2 -k file1
解压缩:
    bunzip2 -k 压缩文件
        -k  解压缩后保留原文件
    功能描述:
        解压缩
    例子:
        $bunzip2 -k file.bz2 
    bc  计算器
    cal  日历
    date  时间
    exit  退出
    reboot  重启
    vi/gedit  编辑器
    gcc 123.c -o 32.c  重命名 123.c文件为321.c
    ./123.c  运行123.c程序
    whereis 123.c  寻找123.c文件的位置
    pwd  显示当前文件位置
    cp  复制
    mv  移动/剪切
    rm  删除
    rmdir  删除空目录/*只能删除空目录*/
    cat  查看文件内容
    more  文件名/*分页显示文件内容*/
        空格 或 f    显示下一页
        Enter         显示下一行
        Q 或 q       退出
    head  -5  文件名 /*显示文件前5行内容*/
    tail  -5  文件名  /*显示文件后5行内容*/ 
    mkdir  创建文件夹
    ctrl + c  终止命令
    双击tab  补全命令
    cd + 文件名  下层目录
    cd(空格)..  退到上层目录
    cd(空格)/  退到根目录
————————
VI编辑器

    v:显示
    y:复制
    a:编辑
    w:保存
    q:退出 
————————
 Linux第二天
shell命令编程
    用VI创建一个名为“hello.sh”的shell文件
    vi  hello.sh
    输入语句
    #!/bin/sh
    echo "hello world!"
    修改权限
    chmod 766 hello.sh
    运行“hello.sh”
    ./hello.sh 
————————
变量赋值
    var1= 1      var2= “aaa”  /*Linux中没有数据类型,所以直接定义变量*/
输入输出
    read  输入  相当于C语言中的 scanf
        read var    属于一个数据存储到var当中
     echo 输出  相当于C语言中的printf
        echo “$var”  输出变量var的值
    调用变量时要用$引用变量  $var /*当变量为右值使用时必须使用$*/
数学运算命令
    expr $var+1 或 (($var  + 1))  
引用命令时用反短斜线 ` `  /*数字1左边的键*/ 或
 $()
————————
简单运算
    #!/bin/sh
    echo "input a number"
    read var1
    var= `expr $var1 + 1`
    echo $var
    /*  
        输入一个数字  将该数字赋值给var1
        调用var1  使var+1  将相加后的结果赋给var
         输出var
    */
————————
条件执行
    命令1;命令2    /*命令1执行完毕,无条件执行命令2*/
    命令1&&命令2   /*当命令1执行成功则执行命令2,命令2执行完毕返回“成功”,否则返回“失败”*/
    命令1 || 命令2    /*当命令1执行失败则执行命令2,命令1执行成功则不执行命令2*/
例句
    ls~/abc || mkdir~/abc && touch~/abc/aa
        touch的作用是修改文件 时间戳
    -a    &&    逻辑与  -and
    -o    ||    逻辑或  -or
————————
Linux流程控制结构
    if语句结构[if/then/elif/else/fi]
    if 条件
    then
    语句
    elif 条件
    语句
    else
    语句
    fi
    /*
        如果对于:条件测试语句不是很清楚,可以参考:linux shell 逻辑运算符、逻辑表达式详解shell命令
       [chengmo@centos5 ~]$ a=5;if [[ a -gt 4 ]] ;then echo 'ok';fi;                       
       ok
    */ 

    实例:
    (test.sh)#!/bin/shscores=40;
    if [[ $scores -gt 90 ]]; then
        echo "very good!";
    elif [[ $scores -gt 80 ]]; then
        echo "good!";
    elif [[ $scores -gt 60 ]]; then
        echo "pass!";
    else
        echo "no pass!";
    fi; 
     Linux操作系统基本应用(完结)
    条件测试有:[[]],[],test 这几种,注意:[[]] 与变量之间用空格分开。
———— 
    for … in 语句
    for 变量 in seq字符串
    do
    语句
    done
    说明:seq字符串 只要用空格字符分割,每次for…in 读取时候,就会按顺序将读到值,给前面的变量。

    实例
    (testfor.sh):
    #!/bin/sh
    for i in $(seq 10); do
    echo $i;
    done;
     Linux操作系统基本应用(完结)
    seq 10 产生 1 2 3 。。。。10空格分隔字符串
    [user@bogon ~]$sh xxx.sh  相当于 . / 运行shell文件
————
    for((赋值;条件;运算语句))
    do
    语句
    done; 
    
实例(testfor2.sh):#!/bin/shfor((i=1;i<=10;i++));do
    echo $i;
    done;
     Linux操作系统基本应用(完结)
————
    while 条件语句
    do
    语句
    done;
    
    实例1:
    #!/bin/sh
    i=10;
    while [[ $i -gt 5 ]];do
    echo $i;
    ((i--));
    done;
    运行结果:
    ========================
    sh testwhile1.sh
    10
    9
    8
    7
    6
    !!实例2:(循环读取文件内容:)
    #!/bin/sh
    while read line;do
        echo $line;
    done < /etc/hosts;
 
    运行结果:
    ===================
    sh testwhile2.sh

    # Do not remove the following line, or various programs
    # that require network functionality will fail.
    127.0.0.1 centos5 localhost.localdomain localhost
————
    语法结构:
    until 条件
    do
    action
    done
    意思是:直到满足条件,就退出,否则执行action。

    实例
    (testuntil.sh):
    #!/bin/sh
    a=10;
    until [[ $a -lt 0 ]];do
    echo $a;
    ((a--));
    done;
    结果:
    sh testuntil.sh
    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    0
————
    case选择语句使用(case/esac)
    语法结构
    case $arg in  
        pattern | sample) # arg in pattern or sample  
        ;;  
        pattern1) # arg in pattern1  
        ;;  
        *) #default  
        ;;  
    esac 
    说明:pattern1 是正则表达式,可以用下面字符:
                 *       任意字串
                 ?       任意字元
                 [abc]   a, b, 或c三字元其中之一
                 [a-n]   从a到n的任一字元
                 |       多重选择
      
    实例:
    #!/bin/sh 
    case $1 in
    start | begin)
        echo "start something"  
    ;;
    stop | end)
    echo "stop something"  
    ;;
    *)
    echo "Ignorant"  
    ;;
    esac
    运行结果:
    ======================
 
    testcase.sh start
    start something
————
    select语句使用方法(产生菜单选择)
 
    语法:select 变量name  in seq变量do    actiondone实例:#!/bin/sh select ch in "begin" "end" "exit"
    do
    case $ch in
    "begin")
    echo "start something" 
    ;;
    "end")
    echo "stop something" 
    ;;
    "exit")
    echo "exit" 
    break;
    ;;
    *)
    echo "Ignorant" 
    ;;
    esac
    done;运行结果:
     Linux操作系统基本应用(完结)
    说明:select是循环选择,一般与case语句使用。
————————
重定向
    标准输入            命令<文件(覆盖)  <<(追加)
    标准输出            命令>文件(覆盖)  >>(追加)
    标准错误输出     错误命令 2>文件(覆盖)  2>>(追加)
例句
    ls -l > aa.txt  /**/
    vi bb.txt < aa.txt
————————
正则表达式
      简单的说,正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,
      可以,让用户轻易达到查找、删除、替换某特定字符串的处理程序。
     正则表达式主要分为两类:基本正则表达式和扩展正则表达式。
     特殊符号   
        符号 含义 举例
        ^ 开始标记 "^abc"满足的例子abc、abcd
        ^ 非(在[]内) "[^abc]"满足的例子:ddd、mpd
        $ 结束标记 ”abc$”满足的例子abc、mmabc
        . 任意字符 "a.c"满足的例子abc、fapcc
        \< 匹配单词开始 "\<abc"满足的例子abc、abcd
        \> 匹配单词结束 "abc\>"满足的例子abc、pmrabc
        | "AAA|BBB"满足的例子AAA、BBBpp
    ^ 行首锚定符
    & 行尾锚定符
    grep ‘wang’ file    /*筛选文件名为'wang’的文件*/
    grep 'wang[12]' file     /*筛选出“wang1”,“wang2”*/
    grep 'wang[^2]' file     /*筛选出不包括2的所有文件名为“wang”的文件*/
    grep 'wang[1-5]' file     /*筛选出包含“1—5”的所有文件名为"wang"的文件*/
    grep '^a' file     /*筛选出以a开头的所有文件*/
    grep 'g$' file     /*筛选出以g结尾的所有文件*/
    grep 'a\{2\}' file     /*表示精确匹配2次*/
    grep 'a\{2,5\}' file     /*表示其前面的字符a最少出现2次,最多出现五次*/
    grep ’a\{2,\}' file   /*表示匹配其前面的字符a最少出现2次,最多无限*/
    grep 'wa*' file     /*匹配其前面的字符零到多次,例如 waaang,wngg*/
    grep 'w..g' file    /*匹配任意单个字符,一个  .  一个字符,例如love,line*/
    grep '[a-z]' file     /*指定范围内的任意单个字符,例如 actor,build*/
    grep ‘^[a-z]' file     /*筛选除指定字符外的其它任意字符*/
———————— 
管道命令   |
    1)把前面的命令结果作为后面命令的输入数据
    2)后面的命令必须是管道命令(以文件为输入,可以处理文件内容)
    筛选 grep 'xx'文件  /*xx是文件名*/
    切行 cut -d'分隔符' -f 字段
    排序 sort -r(反向)
    合并行 uniq 计数 wc -l 行 -w 词
例句
    ls -l | grep 'wang' | cut -f 3,5 | sort
 ————————
 awk命令
    awk '条件{动作}条件{动作}......'文件名
    awk '{print $1"\t" $3}' aa.txt
    awk '{print $1"\t" NR "\t" NF}' aa.txt     /*NR  行号    NF  字段号*/
    awk 'BEGIN{FS="\t"}$3>10{print $}' aa.txt      /*FS  分隔符*/
    awk 'NR=1{} NR >= 2{}' aa.txt 
例句(删除存储大小为0的文件)
    #!/bin/sh
    for filename in 'ls'
    do
    if test -d $filename;then 
    b=0
    else
    a= $(ls -l $filename | awk '{print$5}')
    if test $a -eq 0; then
    rm $filename
    fi
    fi
    done
 ————————
Linux中字符比较的写法
    -eq    相等
    -ne    不等
    -lt     小于
    -le    小于等于
    -gt    大于
    -ge    大于等于
    -f xxx    文件存在
    -d xxx    目录存在
    -x xxx    文件可执行
    -n xxx    变量有数据
    -a    &&  逻辑与
    -o    ||  逻辑或
————————
Linux第三天
Linux服务器
软件安装
    1、源码安装
        下载 wget  http://www.xxx.com/xxx.tar.bz2
        解压 tar -jxvf xxx.tar.bz2
        编译和安装 make   make install
    2、yum安装
        yum info xxx  /*information  显示安装文件信息*/
        yum install xxx  /*install  安装文件*/
        yum remove xxx   /*remove  删除安装文件*/
        yum list xxx    /*list  显示安装文件列表*/
        yum search xxx    /*search  查找安装文件*/
 ————————
网络命令和配置文件
    IP地址 ifconfig    /*查看网卡信息*/
        ifconfig etho 192.168.111.128 netmask 255.255.255.0
    防火墙 /etc/sysconfig/iptables
        -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
————————
SSH
    安装服务端
        yum install openssh-server
    启动
        /etc/init.d/sshd start (stop or restart)
    连接
        yum install ssh
        ssh xxx.xxx.xxx.xxx    /*输入IP地址*/
    Windows平台
        下载安装putty(远程登录)
————————
LAMP(Linux+Apache+MySQL+PHP)
    安装
        yun install httpd mysql mysql-server php php-mysql
    启动
        /etc/init.d/mysql start
        /etc init.d/httpd start    /*d代表服务端*/
    测试
        在/var/www/html/下创建phpinfo.php文件    /*创建php脚本文件*/
        在phpinfo.php文件中输入<?php phpinfo();?>
        用浏览器打开  http://xxx.xxx.xxx.xxx/phpinfo.php
————————
    1、安装
        yum install xxx
    2、查看IP地址 
        ifconfig
    3、设置防火墙端口
        /etc/sysconfig/iptables
    4、安装远程登录服务端
        yum install openssh-server
    5、启动/重启/关闭
        /etc/init.d/xxxd start/restart/stop(d  服务端,相当于server,ssh-server、mysql-server)