zoukankan      html  css  js  c++  java
  • 不就是抽个血吗,至于么-jQuery,Linux完结篇

      hi

    趁着周一去抽血化验,真开心。。。下午报告才出来,不过早上来了就开始各种晕菜,叫错名字,说错话。。。。。至于么。。

     还有在教研室的30天就可以肥家了,凯森凯森。今天不想干活(哪天想干过我就问问),学学jquery吧。

    1、jQuery

    十、UI型插件

    10.1 拖曳插件——draggable

    拖曳插件draggable的功能是拖动被绑定的元素,当这个jQuery UI插件与元素绑定后,可以通过调用draggable()方法,实现各种拖曳元素的效果,调用格式如下:

    $(selector). draggable({options})

    options参数为方法调用时的配置对象,根据该对象可以设置各种拖曳效果,如“containment”属性指定拖曳区域,“axis”属性设置拖曳时的坐标方向。

    <body>
    <div id="divtest">
    <div id="x" class="drag">沿x轴拖拽</div>
    <div id="y" class="drag">沿y轴拖拽</div>
    </div>

    <script type="text/javascript">
    $(function () {
    $("#x").draggable({axis:"x"});
    $("#y").draggable({axis:"y"});
    });
    </script>
    </body>

    10.2 放置插件——droppable

    除使用draggable插件拖曳任意元素外,还可以调用droppable UI插件将拖曳后的任意元素放置在指定区域中,类似购物车效果,调用格式如下:

    $(selector).droppable({options})

    selector参数为接收拖曳元素,options为方法的配置对象,在对象中,drop函数表示当被接收的拖曳元素完全进入接收元素的容器时,触发该函数的调用。

    <body>
    <div id="divtest">
    <div class="box">
    <div class="title">产品区</div>
    <div class="drag"><div>苹果</div></div>
    </div>
    <div class="box">
    <div class="title">回收站</div>
    <div class="cart"><div id="tip">还没有产品</div></div>
    </div>
    </div>

    <script type="text/javascript">
    $(function () {
    $(".drag").draggable();
    $(".cart").droppable({
    drop: function () {
    sum--;
    $(".cart").removeClass("focus");
    $("#tip").html("还没有产品");
    $(".title span").html(sum);
    }
    })
    });
    </script>
    </body>

    10.3 拖曳排序插件——sortable

    拖曳排序插件的功能是将序列元素(例如<option>、<li>)按任意位置进行拖曳从而形成一个新的元素序列,实现拖曳排序的功能,它的调用格式为:

    $(selector).sortable({options});

    selector参数为进行拖曳排序的元素,options为调用方法时的配置对象

    <body>
    <div id="divtest">
    <div class="title">
    <span class="fl">我最喜欢的运动</span>
    </div>
    <div class="content">
    <ul>
    <li>1)足球</li>
    <li>2)散步</li>
    <li>3)篮球</li>
    <li>4)乒乓球</li>
    <li>5)骑自行车</li>
    </ul>
    </div>
    </div>

    <script type="text/javascript">
    $(function () {
    $("ul").sortable({
    delay:2,
    opacity:0.4
    })
    });
    </script>
    </body>

    10.4 面板折叠插件——accordion

    面板折叠插件可以实现页面中指定区域类似“手风琴”的折叠效果,即点击标题时展开内容,再点另一标题时,关闭已展开的内容,调用格式如下:

    $(selector).accordion({options});

    其中,参数selector为整个面板元素,options参数为方法对应的配置对象。

    <body>
    <div id="divtest">
    <div id="accordion">
    <h3>
    <a href="#">白富美</a></h3>
    <p>咱们结婚吧!</p>
    <h3>
    <a href="#">土豪族</a></h3>
    <p>咱们交个朋友吧!</p>
    </div>
    </div>

    <script type="text/javascript">
    $(function () {
    $("#accordion").accordion();
    });
    </script>
    </body>

    10.5 选项卡插件——tabs

    使用选项卡插件可以将<ul>中的<li>选项定义为选项标题,在标题中,再使用<a>元素的“href”属性设置选项标题对应的内容,它的调用格式如下:

    $(selector).tabs({options});

    selector参数为选项卡整体外围元素,该元素包含选项卡标题与内容,options参数为tabs()方法的配置对象,通过该对象还能以ajax方式加载选项卡的内容。

    <body>
    <div id="divtest">
    <div id="tabs">
    <ul>
    <li><a href="#tabs-1">最爱吃的水果</a></li>
    <li><a href="#tabs-2">最喜欢的运动</a></li>
    </ul>
    <div id="tabs-1">
    <p>橘子</p>
    <p>香蕉</p>
    <p>葡萄</p>
    <p>苹果</p>
    <p>西瓜</p>
    </div>
    <div id="tabs-2">
    <p>足球</p>
    <p>散步</p>
    <p>篮球</p>
    <p>乒乓球</p>
    <p>骑自行车</p>
    </div>
    </div>
    </div>

    <script type="text/javascript">
    $(function () {
    $("#tabs").tabs ({
    //设置各选项卡在切换时的动画效果
    fx: { opacity: "toggle", height: "toggle" },
    event: "mousemove" //通过移动鼠标事件切换选项卡
    })
    });
    </script>
    </body>

    10.6 对话框插件——dialog

    对话框插件可以用动画的效果弹出多种类型的对话框,实现JavaScript代码中alert()confirm()函数的功能,它的调用格式为:

    $(selector).dialog({options});

    selector参数为显示弹出对话框的元素,通常为<div>,options参数为方法的配置对象,在对象中可以设置对话框类型、“确定”、“取消”按钮执行的代码等。

    <body>
    <div id="divtest">
    <div class="content">
    <span id="spnName" class="fl">张三</span>
    <input id="btnDelete" type="button" value="删除" class="fr"/>
    </div>
    <div id='dialog-modal'></div>
    </div>

    <script type="text/javascript">
    $(function () {
    $("#btnDelete").bind("click", function () { //询问按钮事件
    if ($("#spnName").html() != null) { //如果对象不为空
    sys_Confirm("您真的要删除该条记录吗?");
    return false;
    }
    });
    });
    function sys_Confirm(content) { //弹出询问信息窗口
    $("#btnDelete").dialog({
    height: 140,
    modal: true,
    title: '系统提示',
    hide: 'slide',
    buttons: {
    '确定': function () {
    $("#spnName").remove();
    $(this).dialog("close");
    },
    '取消': function () {
    $(this).dialog("close");
    }
    },
    open: function (event, ui) {
    $(this).html("");
    $(this).append("<p>" + content + "</p>");
    }
    });
    }
    </script>
    </body>

    10.7 菜单工具插件——menu

    菜单工具插件可以通过<ul>创建多级内联或弹出式菜单,支持通过键盘方向键控制菜单滑动,允许为菜单的各个选项添加图标,调用格式如下:

    $(selector).menu({options});

    selector参数为菜单列表中最外层<ul>元素,options为menu()方法的配置对象。

    <body>
    <ul id="menu">
    <li><a href="#">小明一中</a>
    <ul>
    <li><a href="#">高中部</a>
    <ul>
    <li><a href="#">高一(1)班</a></li>
    <li><a href="#">高一(2)班</a></li>
    <li><a href="#">高一(3)班</a>
    <ul>
    <li><a href="#">小胡</a></li>
    <li><a href="#">小李</a></li>
    <li><a href="#">小陈</a></li>
    </ul>
    </li>
    </ul>
    </li>
    <li><a href="#">初中部</a>
    <ul>
    <li><a href="#">初一(1)班</a></li>
    <li><a href="#">初一(2)班</a></li>
    <li><a href="#">初一(3)班</a></li>
    </ul>
    </li>
    <li><a href="#">教研部</a></li>
    </ul>
    </li>
    <li class="ui-state-disabled"><a href="#">大明二中</a></li>
    </ul>

    <script type="text/javascript">
    $(function () {
    $("#menu").menu();
    });
    </script>
    </body>

    10.8 微调按钮插件——spinner

    微调按钮插件不仅能在文本框中直接输入数值,还可以通过点击输入框右侧的上下按钮修改输入框的值,还支持键盘的上下方向键改变输入值,调用格式如下:

    $(selector).spinner({options});

    selector参数为文本输入框元素,可选项options参数为spinner()方法的配置对象,在该对象中,可以设置输入的最大、最小值,获取改变值和设置对应事件。

    <body>
    <div id="divtest">
    <div class="title">
    选择颜色值</div>
    <div class="content">
    <span id="spnColor" class="input fl">
    <input />
    </span>
    <span id="spnPrev" class="prev fr"></span>
    </div>
    </div>

    <script type="text/javascript">
    $(function () {
    //定义变量
    var intR = 0, intG = 0, intB = 0, strColor;
    $("input").spinner({
    //初始化插件
    max: 10,
    min: 0,
    //设置微调按钮递增/递减事件
    spin: function (event, ui) {
    if (ui.value == 8)
    spnPrev.style.backgroundColor = "red";
    else
    spnPrev.style.backgroundColor = "green";
    },
    //设置微调按钮值改变事件
    change: function (event, ui) {
    var intTmp = $(this).spinner("value");
    if (intTmp < 0) $(this).spinner("value", 0);
    if (intTmp > 10) $(this).spinner("value", 10);
    if (intTmp == 8)
    spnPrev.style.backgroundColor = "red";
    else
    spnPrev.style.backgroundColor = "green";
    }
    });
    });
    </script>
    </body>

    10.9 工具提示插件——tooltip

    工具提示插件可以定制元素的提示外观,提示内容支持变量、Ajax远程获取,还可以自定义提示内容显示的位置,它的调用格式如下:

    $(selector).tooltip({options});

    其中selector为需要显示提示信息的元素,可选项参数options为tooltip()方法的配置对象,在该对象中,可以设置提示信息的弹出、隐藏时的效果和所在位置。

    <body>
    <div id="divtest">
    <div class="title">
    工具提示插件</div>
    <div class="content">
    <div>
    <label for="name">
    姓名</label>
    <input id="name" name="name" title="我是土豪,欢迎与我做朋友" />
    </div>
    </div>
    </div>

    <script type="text/javascript">
    $(function () {
    $("#name").tooltip({
    show: {
    effect: "slideDown",
    delay: 350
    },
    hide: {
    effect: "explode",
    delay: 350
    },
    position: {
    my: "left top",
    at: "left bottom"
    }
    });
    });
    </script>
    </body>

    十一、工具类函数

    11.1 获取浏览器的名称与版本信息

    在jQuery中,通过$.browser对象可以获取浏览器的名称和版本信息,如$.browser.chrome为true,表示当前为Chrome浏览器,$.browser.mozilla为true,表示当前为火狐浏览器,还可以通过$.browser.version方式获取浏览器版本信息。

    <body>
    <div id="divtest">
    <div class="title">
    <span class="fl">获取浏览器名称和版本号</span>
    </div>
    <div class="content"></div>
    </div>

    <script type="text/javascript">
    $(function () {
    var strTmp = "您的浏览器名称是:";
    if ($.browser.chrome) { //谷歌浏览器
    strTmp += "Chrome";
    }
    if ($.browser.mozilla) { //火狐相关浏览器
    strTmp += "Mozilla FireFox";
    }
    strTmp += "<br /><br /> 版本号是:" //获取版本号
    +$.browser.version;
    $(".content").html(strTmp);
    });
    </script>
    </body>

    很简单的一点,但是,要注意,jQuery的方法,一般是$(),函数常常是$.(?)

    11.2 检测浏览器是否属于W3C盒子模型

    浏览器的盒子模型分为两类,一类为标准的w3c盒子模型,另一类为IE盒子模型,两者区别为在Width和Height这两个属性值中是否包含padding和border的值,w3c盒子模型不包含,IE盒子模型则包含,而在jQuery 中,可以通过$.support.boxModel对象返回的值,检测浏览器是否属于标准的w3c盒子模型。

    <body>
    <div id="divtest">
    <div class="title">
    <span class="fl">检测是否是盒子模型</span>
    </div>
    <div class="content"></div>
    </div>

    <script type="text/javascript">
    $(function () {
    var strTmp = "您打开的页面是:";
    if ($.support.boxModel) { //是W3C盒子模型
    strTmp += "W3C盒子模型";
    }
    else { //是IE盒子模型
    strTmp += "IE盒子模型";
    }
    $(".content").html(strTmp);
    });
    </script>
    </body>

    11.3 检测对象是否为空

    在jQuery中,可以调用名为$.isEmptyObject的工具函数,检测一个对象的内容是否为空,如果为空,则该函数返回true,否则,返回false值,调用格式如下:

    $.isEmptyObject(obj);

    其中,参数obj表示需要检测的对象名称。

    <body>
    <div id="divtest">
    <div class="title">
    <span class="fl">检测对象是否为空</span>
    </div>
    <div class="content"></div>
    </div>

    <script type="text/javascript">
    $(function () {
    var obj = { "姓名": "土豪一族" };
    var strTmp = "您定义了一个:";
    if ($.isEmptyObject(obj)) { //检测是否为空
    strTmp += "空对象";
    }
    else {
    strTmp += "非空对象";
    }
    $(".content").html(strTmp);
    });
    </script>
    </body>

    11.4 检测对象是否为原始对象

    调用名为$.isPlainObject的工具函数,能检测对象是否为通过{}new Object()关键字创建的原始对象,如果是,返回true,否则,返回false值,调用格式为:

    $.isPlainObject (obj);

    其中,参数obj表示需要检测的对象名称。

    <body>
    <div id="divtest">
    <div class="title">
    <span class="fl">检测对象是否为原始对象</span>
    </div>
    <div class="content"></div>
    </div>

    <script type="text/javascript">
    $(function () {
    var obj = "null";
    var strTmp = "您定义了一个:";
    if ($.isPlainObject(obj)) { //检测是否为原始对象
    strTmp += "原始对象";
    }
    else {
    strTmp += "非原始对象";
    }
    $(".content").html(strTmp);
    });
    </script>
    </body>

    11.5 检测两个节点的包含关系

    调用名为$.contains的工具函数,能检测在一个DOM节点中是否包含另外一个DOM节点,如果包含,返回true,否则,返回false值,调用格式为:

    $.contains (container, contained);

    参数container表示一个DOM对象节点元素,用于包含其他节点的容器,contained是另一个DOM对象节点元素,用于被其他容器所包含。

    <body>
    <div id="divtest">
    <div class="title">
    <span class="fl">检测两个节点的包含关系</span>
    </div>
    <div class="content"></div>
    </div>

    <script type="text/javascript">
    $(function () {
    var node_a = document.body.firstChild;
    var node_b = document.body;
    var strTmp = "对象node_a";
    if ($.contains(node_a,node_b)) { //检测是否包含节点
    strTmp += " 包含 ";
    }
    else {
    strTmp += " 不包含 ";
    }
    strTmp += "对象node_b";
    $(".content").html(strTmp);
    });
    </script>
    </body>

    11.6 字符串操作函数

    调用名为$.trim的工具函数,能删除字符串中左右两边的空格符,但该函数不能删除字符串中间的空格,调用格式为:

    $.trim (str);

    参数str表示需要删除左右两边空格符的字符串。

    <body>
    <div id="divtest">
    <div class="title">
    <span class="fl">字符串操作函数</span>
    <span class="fr">
    <input id="btnShow" name="btnShow" type="button" value="计算" />
    </span>
    </div>
    <div class="content">
    <input id="txtName" name="txtName" type="text" />
    <div class="tip"></div>
    </div>
    </div>

    <script type="text/javascript">
    $(function () {
    $("#btnShow").bind("click", function () {
    $(".tip").html("");
    var strTmp = "内容:";
    var strOld = $("#txtName").val();
    var strNew =$.trim(strOld);
    strTmp += strOld;
    strTmp += "<br/><br>除掉空格符前的长度:"
    strTmp += strOld.length;
    strTmp += "<br/><br>除掉空格符后的长度:"
    strTmp += strNew.length;
    $(".tip").show().append(strTmp);
    });
    });
    </script>
    </body>

    11.7 URL操作函数

    调用名为$. param的工具函数,能使对象或数组按照key/value格式进行序列化编码,该编码后的值常用于向服务端发送URL请求,调用格式为:

    $. param (obj);

    参数obj表示需要进行序列化的对象,该对象也可以是一个数组,整个函数返回一个经过序列化编码后的字符串。

    <body>
    <div id="divtest">
    <div class="title">
    <span class="fl">URL操作函数</span>
    </div>
    <div class="content">
    <div class="tip"></div>
    </div>
    </div>

    <script type="text/javascript">
    $(function () {
    //基本信息对象
    var objInfo = new Object();
    objInfo.name = "白富美";
    objInfo.sex = 1;
    //序列化对象
    var objNewInfo =$.param(objInfo.name);
    //显示序列化后的对象
    var strTmp = "<b>对象 白富美 序列化后</b>:<br/><br/>";
    strTmp += objNewInfo;
    //显示在页面中
    $(".tip").show().append(strTmp);
    });
    </script>
    </body>

    11.8 使用$.extend()扩展工具函数

    调用名为$. extend的工具函数,可以对原有的工具函数进行扩展,自定义类级别的jQuery插件,调用格式为:

    $. extend ({options});

    参数options表示自定义插件的函数内容。

    <body>
    <div id="divtest">
    <div class="title">
    <span class="fl">自定义工具函数求两值中最小值</span>
    <span class="fr">
    <input id="btnShow" name="btnShow" type="button" value="计算" />
    </span>
    </div>
    <div class="content">
    <div class="tip"></div>
    </div>
    </div>

    <script type="text/javascript">
    /*------------------------------------------------------------/
    功能:返回两个数中最小值
    参数:数字p1,p2
    返回:最小值的一个数
    示例:$.MinNum(1,2);
    /------------------------------------------------------------*/
    (function ($) {
    $.extend({
    "MinNum": function (p1, p2) {
    return (p1 > p2) ? p2 : p1;
    }
    });
    })(jQuery);
    $(function () {
    $("#btnShow").bind("click", function () {
    $(".tip").html("");
    var strTmp = "17与18中最小的数是:";
    strTmp +=$.MinNum(17, 18);
    //显示在页面中
    $(".tip").show().append(strTmp);
    });
    });
    </script>
    </body>

    11.9 使用$.extend()扩展Object对象

    除使用$.extend扩展工具函数外,还可以扩展原有的Object对象,在扩展对象时,两个对象将进行合并,当存在相同属性名时,后者将覆盖前者,调用格式为:

    $. extend (obj1,obj2,…objN);

    参数obj1至objN表示需要合并的各个原有对象。

    <body>
    <div id="divtest">
    <div class="title">
    <span class="fl">合并原有对象</span>
    </div>
    <div class="content">
    <div class="tip"></div>
    </div>
    </div>

    <script type="text/javascript">
    $(function () {
    var objInfo = { name: "" };
    var objMess = { name: "白富美,", title: "欢迎与我联系!" };
    var objNewInfo =$.extend(objInfo,objMess);
    var strTmp = "<b>对象 白富美 合并后</b>:<br/><br/>";
    strTmp += objNewInfo.name + objInfo.title;
    //显示在页面中
    $(".tip").show().append(strTmp);
    });
    </script>
    </body>

     十二、在线聊天室实践

    12.1 基本功能介绍

    登陆后才能进入(基本信息的显示);

    动态显示交流后的内容;

    文字和表情的沟通实现(表情也是字符代号编码)

    技术重点:ajax的无刷新技术展示数据

    12.2 实现效果

    利用jq中的ajax函数实现登陆,登陆时,显示登陆中,正确或失败,有相应的动作;

    聊天室就是聊天内容区域,输入区域,人员显示区域

    ---------------------------------------------------

    2、Linux完结篇

    九、shell基础

    9.1shell概述

    --含义

    就是其英文单词的意思——壳

    是一个命令行解释器!——翻译依赖的是ASCII码,依赖它把命令翻译为二进制的,让内核能够解析命令。

    也就是:用户写命令《--》shell解释翻译《--》内核

    换言之,就是我们操作的界面。

    但是,在linux特殊的在于,shell还是一个功能强大的编程语言,易编写,易调试,灵活性较强。

    是解释执行的脚本语言,在shell中可以直接调用linux命令。

    --分类

    当前一般两类:Bourne shell(linux用的就是其下的Bash)和C shell(Unix中的,与c语言相似)

    绝大多数的命令是通用的(包括linux和unix),根本原因在于都用shell,版本有差别而已。

    [root@andy ~]# echo $SHELL
    /bin/bash

    这个命令可以看到当前的shell

    --linux支持的

    vi /etc/shells

    打开一个文件

    /bin/sh
    /bin/bash
    /sbin/nologin
    /bin/dash
    /bin/tcsh
    /bin/csh

    这些都支持

    9.2 脚本执行方式

    --echo命令

    就是打印嘛。

    但和php中不太一样的是,要输出换行的 时候需要这样

    [root@andy ~]# echo -e "aldkjf adsf"
    aldkjf
    adsf

    需要加选项-e。

    linux本机中是无法支持中文字符,远程工具是可以的

    [root@andy ~]# echo -e "e[1;31m嫁人就要嫁凤姐e[0m"
    嫁人就要嫁凤姐

    上个例子:e[1;31m是开启颜色显示,e[0m结束

    31是红色,一直到40好像是,自己试试吧

    --脚本

    vi hello.sh

    #!/bin/bash
    #The first program

    echo -e "e[1;34m 天下掉下个林妹妹 e[0m"

    要先写入bash的那句话,尽量避免报错。

    然后#后面的一般都是注释

    shell的好处就是可以直接输出

    但,暂时还不能运行——

    --执行

    赋予权限,直接运行——chmod 755 hello.sh, ./hello.sh

    或者,bash命令,bash hello.sh

    应该说,最好还是用赋予权限然后(绝对路径)运行

    9.3bash的基本功能

    9.3.1 命令别名与快捷键

    --

    命令别名==人的小名/外号

    [root@andy ~]# alias
    alias cp='cp -i'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='rm -i'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

    alias命令,可以查看别名。所以,我们设定别名也是上面的格式:alias cp='cp -i'

    alias 别名=‘原命令’

    重启的话会失效,要想一直有效,要写入对应的环境变量配置文件

    vi ~/.bashrc

    [root@andy ~]# vi /root/.bashrc

    # .bashrc

    # User specific aliases and functions

    alias rm='rm -i'
    alias cp='cp -i'
    alias mv='mv -i'

    # Source global definitions
    if [ -f /etc/bashrc ]; then
    . /etc/bashrc
    fi
    ~

    写入alias vi='vim'即可

    unalias 别名,就是删除别名。同样,命令行的是临时删除

    另外,命令的执行顺序,别名是优先级别第二高的 

    路径+命令》别名》bash命令》目录中查到的第一条命令

    即,别名比原名级别高,或者,避免重叠/重复,除非你的目的就是这个

    --快捷键

    ctrl+c 强制终止

         +l 清屏

         +a 移到命令行首(home)

         +u 删除命令到行首

         +e 跳到行尾(end)

         +z 把命令放入后台(没有终止命令,少用)

         +r 在历史命令中搜索

    9.3.2 历史命令

    上下箭头调用就好。

    [root@andy ~]# history

    该命令会显示所有你/当前用户输入过的所有历史命令。所有的历史命令是保存在.bash_history文件中的

    history -c 清空历史命令。一般来说,最好不要清空历史命令——查错,以及防贼

    history !n 重复执行第n条命令

    history !! 重复执行上一条命令

    history !字符串 调用最后一个以该字符串开头的命令(常用)

    9.3.3 输出重定向

    --标准输入输出

    键盘——/dev/stdin 文件描述符为0

    显示器——/dev/sdtout 文件描述符为1

    显示器——/dev/sdterr 文件描述符为2,类型是标准错误输出

    背就背文件描述符就好了

    --输出重定向

    就是把原本应该标准输出的方向重新定向到文件(拐个弯)。

    用处就是自动的记录等,有实际的用处,也常用。

    比如

    [root@andy ~]# ifconfig > test.log
    [root@andy ~]# cat test.log
    eth0 Link encap:Ethernet HWaddr 00:0C:29:61:EB:6B
    inet addr:192.168.23.50 Bcast:192.168.23.255 Mask:255.255.255.0
    inet6 addr: fe80::20c:29ff:fe61:eb6b/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:11069 errors:0 dropped:0 overruns:0 frame:0
    TX packets:3521 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:798686 (779.9 KiB) TX bytes:447837 (437.3 KiB)
    Interrupt:19 Base address:0x2000

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536 Metric:1
    RX packets:20 errors:0 dropped:0 overruns:0 frame:0
    TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:1532 (1.4 KiB) TX bytes:1532 (1.4 KiB)

    命令的执行,可能会是定时用户来做的。

    [root@andy ~]# ls > test.log
    [root@andy ~]# cat test.log
    anaconda-ks.cfg
    cangls
    hello.sh
    install.log
    install.log.syslog
    japan
    test.log

    单个>,会覆盖结果;双>>是追加

    [root@andy ~]# ifconfig >> test.log
    [root@andy ~]# cat test.log
    anaconda-ks.cfg
    cangls
    hello.sh
    install.log
    install.log.syslog
    japan
    test.log
    eth0 Link encap:Ethernet HWaddr 00:0C:29:61:EB:6B
    inet addr:192.168.23.50 Bcast:192.168.23.255 Mask:255.255.255.0
    inet6 addr: fe80::20c:29ff:fe61:eb6b/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:11238 errors:0 dropped:0 overruns:0 frame:0
    TX packets:3586 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:811445 (792.4 KiB) TX bytes:455539 (444.8 KiB)
    Interrupt:19 Base address:0x2000

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536 Metric:1
    RX packets:20 errors:0 dropped:0 overruns:0 frame:0
    TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:1532 (1.4 KiB) TX bytes:1532 (1.4 KiB)

    如果希望同时保存报错信息(犯2信息)

    dateads 2>>test.log

    另外注意,追加是有空格,错误输出是没有空格的2>>test.log

    但是,最有用的是正确和错误都要

    命令 >> 文件 2>&1  

    命令 &>> 文件  ——写到同一个文件

    [root@andy ~]#
    [root@andy ~]# ifconfig >> test2.log 2>&1
    [root@andy ~]# cat test2.log
    eth0 Link encap:Ethernet HWaddr 00:0C:29:61:EB:6B
    inet addr:192.168.23.50 Bcast:192.168.23.255 Mask:255.255.255.0
    inet6 addr: fe80::20c:29ff:fe61:eb6b/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:11444 errors:0 dropped:0 overruns:0 frame:0
    TX packets:3638 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:825629 (806.2 KiB) TX bytes:461351 (450.5 KiB)
    Interrupt:19 Base address:0x2000

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536 Metric:1
    RX packets:20 errors:0 dropped:0 overruns:0 frame:0
    TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:1532 (1.4 KiB) TX bytes:1532 (1.4 KiB)

    [root@andy ~]# ifconfig2 >> test2.log 2>&1
    [root@andy ~]# cat test2.log
    eth0 Link encap:Ethernet HWaddr 00:0C:29:61:EB:6B
    inet addr:192.168.23.50 Bcast:192.168.23.255 Mask:255.255.255.0
    inet6 addr: fe80::20c:29ff:fe61:eb6b/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:11444 errors:0 dropped:0 overruns:0 frame:0
    TX packets:3638 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:825629 (806.2 KiB) TX bytes:461351 (450.5 KiB)
    Interrupt:19 Base address:0x2000

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536 Metric:1
    RX packets:20 errors:0 dropped:0 overruns:0 frame:0
    TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:1532 (1.4 KiB) TX bytes:1532 (1.4 KiB)

    -bash: ifconfig2: command not found

     命令>>文件1 2>>文件2  ——分开保存

     这三个操作是这一块需要记下来的!

    --输入重定向

     wc命令

    [root@andy ~]# wc
    sadklfjkla
    asdlkfjl
    asdf^[[3~asdlfj
    asdf
    4 4 40

    统计了你输入的字符长度。

     很少用,大概了解下

    命令<文件

    命令<<文件

    9.3.4 管道符

     --多命令顺序执行

    ; 命令1;命令2 多个命令无逻辑关系按顺序执行

    && 逻辑与,其他一样——1成功,2才执行

    ||   或——1或2只执行一个

    [root@andy ~]# ls ; ifconfig
    anaconda-ks.cfg cangls hello.sh install.log install.log.syslog japan test2.log test3.log test.log
    eth0 Link encap:Ethernet HWaddr 00:0C:29:61:EB:6B
    inet addr:192.168.23.50 Bcast:192.168.23.255 Mask:255.255.255.0
    inet6 addr: fe80::20c:29ff:fe61:eb6b/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:12241 errors:0 dropped:0 overruns:0 frame:0
    TX packets:3901 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:884175 (863.4 KiB) TX bytes:489889 (478.4 KiB)
    Interrupt:19 Base address:0x2000

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536 Metric:1
    RX packets:20 errors:0 dropped:0 overruns:0 frame:0
    TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:1532 (1.4 KiB) TX bytes:1532 (1.4 KiB)

    [root@andy ~]# ls && ifconfig
    anaconda-ks.cfg cangls hello.sh install.log install.log.syslog japan test2.log test3.log test.log
    eth0 Link encap:Ethernet HWaddr 00:0C:29:61:EB:6B
    inet addr:192.168.23.50 Bcast:192.168.23.255 Mask:255.255.255.0
    inet6 addr: fe80::20c:29ff:fe61:eb6b/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:12289 errors:0 dropped:0 overruns:0 frame:0
    TX packets:3926 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:887929 (867.1 KiB) TX bytes:493627 (482.0 KiB)
    Interrupt:19 Base address:0x2000

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536 Metric:1
    RX packets:20 errors:0 dropped:0 overruns:0 frame:0
    TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:1532 (1.4 KiB) TX bytes:1532 (1.4 KiB)

    [root@andy ~]# ls || config
    anaconda-ks.cfg cangls hello.sh install.log install.log.syslog japan test2.log test3.log test.log

    当然,;可以顺序执行很多命令

    [root@andy ~]# ls ; ifconfig ; cd ;history

    再看第二个

    [root@andy ~]# ls && echo "yes"
    anaconda-ks.cfg cangls hello.sh install.log install.log.syslog japan test2.log test3.log test.log
    yes

    适用于具有(简单)逻辑关系的情况,比如LAMP安装

    简单的实现判断命令是否正确

    [root@andy ~]# ls && echo yes || echo no
    anaconda-ks.cfg cangls hello.sh install.log install.log.syslog japan test2.log test3.log test.log
    yes

    --管道符

    |

    也是多命令顺序执行。区别在于,命令一的正确输出作为命令2的操作对象

    [root@andy ~]# ls -l /etc | more

    所以,相应来说,管道符的命令要更加严格一点

    [root@andy ~]# netstat -an | grep ESTABLISHED | wc -l
    1

    这个是以后常用的服务器的命令

    9.3.5 通配符

    --

    可以匹配其他字符的符号

    ? * [] [a-z] [^0-9]

    真的就类似正则表达式中的东西。

    用法

    [root@andy ~]# ls ja*
    anaconda-ks.cfg cangls juls
    [root@andy ~]# ls japan
    anaconda-ks.cfg cangls juls

    主要用来匹配文件名或者目录的东西;要匹配文件中的内容,就真的用正则表达式了

    --特殊

    $变量,取变量的值

    ‘’ 单引号中所有的特殊符号($`反引号)都没有意义;“”,特殊字符中的 ` $有含义

    $(),用来引用系统命令,和反引号一样,但推荐使用这个

    [root@andy ~]# aa=$(ls)
    [root@andy ~]# $aa
    -bash: anaconda-ks.cfg: command not found
    [root@andy ~]# echo $aa
    anaconda-ks.cfg cangls hello.sh install.log install.log.syslog japan test2.log test3.log test.log
    [root@andy ~]# echo '$aa'
    $aa
    [root@andy ~]# echo "$aa"
    anaconda-ks.cfg
    cangls
    hello.sh
    install.log
    install.log.syslog
    japan
    test2.log
    test3.log
    test.log

  • 相关阅读:
    反射API(二)
    反射API(一)
    session一二事
    自定义session的存储机制
    JavaScript 入门笔记
    PHP引用赋值
    九九乘法口诀表
    PHP流程控制笔记
    PHP函数总结 (七)
    Linux程序编辑器习题汇总
  • 原文地址:https://www.cnblogs.com/andy1202go/p/5006484.html
Copyright © 2011-2022 走看看